KR100673820B1 - Method and apparatus for block encryption and decryption - Google Patents
Method and apparatus for block encryption and decryption Download PDFInfo
- Publication number
- KR100673820B1 KR100673820B1 KR1020040099721A KR20040099721A KR100673820B1 KR 100673820 B1 KR100673820 B1 KR 100673820B1 KR 1020040099721 A KR1020040099721 A KR 1020040099721A KR 20040099721 A KR20040099721 A KR 20040099721A KR 100673820 B1 KR100673820 B1 KR 100673820B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- input data
- block
- byte
- byte string
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0625—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/20—Manipulating the length of blocks of bits, e.g. padding or block truncation
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
블록 암호화된 데이터를 복호화시 데이터의 오류없이 복호화하기 위하여, 입력 데이터의 길이가 n의 배수가 아니면, 입력 데이터의 길이가 n의 배수가 되도록 하는 임의의 제 1 바이트열을 패딩(padding)하며, n의 배수이면 입력 데이터의 데이터 값을 확인하고, 입력 데이터의 데이터 값에 따라, 선택적으로 n 바이트(byte)의 임의의 제 2 바이트열을 패딩하는 방식의 블록 암호화 방법이 제공되며, 또한 입력 데이터의 데이터 값을 식별하기 위하여, 입력 데이터에 패딩된 n 바이트(byte)의 임의의 제 2 바이트열이 존재 여부에 따라, 임의의 제 2 바이트열을 제거하고, 입력 데이터의 길이가 n의 배수가 되도록 패딩된 임의의 제 1 바이트열의 존재 여부에 따라, 임의의 제 1 바이트열을 제거하는 방식의 블록 복호화 방법이 제공된다.In order to decrypt the block-encrypted data without error in the data when decrypting, if the length of the input data is not a multiple of n, padding an arbitrary first byte string such that the length of the input data is a multiple of n, If a multiple of n, a block encryption method is provided in which a data value of input data is checked, and optionally a second byte sequence of n bytes is padded in accordance with the data value of the input data. In order to identify the data value of, according to whether there is any second byte string of n bytes padded to the input data, the second random byte sequence is removed, and the length of the input data is a multiple of n. According to the presence or absence of any padded first byte string, a block decoding method of a method of removing any first byte string is provided.
Description
도 1은 종래 기술에 따른 블록 암호화 방법의 흐름도.1 is a flow diagram of a block encryption method according to the prior art.
도 2는 종래 기술에 따른 블록 복호화 방법의 흐름도.2 is a flowchart of a block decoding method according to the prior art.
도 3은 또 다른 종래 기술에 따른 블록 암호화 방법의 흐름도.3 is a flowchart of another block encryption method according to the related art.
도 4는 또 다른 종래 기술에 따른 블록 복호화 방법의 흐름도.4 is a flowchart of another block decoding method according to the related art.
도 5는 본 발명의 일 실시예에 따른 블록 암호화 방법의 흐름도.5 is a flowchart of a block encryption method according to an embodiment of the present invention.
도 6은 본 발명의 일 실시예에 따른 블록 복호화 방법의 흐름도.6 is a flowchart of a block decoding method according to an embodiment of the present invention.
도 7(a)내지 7(d)는 종래 기술과 본 실시예의 결과 비교 테이블.7 (a) to 7 (d) are result comparison tables of the prior art and this embodiment.
도 8은 본 발명의 일 실시예에 따른 블록 암호화 장치의 개략 구성도.8 is a schematic structural diagram of a block encryption apparatus according to an embodiment of the present invention;
도 9는 본 발명의 일 실시예에 따른 블록 복호화 장치의 개략 구성도.9 is a schematic structural diagram of a block decoding apparatus according to an embodiment of the present invention.
*도면의 주요 부분에 대한 부호의 설명** Description of the symbols for the main parts of the drawings *
81 : 데이터 입력부 82 : 데이터 판단부81: data input unit 82: data determination unit
83 : 패딩부 84 : 키 입력부83: padding section 84: key input section
85 : 암호화부 91 : 수신부85: encryption section 91: receiving section
92 : 복호화부 93 : 패딩 식별부92
94 : 암호화부94: encryption unit
본 발명은 주어진 데이터를 암호 알고리즘에서 정해진 길이의 블록(64비트 또는 128비트)으로 나누어 블록 단위로 암호화를 수행하는 블록 암호 알고리즘에 관한 것으로서, 보다 상세하게는 오류없이 데이터를 복호화하기 위하여, 블록 암호에 맞는 블록 크기의 배수가 되게 하거나 또는 적당한 방식으로 데이터를 블록의 크기의 배수가 되도록 하는 패딩(padding) 및 이를 제거하는 디패딩(de-padding) 방식 및 이를 이용한 암호화 및 복호화 방법 및 장치에 관한 것이다.The present invention relates to a block cipher algorithm that performs encryption on a block basis by dividing given data into blocks (64 bits or 128 bits) of a predetermined length in an encryption algorithm. Padding and the de-padding method for removing the data to be a multiple of the size of the block in a suitable manner or a method of the encryption and decryption method using the same will be.
블록 암호 알고리즘은 주어진 데이터를 정해진 길이의 블럭(64 혹은 128 비트)으로 나누어 블록단위로 암호화를 수행하는 알고리즘이다. 다양한 '모드'로 구현되며 '패딩(padding:덧붙이기)'이 필요하다. 64 비트 블록 암호에는 DES, DES3, DESX, RC5, BLOWFISH, CAST128, IDEA, SAFER , RC2 등이 있으며, 128 비트 블록 암호에는 SEED, CRYPTON, RIJNDAEL, CAST256, RC6, TWOFISH, MARS, SERPENT 등이 있다.The block cipher algorithm divides given data into blocks of predetermined length (64 or 128 bits) and performs encryption on a block basis. It is implemented in various 'modes' and requires 'padding'. 64-bit block ciphers include DES, DES3, DESX, RC5, BLOWFISH, CAST128, IDEA, SAFER, and RC2. 128-bit block ciphers include SEED, CRYPTON, RIJNDAEL, CAST256, RC6, TWOFISH, MARS, SERPENT, and others.
상기 암호중 64 비트 블록 암호인 DES와 128비트 블록 암호인 SEED를 살펴보면, DES는 입력 데이터의 길이를 8의 배수로, SEED는 16의 배수로 나누며, 만약 입력 데이터의 길이가 8이나 16의 배수가 되지 않는 경우에는, 8의 배수나 16의 배수가 되도록 데이터를 더하게 되는데 이를 '패딩'이라고 한다.Looking at DES, which is a 64-bit block cipher, and SEED, which is a 128-bit block cipher, DES divides the length of input data by a multiple of 8 and SEED by a multiple of 16. If the length of the input data is 8 or 16, If not, the data is added to be a multiple of 8 or a multiple of 16, which is called padding.
도 1 내지 도 4를 참조하여 종래 기술의 블록 암호 알고리즘을 설명하면 다 음과 같다.A block cipher algorithm of the prior art will be described with reference to FIGS. 1 to 4 as follows.
도 1과 도 2는 종래 기술에 따른 블록 암호화 및 복호화 방법의 흐름도로서, DES나 SEED와 같은 대칭 알고리즘에 ISO9797 M1이 지정한 패딩 모드를 적용한 예이다.1 and 2 are flowcharts of a block encryption and decryption method according to the prior art, in which a padding mode specified by ISO9797 M1 is applied to a symmetric algorithm such as DES or SEED.
우선, 암호화될 데이터가 입력된다(S11). 입력 데이터 길이가 8(또는 16)의 배수인지를 판단하는 과정을 수행한다(S12). First, data to be encrypted is input (S11). A process of determining whether the input data length is a multiple of 8 (or 16) is performed (S12).
판단 결과, 만약 입력 데이터 길이가 8(또는 16)의 배수인 경우에는 그대로 데이터 암호화를 진행하고(S14), 입력 데이터 길이가 8(또는 16)의 배수가 아닌 경우에는 상기 입력 데이터에 8(도는 16)의 배수가 되도록 하는 최소의 0x00..00 바이트열을 패딩하는 과정을 수행하며(S13), 그리고 나서 데이터 암호화를 진행하게 된다. 상기 Ox00..00에서 0x는 16진수임을 의미하며, 따라서, 임의의 16진수 00 00 .. 00 바이트열이 패딩됨을 의미하며, 이하에서 동일하게 적용된다. As a result of determination, if the input data length is a multiple of 8 (or 16), data encryption is performed as it is (S14), and if the input data length is not a multiple of 8 (or 16), 8 (or Padding the minimum 0x00..00 byte sequence to be a multiple of 16) is performed (S13), and then data encryption is performed. In Ox00..00, 0x means hexadecimal number, and therefore, any hexadecimal 00 00 .. 00 byte string is padded, and the same applies below.
복호화 단계를 살펴보면, 우선 암호화된 데이터를 수신하게 된다(S21). 수신된 암호화 데이터를 복호화한다(S22).Looking at the decryption step, first to receive the encrypted data (S21). The received encrypted data is decrypted (S22).
그리고 나서, 복호화된 데이터의 마지막 부분이 Ox00..00 인지를 판단하게 된다(S23) 즉, 패딩 부분이 어디인지를 확인하게 된다.Then, it is determined whether the last part of the decoded data is Ox00..00 (S23), that is, where the padding part is determined.
판단 결과, 만약 복호화된 데이터의 마지막 부분이 Ox00..00이면, 암호화시 패딩된 Ox00..00 바이트열을 제거하는 디패딩을 수행하게 되며(S25), 원래 입력 데이터가 복원된다(S26). 그러나, 데이터의 마지막 부분이 Ox00..00이 아니라면, 패딩된 부분과 입력 데이터를 구분할 수 없는 바, 데이터 복원시 오류가 발생하게 된다(S24).As a result, if the last part of the decrypted data is Ox00..00, de-padding is performed to remove the padded Ox00..00 byte string during encryption (S25), and the original input data is restored (S26). However, if the last part of the data is not Ox00..00, the padded part and the input data cannot be distinguished, and thus an error occurs when restoring the data (S24).
도 3과 도 4는 또 다른 종래 기술에 따른 블록 암호화 및 복호화 방법의 흐름도로서, DES나 SEED와 같은 대칭 알고리즘에 ISO9797 M2가 지정한 패딩 모드를 적용한 예이다.3 and 4 are flowcharts illustrating a block encryption and decryption method according to another prior art, and an example in which a padding mode specified by ISO9797 M2 is applied to a symmetric algorithm such as DES or SEED.
우선, 암호화될 데이터가 입력된다(S31). 입력 데이터 길이가 8(또는 16)의 배수인지를 판단하는 과정을 수행한다(S32). First, data to be encrypted is input (S31). A process of determining whether the input data length is a multiple of 8 (or 16) is performed (S32).
판단 결과, 만약 입력 데이터 길이가 8(또는 16)의 배수인 경우에는 그대로 데이터 암호화를 진행하고(34), 입력 데이터 길이가 8(또는 16)의 배수가 아닌 경우에는 상기 입력 데이터에 8(도는 16)의 배수가 되도록 하는 최소의 0x80 0x00..00 바이트열을 패딩하는 과정을 수행하며(S33), 그리고 나서 데이터 암호화를 진행하게 된다. 즉, 16진수의 80 00..00이 패딩된 후, 데이터 암호화가 진행된다.As a result of determination, if the input data length is a multiple of 8 (or 16), data encryption is performed as it is (34), and if the input data length is not a multiple of 8 (or 16), 8 (or Padding the minimum 0x80 0x00..00 byte string to be a multiple of 16) is performed (S33), and then data encryption is performed. That is, after 80 00..00 in hexadecimal is padded, data encryption proceeds.
복호화 단계를 살펴보면, 우선 암호화된 데이터를 수신하게 된다(S41). 수신된 암호화 데이터를 복호화한다(S42).Looking at the decryption step, first to receive the encrypted data (S41). The received encrypted data is decrypted (S42).
그리고 나서, 복호화된 데이터의 마지막 부분이 0x80 0x00..00 인지를 판단하게 된다(S43) 즉, 패딩 부분이 어디인지를 확인하게 된다.Then, it is determined whether the last part of the decoded data is 0x80 0x00..00 (S43). That is, it is checked where the padding part is.
판단 결과, 만약 복호화된 데이터의 마지막 부분이 0x80 0x00..00이면, 암호화시 패딩된 0x80 0x00..00 바이트열을 제거하는 디패딩을 수행하게 되며(S45), 원래 입력 데이터가 복원된다(S46). 그러나, 데이터의 마지막 부분이 0x80 0x00..00 이 아니라면, 패딩된 부분과 입력 데이터를 구분할 수 없는 바, 데이터 복원시 오류가 발생하게 된다(S44).As a result, if the last part of the decrypted data is 0x80 0x00..00, de-padding is performed to remove the padded 0x80 0x00..00 byte string during encryption (S45), and the original input data is restored (S46). ). However, if the last part of the data is not 0x80 0x00..00, the padded part and the input data cannot be distinguished, and thus an error occurs when restoring the data (S44).
즉, 도 1 및 2(ISO 9797 M1)의 경우, 입력 데이터의 마지막 부분이 0x00..00으로 끝나고, 데이터가 8(또는 16)의 배수가 아니어서, 추가적인 0x00..00 바이트열을 패딩하여 암호화하면, 복호화시 어느 부분이 원래 입력 데이터이고, 어느 부분이 패딩된 것인지를 구분할 수 없는 바, 데이터 복원시 오류가 발생하게 된다.1 and 2 (ISO 9797 M1), the last part of the input data ends with 0x00..00, and the data is not a multiple of 8 (or 16), so that an additional 0x00..00 byte sequence is padded When encrypted, it is impossible to distinguish which part is the original input data and which part is padded during decryption, and thus an error occurs when restoring the data.
마찬가지로, 도 3 및 4(ISO 9797 M2)의 경우, 입력 데이터의 마지막 부분이 0x80 0x00..00으로 끝나고, 데이터가 8(또는 16)의 배수인 경우에, 복호화시 어느 부분이 원래 입력 데이터이고, 어느 부분이 패딩된 것인지를 구분할 수 없는 바, 데이터 복원시 오류가 발생하게 된다.Similarly, in the case of FIGS. 3 and 4 (ISO 9797 M2), when the last part of the input data ends with 0x80 0x00..00, and the data is a multiple of 8 (or 16), which part is the original input data during decoding. Since it is impossible to distinguish which part is padded, an error occurs when restoring data.
본 발명은 상술한 종래의 문제점을 극복하기 위한 것으로서, 본 발명의 목적은 블록 암호화된 데이터를 복호화시 데이터의 오류없이 복호화하기 위한 개선된 패딩(padding) 방식 및 이를 이용한 암호화/복호화 방법 및 장치를 제공하기 위한 것이다.SUMMARY OF THE INVENTION The present invention has been made to overcome the above-mentioned problems, and an object of the present invention is to provide an improved padding scheme and an encryption / decryption method and apparatus using the same for decrypting block encrypted data without error in decrypting the data. It is to provide.
상기 본 발명의 목적을 달성하기 위한 본 발명의 블록 암호화 방법은 (a) 입력 데이터의 길이가 n의 배수인지를 판단하는 단계; (b) 입력 데이터의 길이가 n의 배수가 아니면, 입력 데이터의 길이가 n의 배수가 되도록 하는 임의의 제 1 바이트열을 패딩(padding)하며, n의 배수이면 입력 데이터의 데이터 값을 확인하는 단계; (c) 입력 데이터의 데이터 값에 따라, 선택적으로 n 바이트(byte)의 임의의 제 2 바이트열을 패딩하는 단계 및 (d) 패딩된 입력 데이터를 암호화하는 단계를 포함하는 것을 특징으로 한다.The block encryption method of the present invention for achieving the object of the present invention comprises the steps of (a) determining whether the length of the input data is a multiple of n; (b) if the length of the input data is not a multiple of n, padding an arbitrary first byte string such that the length of the input data is a multiple of n, and if the multiple of n identifies the data value of the input data. step; (c) optionally padding any second byte sequence of n bytes, in accordance with the data value of the input data, and (d) encrypting the padded input data.
상기 (c)의 입력 데이터의 최종단 데이터 값이 상기 (b)에서 패딩되는 임의의 제 1 바이트열과 동일한 형태일 경우, 상기 데이터 값을 식별하기 위한 n 바이트(byte)의 임의의 제 2 바이트열을 패딩하는 것을 특징으로 한다.If the last-end data value of the input data of (c) is of the same type as any of the first byte strings padded in (b), an arbitrary second byte sequence of n bytes for identifying the data value It characterized in that the padding.
상기 본 발명의 목적을 달성하기 위한 본 발명의 블록 복호화 방법은 (a) 암호화된 데이터를 수신하는 단계; (b) 암호화된 데이터를 복호화하는 단계; (c) 입력 데이터의 데이터 값을 식별하기 위하여, 입력 데이터에 패딩된 n 바이트(byte)의 임의의 제 2 바이트열이 존재 여부에 따라, 임의의 제 2 바이트열을 제거하는 단계를 포함하는 것을 특징으로 한다.The block decryption method of the present invention for achieving the object of the present invention comprises the steps of: (a) receiving encrypted data; (b) decrypting the encrypted data; (c) removing any second byte string, depending on whether there is any second byte string of n bytes padded in the input data, to identify a data value of the input data. It features.
상기 블록 복호화 방법은 (d) 입력 데이터의 길이가 n의 배수가 되도록 패딩된 임의의 제 1 바이트열의 존재 여부에 따라, 임의의 제 1 바이트열을 제거하는 단계를 더 포함하는 것을 특징으로 한다. The block decoding method may further include removing any first byte string according to whether or not the first byte string padded such that the length of the input data is a multiple of n.
상기 본 발명의 목적을 달성하기 위한 본 발명의 블록 암호화 장치는 암호화될 데이터를 입력하기 위한 데이터 입력부; 데이터 입력부에 입력된 입력 데이터의 길이나 데이터 값을 판단하기 위한 데이터 판단부; 데이터 판단부의 결과에 따라, 입력 데이터의 길이가 n의 배수가 되도록 하는 임의의 제 1 바이트열 또는 n 바이트(byte)의 임의의 제 2 바이트열을 입력 데이터에 패딩(padding)하기 위한 패딩부; 키 값을 발생하기 위한 키 입력부 및 키 값과 패딩 후의 입력 데이터를 암호화하기 위한 암호화부를 포함하는 것을 특징으로 한다.The block encryption apparatus of the present invention for achieving the object of the present invention comprises a data input unit for inputting data to be encrypted; A data determination unit for determining a length or a data value of input data input to the data input unit; A padding unit for padding an arbitrary first byte string or an arbitrary second byte string of n bytes to the input data according to a result of the data determination unit; And a key input unit for generating a key value, and an encryption unit for encrypting the key value and the input data after padding.
상기 패딩부는 상기 입력 데이터의 길이가 n의 배수가 아닐 경우에, 상기 입력 데이터의 길이가 n의 배수가 되도록 하는 임의의 제 1 바이트열을 패딩하는 것을 특징으로 한다.The padding unit may pad an arbitrary first byte string such that the length of the input data is a multiple of n when the length of the input data is not a multiple of n.
상기 패딩부는 입력 데이터의 최종단 데이터 값이 상기 임의의 제 1 바이트열과 동일한 형태일 경우에, n 바이트(byte)의 임의의 제 2 바이트열을 패딩하는 것을 특징으로 한다.The padding unit may pad an arbitrary second byte sequence of n bytes when the final data value of the input data has the same form as the arbitrary first byte sequence.
상기 본 발명의 목적을 달성하기 위한 본 발명의 블록 복호화 장치는 암호화된 데이터를 수신하기 위한 수신부; 수신된 암호화 데이터를 복호화하기 위한 복호화부; 복호화부에서 출력된 데이터에 입력 데이터의 길이가 n의 배수가 되도록 패딩된 임의의 제 1 바이트열이나 입력 데이터의 데이터 값을 식별하기 위하여, 입력 데이터에 패딩된 n 바이트(byte)의 임의의 제 2 바이트열이 존재하는지를 확인하기 위한 패딩 식별부 및 패딩 식별부의 결과에 따라, 임의의 제 1 바이트열 또는 n 바이트(byte)의 임의의 제 2 바이트열을 제거하기 위한 디패딩부를 포함하는 것을 특징으로 한다.The block decryption apparatus of the present invention for achieving the object of the present invention includes a receiving unit for receiving encrypted data; A decryption unit for decrypting the received encrypted data; In order to identify the data string of the input data or any first byte string padded so that the length of the input data is a multiple of n in the data output from the decoding unit, any number of n bytes padded on the input data A padding identifier for checking whether a two-byte string exists and a depadding portion for removing any first byte string or any second byte string of n bytes according to the result of the padding identifier. It is done.
이하, 본 발명의 실시예를 첨부한 도면을 참조하여 설명하기로 한다.Hereinafter, embodiments of the present invention will be described with reference to the accompanying drawings.
도 5를 참조하여, 본 발명의 일 실시예에 따른 블록 암호화 방법의 흐름도를 설명하면 다음과 같다.Referring to Figure 5, a flow chart of a block encryption method according to an embodiment of the present invention will be described.
우선, 암호화될 데이터가 입력된다(S51). 그리고 나서, 입력 데이터 길이가 8(또는 16)의 배수인지를 판단하는 과정을 수행한다(S52). First, data to be encrypted is input (S51). Then, a process of determining whether the input data length is a multiple of 8 (or 16) is performed (S52).
판단 결과, 만약 입력 데이터 길이가 8(또는 16)의 배수가 아닌 경우에는 8(또는 16)의 배수가 되도록 하는 최소의 0x80 0x00..00 바이트열을 패딩하는 과정을 수행한 후(S53), 데이터 암호화 과정(S56)으로 진행한다.As a result of determination, if the input data length is not a multiple of 8 (or 16), after the process of padding the minimum 0x80 0x00..00 byte string to be a multiple of 8 (or 16) (S53), The data encryption process proceeds to step S56.
한편, 입력 데이터 길이가 8(또는 16)의 배수인 경우에는 입력 데이터의 마지막 부분이 0x80 0x00..00의 형식인지를 판단하는 과정을 수행한다(S54).On the other hand, if the input data length is a multiple of 8 (or 16), a process of determining whether the last portion of the input data is in the format of 0x80 0x00..00 is performed (S54).
판단 결과, 0x80 0x00..00 형태의 데이터가 아닌 경우에는 그대로 데이터 암호화를 수행하며(S56), 만약 0x80 0x00..00 형태의 데이터인 경우에는 8(또는 16) 바이트(byte)의 0x80 0x00..00 바이트열을 추가적으로 패딩하는 과정을 수행한다(S55). 그리고 나서, 데이터 암호화 과정을 수행한다(S56).As a result of the determination, if the data is not of the 0x80 0x00..00 format, data encryption is performed as it is (S56). If the 0x80 0x00..00 data is of 0x80 0x00, 8 (or 16) bytes. A process of additionally padding the .00 byte string is performed (S55). Then, a data encryption process is performed (S56).
도 6은 본 발명의 일 실시예에 따른 블록 복호화 방법의 흐름도이다.6 is a flowchart of a block decoding method according to an embodiment of the present invention.
상기 도 6에 도시된 블록 복호화 과정을 살펴보면, 우선 암호화된 데이터를 수신한다(S61). 그리고 나서, 수신된 암호화 데이터를 복호화한다(S62).Referring to the block decryption process shown in FIG. 6, first, encrypted data is received (S61). Then, the received encrypted data is decrypted (S62).
그런 후에, 복호화된 데이터내에 8(또는 16) 바이트(byte)의 0x80 0x00..00 바이트열이 존재하는 지를 판단하는 과정을 수행한다(S63).Thereafter, a process of determining whether a 0x80 0x00..00 byte string of 8 (or 16) bytes exists in the decoded data is performed (S63).
판단 결과, 복호화된 데이터내에 암호화시 패딩된 8(또는 16) 바이트(byte)의 0x80 0x00..00 바이트열이 존재하는 경우에는, 상기 패딩된 8(또는 16) 바이트(byte)의 0x80 0x00..00 바이트열을 제거하는 디패딩 과정을 수행한 후(S65), 데이터 복원 과정(S66)으로 진행한다.As a result of determination, when there is a 0x80 0x00..00 byte sequence of padded 8 (or 16) bytes in the decrypted data, 0x80 0x00. Of the padded 8 (or 16) bytes. After performing the depadding process of removing the .00 byte string (S65), the process proceeds to the data restoration process (S66).
한편, 복호화된 데이터내에 8(또는 16) 바이트(byte)의 0x80 0x00..00 바이트열이 존재하지 않는 경우에는, 복호화된 데이터의 마지막 부분이 0x80 0x00..00 형식의 바이트열인지를 판단하게 된다(S64). On the other hand, when there are no 8x or 0x80 0x00..00 byte strings in the decoded data, it is determined whether the last portion of the decoded data is a byte string in the 0x80 0x00..00 format. (S64).
판단한 결과, 복호화된 데이터의 마지막 부분이 0x80 0x00..00 형식의 바이트열(즉, 암호화시 패딩된 바이트열)인 경우에는, 상기 0x80 0x00..00 형식의 바이트열을 제거하는 디패딩 과정을 수행(S65)하며, 그렇지 않은 경우에는 디패딩 과정없이 그대로 데이터를 복원하는 과정(S66)을 수행하게 된다.As a result, when the last part of the decrypted data is a byte string of 0x80 0x00..00 format (that is, a padded byte string at the time of encryption), the depadding process of removing the byte string of 0x80 0x00..00 format is performed. If not, the process of restoring data as it is (S66) is performed without depadding.
도 7(a)내지 7(d)는 종래 기술과 본 실시예의 결과 비교 테이블이다.7 (a) to 7 (d) are result comparison tables of the prior art and this embodiment.
도 7(a)는 64비트 블록 암호 DES의 경우, 종래 기술(ISO9797 M1)과 본 실시예에 따른 블록 암호 알고리즘의 수행 결과를 비교한 테이블이다. 이하에서 설명되고 있는 숫자는 16진수이다.FIG. 7A is a table comparing the execution result of the block cipher algorithm according to the present embodiment with the prior art (ISO9797 M1) in the case of 64-bit block cipher DES. The numbers described below are hexadecimal digits.
종래 기술에 따르면, 데이터 '11 22 00 00 00 00'에 '00 00'이 패딩되어 암호화 및 복호화가 수행된 후, 어느 부분이 패딩된 부분인지를 식별할 수 없어서 디패딩이 수행되지 않아, 원래의 데이터값과 상이한 '11 22 00 00 00 00 00 00'가 복원된다. According to the prior art, after data '11 22 00 00 00 00 'is padded with '00 00' to perform encryption and decryption, since no part can be identified as a padded part, depadding is not performed. '11 22 00 00 00 00 00 00 'different from the data value is restored.
한편, 본 실시예에 따르면, 데이터 '11 22 00 00 00 00'에 '80 00'이 패딩되어 암호화 및 복호화가 수행되고, 패딩된 '80 00'을 제거하는 디패딩이 오류없이 이루어져 원래의 데이터값과 동일한 '11 22 00 00 00 00'가 복원된다.On the other hand, according to the present embodiment, data '11 22 00 00 00 00 'is padded with '80 00' to perform encryption and decryption, and de-padding for removing the padded '80 00 'is performed without error. '11 22 00 00 00 00 'equal to the value is restored.
도 7(b)는 64비트 블록 암호 DES의 경우, 종래 기술(ISO9797 M2)과 본 실시예에 따른 블록 암호 알고리즘의 수행 결과를 비교한 테이블이다.FIG. 7B is a table comparing the execution result of the block cipher algorithm according to the present embodiment with the prior art (ISO9797 M2) in the case of 64-bit block cipher DES.
종래 기술에 따르면, 입력 데이터 '11 22 00 80 00 00 00 00'인 경우, 입력 데이터의 길이가 8의 배수이므로, 패딩없이 암호화 및 복호화가 수행된다. 그리고 나서, 디패딩시, 원래의 입력 데이터의 마지막 부분(80 00 00 00 00)이 패딩되는 바이트열과 동일한 형태이므로, 이를 패딩된 바이트열로 인식하여 제거하게 된다. 그 결과, 원래의 데이터 값과 상이한 '11 22 00'이 복원된다.According to the prior art, when the input data is '11 22 00 80 00 00 00 00 ', since the length of the input data is a multiple of 8, encryption and decryption are performed without padding. Then, at the time of depadding, since the last part (80 00 00 00 00) of the original input data has the same shape as the padded byte string, it is recognized as a padded byte string and removed. As a result, '11 22 00 'different from the original data value is restored.
한편, 본 실시예에 따르면, 입력 데이터의 길이가 8의 배수이고, 입력 데이터의 마지막 부분이 80 00.. 00 형태이므로, 이를 식별시키기 위하여, 8바이트의 바이트열('80 00 00 00 00 00 00 00')을 패딩시킨 후, 암호화 및 복호화가 수행된다. 디패딩시에는 패딩된 8바이트의 바이트열을 제거하므로, 원래의 입력 데이터와 동일한 '11 22 00 80 00 00 00 00'가 복원된다.On the other hand, according to the present embodiment, since the length of the input data is a multiple of 8, and the last part of the input data is in the form of 80 00 .. 00, in order to identify this, an 8-byte byte string ('80 00 00 00 00 00 00 00 '), then encryption and decryption are performed. During depadding, the padded 8-byte byte string is removed, so that '11 22 00 80 00 00 00 00 'identical to the original input data is restored.
도 7(c)는 128비트 블록 암호 SEED의 경우, 종래 기술(ISO9797 M1)과 본 실시예에 따른 블록 암호 알고리즘의 수행 결과를 비교한 테이블이며, 도 7(d)는 128비트 블록 암호 SEED의 경우, 종래 기술(ISO9797 M2)과 본 실시예에 따른 블록 암호 알고리즘의 수행 결과를 비교한 테이블로서, 상기 도 7(a) 및 7(b)의 설명과 유사하다.FIG. 7 (c) is a table comparing the performance results of the conventional block cipher (ISO9797 M1) and the block cipher algorithm according to the present embodiment in case of 128-bit block cipher SEED, and FIG. In this case, a table comparing the performance of the conventional technique (ISO9797 M2) and the block cipher algorithm according to the present embodiment is similar to the description of Figs. 7 (a) and 7 (b).
도 8은 본 발명의 일 실시예에 따른 블록 암호화 장치의 개략 구성도이다.8 is a schematic structural diagram of a block encryption apparatus according to an embodiment of the present invention.
상기 도 8에 도시된 블록 암호화 장치는 데이터 입력부(81), 데이터 판단부(82), 패딩부(83), 키 입력부(84) 및 암호화부(85)를 포함한다.The block cipher shown in FIG. 8 includes a
상기 데이터 입력부(81)는 암호화될 데이터를 입력하는 기능을 수행한다. The
상기 데이터 판단부(82)는 상기 데이터 입력부(81)에 입력된 상기 입력 데이터의 길이나 데이터 값을 판단하는 기능을 수행한다.The
상기 패딩부(83)는 상기 데이터 판단부(82)의 결과에 따라, 상기 입력 데이터의 길이가 n의 배수가 되도록 하는 임의의 제 1 바이트열을 상기 입력 데이터에 패딩하거나, 또는 n 바이트(byte)의 임의의 제 2 바이트열을 상기 입력 데이터에 패딩하게 된다. According to a result of the
한편, 상기 패딩부(83)는 입력 데이터의 길이가 n의 배수가 아닐 경우에, 상기 입력 데이터의 길이가 n의 배수가 되도록 하는 임의의 제 1 바이트열을 패딩하며, 최종단 데이터 값이 상기 임의의 제 1 바이트열과 동일한 형태일 경우에는, n 바이트(byte)의 임의의 제 2 바이트열을 패딩한다.Meanwhile, when the length of the input data is not a multiple of n, the
본 실시예에서 n은 8 또는 16이 될 수 있으며, 제 1 바이트열 및 제 2 바이트열은 0x80 0x00..00형태의 바이트열일 수 있다. In the present embodiment, n may be 8 or 16, and the first byte string and the second byte string may be byte strings in the form of 0x80 0x00..00.
상기 키 입력부(84)는 키 값을 발생시키며, 상기 암호화부(85)는 상기 키 입력부에서 발생된 키 값과 패딩 후의 입력 데이터를 이용하여 다양한 방식으로 암호화 한다.The
도 9는 본 발명의 일 실시예에 따른 블록 복호화 장치의 개략 구성도이다.9 is a schematic structural diagram of a block decoding apparatus according to an embodiment of the present invention.
상기 도 9에 도시된 블록 복호화 장치는 수신부(91), 복호화부(92), 패딩 식별부(93) 및 디패딩부(94)를 포함한다. The block decoding apparatus illustrated in FIG. 9 includes a
상기 수신부(91)는 암호화된 데이터를 수신하는 기능을 수행하며, 상기 복호화부(92)는 상기 수신된 암호화 데이터를 복호화한다.The
상기 패딩 식별부(93)는 상기 복호화부(92)에서 출력된 데이터에 상기 입력 데이터의 길이가 n의 배수가 되도록 패딩된 임의의 제 1 바이트열이나 상기 입력 데이터의 데이터 값을 식별하기 위하여, 상기 입력 데이터에 패딩된 n 바이트(byte)의 임의의 제 2 바이트열이 존재하는지를 확인하는 기능을 수행한다.The
상기 디패딩부(94)는 상기 패딩 식별부(93)의 결과에 따라, 상기 임의의 제 1 바이트열 또는 n 바이트(byte)의 임의의 제 2 바이트열을 제거하기 한다.The
본 실시예에서, n은 8 또는 16이 될 수 있으며, 제 1 바이트열 및 제 2 바이트열은 0x80 0x00..00 형태의 바이트열일 수 있다. In this embodiment, n may be 8 or 16, and the first byte string and the second byte string may be byte strings of the form 0x80 0x00..00.
이상에서 설명한 것은 본 발명에 따른 블록 암호화 및 복호화 방법 및 장치의 예시적인 실시예에 불과한 것으로서, 본 발명은 상기한 실시예에 한정되지 않고, 이하의 특허청구범위에서 청구하는 바와 같이, 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 분야에서 통상의 지식을 가진 자라면 누구든지 다양한 변경 실시가 가능한 범위까지 본 발명의 기술적 정신이 있다고 할 것이다.What has been described above is merely an exemplary embodiment of a block encryption and decryption method and apparatus according to the present invention, and the present invention is not limited to the above-described embodiment, and as claimed in the following claims, the present invention Without departing from the gist of the present invention, one of ordinary skill in the art will have the technical spirit of the present invention to the extent that various modifications can be made.
상술한 바와 같이, 본 발명의 블록 암호화 및 복호화 방법 및 장치에 따르면, 특정 형택의 입력 데이터를 암호화 하는 경우에도 오류없이 정확히 데이터의 암호화 및 복호화를 수행할 수 있게 된다.As described above, according to the block encryption and decryption method and apparatus of the present invention, even when encrypting input data of a specific type, it is possible to accurately encrypt and decrypt data without error.
Claims (19)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020040099721A KR100673820B1 (en) | 2004-12-01 | 2004-12-01 | Method and apparatus for block encryption and decryption |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020040099721A KR100673820B1 (en) | 2004-12-01 | 2004-12-01 | Method and apparatus for block encryption and decryption |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20060060916A KR20060060916A (en) | 2006-06-07 |
KR100673820B1 true KR100673820B1 (en) | 2007-01-25 |
Family
ID=37157540
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020040099721A KR100673820B1 (en) | 2004-12-01 | 2004-12-01 | Method and apparatus for block encryption and decryption |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100673820B1 (en) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101387697B1 (en) * | 2012-05-11 | 2014-04-21 | 주식회사 예티소프트 | Platform-independent system and method for receiving secure email |
KR101628195B1 (en) * | 2014-12-08 | 2016-06-08 | 한국과학기술정보연구원 | Double backup system using cloud service and method for data management |
KR102481024B1 (en) * | 2021-07-22 | 2022-12-23 | 주식회사 티엔젠 | Processing method for encrypting data, system and computer program |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20000062894A (en) * | 1999-03-15 | 2000-10-25 | 이데이 노부유끼 | Data processing method, apparatus and system for encrypted data transfer |
US20020174332A1 (en) | 2000-11-08 | 2002-11-21 | Nokia Corporation | Adaptive message authentication code |
KR20040040381A (en) * | 2002-11-05 | 2004-05-12 | 가부시끼가이샤 도시바 | Communication device and communication method |
-
2004
- 2004-12-01 KR KR1020040099721A patent/KR100673820B1/en not_active IP Right Cessation
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20000062894A (en) * | 1999-03-15 | 2000-10-25 | 이데이 노부유끼 | Data processing method, apparatus and system for encrypted data transfer |
US20020174332A1 (en) | 2000-11-08 | 2002-11-21 | Nokia Corporation | Adaptive message authentication code |
KR20040040381A (en) * | 2002-11-05 | 2004-05-12 | 가부시끼가이샤 도시바 | Communication device and communication method |
JP2004158981A (en) | 2002-11-05 | 2004-06-03 | Toshiba Corp | Communication equipment and communication method |
Also Published As
Publication number | Publication date |
---|---|
KR20060060916A (en) | 2006-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107347058B (en) | Data encryption method, data decryption method, device and system | |
KR101847492B1 (en) | Apparatus and method for data encryption, apparatus and method for data decryption | |
US20080260147A1 (en) | Method and apparatus for encrypting message for maintaining message integrity, and method and apparatus for decrypting message for maintaining message integrity | |
WO2016027454A1 (en) | Authentication encryption method, authentication decryption method, and information-processing device | |
US7254838B2 (en) | Copy protection method and system for digital media | |
US6889323B2 (en) | Method and apparatus for contents information | |
JP4596256B2 (en) | Transmission / reception system and method, transmission device and method, reception device and method, and program | |
JP2004320719A (en) | Work protection system, key data generating apparatus, and terminal device | |
EP2064830A1 (en) | Method and apparatus for inserting authenication code, and method and apparatus for using data through authenication | |
US7039192B1 (en) | Methods for data encryption using multiple layer steganography | |
US7433488B2 (en) | Information recording medium drive device, information processing apparatus, data replay control system, data replay control method, and computer program | |
US20230139104A1 (en) | Authenticated encryption apparatus, authenticated decryption apparatus, authenticated encryption system, method, and computer readable medium | |
KR100673820B1 (en) | Method and apparatus for block encryption and decryption | |
KR20160109891A (en) | Apparatus and Method for Generating Cryptographic Key based on PUF | |
KR101790948B1 (en) | Apparatus and method for providing drm service, apparatus and method for playing contents using drm service | |
JP5992651B2 (en) | ENCRYPTION METHOD, PROGRAM, AND SYSTEM | |
US8144868B2 (en) | Encryption/decryption of program data but not PSI data | |
KR101881783B1 (en) | Device and method for data encryption and decryption | |
KR102481024B1 (en) | Processing method for encrypting data, system and computer program | |
JP4910324B2 (en) | Information processing apparatus, information processing method, and computer program | |
KR101224956B1 (en) | Method and device for cipher-deciphering data automatically | |
WO2021044465A1 (en) | Encrypting device, decrypting device, computer program, encryption method, decryption method, and data structure | |
JP2007041756A (en) | Information processor and method, program, and security chip | |
JP2006512023A (en) | Data copy prevention apparatus and system, and copy prevention method | |
US20060177053A1 (en) | Data processing apparatus, data recording apparatus, data playback apparatus, and data storage method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E90F | Notification of reason for final refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20130108 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20140103 Year of fee payment: 8 |
|
FPAY | Annual fee payment |
Payment date: 20141231 Year of fee payment: 9 |
|
FPAY | Annual fee payment |
Payment date: 20151228 Year of fee payment: 10 |
|
LAPS | Lapse due to unpaid annual fee |