[사이버 탐험 : 보안의 첫걸음] 스테가노그래피란?
스테가노그래피의 정의
스테가노그래피란?
스테가노그래피(Steganography)는 정보를 다른 정보 속에 은밀하게 숨기는 기술을 의미해요.
예를 들어, 겉보기엔 평범한 사진이나 음악 파일처럼 보이지만, 그 안에 몰래 문서나 메시지가 숨어 있을 수 있는 거죠.
마치 비밀 잉크로 쓴 글씨가 평범한 종이 위에 숨어 있듯이, 스테가노그래피는 정보의 존재 자체를 감추는 데 목적이 있어요.
고대 그리스어에서 유래된 말로, ‘Steganos’(숨겨진)와 ‘Graphein’(쓰기)이 합쳐진 말이에요.
두 단어가 합쳐져 ‘숨겨서 쓴다’는 뜻이 되었어요. 스테가노그래피는 이렇게 아주 오래전부터, 무언가를 남몰래 기록하고 조심스럽게 전달하려는 인간의 본능적인 시도에서 시작된 개념이라고 볼 수 있습니다.
고대에는 밀랍판 아래에 비밀 메시지를 새겨 보내거나 눈에 보이지 않는 잉크로 편지를 쓰는 방식 등이 스테가노그래피의 초기 형태였죠.
이후 제 2차 세계대전을 거치며 모스부호와 같이 점과 선의 배열로 메세지를 전달하는 방식으로 진화했어요!
비밀을 짜는 여자 - 니트 속 전쟁 이야기
1940년대, 전쟁의 소용돌이 속. 독일군의 감시망을 피해, 한 여성이 손에 든 건 총도, 무전기도 아닌… 뜨개바늘이었습니다.
“뜨개질하는 아주머니가 무슨 위협이 되겠어?”
적들은 그렇게 생각했죠. 하지만 그녀의 손끝은 단순히 실을 엮는 것이 아니라, 모스 부호로 된 비밀 메시지를 짜고 있었던 겁니다.
목도리의 한 줄, 장갑의 한 코, 스웨터의 무늬 속에 담긴 건 군사 기밀, 작전 코드, 탈출 루트였습니다.
그녀는 침묵했지만, 뜨개질이 말하고 있었죠.
이처럼 스테가노그래피는 단순한 ‘암호 기술’이 아니라, 정보를 숨기는 예술이기도 했습니다. 현대 디지털 시대의 숨김 기술이 이미지와 파일 속에 데이터를 숨긴다면, 과거의 스파이들은 바늘과 실로 진실을 감췄던 거예요.
지금은 이미지, 오디오, 영상 등 디지털 매체에 정보를 숨기는 방식으로 발전했어요!
석양 속에 숨겨진 기밀 - GE 엔지니어의 기술 유출 사건
붉은 석양이 물든 사진 한 장.
누가 봐도 평범한 일몰 풍경이었어요. 하지만 이 사진에는 단순한 노을보다 훨씬 더 ‘뜨거운’ 정보가 숨어 있었습니다.
미국 GE(제너럴 일렉트릭)에서 근무하던 엔지니어 Zheng Xiaoqing은 회사의 항공 기술 관련 극비 자료를 유출하기 위해, 놀라운 수법을 사용했죠.
그는 스테가노그래피 기법을 이용해, 평범한 풍경 사진의 디지털 이진 코드 안에 정보를 은밀히 삽입했습니다.
이 사진은 이메일로 평범하게 전송되었고, 겉보기엔 아무런 문제가 없는 사진 파일이었어요.
하지만 내부 데이터를 분석한 수사 당국은 그 속에 감춰진 산업기밀을 발견해내게 되었죠.
Zheng은 결국 기밀 유출 혐의로 체포되었고, 스테가노그래피는 단순한 암호 기술을 넘어 현대 산업 스파이전의 실전 무기로 등장하게 됐습니다.
이제 스테가노그래피는 과거의 편지 속 비밀 잉크를 넘어, 디지털 보안·사이버전·AI 검열 회피까지 다양한 영역으로 확장되고 있습니다.
앞서 살펴본 고대의 밀랍판, 2차 대전의 뜨개질, 그리고 석양 사진 속 기밀 정보까지, 모두 다른 방식의 스테가노그래피였죠.
이 기술이 실제로 어떤 방식으로 정보를 숨기고 전달하는지, 그 원리와 사례를 통해 조금 더 들여다보려 합니다.
숨기는 기술, 그 안에는 또 어떤 비밀이 숨어 있을까요?
숨기되, 들키지 않는 기술의 정수. 그 방식의 세계로 함께 들어가 봅시다!
스테가노그래피의 원리와 방식
스테가노그래피의 정의에 대해 알아보았으니, 이번에는 원리와 방식을 알아보도록 할게요!
스테가노그래피 기술이 사용되는 방식은 정말 다양하지만, 오늘은 그 중에서도 가장 자주 사용되는 비트 플레인 분산 방식(Bit Plane) 에 대해 자세히 알아보려고 해요. 🔎
💡비트 플레인 분산 방식(Bit Plane)이란 무엇인가?
비트 플레인 분산 방식은 상위 비트로 갈수록 영향력이 크고, 하위비트로 갈수록 인지성이 감소하는 것을 이용해 적절한 연산방식으로 비밀 정보를 삽입하는 방법입니다. 즉, 상위 비트로 갈수록 상위 비트가 데이터 전체 값에 미치는 영향력이 크며 하위비트로 갈수록 비트변경에 의한 시각적, 청각적 변화의 감지 난이도가 낮아진다는 것입니다.
이 이미지는 8비트 이진수의 각 비트가 가지는 의미와 위치를 설명하는 이미지인데요, 오른쪽으로 갈수록 비트가 가지는 중요도가 작아진다는 것을 시각적으로 확인하실 수 있으실 거예요!
💡LSB(Least Significant Bit) 방식이란?
비트 플레인 분산방식의 가장 대표적인 방식으로는 JPEG 파일에서 LSB를 사용하여 은닉하는 방법인 LSB방식이 있습니다.
LSB방식은 낮은 중요도를 가진 비트(LSB, Least Significant Bit) 들을 내가 원하는 정보로 바꿔서 넣는 방식입니다.
LSB를 1~2 비트만큼 바꾸더라도 사람이 인식하는 색상에는 큰 차이가 없기 때문에 이 방식을 이용하면 원하는 정보를 은닉할 수 있습니다.
반면, 높은 중요도를 가진 비트(MSD, Most Significant Bit)도 있는데, 이 비트는 주로 색상을 결정합니다.
💡 LSB(Least Significant Bit) 방식의 문제점
하지만 LSB방식만으로는 원하는 정보를 완벽하게 숨기기는 어려운데요, 만약 LBS에만 정보를 삽입하게 된다면 LSB만 추출할 경우 각 비트의 가장 하위 비트로 그 바이트를 채운 뒤, 시각화를 통해 원본 이미지를 LSB로 시각화 한 것과 비교한다면 LSB 기법의 사용 여부와 그 비트 정보들을 모아 삽입된 정보를 알아낼 수 있기 때문에 판별이 쉬워져 삽입한 비밀 정보가 바로 드러나게 되기 때문입니다. 😱
그리고 이것이 바로 비트 플레인 분산 방식을 사용하는 이유입니다.
LSB방식을 이용해 LSB에만 정보를 삽입하는 것이 아닌, 8비트에서 MSB를 피해 하위 비트들에 랜덤하게 정보를 삽입하는 것이지요.
위의 이미지를 참고하면, LSB방식과 비트 플레인 분산 방식을 비교해볼 수 있습니다.
앞서 다룬 내용들을 간단히 정리해본다면, LSB방식의 정보 은닉 위치가 LSB 1~2비트로 고정된 것에 비해 비트 플레인 분산 방식은 여러 비트에 랜덤하게 정보를 분산시킬 수 있기 때문에 저장할 수 있는 정보의 크기와 탐지저항성이 LSB방식에 비해 크다고 할 수 있습니다.
💡비트 플레인 분산 방식의 장점
보안성 향상
비트 플레인 분산 방식은 정보를 여러 비트에 분산해 삽입하므로, 특정 비트만 추출하는 단순 공격에 강합니다.
한 비트만 추출해도 전체 정보가 드러나지 않아 더욱 안전해지는 것이지요.
또한 암호화나 압축 등 다양한 보안 기법과 결합한다면 보안성을 더욱 높일 수 있게 됩니다.은닉 정보의 추출 난이도 증가
삽입 위치를 랜덤하게 분산시키기 때문에 은닉 정보를 추출해도 내용을 파악하기가 쉽지 않으며, 연산 방식에 순열 같은 추가 연산을 적용하여 내용 파악을 더 어렵게 만들 수도 있습니다.
이렇게 비트 플레인 분산 방식과 LSB방식에 대해 자세히 알아보았는데요, 이미지 파일 속에 원하는 정보를 숨길 수 있다는 것이 정말 신기하고 유용해 보이지 않나요?
이번 블로그에서는 스테가노그래피를 실습할 수 있는 방법도 소개하고 있으니, 조금 더 깊게 비트 플레인 분산 방식과 스테가노그래피를 알고싶으신 분들은 간단한 실습을 해보시는 건 어떨까요? 😁
스테가노그래피 실습
이번에는 스테가노그래피 기법에서 자주 사용되는 포렌식 도구를 소개해드릴게요.
저희가 소개할 도구는 바로 OpenStego와 HxD입니다.🎈
OpenStego 실행
먼저 OpenStego는 스테가노그래피 기법에서 자주 사용되는 도구입니다.
OpenStego는 Java 기반 프로그램이기 때문에, 사용 전에 Java Runtime Environment (JRE)가 설치되어 있어야 합니다.
아래 링크에서 JRE 8을 설치해 주시면 됩니다. 😊
🔗 Java Runtime Environment (JRE) 다운로드 링크
OpenStego를 실행하면 위와 같은 창이 뜹니다.
🔍 왼쪽에 보이는 두 가지 주요 기능을 함께 살펴볼까요?
Data Hiding : 이미지 안에 데이터를 숨기거나, 숨겨진 데이터를 추출할 수 있는 기능입니다.
- 🔒 Hide data : 데이터를 이미지 안에 숨깁니다.
- 🔓 Extract data : 이미지에서 데이터를 추출합니다.
Watermarking (beta) : 디지털 서명을 사용해 워터마크를 삽입하거나 검증하는 기능입니다.
- Generate signature : 서명을 생성합니다.
- Embed watermark : 워터마크를 이미지에 삽입합니다.
- Verify watermark : 삽입된 워터마크를 검증합니다.
저희는 이중에서 Data Hiding의 기능을 사용해서 실습을 진행해볼 예정입니다.
먼저 데이터를 이미지에 숨기는 과정을 살펴보겠습니다.
아래에 있는 텍스트 파일을 이미지 안에 숨겨볼게요. 🦢
- Message file: 숨기고 싶은 텍스트 파일을 선택합니다.
- Cover file: 데이터를 숨길 대상 이미지 파일을 선택합니다.
- Output stego file: 데이터를 숨긴 후의 이미지 파일(출력 이미지)을 설정합니다.
저는 Cover file과 Output stego file을 동일한 이미지로 설정했습니다.
※ 비밀번호는 설정해도 되고, 생략해도 괜찮습니다.
여기까지 다 따라오셨으면 Hide data 버튼 눌러주세요!
성공 메시지가 떴다면, 이제 이미지 안에 우리의 비밀 메시지가 쏙 들어간 거랍니다. 🎉
이번에는 숨겼던 메시지를 추출해볼까요?
- Input stego file: 메시지가 숨겨져 있는 이미지 파일을 선택합니다.
- Output folder for message file: 추출한 메시지를 저장할 폴더를 지정합니다.
비밀번호를 설정했었다면, 입력해주시고 Extract data 버튼을 눌러주세요!
이렇게 데이터 추출 성공 메시지가 표시됩니다.
숨긴 메시지가 잘 추출된 것을 확인할 수 있습니다.
🎁 연습파일
비밀번호 : SW1NG
참고로, 이 이미지에 숨긴 메시지는 위 설명과는 다른 내용이 담겨 있습니다.
복습하는 마음으로 직접 추출해보며 실습해보세요! 😊
HxD 실행
이번에는 HxD라는 도구를 소개해드릴게요! 🧩
HxD는 파일을 16진수(hex) 형태로 열어볼 수 있는 헥스 에디터입니다.
스테가노그래피 기법으로 숨겨진 데이터가 실제로 어디에 들어있는지, 눈으로 직접 확인해볼 수 있게 도와주는 도구예요.
🔗 HxD 다운로드 링크
이번에 실습할 이미지입니다.
아까랑 비슷한 것 같지만 살짝 다르답니다. 🦢
🎁 연습파일
위 이미지를 헥스 에디터(HxD)로 열어주세요!
처음에는 조금 복잡해 보일 수 있지만, 걱정하지 마세요!
헥스 에디터를 사용하면 파일 속 숨겨진 데이터를 쉽게 찾아내고 숨길 수 있답니다. 😊
🔍 HxD로 재미있게 살펴볼 수 있는 신기한 정보들이 있어요! 함께 알아볼까요? 🔍
헤더 시그니처(Header Signature) 파일의 시작 부분에서 찾을 수 있는 특별한 지문이에요!
마치 파일의 이름표 같은 거죠. 그 중 PNG 파일은 항상 89 50 4E 47 라는 고유한 코드로 시작한답니다. ✨푸터 시그니처(Footer Signature) 파일의 마지막을 알려주는 작별 인사 같은 데이터예요! 👋
그 중 PNG 파일은 49 45 4E 44 AE 42 60 82라는 고유한 코드로 마무리된답니다.
만약 이미지 파일이 끝나는 시점(푸터 시그니처) 이후에 이상한 데이터가 더 붙어 있다면, 그건 누군가가 일부러 숨겨놓은 데이터일 수도 있는 거예요!
물론 PNG 파일 외에도 다양한 파일 확장자가 있어요.
아래 사이트에서는 여러 파일의 시그니처(Signature) 정보를 확인할 수 있답니다.
🔗 http://forensic-proof.com/archives/300
아까 열어둔 이미지를 한 번 다시 볼까요?
헤더 시그니처가 89 50 4E 47로 시작하는 걸 보니까, 이건 PNG 파일인 것 같아요!
이번에는 푸터 시그니처를 확인해볼게요.
푸터 시그니처가 49 45 4E 44 AE 42 60 82로, 우리가 배운 PNG 푸터 시그니처랑 딱 맞네요!
이 파일은 PNG 파일이었어요! 😊
그리고 푸터 시그니처 뒤에는 어떤 데이터를 숨겨도 파일에 영향을 미치지 않는답니다.
오늘은 스테가노그래피에 대해 함께 배워봤어요. 재미있으셨나요?
숨겨진 정보를 찾아보는 과정, 생각보다 흥미롭죠? 😊
다음에는 또 다른 재미있는 주제로 다시 찾아올게요! 🥰
참고자료
Naver Blog. (2013). 식초로 글씨를 쓰면 어떻게 될까요?. https://blog.naver.com/cartier182/80199810045
OFFGRID. (2016). Morse Code & Why You Should Learn It. https://www.offgridweb.com/survival/morse-code-why-you-should-learn-it/
sporcle blog. (2018). What Is Morse Code and How Is It Used Today?. https://www.sporcle.com/blog/2018/10/what-is-morse-code-and-how-is-it-used-today/
WIRED. (2012). British POW Uses Morse Code to Stitch Hidden Message During WWII. https://www.wired.com/2012/01/british-pow-uses-morse-code-to-stitch-hidden-message-during-wwii/
boredpanda. (2019). Here’s How Knitting Was Used As A Tool To Spy On Enemies During Wartime. https://www.boredpanda.com/world-war-knitting-spies-and-codes/
tistory. (2020). FORENSICS 시작하기 - 기초 개념 03 :: 파일 시그니처. https://iforint.tistory.com/61
tistory. (2020). FORENSICS 시작하기 - 기초 개념 04 :: 스테가노그래피(Steganography). https://iforint.tistory.com/62
Naver Blog. (2018). 스테가노그라피(Steganography). https://blog.naver.com/aepkoreanet/221342395644
_Code and Dagger. (n.d.). Engineer Allegedly Hid Stolen Files in Sunset Photo. https://codeanddagger.com/news/2018/8/2/engineer-allegedly-hid-stolen-files-in-photo-of-sunset
ALAJAZEERA. (2023). Ex-GE worker jailed for plotting to steal trade secrets for China. https://www.aljazeera.com/economy/2023/1/4/ge-engineer-jailed-for-plotting-to-steal-trade-secrets-for-china
Naver Blog. (2021). 스테가노그래피란?(Steganography). https://blog.naver.com/happymaru11/222430188107
2009 졸업연구 결과보고서. (2009). 스테가노그라피를 활용한 정보은닉 응용기법 연구. http://isweb.joongbu.ac.kr/~jbuis/2009/report-2009-3.pdf
OpenStego. (n.d.). OpenStego. https://www.openstego.com/