스테가노그래피 방식들

비공개 2012.07.07 11:40

제목그대로

다양한 스테가노그래피 알고리즘 형태와 그외 관련 자료들을 틈틈히 정리한대로 모아봤습니다.

스테가노그래피는 일단 다들 아시다시피 원하는 자료를 사진/노래/동영상등의 매체를 통해 숨기기위한 

기법인데요제글에선 이미지파일을 기준으로 다뤄보겠습니다.

 

 

 

스테가노그래피를 분석하는데 있어서 크게 두가지로 나뉩니다

1) 일단 주어진 이미지파일에 데이타가 숨겨 있는지 없는지를 알아내는 감별

 

2)스테가노그래피성 자료가 숨겨져 잇다면 그자료를 끄집어내는 파트인

일종의 암호해독 부분

 

 

자 그럼 감별방식에 대해 알아보기 이전에

다양한 스테가노 그래피 알고리즘과 방식들을 잠깐 소개하자면

http://www.jjtc.com/Steganography/tools.html 참고해주십시오.

한눈에 봐도 다양한 툴들이 존재합니다.

 

공짜인 툴도잇고 돈을주고 구입해야하는 툴들도 잇는데

그럼 이런 툴들은 어떤 스테가노그래픽 기법을 쓰는걸까요

안전하고 강력한 encryption 방식을 써서 데이터 식별이나 해독이나

자체를 어렵게 하는

어떤 한가지 정형화된 방법이나 널리쓰이는 기술들이 있을까요?

 

정답은 아니다 입니다.

 

현재 스테가노그래피의 연구가 활발하게 진행되고있지만 아직도,

기법의 다양화는 한정되어잇고 이 기법중 대부분은 쉽게 크랙이 가능합니다.

크랙이 가능하다는 말은 곧 스테가노그래피의 숨겨진 데이타의 존재유무를 쉽게 확인가능하고

나아가서 그 데이터를 뽑아낼수 있다는 말이죠

 

이를 보안하기위해 숨길 데이터 인크립션시 일종의 암호를 걸어

해독시 동일한 암호를 입력하지않으면 디크립션을 불가능 혹은 offset을 흐트리는 방식,

순차적인 LSB 인코딩이 아닌 랜덤(혹은 Pusedo random, 랜덤한것처럼 보이게 하는 알고리즘들, ex난수발생 )형식으로 데이터를 인코딩 하는 방식

Fixed substitution 알고리즘을 기반으로 먼저 숨길 데이터 파일에 대해 인코딩을 한 후 재차 이미지에 삽입하는 방식등

안전성을 더하는 기법들이 존재하지만실제로 크랙이 불가능할만큼 정교한 스테가노 그래픽 알고리즘의 부재는 부정할 수 없는 사실입니다.

 

이 기법들을 크게나누면 LSB, Fuse, DCT coefficient LSB, 등등 많은 방식이 있습니다.

 

- LSB 방식 least significat bit을 끝에서 한자리 또는 두자리에 숨겨진 데이터를 인코딩 하는 방법이 있는데요.

아시다 시피 bmp gif 같은 RGB컬러방식을 사용하는 이미지 파일형식에서는 픽셀의 RGB 값을 1,2비트 바꾼다고해서 눈에 가시할만한 변화가 일어나지 않습니다예를 들어 24비트맵 형식의 파일은 각각 픽셀에 해당하는 RGB값이 1바이트의 값을 가지는데요 이경우 가능한한 색깔조합은 2^24승이기때문에 1,2비트의 색변화는 가시화 할만한 변환이 아니라는 거죠.

 

자 이제 이 일반적인 LSB 방식의 헛점과 많은 툴들이 이 기법을 어떻게 이용하는지 알아보겟습니다

 

1) LSB가장원초적인 스테가노기법:

숨기고자 원하는 데이터를 binary화 시킨후 별다른 인코딩없이 png,gif따위의 bmp형식을 따르는 이미지에 삽입하는 겁니다

