최하위 비트(LSB, Least Significant Bit) 삽입 기법은 이미지 파일에 데이터를 은닉하는 가장 일반적이면서도 간단한 방법입니다. 이 방식은 바이트의 최하위 비트를 숨기려는 메시지의 비트로 대체하는 원리로 작동하며, 이미지 스테가노그래피(정보 은닉)에 특히 효과적입니다. 이미지 내부에 데이터를 숨길 때는 주로 LSB 방식이 활용됩니다.
데이터 은닉에 적합한 이미지 형식
이미지 파일은 이미지의 서로 다른 위치에 다양한 색상과 빛의 강도를 표현하는 파일입니다. 데이터를 숨기기에 가장 적합한 형식은 24비트 BMP(비트맵) 이미지입니다.
이미지의 화질과 해상도가 높을수록 그 안에 정보를 숨기기가 더 쉬워집니다. 특히 24비트 이미지는 용량이 크기 때문에 데이터 은닉에 가장 유리합니다.
다만 일부 사용자는 8비트 BMP나 GIF를 포함한 다른 이미지 형식을 선택하기도 합니다. 그 이유는 인터넷에서 지나치게 큰 고화질 이미지는 오히려 의심을 불러일 수 있기 때문입니다.
LSB 삽입의 기본 원리
최하위 비트, 즉 여덟 번째 비트는 비밀 메시지의 한 비트로 교체하는 데 사용됩니다. 24비트 이미지를 사용할 경우, 빨강·초록·파랑(RGB) 각 색상 요소의 비트 하나씩을 변경하여 픽셀당 3비트씩 저장할 수 있습니다.
예를 들어 RGB 인코딩으로 표현된 인접한 세 개의 픽셀(9바이트)이 있다고 가정해 보겠습니다.
10010101 00001101 11001001
10010110 00001111 11001011
10011111 00010000 11001011
여기에 숫자 300의 이진수 표현인 100101100을 이미지 요소들의 최하위 비트에 삽입한다고 가정하면, 이 9비트를 9바이트 각각의 LSB에 배치하여 다음과 같은 결과를 얻습니다(굵게 표시된 비트가 수정된 부분입니다).
10010101 00001100 11001000
10010111 00001110 11001011
10011111 00010000 11001010
이렇게 하여 숫자 300이 픽셀 그리드에 성공적으로 삽입되었으며, 실제로 변경해야 했던 비트는 단 5개뿐이었습니다. 평균적으로 최대 은닉 용량을 사용해 비밀 메시지를 숨길 때 이미지 전체 비트의 절반 정도만 변경하면 됩니다.
LSB 알고리즘의 동작 과정
M×N 크기의 커버 이미지(원본 이미지)를 입력으로 선택합니다.
숨기려는 메시지는 이미지의 RGB 색상 요소에만 삽입됩니다.
더 나은 품질(낮은 왜곡)을 얻기 위해 픽셀 선택 필터를 사용하여 커버 이미지 내에서 정보를 숨기기에 가장 적합한 위치를 찾습니다.
필터를 통해 각 픽셀의 최하위 비트(LSB)에 기록을 숨기고, 상위 비트(MSB)는 그대로 유지합니다.
마지막으로 비트 치환(Bit Replacement) 방식을 이용해 메시지를 은닉합니다.
GIF 이미지 사용 시 주의점
GIF 이미지 역시 LSB 스테가노그래피에 활용할 수 있지만, 더욱 세심한 주의가 필요합니다. GIF가 사용하는 팔레트 방식의 문제점은 픽셀의 최하위 비트를 변경하면 색상 팔레트를 가리키는 인덱스 자체가 달라져 완전히 다른 색상이 표시될 수 있다는 점입니다.
인접한 팔레트 항목들이 서로 유사하다면 변화가 거의 없거나 눈에 띄지 않을 수 있습니다. 반면 인접한 팔레트 항목들이 크게 다르다면 그 변화는 명확하게 드러날 수 있으므로, GIF를 사용할 때는 팔레트 구성을 반드시 고려해야 합니다.