SteganoGraphy- 목 차 -1. 스테가노그라피(Steganography)의 유래 22. 스테가노그라피(Steganography)의 정의 및 기법 23. 스테가노그래피 기술 24. 삽입기법 35. 수정기법 36. OpenStego 47. OpenStego Watermark 128. Cli(Command-line) OpenStego 159. Mp3stegz 1810. 참조 및 참고 21□ 스테가노그라피(Steganography)의 유래기원전 5세기경 밀서를 전달하는 방법으로 노예의 머리를 깍고 그 머리에 메세지를 문신으로 썼다, 그 후 노예의 머리카락이 자라서 문신이 보이지 않게 되자 노예를 보냈다, 이것이 문서로 기록된 인류 최초의 스테가노그라피이다.□ 스테가노그라피(Steganography)의 정의전달하려는 정보를 이미지, 오디오 등의 파일에 인간이 감지할 수 없도록 숨겨서 상대방에게 전달하는 기술의 총칭이다. 기존의 암호화 방법은 메시지를 암호화하여 정보를 보호했고 반면에 스테가노그라피는 비밀정보를 매체에 은닉하여 그 정보의 존재 자체를 감추는 보안 기술이다.정보 은닉 기법중 하나이며 비밀정보를 임의의 커버이미지에 숨겨 전송한다, 커버이미지의 픽셀 값을 변경하여 다른 사람들이 비밀정보의 은닉 유무를 인지할 수 없도록 한다.□ 스테가노그래피 기술1. 삽입(Insertion)- 추가적인 내용을 삽입하는 것- 파일 포맷 내에 사용하지 않는 공간을 활용하여 데이터를 은닉 한다.- 삽입은 데이터를 변경하지 않고 추가적인 데이터를 파일에 더한다.2. 대체(Substitution), 수정- 존재하는 바이트(byte)를 바꾸거나 서로 교환하는 것- 새로운 것이 캐리어(커버)파일에 삽입되지 않으며, 수정 또는 변경을 통해 보이지 않게 한다.□ 삽입기법1. 끝부분 삽입1) 파일 끝에 데이터를 붙이는 것(Append Insertion)은 가장 일반적이고 단순한 형태의 디지털 스테가노그래피 기법2. 앞부분 삽입1) 코멘트 필드(헤더)를 제공하는 파일 형식은 이미지에 영향 사진 파일의 색상 팔레트에서 색깔을 나타내는 이진수의 마지막 비트를 0 또는 1로 바꾸어 수정한다, 일반적인 시각 수단을 통하여 볼수 없는 하이딩 방법이다.2) 수정기법은 JPEG와 24비트 BMP 파일과 같은 24비트 이미지 파일에 적용된다.3) 이러한 형태의 파일(RGB)를 “True Color” 파일 포맷이라고도 한다□ OpenStego1. OpenStego란?1) Java로 개발된 무료 스테가노그라피 도구, GNU General Public License v2.0의 조건에 따라 배포되는 오픈소스 소프트웨어 입니다.2) 원도우 및 *NIX 계열에서 동작 가능한 스테가노그라피 도구 입니다, 기능으로는 데이터 숨기기(Hide Data)와 워터 마킹(Watermark)이 있습니다.3) 데이터 은닉 알고리즘으로 Random LSB(Randomized LSB) 방식을 사용합니다.4) 디지털 워터마크삽입을 위해 Dugad 알고리즘을 사용 합니다.OpenStego 실행 화면 [사진1-1]2. OpenStego 설치 및 파일 해시OpenStego 6.2 설치시 생성되는 파일 [사진2-1]파이선을 이용하여 디렉토리 내의 파일 해시 분석 [사진2-2]파이선을 이용하여 OpenStego 디렉토리 안 파일들의 해시값을 추출3. OpenStego 기능1) 데이터 은닉(Data Hiding)- Hide Data- Extrac Data2) Digital Watermarking- Generate Signature- Embed Watermark- Verify Watermark4. OpenStego (Hide Data)1) 숨길 수 있는 하이딩(Message) 파일은 모든 확장자를 지원합니다.하이딩 파일로 모든 확장자를 지원한다 [사진4-1]공식 홈페이지 설명 모든 파일을 커버 파일에 숨길 수 있다[사진4-2]Cover file로 지원되는 파일 확장자 [사진4-3]2) 커버(Cover) 파일로 사용할 수 있는 파일의 종류는 bmp, gif, jpeg, jpg, png, wbmp 6가지물을 저장할 경로 및 저장될 파일명을 설정합니다.Options : 암호를 설정할 수 있습니다, 여기서 설정된 암호는 은닉된 데이터를 다시 추출할 때 암호를 입력해야 메세지 파일을 추출할 수 있습니다.결과물은 png 파일로 만들어지게 됩니다.은닉시킬 number.txt 파일의 해시 정보 [사진5-2]커버 이미지로 사용할 battle.png 파일의 해시 정보 [사진5-3]데이터 은닉이 완료된 결과 파일의 해시 정보 [사진5-4][사진5-1]에서 우측 아래에 있는 Hide Data 버튼을 누르게 되면 txt 파일이 사진 안에 은닉되어 [사진5-4]의 결과물이 만들어집니다.데이터를 은닉하기 전 데이터를 은닉후의 해시 값을 보면 달라진 것을 확인할 수 있습니다.데이터가 은닉된 bat_num.png 파일 헥사값 [사진5-5]데이터가 은닉되기 전 battle.png 파일의 헥사 값 [사진5-6]두 파일을 파일의 16진수 값을 볼 수 있는 HxD 프로그램으로 열어서 비교한 사진입니다사진[4-5][4-6]을 보시면 png 파일의 헤더부분만 일치 합니다.두 파일의 시그니처의 헤더와 푸터는 png파일의 시그니처를 나타내고 있어 동일하지만 메세지 파일 number.txt의 정보는 어디에서도 찾아볼 수 가 없습니다.OpenStego 툴이 자체적으로 인코딩하여 알고리즘에 의해 암호화 되어 알아볼 수 없는 것을 확인했습니다.6. Extract Data커버파일에 은닉된 데이터파일에서 메세지 파일을 추출하는 기능을 합니다OpenStego로 암호화된 파일 경로, 메세지 파일 추출 경로 설정 [사진6-1]결과 창에서 성공적으로 은닉된 메세지 파일 number.txt 파일을 추출 했다는 메세지를 보여줍니다.만약 데이터를 은닉 시킬 때 암호를 설정했다면 파일을 추출할 때 암호를 입력하지 않으면 은닉된 파일을 꺼낼 수 없습니다.□ 워터마크(watermark)란?디지털 워터마크(watermark) 기술은 멀티미디어 콘텐츠에 사람이 인지할 수 없는 소유권자의 저작권 정보를 워터마크로 삽입하고, 검출기(크(watermark) 기능은 3가지로 분류됩니다.- DWT Dugad 알고리즘을 사용합니다.1) Generate Signatur- 데이터에 삽입할 워터마크 파일(문자열)을 생성합니다.워터마크 문자 입력 및 저장 경로 파일명 지정[사진7-1]워터마크 생성 시 지원하는 확장자(sig)[사진7-2]생성된 sig 파일의 용량[사진7-3]sig 확장자로 생성된 워터마크 파일은 워터마크로 사용되는 문자열이 아무리 길어도 8KB로 문자열이 8KB의 크기를 가지게 되며 암호화 됩니다.LeeMH.sig 파일의 헥사값[사진7-4]123123.sig 파일의 헥사값[사진7-5]헥사 값을 비교한 [사진7-4, 5]를 보시면 헤더의 35바이트는 파일의 시그니처로 동일한 것을 알 수 있습니다.2) Embed Watermark- 데이터 파일에 만들어진 워터마크 파일을 삽입합니다.데이터 워터마크 삽입 [사진7-6]워터마크를 삽입할 파일을 선택합니다, 단순히 하나의 파일만이 아니라 *,? 옵션을 파일의 이름대신 주면 해당하는 확장자를 가진 파일에 전부 워터마크를 삽입합니다.3) Verify Watermark- 결과파일 및 데이터 파일을 원본 워터마크 파일과 비교 합니다.워터마크 비교 결과 [사진7-7]워터마크를 삽입한 파일과 그렇지 않은 파일의 결과를 워터마크 sig 파일과 비교하여 알려줍니다.8. Cli(Command-line) OpenStego 실행OpenStego의 개발 언어는 Java로 개발되었습니다, 설치시 내부에 OpenStego.jar 파일이 생성되어 해당 파일에 옵션을 넣어주는 것으로 Cli 모드에서 동작이 가능합니다.Cli 창에서 실행 방법 [사진8-1]cli 모드에서 사용하는 예 [사진8-2]첫 번째 인수로 들어와야 하는 명령어 목록OptionDescriptionembed, --embed커버파일에 메세지 파일을 삽입합니다.gensig, --gensig워터 마크를 위한 sig(서명)파일을 생성합니다.embedmark, --embedmarksig(서명)을 사용하여 표지 파일에Description-a, --algorithm 알고리즘이름데이터 은닉시 사용할 알고리즘을 선택합니다.algorithm지원되는 알고리즘 확인 합니다.알고리즘 선택 공통 명령어 [표8-2]embed 명령에 가능한 옵션(커버 파일에 메세지 파일 삽입)OptionDescription-mf, --messagefile 삽입할 메세지 소스 / 데이터 파일을 선택합니다.-cf, --coverfile 메세지가 삽입될 커버 파일을 선택 합니다, 파일이름에 < *,?> 옵션이 사용 가능합니다. 옵션을 사용시 디렉토리 내에 존재하는 모든 파일을 선택하는것과 동일합니다.여러 개의 파일을 선택 할때는 ;(세미콜론)으로 구분합니다.-sf, --stegofile 커버 파일에 메세지가 삽입될 파일명을 설정합니다.-E, --noencrypt메세지 파일을 암호화 하지 않습니다.(기본값)-P ?password 은닉된 메세지 파일을 추출할떄 사용할 암호를 설정합니다.embed 명령에 사용 가능한 옵션 [표8-3]extract 명령어 하위 옵션(stego 파일에서 메세지 파일 추출)OptionDescription-sf, --stegofile 메세지가 삽입된 Stego 파일을 선택합니다.-xf, --extractfile Stego 파일에서 추출된 메세지 파일의 이름 지정 합니다.-xd, --extractdir 메세지 파일이 추출될 디렉토리 선택합니다.옵션 미 사용시 현재 디렉토리에 추출합니다.-p, --password 메세지 삽입시 설정한 암호를 입력합니다.암호가 걸려있지만 옵션 미 사용시 암호를 요구하는 프롬프트가 표시됩니다.extract 명령에 사용 가능한 옵션[표8-4]gensig 명령어 하위 옵션(워터마크에 사용할 서명 파일 생성)OptionDescription-gf, --sigfile 워터 마크 파일에 사용할 서명 파일이름을 설정합니다.-p, --password 서명파일 생성시 사용할 암호를 설정합니다.옵션 미 사용시 암호 입력을 위한 프롬프트가 표시 됩니다.서명 파일 생성시 사용 가능한 .