이런경우 간단한 visual attack만으로도 (visual attack이란 원본이미지에서 추출한 LSB값들을 enhance시켜서다른 말로 예를 들면 1byte 블록의 맨 끝 LSB를 사용하는 스테가노 그래피 기법일시 이 비트가 1이면 이 블록을 11111111(하얀색에 대한RGB으로 만들어주고0이면 모든 블록을 00000000로 만드는 등의 시각적 효과를 통해 비교 할 시 원본이미지의 LSB 시각화와 스테가노데이터가 삽입된 이미지는 가시화된 차이가 있습니다쉽게 LSB기법을 통해 파일이 숨겨졌다는 걸 알 수 잇죠상당히 약한 encrpytion임을 반증합니다. Statistical attack을 통해서도 물론 쉽게 판별할 수 있습니다.

 

이런 어의 없는 스테가노그래픽 기법이 시중의 프로그램에도 버젓이 사용되고 있는데요

 

inPlaineView, Invisible Secrets 2002, FortKnox등이 이에 해당합니다이진바이너리 분석파일로 열어 조금만 확인해도 인코딩 방식을 알 수 있는 간단한 기법들을 사용합니다.. 실제로 시중에 고가의 가격으로 팔리는 툴들인데 너무하더군요.

차후에 시간을 내서 하나하나씩 분석 해 보도록 하겠습니다.

 

2) JPG 파일의 LSB 인코딩 방식. JPG 파일은 간단한 검색을 통해서 알 수 있다시피 압축 방식을 이용합니다두 가지 스테이지의 압축 방식이 존재하는데 크게 lossy 부분과 lossless 부분이 있습니다말 그대로 데이터가 손실되는 부분과 손실되지 않는 두 가지의 압축을 거치게 되는데요. Lossy 부분에 스테가노 LSB방식을 사용하면 압축 과정 숨겨진 데이터가 손실되어 본연의 의미를 잃어 버리게 됩니다이런 JPG/JPEG의 특성 때문에 가장 흔히 쓰이는 이미지 포맷임에도 불구 하고 스테가노 의존할수 있고 안전하게 암호화 시킬 수 있는 스테가노 기법의 개발이 불가능 하다고 여겨왓었는데,

Jsteg 기법을 시작으로, JPHide/Seek, F5, StegHide, Outguess(이중에서도 StegHide가 독보적입니다.) 등의 복잡하고 상대적으로 많이 Secure한 알고리즘들이 개발된 상태입니다물론 이 알고리즘들로 인해 숨겨진 파일을 복호화 하는 툴도 이미 개발되어 100% Secure하다고 할 수는 없는 알고리즘들이지만단순 winhex 이진파일 분석이나 Header/Footer 시그니쳐분석 혹은 Statistical Attack, Image attack등과 같은 종류의 간단한 Steganalysis(스테가노래피 분석기법들을 속일 수 있습니다하지만 Stegdetect 등의 분석툴로 쉽게 판별해볼 수 있습니다.

(이 알고리즘 들에 대한 각각의 분석은 하나하나 방대하기 때문에 스테가노 그래피에대한 전반적인 소개를 하는 글의 목적에 어긋나기 때문에 차후에 다루도록 하겠습니다. )

 

 

 

 

간단 혹은 복잡한 LSB 알고리즘과 같이 이미지 파일 내부를 수정해 원하고자 하는 데이터를 숨기는 방법이 있는 반면

아주 멍청한, Fuse 방법이 존재합니다한글로 번역하자면 납땜 방식으로한마디로 Cover/Carrier File (숨기는 매체에 대한 직접적인 수정 없이 은닉매체의 끝 쪽이나 혹은 코멘트 부분에 파일을 숨기는 방식을 말합니다물론 해쉬 값이나 위에서 언급한 Fixed substitution암호, Ascii table 변환 복잡화등등 다양한 인크립션 방식을 통해 분석을 복잡하게 하고 패스워드 등을 넣어 숨겨진 파일 디텍션과 복호화 등을 어렵게 만들 수는 있으나기본적으로 많은 헛점이 존재하는 스테가노 기법입니다.

 

또한, Compression 이 전혀 이루어지지 않고 그저 납땜형식으로 파일을 붙이기 때문에이미지파일의 크기를 비정상적인 레인지로 키워버리기 때문에정말 많은 헛점이 존재하는 기법입니다또 이런 허술한 스태가노 프로그램 같은 경우에설사 데이터 파일을 그대로 퓨즈하지 않고 인코딩을 거쳐 삽입한다 하더라도데이터 파일 복호화시 암호화 되지않은 raw data를 일시적으로 저장하는 경우도 다반사이기 때문에, FileMon과 같은 모니터링을 통해실제 숨겨진 파일을 손쉽게 확인할 수 도 있습니다.

 

적당한 툴을 골라 실질 적인 예를 곧 첨부하도록 하겠습니다혹시 괜찮다고 생각되는 툴 있스시면 포스팅 부탁드립니다.


p.s)

공부한 양은 방대한데 그걸 글로다 옮기려니깐 생각보다 귀찮고 꺼리게 되더라고요 이글은 차후에 천천히 계속 덧붙이는 방식으로 수정하겠습니다.

----------------------------------------------------------------------------

수정1) 06 26 2012


스테가노그래피 문제들을 접하면 

파일형식에 따라서 다음과 같이 정형화된 방식은 아니지만 일반적으로 접근하면 될것같습니다.


GIF, BMP, PNG 파일포맷

1) GIF : GIF는 2^24개의 24비트 컬러값들 중에서 255개의 컬러값만을 임의로 뽑은 파렛트를 인덱스해서 컬러를 표현하기때문에

