먼저, 스테가노그래피(Steganography)라는 용어가 무엇에 쓰는 용어냐면,
쉽게 말하면 뭔가를 전달할 때 생각지도 않은 엉뚱한 매체에 숨겨서 전달하는 기법으로,
예를 들어, 이미지 파일 안에 텍스트 파일이나 실행 파일을 집어넣어 웹 사이트나 SNS 등에 올려두면
보이긴 이미지로 보이지만 다운 받아 열어보면 안에서 텍스트 파일이나 실행 파일이 나오게 되는 것을 말한다.
원래 이 용어의 의미는 위키피디아 참조.
>> 참조: http://en.wikipedia.org/wiki/Steganography
한글로 된 설명이 어디 없나 찾아봤는데, 적절한 건 못 찾았고, 아래와 같은 내용 정도가 그나마 설명이 잘 되어 있어 퍼와봤다.
스테가노그래피(Steganography) 용어 정의: '스테가노그래피(steganography)'는 전달하려는 기밀 정보를 이미지 파일이나 MP3 파일 등에 암호화해 숨기는 심층암호 기술.
예를 들어 모나리자 이미지 파일이나 미국 국가 MP3 파일에 비행기 좌석 배치도나 운행 시간표 등의 정보를 암호화해 전달할 수 있다.
스테가노그래피(steganography)는 고대 그리스에서부터 이용되어온 것으로 현대 암호학에서 다루는 암호화(encryption)와는 다른 개념이다.
스테가노그래피의 유래는 기원전 5세기로 그리스의 왕 히스티에우스는 다이루스왕의 인질로 잡혀있었다. 그는 밀레투스에 있는 그의 양아들에게 밀서를 전달하는 방법으로 노예의 머리를 깎고서 그 머리에 메세지를 문신으로 썼다. 노예의 머리카락이 자라서 문신이 보이지 않게 되자 그는 노예를 밀레투스로 보냈다. 이것이 문서로 기록된 인류 최초의 Steganography 다.
고대 로마인들은 과일주스, 우유, 소변같은 자연원료를 이용해 만든 투명잉크를 사용해 편지를 썼다. 이 편지는 불을 쬐어야만 읽을 수 있다.
2차대전기간 중 독일인들은 "마이크로도트"를 창안했다. 마이크로도트는 말그대로 비밀 메세지를 점 하나의 크기로 축소하는 것이다. 축소된 비밀 메세지는 영문자 i 의 점에 붙여지는 등 글씨에 포함된 점으로 위장되어 많은 양의 데이타를 감쪽같이 전송했다.
(시사상식사전, 박문각)
>> 출처: http://terms.naver.com/entry.nhn?docId=69867&cid=208&categoryId=208
위 한글 출처는, 웃기는 것이, 스테가노그래피는 암호학, 기술 용어인데 출처가 "시사"상식사전이다. 엥? 구글링을 해보면, 좃선 찌라시 같은 데에서는 이 스테가노그래피 기술이 북한 간첩들이 종종 사용하던 기법이라고, 이석기 어쩌구 하는 얘기들도 볼 수 있는데, 아무튼 사건 창작 하나는 참 잘 하는 족속들이라는 생각... 아함... 하품 나는 소리들 하고 앉았다.
좌우지간,
스테가노그래피 기법을 이용해서 이미지 파일이나 mp3 파일 등에 다른 파일을 숨기는 도구들도 많은데,
대표적인 도구가 OpenStego라는 오픈 소스 도구, 그리고 아주 간단한 걸로는 Jpg+FileBinder라는 것이 있다.
>> 참조: OpenStego - http://openstego.sourceforge.net/
>> 참조: Jpg+FileBinder - http://www.softpedia.com/get/Security/Security-Related/Jpg-FileBinder.shtml
그런데,
저런 도구들을 사용하지 않고도 아주 간단하게 파일을 이미지 안에 숨기는 방법이 있는데
그건 바로 COPY 명령어를 사용하는 방법이다.
이미지 파일(JPG, PNG, GIF 등)은 파일 첫 부분에 이미지에 대한 정보가 있고,
압축파일(ZIP)은 파일 끝 부분에 파일 내용에 대한 정보가 있기 때문에
시스템이 이 두 가지 파일을 인식하는 이와 같은 방식을 이용해서 이 두 파일을 순서대로 붙여 버리면
보이긴 이미지 파일처럼 보이지만 실제로는 압축파일인, 간단한 스테가노그래피 이미지가 완성되는 것이다.
즉, 예를 들어,
이미지 파일 A.png와 숨길 파일 B.zip이 있다고 치면,
COPY /B A.png+B.zip C.png
이렇게 실행하면 C.png 파일이 생기는데, 바로 B.zip이 A.png 안에 숨겨진 스테가노그래피 이미지 파일이 되는 것이다.
또,
이를 응용하여 .zip 파일을 만들 때 패스워드를 걸면, 최종적으로 암호화된 스테가노그래피 이미지 파일이 된다.
물론, 이런 기법들을 이용해서 간첩질이나 상용 파일 불법 배포 등 나쁜 용도로 쓰면 절대 안 된다.
그럼, 실제 예제.
아래 Thermidor 블로그 프로필 이미지는 위에서 말한 두 프리웨어 스테가노그래피 도구를 이미지에 숨겨 넣은 것이다.
이미지를 다운로드 받아서 압축 프로그램으로 열어보면 파일들이 튀어나올 것이다.
(암호화된 스테가노그래피 샘플로 만드느라 패스워드를 "1111"로 설정해봤다. 이와 같이 쓰면 꽤 보안성 높은 비밀 메시지를 전달하는 용도로도 쓸 수 있다. 패스워드를 10~12자리 이상으로 복잡하게 만들면 슈퍼 컴퓨터를 써도 쉽게 안 풀릴 테니까.)
==> 압축 프로그램으로 여는 방법은 간단하다. 이미지 파일의 확장자를 .jpg에서 .zip으로 바꾸고 열면 된다.^^;;
한 가지 더,
요즘은 인라인 이미지라고 해서, 별도 첨부 파일이 아닌,
웹 페이지에 영문+숫자(Base64)로 된 글자를 바로 넣은 방식의 이미지도 사용할 수 있다(비록 브라우저에 따라 크기 제한은 있지만).
그래서 텍스트만으로도 특정 실행 파일을 웹 페이지에 숨겨서 심어두는 것이 가능하다.
아래 버튼 배경 이미지는 바로 이를 응용한 것이다.
이 이미지에는 최근에 너댓시간 작업해서 만든 매우 큰 텍스트 파일을 열어보기 위한 뷰어가 들어있다.
로그 파일 같은 경우 많이 쌓여서 몇 백MB~GB 이상 되어 버리면 어지간해서는 열어 볼 수도 없기 때문에
그런 경우 스트림으로 부분 부분씩 열어서 체크해보기 위해 만든 도구.
나 말고는 쓸 일이 없는 파일이니 혹시 모르는 사람이 받았더라도 뭔지 궁금해하진 말기.^^;