스테가노그래피란 무엇인가?
스테가노그래피(steganography)는 데이터를 숨겨 그 존재 자체를 알아챌 수 없게 만드는 예술이자 과학입니다. 비밀 정보를 다른 매체 안에 암호화된 형태로 삽입함으로써, 정보가 존재한다는 사실조차 외부에 드러나지 않도록 하는 것이 핵심입니다.
기존의 통신 방식과 결합하면, 스테가노그래피는 겉보기에는 평범한 데이터 교환처럼 보이는 가운데 숨겨진 메시지를 전달할 수 있습니다.
스테가노그래피의 핵심 목적
스테가노그래피의 가장 중요한 목표는 완전히 식별 불가능한 방식으로 안전하게 통신하고, 은닉된 정보의 전송이 의심받지 않도록 하는 것입니다.
흥미로운 점은 스테가노그래피가 단순히 타인이 숨겨진 정보를 이해하지 못하도록 막는 데 그치지 않고, 애초에 그런 정보가 존재한다는 사실 자체를 인식하지 못하게 한다는 것입니다. 만약 어떤 스테가노그래피 기법이 제3자에게 캐리어 매체(운반체)에 대한 의심을 일으킨다면, 그 기법은 실패한 것으로 간주됩니다.
응용 분야별 상이한 요구 사항
스테가노그래피 기법은 응용 분야에 따라 서로 다른 요구 조건을 갖습니다. 예를 들어, 어떤 응용 프로그램은 비공개 정보의 무조건적 비가시성을 요구하는 반면, 다른 응용 프로그램은 더 높은 수준의 비밀 메시지 은닉성을 필요로 합니다.
스테가노그래피 소프트웨어의 작동 방식
스테가노그래피 소프트웨어는 데이터를 그래픽, 사운드, 그리고 겉보기에 텅 빈 것처럼 보이는 미디어 속에 숨길 수 있게 해줍니다. 대표적인 예로 이미지나 그림 파일을 통해 데이터를 전송하는 방식이 있습니다.
RGB 트리플과 24비트 이미지
RGB 트리플(RGB triple)은 픽셀당 3바이트를 사용합니다. 24비트 이미지에 데이터를 삽입하면 컨테이너 문서는 무해해 보이며, 사람의 눈으로는 삽입된 메시지 파일을 분석할 수 없습니다. 이러한 방식은 파일 압축 과정에서 데이터 저장이 손상될 수 있는 문제로부터도 정보를 보호해 줍니다.
JPEG 기반 이미지 스테가노그래피
이미지 스테가노그래피는 JPEG 소프트웨어를 통해 가장 효율적으로 구현됩니다. JPEG는 소스 코드가 공개되어 있어 여러 플랫폼에서 코드를 컴파일하여 활용할 수 있습니다.
JPEG는 손실 압축(lossy encoding) 방식으로 정보를 압축하며, 출력에는 JFIF 파일 형식이 사용됩니다. JFIF는 손실(lossy) 단계와 무손실(lossless) 단계를 모두 포함하는데, 전달하려는 정보는 바로 이 단계들 사이에 숨겨집니다.
JPEG에서 파일 압축은 가장 큰 장점입니다. 색상이 복잡한 대형 이미지도 상대적으로 작은 파일로 저장할 수 있습니다. 또 다른 예로는 사운드나 오디오 파일을 통해 데이터를 전송하는 방식이 있습니다.
대표적인 스테가노그래피 소프트웨어
현재 시장에는 Hide-&-Seek, StegosDos, White Noise 등 비교적 최근에 개발된 다양한 스테가노그래피 소프트웨어 패키지가 존재합니다. 이들 소프트웨어는 메시지를 삽입하기 전에 먼저 암호화하여 추가적인 보호 계층을 제공합니다.
중복 비트와 DCT 변환을 활용한 은닉 원리
스테가노그래피의 주요 특징 중 하나는 데이터를 객체의 중복 비트(redundant bits)에 숨긴다는 점입니다. 그런데 JPEG 압축 과정에서 중복 비트는 제거되기 때문에, 숨겨진 메시지가 유실될 수 있다는 우려가 있었습니다.
그러나 JPEG는 이미지에 가해지는 변화를 사람의 눈에 보이지 않게 만드는 방식으로 이 문제를 해결합니다. 압축 알고리즘의 DCT(이산 코사인 변환) 과정에서 계수 정보에 반올림 오류가 발생하는데, 이 오류는 육안으로 식별되지 않습니다.
이 특성은 JPEG 알고리즘이 '손실 압축'으로 분류되는 이유이기도 하지만, 동시에 메시지를 은닉하는 데 활용될 수 있는 강력한 도구이기도 합니다.