간단한 스테가노그래피 샘플입니다
간단한 스테가노그래피 샘플입니다
[출처] 간단한 스테가노그래피 샘플입니다.|작성자 데구리
원래의 목적은 JPG 인코딩과 연계한 스테가노그래피였지만,
JPG인코딩 자체의 구조복합성에 스테가노그래피를 접목하는 것은 제 실력으로는 부족해 보였습니다.
스테가노그래피는 전에 제가 올린 샘플 프로그램(블로그글 찾아보시면 있습니다 ^^;)이 사용한 방식인, 데이타오버래핑 방식(원본 데이터에 목적 데이터를 덧씌우는 방식)과, 그보다는 난이도가 적은 파일후미접합방식이 있습니다.
데이타를 오버래핑 하는 방식은 비트연산등을 통해서(구현 방식은 꽤 있습니다. 디지털워터마킹 이라는 이름으로 많은 응용품들이 유통되고 있지요) 덧씌우기 하는 방식으로, 이는 구현하는 사람의 취미에 따라서 원본에는 손상을 거의 주지 않을뿐더러, 파일의 크기도 그대로 유지하면서도 데이타를 기록하는게 가능합니다.
제가 만들었던 프로그램이 이 방식으로 구현된 방식이구요.
이미지 정보를 담고있는 데이타영역의 RGB값이, 각 1바이트씩 할당된다는 것을 이용하여 1바이트의 최하위 비트 부분을 0으로 설정하고, 덧씌울 데이타를 이진수로 변환하여 이미지데이터의 최하위 비트에 1비트단위로 기록하는 방식입니다.
기록할 수 있는 데이터의 양의 계산은 아래와 같이 하면됩니다.
만일, 가로세로100픽셀의 이미지의 경우 이미지 데이타가 차지하는 부분은 가로x세로xRGB이므로, 100x100x3=30000 바이트가 됩니다. 각 바이트당 최하위 비트만을 사용하므로 1바이트=8비트, 즉, 30000을 8로 나누면 3750. 즉, 가로세로 100픽셀의 이미지에는 3750바이트를 기록할 수 있게됩니다.
텍스트 정도면 웬만한 이미지에는 충분히 자료 저장이 가능합니다.
큰 이미지 사이즈 정도라면 특정프로그램 소스의 압축파일정도는 숨겨넣을 수 있겠네요.
두번째 방법으로 파일후미접합방식(제맘대로 이름붙여서 죄송합니다)은 단지 오리지널 파일의 파일 뒤에 데이타를 숨기는 방식으로, 소프트웨어가 파일을 처리하는 방식을 역이용한 것입니다. 이 방식은 원본에는 변형이 없고, 단지 파일의 맨 뒤에 데이타를 붙이는 방식으로 이용이 가능합니다.
아래의 예를 보겠습니다.
두개의 이미지가 있지요? 이 두 이미지는 눈으로 보기에는 정확하게 일치하는 이미지입니다.
다만, 이 이미지 중 한개는 스테가노그래피를 통해 저의 메시지를 숨겨놓았습니다.
또다른 문제는 원본의 크기가 변형된다는 것이지요. 그래서 너무 큰 자료를 숨기면, 원본에 비해 크기가 비대해지므로 비효율적인 방법이 될수도 있습니다.
찾는방법은 간단합니다. 두개의 이미지를 컴퓨터에 저장한 다음에, '오른쪽 클릭 -> 연결프로그램 -> 프로그램 선택 -> Notepad 선택'을 하여 이미지를 노트패드로 엽니다. 파일의 맨 끝쪽에 가면 제가 숨겨놓은 메시지가 존재함을 볼 수 있으실 겁니다.
주의하실 점은, 노트패드로는 읽어온 JPG파일을 다시 저장하거나 파일 맨끝에 메시지를 추가하고 그냥 저장하면 파일이 깨져버립니다. 이는 '텍스트'기반의 프로그램이라 나타나는 문제로, 16진수형식으로 파일을 정확하게 보여주는 Ultraedit 같은 툴을 이용하여 데이타를 수정/추가 하셔야 합니다.
스테가노그래피는 자료를 숨기기 위한 목적이기때문에 별것 아니게 보일수도 있습니다만,
회사차원의 기밀 유출에 대해서는 상당히 위험한 방식입니다.
약간의 프로그래밍이 가능한 것만으로 파일 병합이 쉽게 되니(DOS의 COPY명령어 중에 '+'라는 인자를 이용하여 파일병합이 가능하기도 합니다, 16진 편집프로그램으로 병합해제도 가능하구요..) 쉽고 위험한 방식입니다.
재미있지 않나요? ^^
[출처] 간단한 스테가노그래피 샘플입니다.|작성자 데구리