KR20060036179A - 데이터 은닉을 위한 부호화/복호화 방법 및 그 방법을이용한 부호화기/복호화기 - Google Patents

데이터 은닉을 위한 부호화/복호화 방법 및 그 방법을이용한 부호화기/복호화기 Download PDF

Info

Publication number
KR20060036179A
KR20060036179A KR1020040085219A KR20040085219A KR20060036179A KR 20060036179 A KR20060036179 A KR 20060036179A KR 1020040085219 A KR1020040085219 A KR 1020040085219A KR 20040085219 A KR20040085219 A KR 20040085219A KR 20060036179 A KR20060036179 A KR 20060036179A
Authority
KR
South Korea
Prior art keywords
string
data
storage area
code
prefix
Prior art date
Application number
KR1020040085219A
Other languages
English (en)
Other versions
KR101141897B1 (ko
Inventor
전병우
심혁재
Original Assignee
학교법인 성균관대학
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 학교법인 성균관대학 filed Critical 학교법인 성균관대학
Priority to KR1020040085219A priority Critical patent/KR101141897B1/ko
Publication of KR20060036179A publication Critical patent/KR20060036179A/ko
Application granted granted Critical
Publication of KR101141897B1 publication Critical patent/KR101141897B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/89Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving methods or arrangements for detection of transmission errors at the decoder
    • H04N19/895Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving methods or arrangements for detection of transmission errors at the decoder in combination with error concealment
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

본 발명은 무손실 데이터 은닉을 위한 부호화 및 복호화에 관한 것으로 보다 상세하게는 무손실 압축방법 중 가장 잘 알려진 LZW 압축을 이용한 무손실 데이터 은닉을 위한 부호화 및 복호화에 관한 것이다. 본 발명은 LZW의 딕셔너리(Dictionary)를 업데이트하는 방식을 이용한 것으로써, 업데이트 되는 문자열의 길이를 은닉하고자 하는 데이터의 패리티와 같은 경우는 그대로 업데이트하며, 다른 경우는 문자열의 길이를 줄이는 강제적 업데이트를 통해 기존 딕셔너리에 존재하는 코드와 같은 코드를 업데이트해 코딩 자체의 중복성을 가지게 하여 데이터를 은닉한다.
데이터 은닉, 무손실 압축, 렘펠 지브 웰치(Lempel-Ziv-Welch; LZW)압축

Description

데이터 은닉을 위한 부호화/복호화 방법 및 그 방법을 이용한 부호화기/복호화기{Encoding/Decoding Method for Data Hiding And Encoder/Decoder using the method}
도 1은 일반적인 렘펠 지브 웰치(Lempel-Ziv-Welch; LZW) 부호화기의 기능블록 구성도.
도 2는 일반적인 LZW 부호화의 동작 흐름도.
도 3은 일반적인 LZW 복호화기의 기능블록 구성도.
도 4는 일반적인 LZW 복호화의 동작 흐름도.
도 5는 본 발명의 바람직한 실시 예에 따른 데이터 은닉을 위한 부호화기의 기능 블록 구성도.
도 6은 본 발명의 바람직한 실시 예에 따른 데이터 은닉을 위한 부호화의 동작 흐름도.
도 7은 본 발명의 바람직한 실시 예에 따른 데이터 은닉을 위한 부호화의 핵심 동작 흐름도.
도 8은 본 발명의 바람직한 실시 예에 따른 은닉 데이터 추출을 위한 복호화기의 기능 블록 구성도.
도 9는 본 발명의 바람직한 실시 예에 따른 은닉 데이터 추출을 위한 복호화의 동작 흐름도.
도 10은 본 발명의 바람직한 실시 예에 따른 은닉 데이터 추출을 위한 복호화의 핵심 동작 흐름도.
<도면의 주요부분에 대한 부호의 설명>
10,100 : 부호화기의 입력버퍼 15,150 : 복화기의 입력버퍼
20,200 : 부호화기의 제어부 25,250 : 복호화기의 제어부
30,300 : 부호화기의 저장부 30A,300A : 프리픽스 저장영역
30B,300B : 서픽스 저장영역 35,350 : 복호화기의 저장부
35A,350A : 서픽스 저장영역 35B,350B : 이전코드 저장영역
35C,350C : 신규코드 저장영역 40,400 : 부호화기의 딕셔너리
50,500 : 부호화기의 출력버퍼 600 : 메시지 은닉부
650 : 메시지 복호부
본 발명은 데이터의 은닉을 위한 부호화 및 복호화에 관한 것으로, 보다 상세하게는 원본 데이터의 손실이나 왜곡을 초래하지 않으면서 데이터를 은닉 및 복원할 수 있고 이러한 은닉과 동시에 데이터의 압축을 수행할 수 있는 데이터 은닉 을 위한 부호화/복호화 방법 및 이를 이용한 복호화기/복호화기에 관한 것이다.
일반적으로 데이터 은닉이라 알려져 있는 방법은 크게 스테가노그라피(Steganography)와 워터마킹(watermarking)으로 나눌 수 있다. 전자는 데이터가 은닉되었는지의 여부조차 제 삼자에게 노출하지 않는 것을, 후자는 데이터의 은닉 여부가 알려져 있다고 생각하고, 잠재적인 제 삼자의 공격에 강인하여야 한다는 철학을 가지기 때문에 그 목적에 있어 상이할 뿐, 그 은닉을 위한 알고리듬은 상당히 유사하다고 할 수 있다. 데이터 은닉은 원본 데이터에 사용자의 메시지를 은닉하는 것인데, 추가적인 메시지가 원본에 더해지기 때문에 원본 데이터에 약간의 왜곡을 가져오게 된다. 원본 데이터는 그 파일 크기가 크기 때문에 일반적으로 압축 과정을 거치게 되며, 그러한 이유로 압축 방식을 이용한 알고리듬이 원본을 이용한 방법에 비해 효율적이라 할 수 있다.
압축 방식에는 여러 가지가 있으나, 현재 많이 사용되는 압축 방식으로는 렘펠 지브 웰치(Lempel-Ziv-Welch; 이하 "LZW"라 약칭한다) 압축 방식을 들 수 있다. LZW는 현재 모뎀 통신 CCITT V.42 비스 스탠다드, GIF, TIFF 영상 포맷의 압축 모듈, adobe사의 pdf 포맷에서의 영상 압축 등을 위해 사용되고 있다.
LZW의 압축 방식은 압축할 전체 데이터에 대한 확률 분포를 사전 조사할 필요 없이, 각 문자 스트림들이 입력되는 대로 바로 부호화 할 수 있는 적응적인 무손실 데이터 압축 방식이다. 또한 동일한 코드 테이블이 동적으로 부호화기와 복호화기에 의해 생성되어 별도의 전송을 필요치 않는 딕셔너리(dictionary)를 기반으로 한 압축 방식이다.
LZW 압축에 사용되는 주요 용어는 다음과 같이 정리할 수 있다.
- 문자(character) : 압축하고자 하는 데이터의 기본적인 처리단위로서, 오디오, 텍스트, 영상 등을 포괄하는 것으로 알파벳과 같은 글자 그 자체에 국한되는 것은 아니다. 예를 들어 영문 문서 파일에서는 알파벳 하나하나 또는 소정개수의 집합들을 각각 문자라 할 수 있으며, 영상에서는 각 픽셀 또는 소정개수의 픽셀들을 문자로 생각할 수 있다.
- 문자열(string) : 하나 또는 연속되는 문자들의 열을 지칭한다.
- 문자 스트림(character stream) : 입력으로 주어지는 일련의 문자들로서 입력 데이터 전체를 의미한다.
- 코드 (code) : 인덱스라고도 하며, 문자열이 각각 배정되어 있으며 압축된 데이터들에 대한 LZW 부호화기의 출력이 된다.
- 딕셔너리(dictionary) : 코드 테이블(code table)이라고도 하며, 딕셔너리에 있는 문자열 각각에 대해 코드(또는 인덱스)가 배정되어 있다.
- 엔트리(entry) : 딕셔너리 내부에 존재하는 각 문자열과 그 문자열을 지칭하는 코드를 말한다.
- 은닉 코드 스트림(code stream) : 압축 후에 출력되는 일련의 코드들로 은닉메시지를 포함하여 압축된 데이터를 말한다.
도1은 일반적인 LZW 부호화기에 대한 기능 블록 구성도이고, 도 2는 일반적인 LZW 부호화의 동작 흐름을 도시한 것이다.
도 1 및 도 2를 참조하여 일반적인 LZW 부호화기 및 LZW 부호화에 대하여 설명하기로 한다.
우선, 제어부(20)는 입력 문자 스트림에 존재 할 수 있는 모든 문자들에 대하여 각각의 문자에 대한 코드를 정의하는 딕셔너리(40) 초기화 과정을 수행한 다음(단계 S100), 압축을 위하여 입력버퍼(10)에 입력되는 입력 문자 스트림에서 하나의 문자를 읽어와 저장부(30)의 프리픽스 저장영역(30A)에 프리픽스로 저장한다(단계 S101). 이어, 상기 제어부(20)는 상기 입력버퍼(10)에 저장된 입력 문자 스트림에서 다음 문자를 읽어와 저장부(30)의 서픽스 저장영역(30B)에 서픽스로 저장한다(단계 S102).
그 후, 상기 제어부(20)는 상기 단계 S101 및 S102에서 읽어와 저장한 프리픽스와 서픽스를 합한 문자열이 딕셔너리(40)내의 엔트리와 매치(match)하는 것이 있는지 확인한다(단계 S103).
상기 단계 S103의 확인 결과, 매치가 있는 경우에는 상기 제어부(20)는 현재의 문자열(프리픽스+서픽스)을 상기 저장부(30)의 프리픽스 저장영역(30A)에 프리픽스로 저장한다(단계 S104). 여기서, 프리픽스 저장영역(30A)에는 기 저장된 프리픽스가 상기 단계 S104에서 새로운 프릭픽스(즉, 기존 프리픽스 + 서픽스)로 갱신 저장된다.
그 후, 상기 제어부(20)의 제어가 단계 S109로 진행하여, 상기 제어부(20)는 입력되어 입력버퍼(10)에 저장된 입력 문자 스트림으로부터 더 이상 읽을 문자가 있는지 확인한다.
상기 단계 S109에서 읽을 문자가 남아 있는 것으로 확인된 경우, 상기 제어부(20)의 제어는 상기한 S102로 되돌아가서, 입력되어 상기 입력버퍼(10)에 저장된 입력 문자 스트림으로부터 다음 문자를 읽어와 상기한 단계 S102부터의 제어 과정을 반복하여 수행한다.
상기 단계 S109에서 읽을 문자가 남아 있지 않은 것으로 확인된 경우, 상기 제어부(20)는 맨 마지막에 남게 되는 저장부(30)의 프리픽스 저장영역(30A)에 저장된 프리픽스에 해당하는 코드를 딕셔너리(40)에서 찾아서 출력버퍼(50)를 통해서 출력신호로서 출력하고(단계 S110), 모든 부호화 제어를 종료한다.
한편, 상기한 단계 S103에서, 현재의 프리픽스와 서픽스를 합한 문자열과 매치되는 문자열이 딕셔너리(40)내에 존재하지 않는 것으로 확인된 경우, 상기 제어부(20)는 현재 저장부(30)의 프리픽스 저장영역(30A)에 저장된 프리픽스에 대응하는 코드를 딕셔너리(40)에서 찾아서 출력버퍼(50)를 통해서 출력신호로서 출력한다(단계 S106).
그 후, 상기 제어부(20)는 상기 저장부(30)의 프리픽스 저장영역(30A)과 서픽스 저장영역(30B)에 각각 현재 저장되어 있는 프리픽스와 서픽스를 합하고 이를 딕셔너리(40)내에 새로운 엔트리로 추가하여, 딕셔너리(40)를 업데이트한다(단계 S107).
이어, 상기 제어부(20)는 상기 저장부(30)의 프리픽스 저장영역(30A)에 서피스 저장영역(30B)에서 읽어낸 값을 프리픽스로 갱신 저장하여 다음의 압축에 사용하도록 한다(단계 S108).
그 후, 상기 제어부(20)의 제어는 상기한 단계 S109로 진행하여, 입력되어 입력버퍼(10)에 저장된 입력 문자 스트림으로부터 더 이상 읽을 문자가 있는지 확인한다. 상기 단계 S109에서 읽을 문자가 남아 있는 것으로 확인된 경우, 상기 제어부(20)의 제어는 상기한 S102로 되돌아가서, 입력되어 상기 입력버퍼(10)에 저장된 입력 문자 스트림으로부터 다음 문자를 읽어와 상기한 단계 S102부터의 제어 과정을 반복하여 수행한다. 한편, 단계 S109에서 읽을 문자가 남아 있지 않는 것으로 확인된 경우, 상기 제어부(20)는 상기 단계 S108에서 저장부(30)의 프리픽스 저장영역(30A)에 갱신 저장된 프리픽스(즉, 서픽스)에 해당하는 코드를 딕셔너리(40)에서 찾아 출력버퍼(50)를 통해서 출력하고(단계 S110), 모든 부호화 제어를 종료한다.
도 3은 일반적인 LZW 복호화기의 기능 블록 구성도이고, 도 4는 일반적인 LZW 복호화의 동작 흐름을 도시한 것이다.
도 3 및 도 4를 참조하여 일반적인 LZW 복호화기 및 LZW 복호화에 대하여 설명하기로 한다.
우선, 제어부(25)는 부호화된 문자 스트림에 존재 할 수 있는 모든 문자들에 대하여 각각의 문자에 대한 코드를 정의하는 딕셔너리(45) 초기화 과정을 수행한 다음(단계 S300), 부호화기로부터 전송되어온 입력 신호 스트림을 입력버퍼(15)에 저장하여 이로부터 하나의 코드를 읽어와 저장부(35)의 이전 코드 저장영역(35B)에 OCODE(old code)로 저장한 후(단계 S301), 그 코드에 해당하는 문자열을 딕셔너리 (45)에서 찾아서 출력버퍼(55)를 통해서 출력한다(단계 S302).
어어, 상기 제어부(25)는 그 다음의 코드를 상기 입력버퍼(15)에서 읽어와 저장부(35)의 신규 코드 저장영역(35C)에 NCODE(new code)로 저장한다(단계 S303).
그 다음, 제어부(25)는 NCODE가 딕셔너리(45)내에 존재하는가를 확인한 후(단계 S304), 존재하는 경우 딕셔너리(45)에서 NCODE에 해당하는 문자열을 읽어 출력버퍼(55)의 스트링영역(STRING)(55A)에 저장하고(단계 S307), 상기 제어부(25)의 제어는 하기의 단계 S308로 진행한다. 여기서, 상기 스트링 저장영역(55A)은 임시적 버퍼로 사용된다.
이후, 단계 S308에서 상기 제어부(25)는 상기 스트링 저장영역(55A)에 저장된 STRING을 출력하도록 제어하고(단계 S308), 상기 제어부(25)는 상기 출력된 STRING의 첫 문자를 서픽스로 하여 상기 저장부(35)의 서픽스 저장영역(35A)에 저장한다(단계 S309).
이어, 상기 제어부(25)는 상기 이전 코드 저장영역(35B)에 저장된 OCODE와 상기 서픽스 저장영역(35A)에 저장된 서픽스를 합쳐서 딕셔너리(45)에 추가하여 딕셔너리(45)를 업데이트한다(단계 S310).
이렇게 딕셔너리 업데이트 과정이 끝나면 다음 과정을 위해 상기 제어부(25)는 저장부(35)의 이전 코드 저장영역(35B)에 신규 코드 저장영역(35C)에서 읽어낸 값을 OCODE로서 갱신 저장한다(단계 S312).
그 후, 상기 제어부(25)는 상기 입력버퍼(15)에서 읽어올 더 이상의 코드가 있는 가를 확인한 후(단계 S313), 코드가 남아 있을 경우 다시 상기한 단계 S303부 터의 과정을 반복하여 수행하고, 그 반면 상기 단계 S313에서 더 이상 코드가 남아 있지 않은 것으로 확인되면 모든 복호화 과정의 제어를 종료한다.
한편, 상기한 단계 S304에서 NCODE가 딕셔너리에 존재하지 않는 경우는 특별한 경우로 딕셔너리(45)에 추가되는 것이 인코딩되는 코드보다 늦다는 것을 의미한다. 이 경우에는 상기 제어부(25)는 상기 저장부(35)의 이전 코드 저장영역(35B)에 저장된 OCODE에 해당하는 문자열을 딕셔너리에서 읽어내어 STRING으로서 출력버퍼(55)의 스트링 저장영역(55A)에 저장하고(단계 S305), 상기 스트링 저장영역(55A)에 저장된 STRING에 이 STRING의 첫 문자와 합하여 그 합한 것을 상기 출력버퍼(55)의 스트링 저장영역(55A)에 새로운 STRING으로 갱신 저장하게 된다(단계 S306).
이후, 상기 제어부(25)는 상기 스트링 저장영역(55A)에 저장된 STRING을 출력하도록 제어하고(단계 S308), 상기한 바와 같이 단계 S309~S313의 과정을 수행한다.
한편, 현재 워터마크나 스테가노그라피(Steganography) 등 여러 가지 데이터 은닉 방법들이 제안되어 있는데, 전술한 바와 같이, 이들은 주로 압축 등 신호처리 과정 전에 원본 데이터에 수정을 가하여 데이터 은닉을 수행하며, 결과적으로 원본 정보에 대한 왜곡을 초래하게 되는 단점을 가진다. 이와 같은 기존 방법에는 LZW 압축 방식을 사용하여 GIF 이미지에 데이터를 은닉하는 방법과 색상 정보에 대한 정의(definition)인 팔레트(palette)를 이용하여 데이터를 은닉하는 방법이 있다. 이러한 방법들은 『Ogihara, T. and Kaneda, Y., "Data Embedding into Compressed Data of GIF Images," Proceedings of Pacific Rim Workshop on Digital Steganography 2003』과, 『Fridrich, J., and Du Dui, "A new steganographic methods for palette-based images," IS&T PICS Conference, pp.285-389, 1999』 등에 개시되어 있다.
LZW 압축 방식을 이용한 방법은 일반적인 LZW 과정에서 코드의 패리티(parity)와 은닉하고자 하는 데이터의 패리티를 일치 시키는 방법이다. 주어진 데이터를 LZW 방식을 이용하여 압축하기 위해 앞서 기술한 바와 같이 입력 문자 스트림에서 딕셔너리내의 엔트리와 가장 긴 길이의 문자열로 매치할 때까지 문자를 하나씩 읽어와, 읽어온 문자열에 해당하는 코드를 출력하게 된다. 이 때, 코드의 패리티가 은닉하고자 하는 데이터의 패리티와 일치한다면 원래의 코드를 그대로 출력하고 그렇지 않다면 읽어온 문자열의 가장 마지막 문자를 이와 가장 유사한 문자로 바꾸게 된다. 만약 마지막 문자를 변경한 문자열과 매치하는 엔트리가 딕셔너리내에 존재하며 이에 해당하는 코드의 패리티와 은닉하고자 하는 데이터의 패리티가 일치한다면 해당 코드를 출력한다. 그러나 변경된 문자열과 매치하는 엔트리가 존재하지 않는다면 마지막 문자열을 제거한 문자열과 일치하는 엔트리의 코드를 찾아 해당 코드의 패리티와 은닉하고자 하는 데이터의 패리티의 일치 여부를 조사한다. 만약 패리티가 서로 일치 한다면 해당 코드를 출력하고, 일치하지 않는다면 마지막 문자를 가장 유사한 문자로 수정하여 이와 같은 과정을 문자열의 길이가 3이 될 때까지 반복한다. 문자열의 길이가 3보다 작아지게 되면 데이터를 은닉하지 않게 된 다. 예를 들어, 은닉하고자 하는 데이터가 ‘0’이며, 읽어온 문자열이 ‘01 01 33 11 02’ 이고 이와 일치하는 엔트리의 코드가 ‘130’일 경우, 은닉하려는 메시지의 패리티와 출력하고자하는 코드의 패리티가 일치하므로 코드 ‘130’을 그대로 출력한다. 하지만 읽어온 문자열과 일치하는 엔트리의 코드가 ‘131’로 은닉하고자 하는 데이터의 패리티와 일치 하지 않을 경우 읽어온 문자열의 맨 마지막 문자인 ‘02’를 이와 가장 유사한 문자로 대체시킨다. 만약 ‘02’와 가장 유사한 문자가 ‘44’이면 기존의 문자열 ‘01 01 33 11 02’를 ‘01 01 33 11 44’로 변경하게 되는 것이다. 이러한 방법으로 변경된 문자열과 매치하는 엔트리가 딕셔너리내에 존재하며, 이에 대한 코드의 패리티가 원하는 값을 갖는다면 해당 코드를 출력하고, 그렇지 않을 경우 마지막 문자를 제거한 ‘01 01 33 11’에 대해 동일한 과정을 반복한다. 그러나 이와 같은 방법의 경우 입력 문자의 강제적인 변형으로 인해 원래의 입력 신호를 왜곡하는 결과를 초래하게 된다.
팔레트를 이용하여 데이터를 은닉하는 방법은 다음과 같다. 팔레트내의 모든 색에 대하여 가장 유사한 색과 서로 짝을 이루도록 한 후, 각 쌍 내의 두 가지 색에 대하여 서로 다른 패리티를 부여한다. 은닉하고자 하는 데이터의 패리티와 입력 문자의 패리티가 동일하다면 입력 문자를 그대로 사용하고, 그렇지 않다면 입력 문자와 가장 유사한 색을 가지며 다른 패리티를 갖도록 앞서 짝을 이룬 색으로 변경한다. 예를 들어, 팔레트의 ‘120’에 해당하는 색과 ‘30’에 해당하는 색이 가장 유사할 경우 서로 짝을 이루도록 하며, ‘120’에는 ‘0’ 을 ‘30’에는 ‘1’이란 패리티를 부여한다. 만약 입력 문자의 값이 ‘120’이며 은닉하고 하는 데이터 가 ‘0’이라면 입력 문자를 그대로 사용하고, 은닉하고자 하는 데이터가 ‘1’이라면 이와 동일한 패리티를 가지며 본래의 입력 문자와 가장 유사한 색을 갖는 ‘30’으로 입력 문자를 변경하게 된다. 그러나 이와 같은 방법을 사용할 경우 수신자가 전송측에서 사용한 테이블인, 가장 유사한 색끼리 서로 짝을 이루며 각 색에 패리티를 부여한 테이블과 동일한 가지고 있어야 한다. 뿐만 아니라 앞서 서술한 LZW 압축 방식을 이용한 방법과 마찬가지로 색상 정보의 변형으로 인해 원본 영상에 왜곡이 발생하게 되는 단점을 가지고 있다.
현재 LZW와 같은 압축 방식 자체를 데이터 은닉 기술에 응용하는 예는 없는데, 이는 LZW로 압축 이후 데이터의 중복성(redundancy)이 거의 존재하지 않기 때문이다. 그러한 이유로 현존하는 대부분의 알고리듬은 압축 이전 데이터 자체에 데이터 은닉을 수행하게 되므로 데이터의 왜곡을 초래하는 결과를 낳게 된다.
본 발명은 상기한 문제점을 해결하기 위하여 안출된 것으로서, 본 발명의 목적은 데이터의 손실이나 왜곡 없이 압축을 수반함과 동시에 원하는 메시지를 은닉할 수 있는 부호화/복호화기 및 부호화/복호화 방법을 제공하고자 함에 그 목적이 있다.
또한, 본 발명의 다른 목적은 본 발명이 제시하는 방식에 의해서 은닉된 메시지를 추출하는 은닉 메시지 추출 방법을 제공하기 위한 것이다.
본 발명의 각 구성은 데이터 은닉 부호화기와 데이터 은닉 복호화기로 이루어진다. 본 발명은 문자열의 길이를, 은닉하고자 하는 메시지 데이터의 패리티와 일치하도록 변화시킨다. 문자열의 길이란 주어진 하나의 문자열을 구성하는 문자의 개수를 말하고, 새로운 문자열을 딕셔너리내에 하나의 엔트리로 추가하는 것을 업데이트(update)라 한다. 또한 문자열의 길이를 변화시킨다는 것은 그 문자열을 구성하는 문자의 개수를 하나 줄여서 딕셔너리에 추가하는 것을 말하며, 이것을 강제적 업데이트(forced update)라 정의한다. LZW는 그 특성 상 이전에 업데이트되어 딕셔너리 내에 존재하는 문자열이 현재 업데이트할 문자열의 프리픽스가 되기 때문에 문자열의 길이를 하나 줄여 업데이트할 경우, 그와 동일한 문자열이 딕셔너리 내에 언제나 존재하게 된다. 따라서 강제적 업데이트는 이러한 LZW의 특성에 의해 복호화 시에 문제를 발생시키지 않는다. 즉, 본 발명은 기존 LZW와 완전한 호환이 가능하며, 강제적으로 업데이트를 수행함으로써 압축방식 자체에 중복성을 부가하여 데이터를 은닉하는 방식이다. 이 때 데이터를 은닉하여 부호화된 코드 스트림은 데이터를 은닉하지 않고 일반적으로 부호화된 코드 스트림에 비해 파일 크기가 증가하나 그 정도가 경미하다.
이하, 첨부도면을 참조하여 본 발명의 바람직한 실시 예에 대하여 상세히 설명한다.
먼저, 도 5 내지 도 7을 참조하여 본 발명의 바람직한 실시 예에 따른 데이터 은닉을 위한 부호화 방법 및 그 부호화기에 대하여 상세히 설명한다.
도 5는 본 발명의 바람직한 실시 예에 따른 데이터 은닉을 위한 부호화기의 기능 블록 구성도이고, 도 6은 본 발명의 바람직한 실시 예에 따른 데이터 은닉을 위한 부호화의 동작 흐름도이며, 도 7은 본 발명의 바람직한 실시 예에 따른 데이터 은닉을 위한 부호화의 핵심 동작 흐름도이다.
도 5에서 입력버퍼(100), 딕셔너리(400) 및 출력버퍼(500)는 도 1의 입력버퍼(10), 딕셔너리(40) 및 출력버퍼(50)와 실질적으로 동일한 동작을 수행한다. 그러나, 본 발명의 실시 예에서는 사용자가 은닉하고자 하는 은닉 메시지가 입력되어 일시 저장되는 입력버퍼(120)와, 상기 은닉 메시지를 은닉하기 위한 메시지 은닉부(600)가 추가되며, 저장부(300)에 프리픽스의 길이값을 저장하기 위한 프리픽스 길이값 저장영역(300C)과, 상기 입력버퍼(120)에 저장된 은닉 처리되지 않은 잔존하는 은닉 메시지의 비트량을 저장하기 위한 잔존 은닉 메시지 비트량 저장영역(300D)이 추가되고, 제어부(200)의 제어흐름이 변경된 것이 도 1의 구성과 상이한 것이다.
그리고, 도 6에서는 도 2와 비교해 볼 때, 메시지 은닉을 위한 단계 S200이 추가되었으며 그 구체적인 흐름이 도 7에 도시되어 있고, 은닉할 메시지의 비트량을 계산하기 위하여 단계 S100_1이 추가되고, 프리픽스의 길이 값을 연산하기 위하여 단계 S101, S104, S108의 제어 내용이 변경되어 변수 K를 사용한 단계 S101A, S104A, S108A로 표기되었다.
도 5, 도6 및 도 7을 참조하여 본 발명의 바람직한 실시 예에 따른 데이터 은닉을 위한 부호화 방법 및 부호화기에 대하여 데이터 은닉 과정을 위주로 하여 설명한다.
먼저, 영상 혹은 문서로 이루어진 원본 데이터를 입수하고, 0과 1의 바이너리 열로 표현된 은닉할 메시지를 사용자의 필요에 따라 구성하며, 사용자가 소정의 임계값(THD)을 지정한다. 여기서 임계값(THD)은 메시지를 삽입하기 위해 선택하는 문자열의 길이의 최소값을 조정하기 위하여 사용되는 것으로, 상기 임계값(THD) 이상의 길이를 갖는 문자열에만 메시지를 은닉하게 된다. 이하의 실시 예에서는 상기 임계값(THD)은 부호화 및 복호화의 각 제어프로그램에 동일한 값으로 설정되어 있는 것으로 한다.
그 다음, 일반적인 LZW 부호화의 과정과 마찬가지로 주어진 문자 스트림(character stream)은 입력버퍼(100)에 저장되는 한편, 은닉할 메시지는 입력버퍼(120)에 저장된다.
제어부(200)는 입력 문자 스트림에 존재 할 수 있는 모든 문자들에 대하여 각각의 문자에 대한 코드를 정의하는 딕셔너리(400) 초기화 과정을 수행한다(단계 S100). 그 다음, 사용자가 은닉하고자 하는 은닉 메시지는 입력버퍼(120)에 입력 저장되어 메시지 은닉 과정을 위해 대기하고 있는 상태에 있게 되는데, 제어부(200)는 상기 입력버퍼(120)에 입력 완료된 은닉하고자 하는 총 은닉 메시지 비트량을 확인하고 그 은닉 메시지 비트량을 저장부(300)의 잔존 은닉 메시지 비트량 저장영역(300D)에 저장한다(단계 S100_1).
그 후, 상기 제어부(200)는 압축을 위하여 입력버퍼(100)에 입력 저장된 입력 문자 스트림에서 첫 번째 문자를 읽어와 저장영역(300)의 프리픽스 저장영역(300A)에 프리픽스로서 저장하고, 상기 저장부(300)의 프리픽스 길이값 저장영역(300C)에 프리픽스 길이값(K)을 "1"로 저장한다(단계 S101A).
이어, 상기 제어부(200)는 입력버퍼(100)에 입력 저장된 입력 문자 스트림에서 그 다음 문자를 읽어와 저장부(300)의 서픽스 저장영역(300B)에 서픽스로 저장한다(단계 S102).
그 후, 상기 제어부(200)는 상기 저장부(300)의 프리픽스 저장영역(300A)과 서픽스 저장영역(300B)에 저장된 프리픽스와 서픽스를 합한 문자 열(프리픽스+서픽스)이 딕셔너리(400)내에 매치(match)되는 엔트리가 존재하는지 여부를 살핀다(단계 S103).
상기 단계 S103에서 매치되는 엔트리가 있을 경우, 상기 제어부(200)는 상기 프리픽스와 상기 서픽스를 합쳐 상기 저장부(300)의 프리픽스 저장영역(300A)에 프리픽스로서 갱신 저장하고, 프리픽스 길이값 저장영역(300C)에 이전 프리픽스 길이값(K)에 "1"을 가산한 값으로 새로운 프리픽스 길이값(K)으로 갱신 저장한다(단계 S104A).
그 후, 상기 제어부(200)는 상기 입력버퍼(100)에서 읽어올 문자가 남아 있는지를 확인하여(단계 S109), 상기 입력버퍼(100)에서 읽어올 문자가 남아 있으면 상기한 단계 S102로 되돌아가서 다음 문자를 읽어와 다시 매치되는 엔트리가 딕셔 너리(400)내에 존재하는가를 확인하며(단계 S103), 이 과정은 더 이상의 매치가 없을 때까지 혹은 상기 입력버퍼(100)에서 읽어올 문자가 남아 있지 않을 때까지 반복 수행하게 된다.
상기 단계 S109에서 읽어올 문자가 남아 있지 않은 것으로 확인되면, 상기 제어부(200)는 맨 마지막에 남게 되는 저장부(300)의 프리픽스 저장영역(300A)에 저장된 프리픽스에 해당하는 코드를 딕셔너리(400)에서 찾아서 출력버퍼(500)를 통해서 출력하고(단계 S110), 모든 부호화 과정의 제어를 종료한다.
한편, 상기 단계 S103에서 매치가 있지 않은 것으로 확인되면, 상기 제어부(200)의 제어는 단계 S200으로 진행하게 된다. 이 단계 S200은 메시지 은닉을 위한 단계로서, 그 구체적인 과정은 도 7에 도시되어 있다.
도 7의 단계 S201에서, 제어부(200)는 일련의 LZW 부호화 과정 중에, 현재 은닉을 위한 데이터가 상기 입력버퍼(120)에 더 남아 있는지를 확인한다(단계 S201). 이를 위해, 상기 제어부(200)는 저장부(300)의 잔존 은닉 메시지 비트량 저장영역(300D)에서 잔존 은닉 메시지 비트량을 읽어와 입력버퍼(120)에 은닉을 위해 대기중인 남은 은닉 메시지 비트량이 "0"보다 큰 지를 확인한다.
상기 단계 S201에서 삽입하기 위한 메시지가 더 이상 남아 있지 않은 것으로 확인된 경우(즉, 은닉을 위해 대기중인 남은 은닉 메시지 비트량이 "0"인 경우), 상기 제어부(200)의 제어는 일반적인 LZW 부호화 과정을 위하여 단계 S106으로 진행하게 되고, 그렇지 않은 것으로 확인된 경우(즉, 은닉을 위해 대기중인 남은 은닉 메시지 비트량이 "0"보다 큰 경우)는 상기 제어부(200)의 제어는 다음 과정( 단계 S202)으로 진행한다.
상기 단계 S202에서 제어부(200)는 상기 저장부(300)의 프리픽스 길이값 저장영역(300C)에 저장된 프리픽스 길이값(K)와 소정의 임계값(THD)을 비교한다.
상기 단계 S202에서 프리픽스 길이값(K)이 임계값(THD)보다 크지 않을 경우에 상기 제어부(200)의 제어는 일반적인 LZW 부호화 과정을 위하여 단계 S106으로 진행한다.
한편, 상기 단계 S202에서 프리픽스 길이값(K)이 임계값(THD)보다 클 경우에, 상기 제어부(200)는 상기 입력버퍼(120)에서 은닉 메시지를 한 비트 읽어오고, 상기 저장부(300)의 잔존 은닉 메시지 비트량 저장영역(300D)에 저장된 기존의 잔존 은닉 메시지 비트량에서 1을 공제한 값을 새로운 잔존 은닉 메시지 비트량으로 하여 상기 저장부(300)의 잔존 은닉 메시지 비트량 저장영역(300D)에 갱신 저장한다(단계 S203).
그 후, 상기 제어부(200)는 상기 저장부(300)의 프리픽스 길이값 저장영역(300C)에 저장된 프리픽스 길이값(K)의 패리티와 상기 단계 S203에서 읽어들인 은닉 메시지의 한 비트가 같은 지를 비교한다(단계 S204). 여기서, 패리티의 비교는 프리픽스 길이값(K)의 홀수, 짝수 여부와 은닉할 메시지의 1 비트를 비교한다. 여기서, 패리티는 사용자가 정의함에 따라 짝수에 0을 홀수에 1을 부여할 수도 있고, 반대로 짝수에 1을 홀수에 0을 부여할 수도 있다. 즉, 짝수에 0을 홀수에 1을 부여할 경우 프리픽스 길이값(K)과 은닉할 메시지가 모두 짝수 이거나 홀수여야 패리티가 일치하게 되며, 짝수에 1을 홀수에 0을 부여할 경우 프리픽스 길이값(K)은 짝수 이고 은닉할 메시지는 홀수 이거나, 프리픽스 길이값(K)은 홀수이고 은닉할 메시지는 짝수여야 패리티가 일치하는 것으로 간주한다.
상기 단계 S204에서 두 값의 패리티가 같은 경우 제어부(200)는 다음의 단계 S106으로 진행한다.
한편, 단계 S204에서 두 값의 패리티가 다른 경우, 제어부(200)는 상기 저장부(300)의 프리픽스 길이값 저장영역(300C)에 저장된 현재 프리픽스 길이값(K)를 "1"만큼 공제하고 그 공제된 프리픽스 길이값(K)을 새로운 프리픽스 길이값(K)으로 상기 저장부(300)의 프리픽스 길이값 저장영역(300C)에 갱신 저장한다(단계 S205). 그리고, 상기 제어부(200)는 상기 저장부(300)의 프리픽스 저장영역(300A)에 저장된 프리픽스를 읽어와 이 프리픽스의 마지막 문자를 제거하고, 마지막 문자가 제거된 프리픽스를 새로운 프릭픽스로 정의하여 이 새로운 프리픽스를 상기 저장부(300)의 프리픽스 저장영역(300A)에 갱신 저장한다(단계 S206). 또한, 상기 제어부(200)는 상기 단계 S206에서 프리픽스에서 제외된 마지막 문자를 상기 저장부(300)의 서픽스 저장영역(300B)에 새로운 서픽스로서 갱신 저장하고(단계 S207), 상기 제어부(200)의 제어는 다음 단계 S106으로 진행한다. 상기 단계 S207을 통해 갱신된 서픽스는 기존 LZW 부호화 과정에서의 S102과정에서 입력 문자 스트림에서 읽어와 서픽스로 저장된 문자를 대신하게 된다.
그 후, 단계 S106에서 제어부(200)는 상기 저장부(300)의 프리픽스 저장영역(300A)에 저장된 현재의 프리픽스에 대응하는 코드를 딕셔너리(400)에서 찾아서 출력버퍼(500)를 통해서 출력신호로서 출력한다(단계 S106).
이어, 상기 제어부(200)는 상기 저장부(300)의 프리픽스 저장영역(300A)과 서픽스 저장영역(300B)에 각각 현재 저장되어 있는 프리픽스와 서픽스를 합하고 이를 딕셔너리(400) 내의 새로운 엔트리로 추가하여, 딕셔너리(400)를 업데이트한다(단계 S107).
그 후, 상기 제어부(200)는 상기 저장부(300)의 프리픽스 저장영역(300A)에 서피스 저장영역(300B)에서 읽어낸 값을 프리픽스로 갱신 저장하여 다음의 압축에 사용하도록 하고, 상기 저장부(300)의 프리픽스 길이값 저장영역(300C)에 프리픽스 길이값을 "1"로 갱신 저장한다(단계 S108A).
이어, 상기 제어부(200)의 제어는 상기한 단계 S109로 진행하여, 입력되어 입력버퍼(100)에 저장된 입력 문자 스트림으로부터 더 이상 읽을 문자가 있는지 확인한다. 상기 단계 S109에서 읽을 문자가 남아 있는 것으로 확인된 경우, 상기 제어부(200)의 제어는 상기한 S102로 되돌아가서, 입력되어 상기 입력버퍼(100)에 저장된 입력 문자 스트림으로부터 다음 문자를 읽어와 상기한 단계 S102부터의 제어 과정을 반복하여 수행한다. 한편, 단계 S109에서 읽을 문자가 남아 있지 않는 것으로 확인된 경우, 상기 제어부(200)는 상기 단계 S108A에서 저장부(300)의 프리픽스 저장영역(300A)에 갱신 저장된 프리픽스(즉, 서픽스)에 해당하는 코드를 딕셔너리(400)에서 찾아서 출력버퍼(500)를 통해서 출력신호로서 출력하고(단계 S110), 모든 부호화 제어를 종료한다.
다음으로, 도 8 내지 도 10을 참조하여 본 발명의 바람직한 실시 예에 따른 데이터 은닉을 위한 복호화 방법 및 그 복호화기에 대하여 상세히 설명한다.
도 8은 본 발명의 바람직한 실시 예에 따른 데이터 은닉을 위한 복호화기의 기능 블록 구성도이고, 도 9는 본 발명의 바람직한 실시 예에 따른 데이터 은닉을 위한 복호화의 동작 흐름도이며, 도 10은 본 발명의 바람직한 실시 예에 따른 데이터 은닉을 위한 복호화의 핵심 동작 흐름도이다.
도 8에서 입력버퍼(150), 딕셔너리(450) 및 출력버퍼(550)는 도 3의 입력버퍼(15), 딕셔너리(45) 및 출력버퍼(55)와 실질적으로 동일한 동작을 수행한다. 그러나, 본 발명의 실시 예에서는 사용자가 은닉한 은닉 메시지가 출력되는 출력버퍼(555)와, 상기 은닉 메시지를 복호화하여 추출하기 위한 은닉 메시지 복호부(650)가 추가되며, 저장부(350)에 스트링(STRING)의 길이값을 저장하기 위한 STRING 길이값 저장영역(350D)이 추가되고, 제어부(250)의 제어흐름이 변경된 것이 도 3의 구성과 상이한 것이다.
그리고, 도 9에서는 도 4와 비교해 볼 때 은닉 메시지의 복호화를 위한 단계 S400이 추가되었으며 그 구체적인 흐름이 도 10에 도시되어 있고, 스트링(STRING)의 길이 값을 연산하기 위하여 단계 S305, S306, S307의 제어 내용이 변경되어 변수 J를 사용한 단계 S305A, S306A, S307A로 표기되다. 또한, 딕셔너리 초기화 단계에서 제어부의 내부의 플래그(FLAG) 설정 레지스터의 플래그 값을 "0"으로 설정하는 과정을 위하여 단계 S300의 제어 내용이 변경되어 단계 S300A로 표기되었다.
도 8, 도9 및 도 10을 참조하여 본 발명의 바람직한 실시 예에 따른 데이터 은닉을 위한 복호화 방법 및 복호화기에 대하여 은닉 데이터의 복호화 과정을 위주 로 하여 설명한다.
먼저, 제어부(250)는 입력 문자 스트림에 존재 할 수 있는 모든 문자들에 대하여 각각의 문자에 대한 코드를 정의하는 딕셔너리(450) 초기화 과정을 수행하고 내부의 플래그(FLAG) 설정 레지스터에 플래그(FLAG)를 "0"으로 설정한 다음(단계 S300A), 부호화기로부터 전송되어 입력버퍼(150)에 저장된 입력 신호 스트림에서 하나의 코드를 읽어와 저장부(350)의 이전 코드 저장영역(350B)에 OCODE(old code)로 저장한 후(단계 S301), 그 코드에 해당하는 문자열을 딕셔너리(450)에서 찾아서 출력버퍼(550)를 통해서 출력한다(단계 S302).
어어, 상기 제어부(250)는 그 다음의 코드를 상기 입력버퍼(150)에서 읽어와 저장부(350)의 신규 코드 저장영역(350C)에 NCODE(new code)로 저장한다(단계 S303).
그 후, 상기 제어부(250)는 NCODE가 딕셔너리(450)내에 존재하는가를 확인한 후(단계 S304), 존재하는 경우 딕셔너리(450)에서 NCODE에 해당하는 문자열을 읽어 출력버퍼(550)의 스트링영역(STRING)(550A)에 저장하고, 해당 스트링영역에 저장된 문자열(STRING)의 길이값을 저장부(350)의 스트링(STRING) 길이값 저장영역(350D)에 저장한 다음(단계 S305), 상기 제어부(205)의 제어는 하기의 단계 S308로 진행한다.
한편, 상기한 단계 S304에서 NCODE가 딕셔너리(450) 내에 존재하지 않는 경우는 특별한 경우로 딕셔너리(450)에 추가되는 것이 인코딩되는 코드보다 늦다는 것을 의미한다. 이 경우 상기 제어부(250)는 상기 저장부(350)의 이전 코드 저장영 역(350B)에서 OCODE의 문자열을 읽어내어 STRING으로서 출력버퍼(550)의 스트링 저장영역(550A)에 저장하고, 해당 스트링영역에 저장된 문자열(STRING)의 길이값을 저장부(350)의 스트링(STRING) 길이값 저장영역(350D)에 저장한다(단계 S306A).
그 후, 상기 제어부(250)는 상기 스트링 저장영역(550A)에 저장된 STRING에 이 STRING의 첫 문자와 합하고 그 합한 것을 새로운 STRING으로서 상기 출력버퍼(550)의 스트링 저장영역(550A)에 갱신 저장하고, 상기 저장부(350)의 스트링(STRING) 길이값 저장영역(350D)에 기 저장된 스트링(STRING) 길이값에 "1"을 가산한 값을 새로운 스트링(STRING) 길이값으로 갱신 저장한 다음(단계 S307A), 상기 제어부(250)의 제어는 단계 S308로 진행한다.
상기 단계 S308에서 상기 제어부(250)는 상기 스트링 저장영역(550A)에 저장된 STRING을 출력하도록 제어하고, 상기 출력된 STRING의 첫 문자를 서픽스로 하여 상기 저장부(350)의 서픽스 저장영역(350A)에 저장한다(단계 S309).
이어, 상기 제어부(250)는 상기 이전 코드 저장영역(350B)에 저장된 OCODE와 상기 서픽스 저장영역(350A)에 저장된 서픽스를 합쳐서 딕셔너리(450)에 추가하여 딕셔너리(450)를 업데이트한다(단계 S310).
그 후, 상기 제어부(250)는 은닉 메시지 복호화 과정인 단계 S400을 수행하는데, 이 단계 S400에 대해서는 도 10을 참조하여 설명한다.
먼저, 상기 제어부(250)는 내부 플래그 설정 레지스터에서 플래그(FLAG) 정보를 확인하는데(단계 S401), 상기 저장부(350)의 스트링 길이값 저장영역(350D)에 저장된 스트링(STRING) 길이값(J)과 소정의 기 설정된 임계값(THD)이 같은 경우는 해당 스트링(즉, 문자열)에 대하여 LZW 복호화를 통해 딕셔너리(450)내에 업데이트된 문자열이 기존에 하나 이상 존재하는가를 반드시 확인하여야 한다. 하지만 이러한 작업은 현재 스트링이 딕셔너리(450)에 업데이트가 끝난 이후에 가능하기 때문에, 현재 스트링(STRING) 길이값(J)과 입계값(THD)의 동일여부는 다음 과정에서 확인하여야 하며 이를 위해 한 비트의 플래그(FLAG)를 사용한다.
상기 플래그(FLAG)가 0인 경우는 스트링(STRING) 길이값(J)이 임계값(THD) 보다 큰 경우이며, 플래그(FLAG)가 1인 경우는 스트링 길이값(J)이 임계값(THD)과 같은 경우이다.
따라서 단계 S401에서 플래그(FLAG)값이 1인 것으로 확인된 경우, 제어부(250)는 현재 업데이트한 문자열과 동일한 문자열이 딕셔너리(450)에 이미 하나 이상 존재하는 가를 확인한다(단계 S402). 만약 하나 이상의 동일한 문자열을 발견했을 시에는 상기 제어부(250)는 임계치(THD)의 패리티를 읽어오고(단계 S403), 읽어온 임계값(THD)의 패리티를 은닉 메시지로서 출력버퍼(555)를 통하여 출력한후(단계 404) 내부 플래그 설정 레지스터에 플래그(FLAG)를 0으로 설정한다(단계 S405). 한편, 상기 단계 S402에서 동일한 문자열이 딕셔너리(450)에 존재하지 않는 것으로 확인된 경우, 상기 제어부(250)는 메시지가 은닉이 되지 않은 경우이므로 내부 플래그 설정 레지스터에 플래그(FLAG)를 0으로 설정한다(단계 S405).
그 후, 제어부(250)는 LZW 복호화 과정에서 저장된 STRING의 길이값(J)과 임계값(THD)의 크기를 비교한다(단계 S406). STRING의 길이값(J)이 임계값(THD)보다 작은 경우 상기 제어부(250)의 제어는 다음의 단계 S312로 진행한다.
한편, 상기 단계 S406에서 STRING의 길이값(J)이 임계값(THD)보다 작지 않은 것(즉, 크거나 같은 것)으로 확인된 경우, 제어부(250)는 단계 S407에서 STRING의 길이값(J)이 임계값(THD)과 같은 지를 확인한다.
상기 단계 S407에서 STRING의 길이값(J)이 임계값(THD)과 같지 않은 것으로 확인된 경우(즉, THD보다 STRING의 길이가 큰 경우)는 메시지가 은닉된 경우를 의미하므로, 제어부(250)는 STRING의 길이값(J)의 짝수, 홀수 여부를 나타내는 패리티 값을 추출하고(단계 S409), 이 스트링 길이값(J)의 패리티를 은닉 메시지 비트로서 출력버퍼(555)를 통하여 출력한다(단계 S410).
한편, 상기 단계 S407에서 STRING의 길이값(J)이 임계값(THD)과 같은 것으로 확인된 경우, STRING이 LZW 복호화 과정을 통해 딕셔너리(450)에 추가된 후, 그와 동일한 문자열이 하나 이상 존재하는가를 확인하여야 한다. 하지만 이 과정은 다음 코드를 읽은 후 수행할 수 있는 과정이므로, 제어부(250)는 단계 S408에서 확인을 위해 플래그(FLAG)값을 1로 설정하고, 하기의 단계 S312로 진행한다.
상기와 같이 딕셔너리(450) 업데이트 과정(단계 S310) 및 은닉 메시지 복호화 과정(단계 S400)을 수행하고, 다음 과정을 위해 상기 제어부(250)는 저장부(350)의 이전 코드 저장영역(350B)에 신규 코드 저장영역(350C)에서 읽어낸 값을 OCODE로서 갱신 저장한다(단계 S312).
그 후, 상기 제어부(250)는 상기 입력버퍼(150)에서 읽어올 더 이상의 코드가 있는 가를 확인한 후(단계 S313), 코드가 남아 있을 경우 상기 제어부(250)의 제어가 상기한 단계 S303로 되돌아가서 단계 S303부터의 과정을 반복하여 수행하 고, 그 반면 상기 단계 S313에서 더 이상 코드가 남아 있지 않은 것으로 확인되면 모든 복호화 과정의 제어를 종료한다.
일반적인 LZW부호화와 본 발명에 다른 데이터 은닉을 수행한 LZW부호화를 비교하기 위하여 "abbabbaabbababbabbab"를 압축하는 경우를 표1에 나타냈다.
<표1>
LZW 부호화 본 발명의 데이터 은닉을 수행한 LZW 부호화
input output new symbol input output new symbol 은닉된 데이터
a a 256 = aa a a 256 = aa
b a 257 = ab b a 257 = ab
b b 258 = bb b b 258 = bb
a b 259 = ba a b 259 = ba
bb 257 260 = abb bb 257 260 = abb
aa 259 261 = baa aa 259 261 = baa
bba 260 262 = abba bba 260 262 = abba 1
ba 257 263 = aba ba 257 263 = aba
bbab 262 264 = abbab bbab 260 264 = abba 1
bab 258 265 = bba bab 262 265 = abbab 0
표1에서는 임계값(THD)을 3으로 설정했고, 길이가 3보다 큰 심볼에 대해서만 데이터 은닉이 가능하게 하였다. 따라서, 코드 인덱스가 256~261, 263를 갖는 심볼들은 그 길이 값이 임계값(THD)보다 크지 않으므로 통상의 업데이트 처리가 수행되었으며, 코드 인덱스가 262, 264, 265를 갖는 심볼들은 그 길이값이 임계값(THD)보다 크므로 데이터 은닉을 수행하기 위하여 심볼 길이를 변화시켰다.
표2에는 상기한 표1과 같이 "abbabbaabbababbabbab"를 압축한 값을 일반적인 LZW복호화와 본 발명에 다른 데이터 은닉 LZW 복호화을 수행한 경우를 표2에 나타냈다.
<표2>
LZW 복호화 본 발명의 데이터 은닉을 수행한 LZW 복호화
input old code output new table entry input old code output new table entry data
a a a a
a a a 256 = aa a a a 256 = aa
b a b 257 = ab b a b 257 = ab
b b b 258 = bb b b b 258 = bb
257 b ab 259 = ba 257 b ab 259 = ba
259 257 ba 260 = abb 259 257 ba 260 = abb
260 259 abb 261 = baa 260 259 abb 261 = baa 1
257 260 ab 262 = abba 257 260 ab 262 = abba
262 257 abba 263 = aba 260 257 abb 263 = aba 1
258 262 bb 264 = abbab 262 260 abba 264 = abba 0
257 258 ab 265 = bba b 262 b 265 = abbab

한편, 상기한 실시 예에서는 문자 스트림의 LZW 부호화/복호화시에 데이터를 은닉하는 방식에 대하여 설명하였지만, 본 발명은 디지털 영상 스트림 및 디지털 오디오 스트림 등 적용 가능한 모든 데이터의 LZW 부호화/복호화시에도 마찬가지로 본 발명을 적용하여 데이터를 은닉할 수 있다.
본 발명은 도면을 참조한 특정 실시 예에 한정하여 설명하였지만, 본 발명은 도면과 관련된 특정 실시예에 한정되는 것이 아니라 본 발명의 요지를 벗어나지 않는 범위 내에서 여러 가지로 수정 및 변형하여 실시할 수 있는 것임은 본 발명에 속하는 기술 분야에서 통상의 지식을 가진 자에게 자명할 것이다.
상기한 바와 같이, 본 발명은 무손실 압축방법 중 가장 잘 알려진 LZW 압축과 데이터 은닉 기술을 혼합한 것으로써, 기존 기술에서 발생되었던 원본 데이터의 손실이나 왜곡의 발생을 제거하며, LZW의 본래 목적인 압축을 실행함과 동시에 데 이터의 인증, 부가적인 메시지 전송 등을 데이터 은닉을 통하여 수행할 수 있다.

Claims (2)

  1. 소정의 제1 데이터 스트림의 렘펠 지브 웰치(Lempel-Ziv-Welch) 부호화 처리 시에, 상기 제1 데이터 스트림과는 다른 별도의 제2 데이터 스트림을 입력받아 소정 비트단위로 은닉 처리하는 것을 특징으로 하는 부호화 방법.
  2. 소정의 제1 데이터 스트림의 렘펠 지브 웰치(Lempel-Ziv-Welch) 부호화 처리 시에 상기 제1 데이터 스트림과는 다른 별도의 제2 데이터 스트림을 입력받아 소정 비트단위로 은닉 처리되어 부호화된 입력 신호 스트림에 대하여, 렘펠 지브 웰치 복호화 처리시에, 상기 은닉된 제 2데이터 스트림을 복호화 함과 동시에 상기 제2 데이터 스트림을 복호화하는 것을 특징으로 하는 복호화 방법.
KR1020040085219A 2004-10-25 2004-10-25 데이터 은닉을 위한 부호화/복호화 방법 및 그 방법을이용한 부호화기/복호화기 KR101141897B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020040085219A KR101141897B1 (ko) 2004-10-25 2004-10-25 데이터 은닉을 위한 부호화/복호화 방법 및 그 방법을이용한 부호화기/복호화기

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020040085219A KR101141897B1 (ko) 2004-10-25 2004-10-25 데이터 은닉을 위한 부호화/복호화 방법 및 그 방법을이용한 부호화기/복호화기

Publications (2)

Publication Number Publication Date
KR20060036179A true KR20060036179A (ko) 2006-04-28
KR101141897B1 KR101141897B1 (ko) 2012-05-03

Family

ID=37144445

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040085219A KR101141897B1 (ko) 2004-10-25 2004-10-25 데이터 은닉을 위한 부호화/복호화 방법 및 그 방법을이용한 부호화기/복호화기

Country Status (1)

Country Link
KR (1) KR101141897B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100965603B1 (ko) * 2008-03-17 2010-06-23 경기대학교 산학협력단 이미지를 이용한 메시지 수신 방법 및 그 장치
KR101006864B1 (ko) * 2008-10-15 2011-01-12 고려대학교 산학협력단 데이터 은닉을 이용한 데이터 무손실 압축방법

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW312770B (en) 1996-10-15 1997-08-11 Japen Ibm Kk The hiding and taking out method of data
KR100739031B1 (ko) * 2000-03-27 2007-07-25 주식회사 큐론 멀티미디어 검색시스템에서 mpeg-7 표준 메타데이터의 은닉 및 검출 방법과 이를 이용한 멀티미디어 데이터의 검색 방법
JP4214440B2 (ja) * 2000-10-19 2009-01-28 ソニー株式会社 データ処理装置およびデータ処理方法、並びに記録媒体

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100965603B1 (ko) * 2008-03-17 2010-06-23 경기대학교 산학협력단 이미지를 이용한 메시지 수신 방법 및 그 장치
KR101006864B1 (ko) * 2008-10-15 2011-01-12 고려대학교 산학협력단 데이터 은닉을 이용한 데이터 무손실 압축방법

Also Published As

Publication number Publication date
KR101141897B1 (ko) 2012-05-03

Similar Documents

Publication Publication Date Title
US7365658B2 (en) Method and apparatus for lossless run-length data encoding
JP3459030B2 (ja) 符号化システム
Salomon A concise introduction to data compression
US6529553B2 (en) HVQ compression for image boundaries
US7254250B2 (en) Watermark embedding and extraction method and apparatus in compressed streams
KR100604364B1 (ko) 정보신호의 연산 인코딩 및 디코딩
CN1675842B (zh) 算术编码的方法、设备以及相应解码方法
US8107743B2 (en) Image processing device, image processing method, and storage medium
EP0658982B1 (en) System for bi-level symbol coding-decoding with saved storage and method for the same
JP3872217B2 (ja) ディザ画像の2値表現処理方法、ディザ画像の圧縮2値表現圧縮解除方法、及びディザ画像の圧縮及び圧縮解除システム
Mathpal et al. A research paper on lossless data compression techniques
KR101141897B1 (ko) 데이터 은닉을 위한 부호화/복호화 방법 및 그 방법을이용한 부호화기/복호화기
US6078696A (en) HVQ compression of data and printing hints
KR100636370B1 (ko) 결정 비트를 이용한 부호화 장치 및 그 방법과 그에 따른복호화 장치 및 그 방법
EP0506405A2 (en) Image transmission method, and apparatus therefor
Shim et al. DH-LZW: lossless data hiding in LZW compression
US20080137974A1 (en) JBIG coding and decoding system
JPH11317673A (ja) ランレングス符号化方法及び復号化方法
JP2891818B2 (ja) 符号化装置
JP3119027B2 (ja) 符号化方式および復号方式および符号化/復号方式
JP3836997B2 (ja) 符号化装置
WO2005074146A1 (en) Data encoding using multi-dimensional redundancies
JP4743884B2 (ja) 画像符号化装置及びその制御方法
Shim et al. DH-LZW: Lossless data hiding method in LZW compression
JP3321226B2 (ja) 符号化復号化方法

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160328

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee