KR101141897B1 - Encoding/Decoding Method for Data Hiding And Encoder/Decoder using the method - Google Patents
Encoding/Decoding Method for Data Hiding And Encoder/Decoder using the method Download PDFInfo
- Publication number
- KR101141897B1 KR101141897B1 KR1020040085219A KR20040085219A KR101141897B1 KR 101141897 B1 KR101141897 B1 KR 101141897B1 KR 1020040085219 A KR1020040085219 A KR 1020040085219A KR 20040085219 A KR20040085219 A KR 20040085219A KR 101141897 B1 KR101141897 B1 KR 101141897B1
- Authority
- KR
- South Korea
- Prior art keywords
- string
- character
- stored
- dictionary
- code
- Prior art date
- Legal status (The legal status 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 status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/85—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
- H04N19/89—Methods 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/895—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/146—Data 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)를 업데이트하는 방식을 이용한 것으로써, 업데이트 되는 문자열의 길이가 은닉하고자 하는 데이터의 패리티와 같은 경우는 그대로 업데이트하며, 다른 경우는 문자열의 길이를 줄이는 강제적 업데이트를 통해 기존 딕셔너리에 존재하는 코드와 같은 코드를 업데이트해 코딩 자체의 중복성을 가지게 하여 데이터를 은닉한다.The present invention relates to encoding and decoding for lossless data concealment, and more particularly, to encoding and decoding for lossless data concealment using LZW compression, which is the best known lossless compression method. The present invention uses a method of updating a dictionary of LZW. If the length of the updated string is the same as the parity of the data to be concealed, it is updated as it is. Update code, such as code that exists in existing dictionaries, to hide data by making the code itself redundant.
데이터 은닉, 무손실 압축, 렘펠 지브 웰치(Lempel-Ziv-Welch; LZW)압축Data concealment, lossless compression, Lempel-Ziv-Welch (LZW) compression
Description
도 1은 일반적인 렘펠 지브 웰치(Lempel-Ziv-Welch; LZW) 부호화기의 기능블록 구성도.1 is a functional block diagram of a typical Lempel-Ziv-Welch (LZW) encoder.
도 2는 일반적인 LZW 부호화의 동작 흐름도.2 is an operation flowchart of a general LZW encoding.
도 3은 일반적인 LZW 복호화기의 기능블록 구성도.3 is a functional block diagram of a typical LZW decoder.
도 4는 일반적인 LZW 복호화의 동작 흐름도.4 is an operational flowchart of general LZW decryption.
도 5는 본 발명의 바람직한 실시 예에 따른 데이터 은닉을 위한 부호화기의 기능 블록 구성도.5 is a functional block diagram of an encoder for hiding data according to a preferred embodiment of the present invention.
도 6은 본 발명의 바람직한 실시 예에 따른 데이터 은닉을 위한 부호화의 동작 흐름도.6 is an operational flowchart of encoding for data concealment according to a preferred embodiment of the present invention.
도 7은 본 발명의 바람직한 실시 예에 따른 데이터 은닉을 위한 부호화의 핵심 동작 흐름도.7 is a flowchart illustrating the key operations of encoding for data concealment according to a preferred embodiment of the present invention.
도 8은 본 발명의 바람직한 실시 예에 따른 은닉 데이터 추출을 위한 복호화기의 기능 블록 구성도. 8 is a functional block diagram of a decoder for extracting hidden data according to a preferred embodiment of the present invention.
도 9는 본 발명의 바람직한 실시 예에 따른 은닉 데이터 추출을 위한 복호화의 동작 흐름도.9 is an operational flowchart of decryption for extracting hidden data according to a preferred embodiment of the present invention.
도 10은 본 발명의 바람직한 실시 예에 따른 은닉 데이터 추출을 위한 복호화의 핵심 동작 흐름도.10 is a flowchart illustrating a key operation of decryption for extracting hidden data according to an exemplary embodiment of the present invention.
<도면의 주요부분에 대한 부호의 설명><Description of the symbols for the main parts of the drawings>
10,100 : 부호화기의 입력버퍼 15,150 : 복화기의 입력버퍼10,100: encoder's input buffer 15,150: decoder's input buffer
20,200 : 부호화기의 제어부 25,250 : 복호화기의 제어부20,200: control unit of the encoder 25,250: control unit of the decoder
30,300 : 부호화기의 저장부 30A,300A : 프리픽스 저장영역30,300: storage unit of the
30B,300B : 서픽스 저장영역 35,350 : 복호화기의 저장부30B, 300B: Suffix storage area 35,350: Storage part of decoder
35A,350A : 서픽스 저장영역 35B,350B : 이전코드 저장영역35A, 350A:
35C,350C : 신규코드 저장영역 40,400 : 부호화기의 딕셔너리35C, 350C: New code storage area 40,400: Dictionary of encoder
50,500 : 부호화기의 출력버퍼 600 : 메시지 은닉부50,500: Encoder output buffer 600: Message concealment unit
650 : 메시지 복호부
650: message decoder
본 발명은 데이터의 은닉을 위한 부호화 및 복호화에 관한 것으로, 보다 상세하게는 원본 데이터의 손실이나 왜곡을 초래하지 않으면서 데이터를 은닉 및 복원할 수 있고 이러한 은닉과 동시에 데이터의 압축을 수행할 수 있는 데이터 은닉 을 위한 부호화/복호화 방법 및 이를 이용한 복호화기/복호화기에 관한 것이다.The present invention relates to encoding and decoding for concealing data, and more particularly, it is possible to conceal and recover data without incurring loss or distortion of original data and to compress data simultaneously with such concealment. The present invention relates to an encoding / decoding method for data concealment and a decoder / decoder using the same.
일반적으로 데이터 은닉이라 알려져 있는 방법은 크게 스테가노그라피(Steganography)와 워터마킹(watermarking)으로 나눌 수 있다. 전자는 데이터가 은닉되었는지의 여부조차 제 삼자에게 노출하지 않는 것을, 후자는 데이터의 은닉 여부가 알려져 있다고 생각하고, 잠재적인 제 삼자의 공격에 강인하여야 한다는 철학을 가지기 때문에 그 목적에 있어 상이할 뿐, 그 은닉을 위한 알고리듬은 상당히 유사하다고 할 수 있다. 데이터 은닉은 원본 데이터에 사용자의 메시지를 은닉하는 것인데, 추가적인 메시지가 원본에 더해지기 때문에 원본 데이터에 약간의 왜곡을 가져오게 된다. 원본 데이터는 그 파일 크기가 크기 때문에 일반적으로 압축 과정을 거치게 되며, 그러한 이유로 압축 방식을 이용한 알고리듬이 원본을 이용한 방법에 비해 효율적이라 할 수 있다. In general, a method known as data concealment can be roughly divided into steganography and watermarking. The former differs only in that purpose because it does not expose the data to third parties even if the data is concealed, and the latter believes that the data is known to be concealed and has a philosophy that it must be robust to potential third party attacks. For this reason, the algorithm for concealment is quite similar. Data hiding is concealing the user's message to the original data, which adds some distortion to the original data as additional messages are added to the original. The original data is generally compressed because of its large file size. For that reason, the algorithm using compression is more efficient than the method using the original.
압축 방식에는 여러 가지가 있으나, 현재 많이 사용되는 압축 방식으로는 렘펠 지브 웰치(Lempel-Ziv-Welch; 이하 "LZW"라 약칭한다) 압축 방식을 들 수 있다. LZW는 현재 모뎀 통신 CCITT V.42 비스 스탠다드, GIF, TIFF 영상 포맷의 압축 모듈, adobe사의 pdf 포맷에서의 영상 압축 등을 위해 사용되고 있다. Although there are various compression methods, a compression method that is widely used at present is Lempel-Ziv-Welch (hereinafter, abbreviated as "LZW") compression method. LZW is currently used for modem communications CCITT V.42 Vis Standard, GIF and TIFF video format compression modules, and Adobe's pdf format compression.
LZW의 압축 방식은 압축할 전체 데이터에 대한 확률 분포를 사전 조사할 필요 없이, 각 문자 스트림들이 입력되는 대로 바로 부호화 할 수 있는 적응적인 무손실 데이터 압축 방식이다. 또한 동일한 코드 테이블이 동적으로 부호화기와 복호화기에 의해 생성되어 별도의 전송을 필요치 않는 딕셔너리(dictionary)를 기반으로 한 압축 방식이다. LZW's compression scheme is an adaptive lossless data compression scheme that can directly code each character stream as it is input, without having to examine the probability distribution over the entire data to be compressed. In addition, it is a dictionary-based compression scheme in which the same code table is dynamically generated by an encoder and a decoder and does not require a separate transmission.
LZW 압축에 사용되는 주요 용어는 다음과 같이 정리할 수 있다. The main terms used in LZW compression can be summarized as follows:
- 문자(character) : 압축하고자 하는 데이터의 기본적인 처리단위로서, 오디오, 텍스트, 영상 등을 포괄하는 것으로 알파벳과 같은 글자 그 자체에 국한되는 것은 아니다. 예를 들어 영문 문서 파일에서는 알파벳 하나하나 또는 소정개수의 집합들을 각각 문자라 할 수 있으며, 영상에서는 각 픽셀 또는 소정개수의 픽셀들을 문자로 생각할 수 있다.-Character: A basic processing unit of data to be compressed. It includes audio, text, and video, and is not limited to the letters such as the alphabet itself. For example, in an English document file, each alphabet or a predetermined number of sets may be referred to as characters, and in the image, each pixel or a predetermined number of pixels may be considered as characters.
- 문자열(string) : 하나 또는 연속되는 문자들의 열을 지칭한다.String: A string of one or more characters.
- 문자 스트림(character stream) : 입력으로 주어지는 일련의 문자들로서 입력 데이터 전체를 의미한다. Character stream: A sequence of characters given to an input, meaning the entire input data.
- 코드 (code) : 인덱스라고도 하며, 문자열이 각각 배정되어 있으며 압축된 데이터들에 대한 LZW 부호화기의 출력이 된다. Code: Also known as an index, each string is assigned a string and is the output of the LZW encoder for compressed data.
- 딕셔너리(dictionary) : 코드 테이블(code table)이라고도 하며, 딕셔너리에 있는 문자열 각각에 대해 코드(또는 인덱스)가 배정되어 있다.Dictionary: Also called a code table, a code (or index) is assigned to each string in the dictionary.
- 엔트리(entry) : 딕셔너리 내부에 존재하는 각 문자열과 그 문자열을 지칭하는 코드를 말한다.Entry: Each string in the dictionary and code that refers to that string.
- 은닉 코드 스트림(code stream) : 압축 후에 출력되는 일련의 코드들로 은닉메시지를 포함하여 압축된 데이터를 말한다.
-Hidden code stream: Compressed data, including hidden messages, which is a series of codes that are output after compression.
도1은 일반적인 LZW 부호화기에 대한 기능 블록 구성도이고, 도 2는 일반적인 LZW 부호화의 동작 흐름을 도시한 것이다. 1 is a functional block diagram of a general LZW encoder, and FIG. 2 illustrates an operation flow of a general LZW encoding.
도 1 및 도 2를 참조하여 일반적인 LZW 부호화기 및 LZW 부호화에 대하여 설명하기로 한다.A general LZW encoder and LZW encoding will be described with reference to FIGS. 1 and 2.
우선, 제어부(20)는 입력 문자 스트림에 존재 할 수 있는 모든 문자들에 대하여 각각의 문자에 대한 코드를 정의하는 딕셔너리(40) 초기화 과정을 수행한 다음(단계 S100), 압축을 위하여 입력버퍼(10)에 입력되는 입력 문자 스트림에서 하나의 문자를 읽어와 저장부(30)의 프리픽스 저장영역(30A)에 프리픽스로 저장한다(단계 S101). 이어, 상기 제어부(20)는 상기 입력버퍼(10)에 저장된 입력 문자 스트림에서 다음 문자를 읽어와 저장부(30)의 서픽스 저장영역(30B)에 서픽스로 저장한다(단계 S102).First, the
그 후, 상기 제어부(20)는 상기 단계 S101 및 S102에서 읽어와 저장한 프리픽스와 서픽스를 합한 문자열이 딕셔너리(40)내의 엔트리와 매치(match)하는 것이 있는지 확인한다(단계 S103). Thereafter, the
상기 단계 S103의 확인 결과, 매치가 있는 경우에는 상기 제어부(20)는 현재의 문자열(프리픽스+서픽스)을 상기 저장부(30)의 프리픽스 저장영역(30A)에 프리픽스로 저장한다(단계 S104). 여기서, 프리픽스 저장영역(30A)에는 기 저장된 프리픽스가 상기 단계 S104에서 새로운 프릭픽스(즉, 기존 프리픽스 + 서픽스)로 갱신 저장된다.As a result of checking in step S103, if there is a match, the
그 후, 상기 제어부(20)의 제어가 단계 S109로 진행하여, 상기 제어부(20)는 입력되어 입력버퍼(10)에 저장된 입력 문자 스트림으로부터 더 이상 읽을 문자가 있는지 확인한다.
Thereafter, the control of the
상기 단계 S109에서 읽을 문자가 남아 있는 것으로 확인된 경우, 상기 제어부(20)의 제어는 상기한 S102로 되돌아가서, 입력되어 상기 입력버퍼(10)에 저장된 입력 문자 스트림으로부터 다음 문자를 읽어와 상기한 단계 S102부터의 제어 과정을 반복하여 수행한다.If it is confirmed in the step S109 that the character to be read remains, the control of the
상기 단계 S109에서 읽을 문자가 남아 있지 않은 것으로 확인된 경우, 상기 제어부(20)는 맨 마지막에 남게 되는 저장부(30)의 프리픽스 저장영역(30A)에 저장된 프리픽스에 해당하는 코드를 딕셔너리(40)에서 찾아서 출력버퍼(50)를 통해서 출력신호로서 출력하고(단계 S110), 모든 부호화 제어를 종료한다.If it is determined in step S109 that there are no characters left to read, the
한편, 상기한 단계 S103에서, 현재의 프리픽스와 서픽스를 합한 문자열과 매치되는 문자열이 딕셔너리(40)내에 존재하지 않는 것으로 확인된 경우, 상기 제어부(20)는 현재 저장부(30)의 프리픽스 저장영역(30A)에 저장된 프리픽스에 대응하는 코드를 딕셔너리(40)에서 찾아서 출력버퍼(50)를 통해서 출력신호로서 출력한다(단계 S106).On the other hand, in the above step S103, when it is confirmed that the string matching the string of the sum of the current prefix and the suffix does not exist in the
그 후, 상기 제어부(20)는 상기 저장부(30)의 프리픽스 저장영역(30A)과 서픽스 저장영역(30B)에 각각 현재 저장되어 있는 프리픽스와 서픽스를 합하고 이를 딕셔너리(40)내에 새로운 엔트리로 추가하여, 딕셔너리(40)를 업데이트한다(단계 S107). Thereafter, the
이어, 상기 제어부(20)는 상기 저장부(30)의 프리픽스 저장영역(30A)에 서피스 저장영역(30B)에서 읽어낸 값을 프리픽스로 갱신 저장하여 다음의 압축에 사용하도록 한다(단계 S108).
Subsequently, the
그 후, 상기 제어부(20)의 제어는 상기한 단계 S109로 진행하여, 입력되어 입력버퍼(10)에 저장된 입력 문자 스트림으로부터 더 이상 읽을 문자가 있는지 확인한다. 상기 단계 S109에서 읽을 문자가 남아 있는 것으로 확인된 경우, 상기 제어부(20)의 제어는 상기한 S102로 되돌아가서, 입력되어 상기 입력버퍼(10)에 저장된 입력 문자 스트림으로부터 다음 문자를 읽어와 상기한 단계 S102부터의 제어 과정을 반복하여 수행한다. 한편, 단계 S109에서 읽을 문자가 남아 있지 않는 것으로 확인된 경우, 상기 제어부(20)는 상기 단계 S108에서 저장부(30)의 프리픽스 저장영역(30A)에 갱신 저장된 프리픽스(즉, 서픽스)에 해당하는 코드를 딕셔너리(40)에서 찾아 출력버퍼(50)를 통해서 출력하고(단계 S110), 모든 부호화 제어를 종료한다.
Thereafter, the control of the
도 3은 일반적인 LZW 복호화기의 기능 블록 구성도이고, 도 4는 일반적인 LZW 복호화의 동작 흐름을 도시한 것이다.3 is a functional block diagram of a general LZW decoder, and FIG. 4 illustrates an operation flow of general LZW decoding.
도 3 및 도 4를 참조하여 일반적인 LZW 복호화기 및 LZW 복호화에 대하여 설명하기로 한다.A general LZW decoder and LZW decoding will be described with reference to FIGS. 3 and 4.
우선, 제어부(25)는 부호화된 문자 스트림에 존재 할 수 있는 모든 문자들에 대하여 각각의 문자에 대한 코드를 정의하는 딕셔너리(45) 초기화 과정을 수행한 다음(단계 S300), 부호화기로부터 전송되어온 입력 신호 스트림을 입력버퍼(15)에 저장하여 이로부터 하나의 코드를 읽어와 저장부(35)의 이전 코드 저장영역(35B)에 OCODE(old code)로 저장한 후(단계 S301), 그 코드에 해당하는 문자열을 딕셔너리 (45)에서 찾아서 출력버퍼(55)를 통해서 출력한다(단계 S302).First, the
어어, 상기 제어부(25)는 그 다음의 코드를 상기 입력버퍼(15)에서 읽어와 저장부(35)의 신규 코드 저장영역(35C)에 NCODE(new code)로 저장한다(단계 S303). For example, the
그 다음, 제어부(25)는 NCODE가 딕셔너리(45)내에 존재하는가를 확인한 후(단계 S304), 존재하는 경우 딕셔너리(45)에서 NCODE에 해당하는 문자열을 읽어 출력버퍼(55)의 스트링영역(STRING)(55A)에 저장하고(단계 S307), 상기 제어부(25)의 제어는 하기의 단계 S308로 진행한다. 여기서, 상기 스트링 저장영역(55A)은 임시적 버퍼로 사용된다. Then, the
이후, 단계 S308에서 상기 제어부(25)는 상기 스트링 저장영역(55A)에 저장된 STRING을 출력하도록 제어하고(단계 S308), 상기 제어부(25)는 상기 출력된 STRING의 첫 문자를 서픽스로 하여 상기 저장부(35)의 서픽스 저장영역(35A)에 저장한다(단계 S309). Thereafter, in step S308, the
이어, 상기 제어부(25)는 상기 이전 코드 저장영역(35B)에 저장된 OCODE에 해당하는 문자열과 상기 서픽스 저장영역(35A)에 저장된 서픽스를 합쳐서 딕셔너리(45)에 추가하여 딕셔너리(45)를 업데이트한다(단계 S310).Subsequently, the
이렇게 딕셔너리 업데이트 과정이 끝나면 다음 과정을 위해 상기 제어부(25)는 저장부(35)의 이전 코드 저장영역(35B)에 신규 코드 저장영역(35C)에서 읽어낸 값을 OCODE로서 갱신 저장한다(단계 S312).When the dictionary update process is completed, the
그 후, 상기 제어부(25)는 상기 입력버퍼(15)에서 읽어올 더 이상의 코드가 있는 가를 확인한 후(단계 S313), 코드가 남아 있을 경우 다시 상기한 단계 S303부 터의 과정을 반복하여 수행하고, 그 반면 상기 단계 S313에서 더 이상 코드가 남아 있지 않은 것으로 확인되면 모든 복호화 과정의 제어를 종료한다.Thereafter, the
한편, 상기한 단계 S304에서 NCODE가 딕셔너리에 존재하지 않는 경우는 특별한 경우로 딕셔너리(45)에 추가되는 것이 인코딩되는 코드보다 늦다는 것을 의미한다. 이 경우에는 상기 제어부(25)는 상기 저장부(35)의 이전 코드 저장영역(35B)에 저장된 OCODE에 해당하는 문자열을 딕셔너리에서 읽어내어 STRING으로서 출력버퍼(55)의 스트링 저장영역(55A)에 저장하고(단계 S305), 상기 스트링 저장영역(55A)에 저장된 STRING에 이 STRING의 첫 문자와 합하여 그 합한 것을 상기 출력버퍼(55)의 스트링 저장영역(55A)에 새로운 STRING으로 갱신 저장하게 된다(단계 S306). On the other hand, if the NCODE does not exist in the dictionary in step S304 described above, it means that the addition to the
이후, 상기 제어부(25)는 상기 스트링 저장영역(55A)에 저장된 STRING을 출력하도록 제어하고(단계 S308), 상기한 바와 같이 단계 S309~S313의 과정을 수행한다.
Thereafter, the
한편, 현재 워터마크나 스테가노그라피(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』 등에 개시되어 있다.Meanwhile, various data concealment methods, such as watermark and steganography, have been proposed. As described above, they perform data concealment by modifying original data before signal processing such as compression. It has the disadvantage of causing distortion of the original information. Such existing methods include a method of hiding data in a GIF image using LZW compression and a method of hiding data using a palette, which is a definition of color information. These methods include Ogihara, T. and Kaneda, Y., "Data Embedding into Compressed Data of GIF Images," Proceedings of Pacific Rim Workshop on Digital Steganography 2003, and Friedrich, 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’에 대해 동일한 과정을 반복한다. 그러나 이와 같은 방법의 경우 입력 문자의 강제적인 변형으로 인해 원래의 입력 신호를 왜곡하는 결과를 초래하게 된다.The LZW compression method is a method of matching the parity of the code with the parity of the data to be concealed in a general LZW process. To compress the given data using the LZW method, read characters one by one until the longest string matches the entry in the dictionary from the input character stream, as described above, and output the code corresponding to the read string. do. At this time, if the parity of the code matches the parity of the data to be concealed, the original code is output as it is, otherwise the last character of the read string is replaced with the most similar character. If there is an entry in the dictionary that matches the string that changed the last character and the parity of the corresponding code matches the parity of the data to be hidden, the corresponding code is displayed. However, if there is no entry that matches the changed string, the code of the entry that matches the string from which the last string was removed is checked to see if the parity of the code matches the parity of the data to be concealed. If the parity matches each other, the corresponding code is printed. If not, the last character is changed to the most similar character and the process is repeated until the length of the string is 3. If the length of the string is less than 3, the data is not concealed. For example, if the data to be concealed is' 0 ', the string read is '01 01 33 11 02' and the code of the corresponding entry is' 130 ', the parity of the message to be concealed and the code to be outputted. Since the parity matches, the code '130' is output as is. However, if the code of the entry that matches the read string does not match the parity of the data to be hidden with '131', the last character of the read string, '02', is replaced with the most similar character. If the most similar character to '02' is '44', the existing string '01 01 33 11 02 'is changed to '01 01 33 11 44'. In this way, there is an entry in the dictionary that matches the changed string. If the parity of the code has the desired value, the corresponding code is output. Otherwise, the same process is performed for '01 01 33 11 'with the last character removed. Repeat. However, such a method causes a distortion of the original input signal due to the forced deformation of the input character.
팔레트를 이용하여 데이터를 은닉하는 방법은 다음과 같다. 팔레트내의 모든 색에 대하여 가장 유사한 색과 서로 짝을 이루도록 한 후, 각 쌍 내의 두 가지 색에 대하여 서로 다른 패리티를 부여한다. 은닉하고자 하는 데이터의 패리티와 입력 문자의 패리티가 동일하다면 입력 문자를 그대로 사용하고, 그렇지 않다면 입력 문자와 가장 유사한 색을 가지며 다른 패리티를 갖도록 앞서 짝을 이룬 색으로 변경한다. 예를 들어, 팔레트의 ‘120’에 해당하는 색과 ‘30’에 해당하는 색이 가장 유사할 경우 서로 짝을 이루도록 하며, ‘120’에는 ‘0’ 을 ‘30’에는 ‘1’이란 패리티를 부여한다. 만약 입력 문자의 값이 ‘120’이며 은닉하고 하는 데이터 가 ‘0’이라면 입력 문자를 그대로 사용하고, 은닉하고자 하는 데이터가 ‘1’이라면 이와 동일한 패리티를 가지며 본래의 입력 문자와 가장 유사한 색을 갖는 ‘30’으로 입력 문자를 변경하게 된다. 그러나 이와 같은 방법을 사용할 경우 수신자가 전송측에서 사용한 테이블인, 가장 유사한 색끼리 서로 짝을 이루며 각 색에 패리티를 부여한 테이블과 동일한 가지고 있어야 한다. 뿐만 아니라 앞서 서술한 LZW 압축 방식을 이용한 방법과 마찬가지로 색상 정보의 변형으로 인해 원본 영상에 왜곡이 발생하게 되는 단점을 가지고 있다. The method of hiding data using the palette is as follows. After pairing with the most similar color for all the colors in the palette, different parity is given to the two colors in each pair. If the parity of the data to be concealed and the parity of the input character are the same, the input character is used as it is. Otherwise, the input character is changed to a color paired with the previous pair so that it has the color most similar to the input character and has a different parity. For example, if the color of '120' and '30' of the palette are the most similar, the pairs should be paired with each other.The parity of '0' for '120' and '1' for '30' Grant. If the input character value is '120' and the hidden data is '0', the input character is used as it is. If the data to be hidden is '1', it has the same parity and the color most similar to the original input character. Change the input character to '30'. However, when using this method, the receiver should have the same color as the table used by the sender, paired with each other and having the same parity with each color. In addition, similar to the method using the LZW compression method described above, the distortion of the original image due to the deformation of the color information has a disadvantage.
현재 LZW와 같은 압축 방식 자체를 데이터 은닉 기술에 응용하는 예는 없는데, 이는 LZW로 압축 이후 데이터의 중복성(redundancy)이 거의 존재하지 않기 때문이다. 그러한 이유로 현존하는 대부분의 알고리듬은 압축 이전 데이터 자체에 데이터 은닉을 수행하게 되므로 데이터의 왜곡을 초래하는 결과를 낳게 된다.
Currently, there is no example of applying a compression scheme such as LZW itself to data hiding technology because there is little redundancy of data after compression with LZW. For that reason, most existing algorithms perform data hiding on the data before compression, resulting in data distortion.
본 발명은 상기한 문제점을 해결하기 위하여 안출된 것으로서, 본 발명의 목적은 데이터의 손실이나 왜곡 없이 압축을 수반함과 동시에 원하는 메시지를 은닉할 수 있는 부호화/복호화기 및 부호화/복호화 방법을 제공하고자 함에 그 목적이 있다.SUMMARY OF THE INVENTION The present invention has been made to solve the above problems, and an object of the present invention is to provide an encoding / decoder and an encoding / decoding method capable of concealing a desired message at the same time with compression without loss or distortion of data. The purpose is to.
또한, 본 발명의 다른 목적은 본 발명이 제시하는 방식에 의해서 은닉된 메시지를 추출하는 은닉 메시지 추출 방법을 제공하기 위한 것이다.
Another object of the present invention is to provide a hidden message extraction method for extracting a hidden message by the method proposed by the present invention.
본 발명의 각 구성은 데이터 은닉 부호화기와 데이터 은닉 복호화기로 이루어진다. 본 발명은 문자열의 길이를, 은닉하고자 하는 메시지 데이터의 패리티와 일치하도록 변화시킨다. 문자열의 길이란 주어진 하나의 문자열을 구성하는 문자의 개수를 말하고, 새로운 문자열을 딕셔너리내에 하나의 엔트리로 추가하는 것을 업데이트(update)라 한다. 또한 문자열의 길이를 변화시킨다는 것은 그 문자열을 구성하는 문자의 개수를 하나 줄여서 딕셔너리에 추가하는 것을 말하며, 이것을 강제적 업데이트(forced update)라 정의한다. LZW는 그 특성 상 이전에 업데이트되어 딕셔너리 내에 존재하는 문자열이 현재 업데이트할 문자열의 프리픽스가 되기 때문에 문자열의 길이를 하나 줄여 업데이트할 경우, 그와 동일한 문자열이 딕셔너리 내에 언제나 존재하게 된다. 따라서 강제적 업데이트는 이러한 LZW의 특성에 의해 복호화 시에 문제를 발생시키지 않는다. 즉, 본 발명은 기존 LZW와 완전한 호환이 가능하며, 강제적으로 업데이트를 수행함으로써 압축방식 자체에 중복성을 부가하여 데이터를 은닉하는 방식이다. 이 때 데이터를 은닉하여 부호화된 코드 스트림은 데이터를 은닉하지 않고 일반적으로 부호화된 코드 스트림에 비해 파일 크기가 증가하나 그 정도가 경미하다.
Each configuration of the present invention consists of a data concealment encoder and a data concealment decoder. The present invention changes the length of the string to match the parity of the message data to be concealed. The length of a string is the number of characters that make up a given string, and the addition of a new string as an entry in the dictionary is called an update. Also, varying the length of a string means adding it to the dictionary by reducing the number of characters that make up the string, which is defined as a forced update. Because LZW is a string that has been previously updated so that the string in the dictionary is the prefix of the string to be updated, the same string will always be present in the dictionary when the string is shortened and updated. Therefore, the forced update does not cause a problem at the time of decryption due to the characteristics of the LZW. That is, the present invention is completely compatible with the existing LZW, and is a method of concealing data by adding redundancy to the compression method itself by forcibly updating. In this case, the code stream coded by concealing the data does not conceal the data and generally increases the file size compared to the coded code stream, but the degree is small.
이하, 첨부도면을 참조하여 본 발명의 바람직한 실시 예에 대하여 상세히 설명한다.
Hereinafter, with reference to the accompanying drawings will be described in detail a preferred embodiment of the present invention.
먼저, 도 5 내지 도 7을 참조하여 본 발명의 바람직한 실시 예에 따른 데이터 은닉을 위한 부호화 방법 및 그 부호화기에 대하여 상세히 설명한다.First, a coding method for data concealment and an encoder thereof according to a preferred embodiment of the present invention will be described in detail with reference to FIGS. 5 to 7.
도 5는 본 발명의 바람직한 실시 예에 따른 데이터 은닉을 위한 부호화기의 기능 블록 구성도이고, 도 6은 본 발명의 바람직한 실시 예에 따른 데이터 은닉을 위한 부호화의 동작 흐름도이며, 도 7은 본 발명의 바람직한 실시 예에 따른 데이터 은닉을 위한 부호화의 핵심 동작 흐름도이다.5 is a functional block diagram of an encoder for data concealment according to a preferred embodiment of the present invention, FIG. 6 is an operation flowchart of encoding for data concealment according to a preferred embodiment of the present invention, and FIG. A flowchart of key operations of encoding for data concealment according to a preferred embodiment.
도 5에서 입력버퍼(100), 딕셔너리(400) 및 출력버퍼(500)는 도 1의 입력버퍼(10), 딕셔너리(40) 및 출력버퍼(50)와 실질적으로 동일한 동작을 수행한다. 그러나, 본 발명의 실시 예에서는 사용자가 은닉하고자 하는 은닉 메시지가 입력되어 일시 저장되는 입력버퍼(120)와, 상기 은닉 메시지를 은닉하기 위한 메시지 은닉부(600)가 추가되며, 저장부(300)에 프리픽스의 길이값을 저장하기 위한 프리픽스 길이값 저장영역(300C)과, 상기 입력버퍼(120)에 저장된 은닉 처리되지 않은 잔존하는 은닉 메시지의 비트량을 저장하기 위한 잔존 은닉 메시지 비트량 저장영역(300D)이 추가되고, 제어부(200)의 제어흐름이 변경된 것이 도 1의 구성과 상이한 것이다.In FIG. 5, the
그리고, 도 6에서는 도 2와 비교해 볼 때, 메시지 은닉을 위한 단계 S200이 추가되었으며 그 구체적인 흐름이 도 7에 도시되어 있고, 은닉할 메시지의 비트량을 계산하기 위하여 단계 S100_1이 추가되고, 프리픽스의 길이 값을 연산하기 위하여 단계 S101, S104, S108의 제어 내용이 변경되어 변수 K를 사용한 단계 S101A, S104A, S108A로 표기되었다. In FIG. 6, compared with FIG. 2, step S200 for message concealment is added, and a detailed flow thereof is shown in FIG. 7, and step S100_1 is added to calculate a bit amount of a message to be concealed, and the prefix of In order to calculate the length value, the control contents of steps S101, S104, and S108 were changed to denote steps S101A, S104A, and S108A using the variable K.
도 5, 도6 및 도 7을 참조하여 본 발명의 바람직한 실시 예에 따른 데이터 은닉을 위한 부호화 방법 및 부호화기에 대하여 데이터 은닉 과정을 위주로 하여 설명한다.5, 6 and 7 will be described with reference to the data concealment process for the encoding method and the encoder for data concealment according to the preferred embodiment of the present invention.
먼저, 영상 혹은 문서로 이루어진 원본 데이터를 입수하고, 0과 1의 바이너리 열로 표현된 은닉할 메시지를 사용자의 필요에 따라 구성하며, 사용자가 소정의 임계값(THD)을 지정한다. 여기서 임계값(THD)은 메시지를 삽입하기 위해 선택하는 문자열의 길이의 최소값을 조정하기 위하여 사용되는 것으로, 상기 임계값(THD) 이상의 길이를 갖는 문자열에만 메시지를 은닉하게 된다. 이하의 실시 예에서는 상기 임계값(THD)은 부호화 및 복호화의 각 제어프로그램에 동일한 값으로 설정되어 있는 것으로 한다.First, original data consisting of an image or a document is obtained, and a message to be concealed represented by binary columns of 0 and 1 is configured according to a user's needs, and the user designates a predetermined threshold value THD. Here, the threshold value THD is used to adjust the minimum value of the length of the string selected to insert the message. The threshold value THD hides only the message having a length greater than or equal to the threshold value THD. In the following embodiment, the threshold value THD is set to the same value in each control program of encoding and decoding.
그 다음, 일반적인 LZW 부호화의 과정과 마찬가지로 주어진 문자 스트림(character stream)은 입력버퍼(100)에 저장되는 한편, 은닉할 메시지는 입력버퍼(120)에 저장된다. Then, as in the general LZW encoding process, a given character stream is stored in the
제어부(200)는 입력 문자 스트림에 존재 할 수 있는 모든 문자들에 대하여 각각의 문자에 대한 코드를 정의하는 딕셔너리(400) 초기화 과정을 수행한다(단계 S100). 그 다음, 사용자가 은닉하고자 하는 은닉 메시지는 입력버퍼(120)에 입력 저장되어 메시지 은닉 과정을 위해 대기하고 있는 상태에 있게 되는데, 제어부(200)는 상기 입력버퍼(120)에 입력 완료된 은닉하고자 하는 총 은닉 메시지 비트량을 확인하고 그 은닉 메시지 비트량을 저장부(300)의 잔존 은닉 메시지 비트량 저장영역(300D)에 저장한다(단계 S100_1).
The
그 후, 상기 제어부(200)는 압축을 위하여 입력버퍼(100)에 입력 저장된 입력 문자 스트림에서 첫 번째 문자를 읽어와 저장영역(300)의 프리픽스 저장영역(300A)에 프리픽스로서 저장하고, 상기 저장부(300)의 프리픽스 길이값 저장영역(300C)에 프리픽스 길이값(K)을 "1"로 저장한다(단계 S101A). Thereafter, the
이어, 상기 제어부(200)는 입력버퍼(100)에 입력 저장된 입력 문자 스트림에서 그 다음 문자를 읽어와 저장부(300)의 서픽스 저장영역(300B)에 서픽스로 저장한다(단계 S102).Subsequently, the
그 후, 상기 제어부(200)는 상기 저장부(300)의 프리픽스 저장영역(300A)과 서픽스 저장영역(300B)에 저장된 프리픽스와 서픽스를 합한 문자 열(프리픽스+서픽스)이 딕셔너리(400)내에 매치(match)되는 엔트리가 존재하는지 여부를 살핀다(단계 S103).Subsequently, the
상기 단계 S103에서 매치되는 엔트리가 있을 경우, 상기 제어부(200)는 상기 프리픽스와 상기 서픽스를 합쳐 상기 저장부(300)의 프리픽스 저장영역(300A)에 프리픽스로서 갱신 저장하고, 프리픽스 길이값 저장영역(300C)에 이전 프리픽스 길이값(K)에 "1"을 가산한 값으로 새로운 프리픽스 길이값(K)으로 갱신 저장한다(단계 S104A). If there is an entry matched in step S103, the
그 후, 상기 제어부(200)는 상기 입력버퍼(100)에서 읽어올 문자가 남아 있는지를 확인하여(단계 S109), 상기 입력버퍼(100)에서 읽어올 문자가 남아 있으면 상기한 단계 S102로 되돌아가서 다음 문자를 읽어와 다시 매치되는 엔트리가 딕셔 너리(400)내에 존재하는가를 확인하며(단계 S103), 이 과정은 더 이상의 매치가 없을 때까지 혹은 상기 입력버퍼(100)에서 읽어올 문자가 남아 있지 않을 때까지 반복 수행하게 된다.Thereafter, the
상기 단계 S109에서 읽어올 문자가 남아 있지 않은 것으로 확인되면, 상기 제어부(200)는 맨 마지막에 남게 되는 저장부(300)의 프리픽스 저장영역(300A)에 저장된 프리픽스에 해당하는 코드를 딕셔너리(400)에서 찾아서 출력버퍼(500)를 통해서 출력하고(단계 S110), 모든 부호화 과정의 제어를 종료한다.If it is determined that the character to be read in step S109 does not remain, the
한편, 상기 단계 S103에서 매치가 있지 않은 것으로 확인되면, 상기 제어부(200)의 제어는 단계 S200으로 진행하게 된다. 이 단계 S200은 메시지 은닉을 위한 단계로서, 그 구체적인 과정은 도 7에 도시되어 있다.On the other hand, if it is determined in step S103 that there is no match, the control of the
도 7의 단계 S201에서, 제어부(200)는 일련의 LZW 부호화 과정 중에, 현재 은닉을 위한 데이터가 상기 입력버퍼(120)에 더 남아 있는지를 확인한다(단계 S201). 이를 위해, 상기 제어부(200)는 저장부(300)의 잔존 은닉 메시지 비트량 저장영역(300D)에서 잔존 은닉 메시지 비트량을 읽어와 입력버퍼(120)에 은닉을 위해 대기중인 남은 은닉 메시지 비트량이 "0"보다 큰 지를 확인한다.In step S201 of FIG. 7, the
상기 단계 S201에서 삽입하기 위한 메시지가 더 이상 남아 있지 않은 것으로 확인된 경우(즉, 은닉을 위해 대기중인 남은 은닉 메시지 비트량이 "0"인 경우), 상기 제어부(200)의 제어는 일반적인 LZW 부호화 과정을 위하여 단계 S106으로 진행하게 되고, 그렇지 않은 것으로 확인된 경우(즉, 은닉을 위해 대기중인 남은 은닉 메시지 비트량이 "0"보다 큰 경우)는 상기 제어부(200)의 제어는 다음 과정( 단계 S202)으로 진행한다. When it is confirmed in step S201 that the message for insertion is no longer left (i.e., the amount of the remaining hidden message bits waiting for concealment is "0"), the control of the
상기 단계 S202에서 제어부(200)는 상기 저장부(300)의 프리픽스 길이값 저장영역(300C)에 저장된 프리픽스 길이값(K)와 소정의 임계값(THD)을 비교한다.In step S202, the
상기 단계 S202에서 프리픽스 길이값(K)이 임계값(THD)보다 크지 않을 경우에 상기 제어부(200)의 제어는 일반적인 LZW 부호화 과정을 위하여 단계 S106으로 진행한다. If the prefix length value K is not greater than the threshold value THD in step S202, the control of the
한편, 상기 단계 S202에서 프리픽스 길이값(K)이 임계값(THD)보다 클 경우에, 상기 제어부(200)는 상기 입력버퍼(120)에서 은닉 메시지를 한 비트 읽어오고, 상기 저장부(300)의 잔존 은닉 메시지 비트량 저장영역(300D)에 저장된 기존의 잔존 은닉 메시지 비트량에서 1을 공제한 값을 새로운 잔존 은닉 메시지 비트량으로 하여 상기 저장부(300)의 잔존 은닉 메시지 비트량 저장영역(300D)에 갱신 저장한다(단계 S203).On the other hand, when the prefix length value K is greater than the threshold value THD in step S202, the
그 후, 상기 제어부(200)는 상기 저장부(300)의 프리픽스 길이값 저장영역(300C)에 저장된 프리픽스 길이값(K)의 패리티와 상기 단계 S203에서 읽어들인 은닉 메시지의 한 비트가 같은 지를 비교한다(단계 S204). 여기서, 패리티의 비교는 프리픽스 길이값(K)의 홀수, 짝수 여부와 은닉할 메시지의 1 비트를 비교한다. 여기서, 패리티는 사용자가 정의함에 따라 짝수에 0을 홀수에 1을 부여할 수도 있고, 반대로 짝수에 1을 홀수에 0을 부여할 수도 있다. 즉, 짝수에 0을 홀수에 1을 부여할 경우 프리픽스 길이값(K)과 은닉할 메시지가 모두 짝수 이거나 홀수여야 패리티가 일치하게 되며, 짝수에 1을 홀수에 0을 부여할 경우 프리픽스 길이값(K)은 짝수 이고 은닉할 메시지는 홀수 이거나, 프리픽스 길이값(K)은 홀수이고 은닉할 메시지는 짝수여야 패리티가 일치하는 것으로 간주한다.Thereafter, the
상기 단계 S204에서 두 값의 패리티가 같은 경우 제어부(200)는 다음의 단계 S106으로 진행한다. If the parity of the two values is the same in step S204, the
한편, 단계 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과정에서 입력 문자 스트림에서 읽어와 서픽스로 저장된 문자를 대신하게 된다.On the other hand, if the parity of the two values in step S204 is different, the
그 후, 단계 S106에서 제어부(200)는 상기 저장부(300)의 프리픽스 저장영역(300A)에 저장된 현재의 프리픽스에 대응하는 코드를 딕셔너리(400)에서 찾아서 출력버퍼(500)를 통해서 출력신호로서 출력한다(단계 S106).
Then, in step S106, the
이어, 상기 제어부(200)는 상기 저장부(300)의 프리픽스 저장영역(300A)과 서픽스 저장영역(300B)에 각각 현재 저장되어 있는 프리픽스와 서픽스를 합하고 이를 딕셔너리(400) 내의 새로운 엔트리로 추가하여, 딕셔너리(400)를 업데이트한다(단계 S107). Subsequently, the
그 후, 상기 제어부(200)는 상기 저장부(300)의 프리픽스 저장영역(300A)에 서피스 저장영역(300B)에서 읽어낸 값을 프리픽스로 갱신 저장하여 다음의 압축에 사용하도록 하고, 상기 저장부(300)의 프리픽스 길이값 저장영역(300C)에 프리픽스 길이값을 "1"로 갱신 저장한다(단계 S108A).Thereafter, the
이어, 상기 제어부(200)의 제어는 상기한 단계 S109로 진행하여, 입력되어 입력버퍼(100)에 저장된 입력 문자 스트림으로부터 더 이상 읽을 문자가 있는지 확인한다. 상기 단계 S109에서 읽을 문자가 남아 있는 것으로 확인된 경우, 상기 제어부(200)의 제어는 상기한 S102로 되돌아가서, 입력되어 상기 입력버퍼(100)에 저장된 입력 문자 스트림으로부터 다음 문자를 읽어와 상기한 단계 S102부터의 제어 과정을 반복하여 수행한다. 한편, 단계 S109에서 읽을 문자가 남아 있지 않는 것으로 확인된 경우, 상기 제어부(200)는 상기 단계 S108A에서 저장부(300)의 프리픽스 저장영역(300A)에 갱신 저장된 프리픽스(즉, 서픽스)에 해당하는 코드를 딕셔너리(400)에서 찾아서 출력버퍼(500)를 통해서 출력신호로서 출력하고(단계 S110), 모든 부호화 제어를 종료한다.
Subsequently, the control of the
다음으로, 도 8 내지 도 10을 참조하여 본 발명의 바람직한 실시 예에 따른 데이터 은닉을 위한 복호화 방법 및 그 복호화기에 대하여 상세히 설명한다.Next, a decoding method for data concealment and a decoder thereof according to a preferred embodiment of the present invention will be described in detail with reference to FIGS. 8 to 10.
도 8은 본 발명의 바람직한 실시 예에 따른 데이터 은닉을 위한 복호화기의 기능 블록 구성도이고, 도 9는 본 발명의 바람직한 실시 예에 따른 데이터 은닉을 위한 복호화의 동작 흐름도이며, 도 10은 본 발명의 바람직한 실시 예에 따른 데이터 은닉을 위한 복호화의 핵심 동작 흐름도이다.8 is a functional block diagram of a decoder for data concealment according to a preferred embodiment of the present invention, FIG. 9 is a flowchart illustrating operation of decoding for data concealment according to a preferred embodiment of the present invention, and FIG. Is a flowchart illustrating a key operation of decryption for data concealment according to a preferred embodiment of the present invention.
도 8에서 입력버퍼(150), 딕셔너리(450) 및 출력버퍼(550)는 도 3의 입력버퍼(15), 딕셔너리(45) 및 출력버퍼(55)와 실질적으로 동일한 동작을 수행한다. 그러나, 본 발명의 실시 예에서는 사용자가 은닉한 은닉 메시지가 출력되는 출력버퍼(555)와, 상기 은닉 메시지를 복호화하여 추출하기 위한 은닉 메시지 복호부(650)가 추가되며, 저장부(350)에 스트링(STRING)의 길이값을 저장하기 위한 STRING 길이값 저장영역(350D)이 추가되고, 제어부(250)의 제어흐름이 변경된 것이 도 3의 구성과 상이한 것이다.In FIG. 8, the
그리고, 도 9에서는 도 4와 비교해 볼 때 은닉 메시지의 복호화를 위한 단계 S400이 추가되었으며 그 구체적인 흐름이 도 10에 도시되어 있고, 스트링(STRING)의 길이 값을 연산하기 위하여 단계 S305, S306, S307의 제어 내용이 변경되어 변수 J를 사용한 단계 S305A, S306A, S307A로 표기되다. 또한, 딕셔너리 초기화 단계에서 제어부의 내부의 플래그(FLAG) 설정 레지스터의 플래그 값을 "0"으로 설정하는 과정을 위하여 단계 S300의 제어 내용이 변경되어 단계 S300A로 표기되었다.In FIG. 9, compared to FIG. 4, step S400 for decoding the hidden message has been added, and a detailed flow thereof is shown in FIG. 10, and steps S305, S306, and S307 for calculating the length value of the string STRING are performed. The control content of is changed to denote steps S305A, S306A and S307A using the variable J. In addition, in the dictionary initialization step, the control content of step S300 is changed to set the flag value of the flag FLAG setting register of the control unit to "0", and thus, it is indicated as step S300A.
도 8, 도9 및 도 10을 참조하여 본 발명의 바람직한 실시 예에 따른 데이터 은닉을 위한 복호화 방법 및 복호화기에 대하여 은닉 데이터의 복호화 과정을 위주 로 하여 설명한다.8, 9 and 10, a decoding method and a decoder for data concealment according to a preferred embodiment of the present invention will be described with reference to a decoding process of hidden data.
먼저, 제어부(250)는 입력 문자 스트림에 존재 할 수 있는 모든 문자들에 대하여 각각의 문자에 대한 코드를 정의하는 딕셔너리(450) 초기화 과정을 수행하고 내부의 플래그(FLAG) 설정 레지스터에 플래그(FLAG)를 "0"으로 설정한 다음(단계 S300A), 부호화기로부터 전송되어 입력버퍼(150)에 저장된 입력 신호 스트림에서 하나의 코드를 읽어와 저장부(350)의 이전 코드 저장영역(350B)에 OCODE(old code)로 저장한 후(단계 S301), 그 코드에 해당하는 문자열을 딕셔너리(450)에서 찾아서 출력버퍼(550)를 통해서 출력한다(단계 S302).First, the
어어, 상기 제어부(250)는 그 다음의 코드를 상기 입력버퍼(150)에서 읽어와 저장부(350)의 신규 코드 저장영역(350C)에 NCODE(new code)로 저장한다(단계 S303).For example, the
그 후, 상기 제어부(250)는 NCODE가 딕셔너리(450)내에 존재하는가를 확인한 후(단계 S304), 존재하는 경우 딕셔너리(450)에서 NCODE에 해당하는 문자열을 읽어 출력버퍼(550)의 스트링영역(STRING)(550A)에 저장하고, 해당 스트링영역에 저장된 문자열(STRING)의 길이값을 저장부(350)의 스트링(STRING) 길이값 저장영역(350D)에 저장한 다음(단계 S305), 상기 제어부(205)의 제어는 하기의 단계 S308로 진행한다. Thereafter, the
한편, 상기한 단계 S304에서 NCODE가 딕셔너리(450) 내에 존재하지 않는 경우는 특별한 경우로 딕셔너리(450)에 추가되는 것이 인코딩되는 코드보다 늦다는 것을 의미한다. 이 경우 상기 제어부(250)는 상기 저장부(350)의 이전 코드 저장영 역(350B)에서 OCODE의 문자열을 읽어내어 STRING으로서 출력버퍼(550)의 스트링 저장영역(550A)에 저장하고, 해당 스트링영역에 저장된 문자열(STRING)의 길이값을 저장부(350)의 스트링(STRING) 길이값 저장영역(350D)에 저장한다(단계 S306A). On the other hand, if the NCODE does not exist in the
그 후, 상기 제어부(250)는 상기 스트링 저장영역(550A)에 저장된 STRING에 이 STRING의 첫 문자와 합하고 그 합한 것을 새로운 STRING으로서 상기 출력버퍼(550)의 스트링 저장영역(550A)에 갱신 저장하고, 상기 저장부(350)의 스트링(STRING) 길이값 저장영역(350D)에 기 저장된 스트링(STRING) 길이값에 "1"을 가산한 값을 새로운 스트링(STRING) 길이값으로 갱신 저장한 다음(단계 S307A), 상기 제어부(250)의 제어는 단계 S308로 진행한다. Thereafter, the
상기 단계 S308에서 상기 제어부(250)는 상기 스트링 저장영역(550A)에 저장된 STRING을 출력하도록 제어하고, 상기 출력된 STRING의 첫 문자를 서픽스로 하여 상기 저장부(350)의 서픽스 저장영역(350A)에 저장한다(단계 S309). In step S308, the
이어, 상기 제어부(250)는 상기 이전 코드 저장영역(350B)에 저장된 OCODE와 상기 서픽스 저장영역(350A)에 저장된 서픽스를 합쳐서 딕셔너리(450)에 추가하여 딕셔너리(450)를 업데이트한다(단계 S310).Subsequently, the
그 후, 상기 제어부(250)는 은닉 메시지 복호화 과정인 단계 S400을 수행하는데, 이 단계 S400에 대해서는 도 10을 참조하여 설명한다.Thereafter, the
먼저, 상기 제어부(250)는 내부 플래그 설정 레지스터에서 플래그(FLAG) 정보를 확인하는데(단계 S401), 상기 저장부(350)의 스트링 길이값 저장영역(350D)에 저장된 스트링(STRING) 길이값(J)과 소정의 기 설정된 임계값(THD)이 같은 경우는 해당 스트링(즉, 문자열)에 대하여 LZW 복호화를 통해 딕셔너리(450)내에 업데이트된 문자열이 기존에 하나 이상 존재하는가를 반드시 확인하여야 한다. 하지만 이러한 작업은 현재 스트링이 딕셔너리(450)에 업데이트가 끝난 이후에 가능하기 때문에, 현재 스트링(STRING) 길이값(J)과 입계값(THD)의 동일여부는 다음 과정에서 확인하여야 하며 이를 위해 한 비트의 플래그(FLAG)를 사용한다.First, the
상기 플래그(FLAG)가 0인 경우는 스트링(STRING) 길이값(J)이 임계값(THD) 보다 큰 경우이며, 플래그(FLAG)가 1인 경우는 스트링 길이값(J)이 임계값(THD)과 같은 경우이다.When the flag FLAG is 0, the string length value J is larger than the threshold value THD. When the flag FLAG is 1, the string length value J is the threshold value THD. )
따라서 단계 S401에서 플래그(FLAG)값이 1인 것으로 확인된 경우, 제어부(250)는 현재 업데이트한 문자열과 동일한 문자열이 딕셔너리(450)에 이미 하나 이상 존재하는 가를 확인한다(단계 S402). 만약 하나 이상의 동일한 문자열을 발견했을 시에는 상기 제어부(250)는 임계치(THD)의 패리티를 읽어오고(단계 S403), 읽어온 임계값(THD)의 패리티를 은닉 메시지로서 출력버퍼(555)를 통하여 출력한후(단계 404) 내부 플래그 설정 레지스터에 플래그(FLAG)를 0으로 설정한다(단계 S405). 한편, 상기 단계 S402에서 동일한 문자열이 딕셔너리(450)에 존재하지 않는 것으로 확인된 경우, 상기 제어부(250)는 메시지가 은닉이 되지 않은 경우이므로 내부 플래그 설정 레지스터에 플래그(FLAG)를 0으로 설정한다(단계 S405). Therefore, when it is determined in step S401 that the flag FLAG value is 1, the
그 후, 제어부(250)는 LZW 복호화 과정에서 저장된 STRING의 길이값(J)과 임계값(THD)의 크기를 비교한다(단계 S406). STRING의 길이값(J)이 임계값(THD)보다 작은 경우 상기 제어부(250)의 제어는 다음의 단계 S312로 진행한다.
Thereafter, the
한편, 상기 단계 S406에서 STRING의 길이값(J)이 임계값(THD)보다 작지 않은 것(즉, 크거나 같은 것)으로 확인된 경우, 제어부(250)는 단계 S407에서 STRING의 길이값(J)이 임계값(THD)과 같은 지를 확인한다. On the other hand, when it is confirmed in step S406 that the length value J of the STRING is not smaller than (ie, greater than or equal to) the threshold value THD, the
상기 단계 S407에서 STRING의 길이값(J)이 임계값(THD)과 같지 않은 것으로 확인된 경우(즉, THD보다 STRING의 길이가 큰 경우)는 메시지가 은닉된 경우를 의미하므로, 제어부(250)는 STRING의 길이값(J)의 짝수, 홀수 여부를 나타내는 패리티 값을 추출하고(단계 S409), 이 스트링 길이값(J)의 패리티를 은닉 메시지 비트로서 출력버퍼(555)를 통하여 출력한다(단계 S410).When it is determined in step S407 that the length value J of the STRING is not equal to the threshold value THD (that is, when the length of the STRING is larger than the THD), it means that the message is concealed. Extracts a parity value indicating whether the length value J of the STRING is even or odd (step S409), and outputs the parity of the string length value J through the
한편, 상기 단계 S407에서 STRING의 길이값(J)이 임계값(THD)과 같은 것으로 확인된 경우, STRING이 LZW 복호화 과정을 통해 딕셔너리(450)에 추가된 후, 그와 동일한 문자열이 하나 이상 존재하는가를 확인하여야 한다. 하지만 이 과정은 다음 코드를 읽은 후 수행할 수 있는 과정이므로, 제어부(250)는 단계 S408에서 확인을 위해 플래그(FLAG)값을 1로 설정하고, 하기의 단계 S312로 진행한다.On the other hand, if it is determined in step S407 that the length value J of the STRING is equal to the threshold value THD, after the STRING is added to the
상기와 같이 딕셔너리(450) 업데이트 과정(단계 S310) 및 은닉 메시지 복호화 과정(단계 S400)을 수행하고, 다음 과정을 위해 상기 제어부(250)는 저장부(350)의 이전 코드 저장영역(350B)에 신규 코드 저장영역(350C)에서 읽어낸 값을 OCODE로서 갱신 저장한다(단계 S312).The
그 후, 상기 제어부(250)는 상기 입력버퍼(150)에서 읽어올 더 이상의 코드가 있는 가를 확인한 후(단계 S313), 코드가 남아 있을 경우 상기 제어부(250)의 제어가 상기한 단계 S303로 되돌아가서 단계 S303부터의 과정을 반복하여 수행하 고, 그 반면 상기 단계 S313에서 더 이상 코드가 남아 있지 않은 것으로 확인되면 모든 복호화 과정의 제어를 종료한다.
Thereafter, the
일반적인 LZW부호화와 본 발명에 다른 데이터 은닉을 수행한 LZW부호화를 비교하기 위하여 "abbabbaabbababbabbab"를 압축하는 경우를 표1에 나타냈다.Table 1 shows the case of compressing "abbabbaabbababbabbab" in order to compare general LZW encoding with LZW encoding which performs data hiding according to the present invention.
<표1><Table 1>
표1에서는 임계값(THD)을 3으로 설정했고, 길이가 3보다 큰 심볼에 대해서만 데이터 은닉이 가능하게 하였다. 따라서, 코드 인덱스가 256~261, 263를 갖는 심볼들은 그 길이 값이 임계값(THD)보다 크지 않으므로 통상의 업데이트 처리가 수행되었으며, 코드 인덱스가 262, 264, 265를 갖는 심볼들은 그 길이값이 임계값(THD)보다 크므로 데이터 은닉을 수행하기 위하여 심볼 길이를 변화시켰다.In Table 1, the threshold value (THD) is set to 3, and data concealment is possible only for symbols larger than 3 lengths. Therefore, since symbols whose lengths are 256 to 261 and 263 are not larger than the threshold value THD, normal update processing is performed, and symbols having code indices of 262, 264, and 265 have a length value. Since it is larger than the threshold value THD, the symbol length is changed to perform data concealment.
표2에는 상기한 표1과 같이 "abbabbaabbababbabbab"를 압축한 값을 일반적인 LZW복호화와 본 발명에 다른 데이터 은닉 LZW 복호화을 수행한 경우를 표2에 나타냈다. Table 2 shows a case where general LZW decoding of the compressed value of "abbabbaabbababbabbab" as shown in Table 1 above and data hiding LZW decoding according to the present invention are performed.
<표2><Table 2>
한편, 상기한 실시 예에서는 문자 스트림의 LZW 부호화/복호화시에 데이터를 은닉하는 방식에 대하여 설명하였지만, 본 발명은 디지털 영상 스트림 및 디지털 오디오 스트림 등 적용 가능한 모든 데이터의 LZW 부호화/복호화시에도 마찬가지로 본 발명을 적용하여 데이터를 은닉할 수 있다.In the above-described embodiment, a method of concealing data during LZW encoding / decoding of a character stream has been described. However, the present invention is similarly applied to LZW encoding / decoding of all applicable data such as a digital video stream and a digital audio stream. The invention can be applied to conceal data.
본 발명은 도면을 참조한 특정 실시 예에 한정하여 설명하였지만, 본 발명은 도면과 관련된 특정 실시예에 한정되는 것이 아니라 본 발명의 요지를 벗어나지 않는 범위 내에서 여러 가지로 수정 및 변형하여 실시할 수 있는 것임은 본 발명에 속하는 기술 분야에서 통상의 지식을 가진 자에게 자명할 것이다.
Although the present invention has been described in detail with reference to the drawings, the present invention is not limited to the specific embodiments related to the drawings but may be modified and modified in various ways within the scope of the present invention. It will be apparent to those skilled in the art to which the present invention pertains.
상기한 바와 같이, 본 발명은 무손실 압축방법 중 가장 잘 알려진 LZW 압축과 데이터 은닉 기술을 혼합한 것으로써, 기존 기술에서 발생되었던 원본 데이터의 손실이나 왜곡의 발생을 제거하며, LZW의 본래 목적인 압축을 실행함과 동시에 데 이터의 인증, 부가적인 메시지 전송 등을 데이터 은닉을 통하여 수행할 수 있다.
As described above, the present invention is a combination of LZW compression and data concealment techniques, which is the most well-known lossless compression method, to eliminate the loss or distortion of the original data that occurred in the existing technology, and to reduce the compression that is the original purpose of LZW At the same time, authentication of data and additional message transmission can be performed through data hiding.
Claims (18)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020040085219A KR101141897B1 (en) | 2004-10-25 | 2004-10-25 | Encoding/Decoding Method for Data Hiding And Encoder/Decoder using the method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020040085219A KR101141897B1 (en) | 2004-10-25 | 2004-10-25 | Encoding/Decoding Method for Data Hiding And Encoder/Decoder using the method |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20060036179A KR20060036179A (en) | 2006-04-28 |
KR101141897B1 true KR101141897B1 (en) | 2012-05-03 |
Family
ID=37144445
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020040085219A Expired - Fee Related KR101141897B1 (en) | 2004-10-25 | 2004-10-25 | Encoding/Decoding Method for Data Hiding And Encoder/Decoder using the method |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101141897B1 (en) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100965603B1 (en) * | 2008-03-17 | 2010-06-23 | 경기대학교 산학협력단 | Method for receiving message using device and device |
KR101006864B1 (en) * | 2008-10-15 | 2011-01-12 | 고려대학교 산학협력단 | Data Lossless Compression Using Data Concealment |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1998017061A1 (en) | 1996-10-15 | 1998-04-23 | Ibm Japan Ltd. | Data hiding method and data extracting method |
KR20010092899A (en) * | 2000-03-27 | 2001-10-27 | 노용만 | Method of mpeg-7 meta data hiding and detection to retrieve multimedia for multimedia indexing retrieval system |
KR20020064942A (en) * | 2000-10-19 | 2002-08-10 | 소니 가부시끼 가이샤 | Data processing device |
-
2004
- 2004-10-25 KR KR1020040085219A patent/KR101141897B1/en not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1998017061A1 (en) | 1996-10-15 | 1998-04-23 | Ibm Japan Ltd. | Data hiding method and data extracting method |
KR20010092899A (en) * | 2000-03-27 | 2001-10-27 | 노용만 | Method of mpeg-7 meta data hiding and detection to retrieve multimedia for multimedia indexing retrieval system |
KR20020064942A (en) * | 2000-10-19 | 2002-08-10 | 소니 가부시끼 가이샤 | Data processing device |
Also Published As
Publication number | Publication date |
---|---|
KR20060036179A (en) | 2006-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7365658B2 (en) | Method and apparatus for lossless run-length data encoding | |
JP3459030B2 (en) | Coding system | |
US6529553B2 (en) | HVQ compression for image boundaries | |
US7254250B2 (en) | Watermark embedding and extraction method and apparatus in compressed streams | |
US7570782B2 (en) | Method and system for watermarking | |
US8107743B2 (en) | Image processing device, image processing method, and storage medium | |
KR101141897B1 (en) | Encoding/Decoding Method for Data Hiding And Encoder/Decoder using the method | |
US6078696A (en) | HVQ compression of data and printing hints | |
EP0973339A2 (en) | Compression by splitting each word and applying lossy compression to least significant bits | |
CN112907429B (en) | Digital signature setting and extracting method and device, storage medium and electronic equipment | |
Shim et al. | DH-LZW: lossless data hiding in LZW compression | |
KR100597004B1 (en) | Binary Image Processing Apparatus and Method Using Symbol Pre-Relocation Method | |
KR100636370B1 (en) | Encoding device and method thereof using decision bit, and decoding device and method thereof | |
CN112449186A (en) | Encoding method, decoding method, corresponding devices, electronic equipment and storage medium | |
JP2891818B2 (en) | Encoding device | |
JPH11317673A (en) | Run length encoding and decoding method therefor | |
CN115514967B (en) | Image compression method and image decompression method based on binary block bidirectional coding | |
JP4743884B2 (en) | Image coding apparatus and control method thereof | |
JP3119027B2 (en) | Coding method and decoding method and coding / decoding method | |
JP3320281B2 (en) | Multi-value image processing device | |
US20050169365A1 (en) | Data encoding using multi-dimensional redundancies | |
Shim et al. | DH-LZW: Lossless data hiding method in LZW compression | |
US20180054626A1 (en) | Decoding method and decoding apparatus for avs system | |
EP0973340A2 (en) | HVQ compression with an error term | |
JPH11205613A (en) | Image processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PA0109 | Patent application |
St.27 status event code: A-0-1-A10-A12-nap-PA0109 |
|
PG1501 | Laying open of application |
St.27 status event code: A-1-1-Q10-Q12-nap-PG1501 |
|
N231 | Notification of change of applicant | ||
PN2301 | Change of applicant |
St.27 status event code: A-3-3-R10-R11-asn-PN2301 St.27 status event code: A-3-3-R10-R13-asn-PN2301 |
|
A201 | Request for examination | ||
PA0201 | Request for examination |
St.27 status event code: A-1-2-D10-D11-exm-PA0201 |
|
D13-X000 | Search requested |
St.27 status event code: A-1-2-D10-D13-srh-X000 |
|
D14-X000 | Search report completed |
St.27 status event code: A-1-2-D10-D14-srh-X000 |
|
E902 | Notification of reason for refusal | ||
PE0902 | Notice of grounds for rejection |
St.27 status event code: A-1-2-D10-D21-exm-PE0902 |
|
T11-X000 | Administrative time limit extension requested |
St.27 status event code: U-3-3-T10-T11-oth-X000 |
|
P11-X000 | Amendment of application requested |
St.27 status event code: A-2-2-P10-P11-nap-X000 |
|
P13-X000 | Application amended |
St.27 status event code: A-2-2-P10-P13-nap-X000 |
|
PE0902 | Notice of grounds for rejection |
St.27 status event code: A-1-2-D10-D21-exm-PE0902 |
|
P11-X000 | Amendment of application requested |
St.27 status event code: A-2-2-P10-P11-nap-X000 |
|
P13-X000 | Application amended |
St.27 status event code: A-2-2-P10-P13-nap-X000 |
|
E701 | Decision to grant or registration of patent right | ||
PE0701 | Decision of registration |
St.27 status event code: A-1-2-D10-D22-exm-PE0701 |
|
GRNT | Written decision to grant | ||
PR0701 | Registration of establishment |
St.27 status event code: A-2-4-F10-F11-exm-PR0701 |
|
PR1002 | Payment of registration fee |
Fee payment year number: 1 St.27 status event code: A-2-2-U10-U11-oth-PR1002 |
|
PN2301 | Change of applicant |
St.27 status event code: A-5-5-R10-R11-asn-PN2301 St.27 status event code: A-5-5-R10-R13-asn-PN2301 |
|
PG1601 | Publication of registration |
St.27 status event code: A-4-4-Q10-Q13-nap-PG1601 |
|
PN2301 | Change of applicant |
St.27 status event code: A-5-5-R10-R11-asn-PN2301 St.27 status event code: A-5-5-R10-R13-asn-PN2301 |
|
R18-X000 | Changes to party contact information recorded |
St.27 status event code: A-5-5-R10-R18-oth-X000 |
|
PR1001 | Payment of annual fee |
Fee payment year number: 4 St.27 status event code: A-4-4-U10-U11-oth-PR1001 |
|
P22-X000 | Classification modified |
St.27 status event code: A-4-4-P10-P22-nap-X000 |
|
FPAY | Annual fee payment |
Payment date: 20160328 Year of fee payment: 5 |
|
PR1001 | Payment of annual fee |
Fee payment year number: 5 St.27 status event code: A-4-4-U10-U11-oth-PR1001 |
|
R18-X000 | Changes to party contact information recorded |
St.27 status event code: A-5-5-R10-R18-oth-X000 |
|
R18-X000 | Changes to party contact information recorded |
St.27 status event code: A-5-5-R10-R18-oth-X000 |
|
LAPS | Lapse due to unpaid annual fee | ||
PC1903 | Unpaid annual fee |
Not in force date: 20170425 Payment event data comment text: Termination Category : DEFAULT_OF_REGISTRATION_FEE St.27 status event code: A-4-4-U10-U13-oth-PC1903 |
|
PC1903 | Unpaid annual fee |
Ip right cessation event data comment text: Termination Category : DEFAULT_OF_REGISTRATION_FEE Not in force date: 20170425 St.27 status event code: N-4-6-H10-H13-oth-PC1903 |
|
P22-X000 | Classification modified |
St.27 status event code: A-4-4-P10-P22-nap-X000 |
|
P22-X000 | Classification modified |
St.27 status event code: A-4-4-P10-P22-nap-X000 |
|
R18-X000 | Changes to party contact information recorded |
St.27 status event code: A-5-5-R10-R18-oth-X000 |
|
PN2301 | Change of applicant |
St.27 status event code: A-5-5-R10-R11-asn-PN2301 St.27 status event code: A-5-5-R10-R13-asn-PN2301 |
|
R18-X000 | Changes to party contact information recorded |
St.27 status event code: A-5-5-R10-R18-oth-X000 |