실제로 LSB에다 데이터를 인코딩할경우 이 파렛트에 대응되는 인덱스 값이달라져서 실제 스테가노그래피화된 파일이 많이 달라 보이게 됩니다. 그렇기 때문에 GIF파일을 활용한 스테가노그래피는 그 활용성이 제한적일 뿐만아니라 문제 수준도 괭장히 낮습니다. GIF 포맷을 사용한다 하더라도 회색계열의 단조로운 색채의 그림에다 크지 않은 크기의 데이터를 숨기는 정도가 다 이더군요.

http://www.net-force.nl/challenges/ steganography 5번문제 참조.

(국기 형태의 단순 5개로 분리된 사진을 검은선 분리선을 기점으로 각색깔의 rgb를 구해서 b 비트에 문자열을 인코딩하는 방식입니다.)


2) BMP, PNG포맷

이 포맷방식은 직접적인 각각 픽셀에대한 RGB 값들을 인코딩 하는 방식을 하기떄문에 LSB 스테가노그래피에 적합합니다. 

단지 LSB 스테가노그래피가 사용되엇는지에 대한 판단여부는 statistical attack이나 visualization attack을 통해서 쉽게 판별 할 수 있습니다. 판별 후에는 헥스 값을 분석해본다던지등의 방법들을 통해서 몇개의 LSB 비트를 쓰느냐 / 어떠한 암호인코딩을 쓰느냐 / 등등을 통해서 문제를 풀어 나갈수 있습니다.


3) JPG/JPEG방식

JPG/JPEG는 압축 과정에서 단순 LSB로 파일을 삽입하게되면 상당수가 변질되어 디코딩이 불가능하므로 2가지 손실 /비손실 두가지 압축 과정 사이에 LSB기법을 써서 삽입하게 됩니다. JPG 압축은 discrete cosine transformation(이산코사인변환)을 통해 변환된 coefficients들의 LSB값들에 데이터를 삽입합니다. 자세한 과정은 퓨리에 변환과 비슷한 다소 복잡한 수학과정이 포함되어 잇기때문에 생략 하도록 하겟습니다. 관심 수요가 잇다면 과정을 설명한 자료를 번역하도록 하겟습니다. 


이런 복잡한 방식을 통하기 때문에 JPG/JPEG는 일반적이 steganalysis 를 통한 분석을 힘들게 만듭니다.

그래서 jpg/jpeg 관련 문제들을 접할때는 코멘트분석/일반적으로 널리알려진 알고리즘의 사용여부 점검/데이터 퓨징을 통한 직접적인 삽입여부 등을 판단하여 문제를 풀게됩니다. 


---------------------------------------------------------------------------------------------


스테가노그래피화된 파일들은 크랙을 더 어렵게 하기위해서 "암호키"를 사용하는데요

이 암호키는 크게 두가지로 나뉘어 볼 수 잇습니다.


1) 스테가노기법적 암호키 : 

이런류의 암호키는 스테가노 그래피할 데이터를 저장 매체에 숨길때 삽입/추출 방식에 영향을 주게됩니다. 예를 들어서 저장 매체의 저장공간이 여러 군대 잇을경우, 이 키를 통해서 어떤 이 저장공간의 어떤 부분들에 자료를 나눠서 숨길지를 판별하게 됩니다. 

이 정보없이는 통계학적인 분석등을 어렵게 만들죠


2) 암호학적 키:

말그대로 숨길 데이터를 저장매체에 삽입전 암호화에 사용하는 키를 일컫 습니다. 


'비공개' 카테고리의 다른 글

암호학101. Two Time Pad 공격  (0) 2012.07.26
jpg/jpeg 스테가노그래피 해독/디코딩  (0) 2012.07.09
스테가노그래피 방식들  (1) 2012.07.07

설정

트랙백

댓글