KR102658004B1 - 데이터 암호화 또는 복호화 장치 및 그 방법 - Google Patents
데이터 암호화 또는 복호화 장치 및 그 방법 Download PDFInfo
- Publication number
- KR102658004B1 KR102658004B1 KR1020230054317A KR20230054317A KR102658004B1 KR 102658004 B1 KR102658004 B1 KR 102658004B1 KR 1020230054317 A KR1020230054317 A KR 1020230054317A KR 20230054317 A KR20230054317 A KR 20230054317A KR 102658004 B1 KR102658004 B1 KR 102658004B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- number sequence
- pseudorandom number
- size
- encrypted
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 83
- 238000012795 verification Methods 0.000 claims abstract description 12
- 238000004422 calculation algorithm Methods 0.000 claims description 28
- 238000004364 calculation method Methods 0.000 claims description 10
- 238000010586 diagram Methods 0.000 description 13
- 230000005540 biological transmission Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 239000000284 extract Substances 0.000 description 4
- 238000012545 processing Methods 0.000 description 3
- 238000009795 derivation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
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/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0869—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
- H04L63/0442—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply asymmetric encryption, i.e. different keys for encryption and decryption
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
-
- 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/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
-
- 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/04—Masking or blinding
- H04L2209/046—Masking or blinding of operations, operands or results of the operations
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Storage Device Security (AREA)
Abstract
본 발명은 데이터의 암호화 또는 복호화 방법과 장치에 관한 것으로, 암호화된 데이터의 유일성을 보장하기 위해 RANDOM NUMBERS를 PASSWORD와 함께 비밀키로 사용하여 생성된 난수열로 원본 데이터를 XOR 하여 암호화 또는 복호화하는 방법과 장치에 관한 것으로서,
임의 난수열(10)과 PASSWORD(20)를 입력 값으로 소정의 크기의 제1의사난수열(31)을 생성하는 제1의사난수열생성기; 상기 PASSWORD(20)를 입력 값으로 소정의 크기의 제2의사난수열(41)을 생성하는 제2의사난수열생성기; 상기 제1의사난수열(31)을 사용하여 데이터(70)를 XOR연산하여 암호화된 데이터(71)을 출력하고, 상기 제2의사난수열(41)을 사용하여 상기 임의 난수열(10)을 XOR연산하여 암호화된 난수열(11)을 출력하는 XOR연산장치;를 포함한다.
또한, 상기 데이터 암호화, 복호화 장치(100, 200)는 SIZE생성장치(60);를 더 포함하여, SIZE생성장치(60)가 생성한 SIZE수열(61)에 따라 상기 제1의사난수생성기(30)는 하나 이상의 제1의사난수열(31)을 새성하여 데이터(70)를 XOR연산하여 암호화하거나 암호화된 데이터(71)를 복호화할 수 있고, 상기 데이터 암호화 장치(100)는 HASH장치(80);를 더 포함하고, 상기 데이터 복호화 장치(200)는 HASH장치(80)와 검증장치(90);를 더 포함하여 상기 복호화된 데이터(70)가 원본데이터와 동일한 지를 검증하는 데이터 암호화 및 복호화 장치(100, 200)를 포함한다.
임의 난수열(10)과 PASSWORD(20)를 입력 값으로 소정의 크기의 제1의사난수열(31)을 생성하는 제1의사난수열생성기; 상기 PASSWORD(20)를 입력 값으로 소정의 크기의 제2의사난수열(41)을 생성하는 제2의사난수열생성기; 상기 제1의사난수열(31)을 사용하여 데이터(70)를 XOR연산하여 암호화된 데이터(71)을 출력하고, 상기 제2의사난수열(41)을 사용하여 상기 임의 난수열(10)을 XOR연산하여 암호화된 난수열(11)을 출력하는 XOR연산장치;를 포함한다.
또한, 상기 데이터 암호화, 복호화 장치(100, 200)는 SIZE생성장치(60);를 더 포함하여, SIZE생성장치(60)가 생성한 SIZE수열(61)에 따라 상기 제1의사난수생성기(30)는 하나 이상의 제1의사난수열(31)을 새성하여 데이터(70)를 XOR연산하여 암호화하거나 암호화된 데이터(71)를 복호화할 수 있고, 상기 데이터 암호화 장치(100)는 HASH장치(80);를 더 포함하고, 상기 데이터 복호화 장치(200)는 HASH장치(80)와 검증장치(90);를 더 포함하여 상기 복호화된 데이터(70)가 원본데이터와 동일한 지를 검증하는 데이터 암호화 및 복호화 장치(100, 200)를 포함한다.
Description
본 발명은 데이터의 암호화 또는 복호화 방법과 장치에 관한 것으로, 암호화된 데이터의 유일성을 보장하기 위해 RANDOM NUMBERS를 PASSWORD와 함께 비밀키로 사용하여 생성된 의사난수열로 원본 데이터를 XOR 하여 암호화 또는 복호화하는 방법과 장치에 관한 것이다.
RANDOM NUMBERS를 사용하는 암호화 방법에는 NIST 표준 암호인 AES가 있고, 특허문헌 001 또는 특허문헌 002가 있다.
특허문헌 001 또는 특허문헌 002는 서버에 클라이언트가 접속할 때 마다 ID를 확인하여 서버가 클라이언트에게 소정의 비주기형 랜덤 데이터 생성 알고리즘에 의해 생성된 공개키를 제공하면, 클라이언트는 공개키와 개인키로 소정의 난수열을 생성하고, 이를 사용하여 PASSWORD를 암호화하는 방법으로 제3자에 의한 무단 로그인을 방지하는 방법을 제시하였는데, 소정의 랜덤 데이터 생성 알고리즘에 의해 생성된 공개키, 즉 RANDOM NUMBERS가 공개되어 있으므로, 암호화된 데이터의 유일성을 보장할 뿐, 사실상 PASSWORD를 모르는 제 3 자에 의한 복호화 난이도를 증대시키지 못한다.
표준 암호와 방법인, AES는 임의로 생성된 수열, 즉 RANDOM NUMBERS로 형성된 IV(INITIAL VECTOR)를 사용하고 있는데, BLOCK 암호의 특성으로 인하여 IV 크기는 블록크기를 8로 나눈 것과 같아야 하는 제약이 있고(The size of the IV property must be the same as the BlockSize property divided by 8, 출처 :https://learn.microsoft.com/en-us/dotnet/api/system.security.cryptography.aescryptoserviceprovider.iv?view=net-7.0), 비특허문헌 001에서 MS 사가 밝인 바에 의하면, “These vulnerabilities allow an attacker to decrypt data encrypted by symmetric block algorithms, such as AES and 3DES, using no more than 4096 attempts per block of data.” 즉 4096회 이하의 공격만으로 암호화된 데이터를 복호화할 수 있다고 설명하고 있으므로, 사실상 비밀키를 모르는 제3자에 의해 실시간 복호화가 가능한 결함이 있다. 이는 비특허문헌 002에서는 ORACLE KEY라고 표현되기도 한다.(“Such data can allow attackers to decrypt (and sometimes encrypt) messages through the oracle using the oracle's key, without knowing the encryption key.”)
임의 난수열(10)을 16 BYTE로 설정하면, PASSWORD(20)의 입력가능한 경우의 수를 무시하더라도, 적어도 256 ^ 16 의 경우의 수 만큼의 의사난수열 생성 및 암호화 된 데이터의 XOR 시도를 하여야 하는데, 슈퍼컴퓨터가 초당 6E+17회 본 발명에 사용된 제1의사난수열(31)의 생성 및 XOR연산이 가능하다고 가정할 경우에 {3.4E + 38 (=256^16)에서 나누기 {(6E + 17) * (3600초 * 24 시간 * 365 일)}} = 약 1.78 E + 13 년이 소요되고, 임의 난수열(10)을 12 BYTE로 설정할 경우에도 최소 4187년이 필요하다.
또한, 한국전자통신연구원(ETRI)는 선형잡음문제(LWE·Learning with Errors)에 기반해 암호키를 생성하는 양자내성암호를 ‘분할-정복(divide-and-conquer) 전략’을 활용하여 공략할 수 있는 양자 알고리즘을 개발한 것으로 기사화되었다.
따라서 복잡한 암호화 구조 또는 수학적 난해성은 컴퓨터를 활용한 제 3 자의 무단 복호화시도에 무력하여 개선된 데이터 암호화 또는 복호화 장치 및 그 방법가 필요하게 되었다.
Timing vulnerabilities with CBC-mode symmetric decryption using padding
Padding oracle attack
본 발명은 복잡한 알고리즘으로 인하여 발생 가능한 예컨대, ORACLE PADDING DEFECT와 같은 취약점을 갖지 않도록, XOR 과 같은 단순한 연산만으로도 PASSWORD를 모르는 제3자에 의한 무단 복호화를 방지할 수 있는 개선된 데이터 암호화 또는 복호화 장치 및 그 방법를 제공하는데 그 목적이 있다.
또한, 본 발명은 데이터의 암호화 또는 복호화 시에 병렬처리가 가능한 데이터 암호화 또는 복호화 장치 및 그 방법를 제공하는 데 목적이 있다.
또한, 본 발명은 기존의 공개키 - 개인키 암호화 방식만으로는 서버-클라이언트 간의 LOG-IN 데이터를 네트워크 전송 중에 가로채 복사하여 재사용하는 간단한 방법으로 제3자의 무단 로그인이 가능한 문제가 있어, OTP 방식 등을 사용하였으나, 이러한 보조적 수단 없이도 안전한 LOG-IN 데이터의 암호화 방법을 제공하는 데 목적이 있다.
상기 과제를 해결하기 위하여 본 발명의 데이터 암호화 장치(100)는 임의 난수열(10)과 PASSWORD(20)를 입력 값으로 소정의 크기의 제1의사난수열(31)을 생성하는 제1의사난수열생성기(30); 상기 PASSWORD(20)를 입력 값으로 소정의 크기의 제2의사난수열(41)을 생성하는 제2의사난수열생성기(40); 상기 제1의사난수열(31)을 사용하여 데이터(70)를 XOR연산하여 암호화된 데이터(71)을 출력하고, 상기 제2의사난수열(41)을 사용하여 상기 임의 난수열(10)을 XOR연산하여 암호화된 난수열(11)을 출력하는 XOR연산장치(50);를 포함한다.
본 발명의 데이터 복호화 장치(200)는 PASSWORD(20)를 입력 값으로 소정 크기의 제2의사난수열(41)을 생성하는 제2의사난수열생성기(40); 상기 제2의사난수열(41)을 사용하여 암호화된 난수열(11)을 XOR연산하여 복호화된 임의 난수열(10)을 출력하는 XOR연산장치(50); 상기 복호화된 임의 난수열(10)과 상기 PASSWORD(20)를 입력값으로 소정 크기의 제1의사난수열(31)을 생성하는 제1의사난수열생성기(30); 상기 제1의사난수열(31)을 사용하여 상기 암호화된 데이터(71)를 XOR연산하는 XOR연산장치(50);를 포함한다.
상기 데이터 암호화 장치(100)와 데이터 복호화 장치(200)는 (복호화된) 임의 난수열(10) 또는 PASSWORD(20)의 어느 하나 이상을 입력값으로 하나 이상의 정수로 구성된 SIZE수열(61)을 출력하는 SIZE생성장치(60);를 더 포함한다.
상기 SIZE생성장치(60)를 더 포함한 상기 데이터 암호화 장치(100)에서 임의 난수열(10) 또는 PASSWORD(20) 중 어느 하나 이상을 입력값으로 SIZE생성장치(60)가 하나 이상의 정수로 구성된 수열, 즉 SIZE수열(61)을 생성하면, 제1의사난수열생성기(30)는 상기 PASSWORD(20) 및 상기 임의 난수열(10) 및 상기 SIZE수열(61)을 입력값으로 하나 이상의 제1의사난수열(31)을 생성하고, XOR연산장치(50)는 상기 하나 이상의 제1의사난수열(31)을 사용하여 데이터(70)를 XOR연산하여 암호화된 데이터(71)를 출력하고, 제2의사난수열생성기(40)는 상기 PASSWORD(20)를 입력값으로 소정 크기의 제2의사난수열(41)을 생성하고, XOR연산장치(50)는 상기 제2의사난수열(41)을 사용하여 상기 임의 난수열(10)을 XOR연산하여 암호화된 난수열(11)을 출력하고, 상기 SIZE생성장치(60)를 더 포함한 상기 데이터 복호화 장치(200)에서 PASSWORD(20)를 입력값으로 제2의사난수열 생성장치(40)가 제2의사난수열(41)을 생성하면, XOR연산장치(50)는 상기 제2의사난수열(41)을 사용하여 암호화된 난수열(11)을 XOR연산하여 복호화된 임의 난수열(10)을 생성하고, 상기 복호화된 임의 난수열(10)과 상기 PASSWORD(20)의 어느 하나 이상을 입력값으로 상기 SIZE생성장치(60)는 하나 이상의 SIZE수열(61)을 생성하고, 제1의사난수열 생성장치(30)는 상기 PASSWORD(20) 및 상기 복호화된 임의 난수열(10) 및 상기 SIZE수열(61)을 입력값으로 하나 이상의 제1의사난수열(31)을 생성하고, XOR연산장치(50)는 상기 하나 이상의 제1의사난수열(31)을 사용하여 암호화된 데이터(71)를 XOR연산하여 복호화된 데이터(70)를 출력한다.
상기 SIZE생성장치(60)를 더 포함한 데이터 암호화 장치(100) 또는 데이터 복호화 장치(100)에서 SIZE생성장치(60)가 하나 이상의 정수로 구성된 수열인 SIZE수열(61)을 생성하면, 제1의사난수열생성기(30)는 상기 SIZE수열(61)에 따라 BYTE 크기를 정한 하나 이상의 제1의사난수열(31)을 생성한다.
상기 XOR연산장치(50)가 상기 하나 이상의 제1의사난수열(31)을 사용하여 데이터(70)를 XOR연산함에 있어, 소정의 알고리즘에 따라 어느 하나의 제1의사난수열(31)로 데이터(70)의 일부를 연산하고, 그 XOR연산결과의 일부를 포함하여 나머지 데이터(70)의 일부를 어느 하나의 제1의사난수열(31)로 XOR연산하는 것을 소정의 순서로 반복하는 내부연산과정을 하나의 큰 블록으로 삼아, 순차로 또는 임의의 순으로 하나 이상의 큰 블록을 연산하거나 또는 둘 이상의 큰 블록에서 동시에 내부연산을 실행하는 병렬연산을 할 수 있다.
본 발명에 따른 클라이언트는 LOG-IN PASSWORD를 PASSWORD(20)로 사용하여, LOG-IN용 PASSWORD를 포함하는 LOG-IN 데이터(70)를 상기 데이터 암호화 장치(100)에 의해 암호화하되, 임의 난수열(10)을 매번 다르게 생성하여 사용하고, 클라이언트는 서버가 제공하는 공개키(301)로 LOG-IN ID와 상기 데이터 암호화 장치(100)에 의해 암호화된 ‘LOG-IN 데이터’(71), 암호화된 난수열(11)을 공개키 데이터 암호화 장치(300)가 암호화한 LOG-IN 데이터(302)를 출력하여 서버에 전송하고,
서버는 상기 공개키(301)로 암호화된 LOG-IN 데이터(302)를 수신한 후, 이를 개인키 데이터 복호화 장치(400)가 개인키(401)를 사용하여 개인키로 복호화된 데이터(402)에서 상기 LOG-IN ID와 상기 데이터 암호화 장치(100)에 의해 암호화된 LOG-IN 데이터(71), 암호화된 난수열(11)을 추출하고, 상기 LOG-IN ID에 할당된 LOG-IN PASSWORD를 PASSWORD(20)로 사용하되, 상기 암호화된 난수열(11)과 상기 PASSWORD(20)로 복호화 장치(200)에서 상기 암호화된 LOG-IN 데이터(71), 상기 암호화된 난수열(11)을 복호화하여 복호화된 ‘LOG-IN용 PASSWORD를 포함하는 LOG-IN 데이터’(70), 복호화된 임의 난수열(10)을 출력하되, 서버가 상기 복호화 과정에 실패한 경우에는 서버가 보유중인 LOG-IN ID에 할당된 LOG-IN PASSWORD 즉 PASSWORD(20)가 사용된 경우가 아니므로 접속을 거부하고, 복호화에 성공한 경우에도, 상기 복호화된 임의 난수열(10)이 재사용된 것으로 판단되는 경우에는 제3자가 LOG-IN 데이터를 무단으로 복사하여 접속시도한 것으로 간주하여 접속을 거부할 수 있다.
또한, 본 발명에 의한 암호화 및 데이터 복호화 장치(100, 200)는 복호화된 데이터(70)가 원본데이터와 일치하는지를 검증할 다양한 방법을 추가로 제공할 수 있는데, 하나의 실시예로서, HASH장치(80)를 더 포함한 데이터 암호화 장치(100)가 데이터(70)의 HASH데이터(70v)를 함께 암호화하면, HASH장치(80)와 검증장치(90)을 더 포함한 데이터 복호화 장치(200)는 암호화된 데이터(71), 암호화된 HASH데이터(71v)를 복호화하여 복호화된 데이터(70)와 복호화된 HASH데이터(70v)를 출력하고, 상기 HASH장치(80)가 상기 복호화된 데이터(70)의 HASH데이터(70v)를 생성하면, 상기 검증장치(90)가 상기 복호화된 HASH데이터(70v)와 상기 복호화된 데이터(70)의 HASH데이터(70v)를 비교 검증하여 서로 일치하면 복호화된 데이터(70)를 원본과 같은 것으로 간주한다.
본 발명은 암호화에 사용된 임의 난수열(10)의 BYTE 크기와 입력가능한 PASSWORD(20)의 경우의 수를 늘리는 방법으로 기하급수적으로, 복호화 난이도를 무한대로 증대시킬 수 있고, 단순한 XOR연산만으로도 암호화, 복호화가 가능하므로, 병렬처리는 물론, 취약점이 없으면서도, 빠른 데이터의 암호화, 복호화가 가능하다.
또한, 본 발명은 XOR연산만으로 구성되어 있으므로, S-BOX, P-BOX 또는 Feistel 구조와 같은 암호화 또는 복호화 과정을 추가로 실시하는 것을 배제하지 않지만, 추가적인 암호화 과정은 불필요하다.
본 발명의 암호화 및 데이터 복호화 장치(100, 200)에 SIZE생성장치(60)를 추가할 경우에, SIZE수열(61)을 구성하는 정수와 같은 BYTE 크기로 생성된 하나 이상의 제1 의사난수열(31)로 XOR연산하여 데이터(70)를 암호화하면, 심지어 제1 의사난수열(31)이 하나인 경우에도 제1의사난수열(31)의 BYTE 크기를 알 수 없어, 가능한 PASSWORD(20)를 전수 대입해 보는 이외에, 최신의 ‘분할-정복(divide - and - conquer)’ 방법을 포함하여 어떠한 방법으로도 PASSWORD(20)를 모르는 제3자의 무단 복호화 시도가 불가능하므로, 양자난수 또는 암호학적으로 안전한 것으로 검증된 의사난수열 생성장치가 아니라, 임의로 개발한 의사난수열 생성장치 또는 MICROSOFT 등이 제공하는 공개된 의사난수열 LIBRARY를 사용하여도 본 발명의 취지에 따라 안전하게 데이터(70)를 암호화할 수 있다.
또한, 암호화에 사용된 임의 난수열(10)을 암호화한 난수열(11)은 암호화된 데이터(71)의 소정의 위치에 포함시키거나 별도로 분리하여 휘발성 또는 비휘발성 저장장치에 저장할 수 있고, 네트워크상에 송신 또는 수신할 수 있으므로, 전체 암호화된 데이터(71)가 아니라, 암호화된 난수열(11)만을 삭제하여도 암호화된 데이터(71)의 복호화 가능성을 완전히 제거할 수 있다.
또한, 임의 난수열(10)을 매번 다르게 생성하여 사용하면 암호화된 데이터(71)의 유일성이 보장되고, PASSWORD(20)로 생성된 제2의사난수열(41)로 임의 난수열(10)을 암호화하므로, PASSWORD(20)를 모르는 제3자가 암호화된 난수열(11)과 암호화된 데이터(71)을 모두 확보하여도 제2의사난수열(41)을 생성할 수 없어 암호화된 난수열(11)을 임의난수열(10)로 복호화할 수 없고, 나아가 제1의사난수열(31)을 생성할 수 없어 암호화된 데이터(70)의 복호화가 불가능하므로, 이러한 성질을 활용하여 서버 - 클라이언트 간의 LOG-IN 데이터 보호를 할 수 있고, 나아가 VPN 등 네트워크 전송데이터, 모든 유-무선 통신 데이터를 안전하게 보호할 수 있다.
즉, 본 발명의 암호화, 복호화 방법 또는 장치에 의해 암호화된 통신 이외 통신 방법을 허용하는 BACK DOOR가 없으면, PASSWORD(20)를 모르는 제3자가 네트워크 송수신 중의 데이터를 가로채거나 위변조할 수 없게 됨은 물론, 네트워크 장치에 해킹하는 것도 불가능하게 된다.
서버 - 클라이언트 간의 LOG-IN에 사용하는 경우에도, 클라이언트가 LOG-IN용 PASSWORD를 PASSWORD(20)로 삼아 “LOG-IN PASSWORD를 포함하는 LOG IN 정보”(= 데이터 (70))를 본 발명의 데이터 암호화 장치(100)로 암호화하고 다시 서버가 제공한 공개키로 LOG-IN ID와 암호화된 LOG-IN 데이터를 함께 암호화하여 전송하면, 설령 제3자가 개인키 없이 양자컴퓨팅 등의 방법으로 공개키로 암호화된 LOG-IN ID, 데이터 암호화 장치(100)으로 암호화된 LOG-IN 데이터를 추출해 내더라도, 암호화된 LOG-IN 데이터(= 암호화된 데이터(71)), 즉 LOG-IN PASSWORD를 복호화할 수 없고, 매번 다르게 생성되는 임의 난수열(10)에 의해 암호화된 LOG-IN 데이터(= 암호화된 데이터(71))가 다른 BYTE 배열 값을 갖게 되므로, 서버는 이미 수신하였던 암호화된 LOG-IN 데이터(71)이 재수신된 경우에 제3자의 무단 LOG-IN으로 간주하여 접속을 거부할 수 있어, OTP 등의 보조장치 없이도 제3자의 무단 LOG-IN을 방지할 수 있다.
도 1a 은 본 발명에 의한 데이터 암호화 장치(100)가 데이터를 암호화 과정의 개념도를 표현한 도면이다.
도 1b 는 본 발명에 의한 데이터 복호화 장치(200)가 데이터를 복호화 과정의 개념도를 표현한 도면이다.
도 2a 은 본 발명에 의한 데이터 암호화 장치(100)가 SIZE생성장치(60)를 더 포함한 경우에, SIZE생성장치(60)에서 출력된 SIZE수열(61)을 사용하여 하나 이상의 제1의사난수열(31)을 생성하여 데이터(70)를 암호화하는 과정을 표현한 도면이다.
도 2b 는 본 발명에 의한 데이터 복호화 장치(200)가 SIZE생성장치(60)를 더 포함한 경우에, SIZE생성장치(60)에서 출력된 SIZE수열(61)을 사용하여 하나 이상의 제1의사난수열(31)을 생성하여 암호화된 데이터(71)를 복호화하는 과정을 표현한 도면이다.
도 2c 는 도 2a 내지 2b에서 사용된 SIZE생성장치(60)의 역할을 상세히 표현한 도면이다.
도 3 은 본 발명의 데이터 암호화 또는 복호화 장치(100, 200)가 병렬연산을 실행하는 하나의 예로서 SIZE수열(61)에 따라 BYTE 크기를 달리하는 하나 이상의 제1의사난수열(31)을 사용하여 데이터(70)를 병렬 연산하여 암호화된 데이터(71)를 출력하거나 복호화하는 과정을 표현한 도면이다.
도 4 는 본 발명의 데이터 암호화 장치(100)가 SIZE수열(61)에 따라 BYTE 크기를 달리하는 복수개의 제1의사난수열(31)을 소정의 순으로 내부연산하는 과정을 하나의 큰 블록으로 삼아 복수개의 큰 블록을 순차로 또는 임의의 순(예, FOR EACH 구문을 사용하여 각 블록을 임의의 순으로 연산할 수 있음)으로 연산하거나 또는 동시에 내부연산하는 병렬연산으로 데이터(70)를 암호화하거나 암호화된 데이터(71)를 복호화하는 과정을 표현한 도면이다.
도 5 는 본 발명에 의한 데이터 암호화 또는 복호화 장치(100, 200)를 공개키-개인키 데이터 암호화 장치(300, 400)과 함께 사용한 서버 - 클라이언트 간의 LOG-IN 보호 방법을 표현한 도면이다.
도 6a는 본 발명의 데이터 암호화 장치(100)가 HASH생성장치(80)를 더 포함한 경우에, HASH생성장치(80)가 데이터(70)의 HASH데이터(70v)를 출력하는 과정을 표현한 도면이다.
도 6b는 본 발명의 데이터 복호화 장치(200)가 HASH생성장치(80), 검증장치(90)를 더 포함한 경우에, HASH생성장치(80)가 복호화된 데이터(70)의 HASH데이터(70v)를 생성하면, 검증장치(90)가 복호화된 HASH데이터(70v)와 상기 HASH데이터(70v)를 서로 비교 검증하여 일치하면 복호화된 데이터(70)는 원본과 같은 것으로 간주하고, 불일치하면 복호화에 실패한 것으로 간주하는 과정을 표현한 도면이다.
도 1b 는 본 발명에 의한 데이터 복호화 장치(200)가 데이터를 복호화 과정의 개념도를 표현한 도면이다.
도 2a 은 본 발명에 의한 데이터 암호화 장치(100)가 SIZE생성장치(60)를 더 포함한 경우에, SIZE생성장치(60)에서 출력된 SIZE수열(61)을 사용하여 하나 이상의 제1의사난수열(31)을 생성하여 데이터(70)를 암호화하는 과정을 표현한 도면이다.
도 2b 는 본 발명에 의한 데이터 복호화 장치(200)가 SIZE생성장치(60)를 더 포함한 경우에, SIZE생성장치(60)에서 출력된 SIZE수열(61)을 사용하여 하나 이상의 제1의사난수열(31)을 생성하여 암호화된 데이터(71)를 복호화하는 과정을 표현한 도면이다.
도 2c 는 도 2a 내지 2b에서 사용된 SIZE생성장치(60)의 역할을 상세히 표현한 도면이다.
도 3 은 본 발명의 데이터 암호화 또는 복호화 장치(100, 200)가 병렬연산을 실행하는 하나의 예로서 SIZE수열(61)에 따라 BYTE 크기를 달리하는 하나 이상의 제1의사난수열(31)을 사용하여 데이터(70)를 병렬 연산하여 암호화된 데이터(71)를 출력하거나 복호화하는 과정을 표현한 도면이다.
도 4 는 본 발명의 데이터 암호화 장치(100)가 SIZE수열(61)에 따라 BYTE 크기를 달리하는 복수개의 제1의사난수열(31)을 소정의 순으로 내부연산하는 과정을 하나의 큰 블록으로 삼아 복수개의 큰 블록을 순차로 또는 임의의 순(예, FOR EACH 구문을 사용하여 각 블록을 임의의 순으로 연산할 수 있음)으로 연산하거나 또는 동시에 내부연산하는 병렬연산으로 데이터(70)를 암호화하거나 암호화된 데이터(71)를 복호화하는 과정을 표현한 도면이다.
도 5 는 본 발명에 의한 데이터 암호화 또는 복호화 장치(100, 200)를 공개키-개인키 데이터 암호화 장치(300, 400)과 함께 사용한 서버 - 클라이언트 간의 LOG-IN 보호 방법을 표현한 도면이다.
도 6a는 본 발명의 데이터 암호화 장치(100)가 HASH생성장치(80)를 더 포함한 경우에, HASH생성장치(80)가 데이터(70)의 HASH데이터(70v)를 출력하는 과정을 표현한 도면이다.
도 6b는 본 발명의 데이터 복호화 장치(200)가 HASH생성장치(80), 검증장치(90)를 더 포함한 경우에, HASH생성장치(80)가 복호화된 데이터(70)의 HASH데이터(70v)를 생성하면, 검증장치(90)가 복호화된 HASH데이터(70v)와 상기 HASH데이터(70v)를 서로 비교 검증하여 일치하면 복호화된 데이터(70)는 원본과 같은 것으로 간주하고, 불일치하면 복호화에 실패한 것으로 간주하는 과정을 표현한 도면이다.
본 발명을 실시하기 위한 구체적인 실시방법을 설명하기에 앞서, 간단한 개념 내지 통상적인 데이터 암호 및 복호화 과정을 설명하고자 한다.
데이터의 암호화 또는 복호화는 데이터를 STREAM(= BYTE SEQUENCE)으로 읽은 후 소정 크기의 BYTE 배열을 대상으로 암호 및 복호화를 반복 수행하고, 이를 다시 STREAM으로 출력하는 방법으로 수행되므로, 본 발명에서 데이터의 암호화 또는 복호화 과정은 BYTE 배열을 입력받아 소정의 알고리즘에 따른 연산을 실시한 후 BYTE 배열을 출력하는 과정이다.
따라서 본 발명에서 사용된 임의 난수열(10), 암호화된 난수열(11), PASSWORD(20), 제1의사난수열(31), 제2의사난수열(41), 데이터(70), 암호화된 데이터(71), LOG-IN 데이터는 결국 BYTE 배열을 의미하거나 BYTE 배열로 변환되어 사용된다.
이때, BYTE 배열은 MICROSOFT 사의 .NET의 ARRAY의 형태에 한정되지 않으며, LIST 등 다양한 형태로 실시될 수 있고, 이에 제한되지 않고, 다양한 프로그래밍 언어를 사용하여 실시될 수 있다.
따라서, “임의 난수열(10), PASSWORD(20)를 입력값으로”라는 의미는 “임의 난수열(10)의 BYTE 배열 값과, PASSWORD(20)의 BYTE 배열 값을 입력값으로”라는 의미이고, 제1의사난수열(30) 생성기와 제2의사난수열생성기(40)는 처음부터 BYTE 배열 형태의 제1의사난수열(31)과 제2의사난수열(41)을 생성하고, 데이터(70)와 암호화된 데이터(71), HASH데이터(70v), 암호화된 HASH데이터(71v)도 모두 BYTE 배열의 형태로 실시된다.
다만 SIZE생성장치(60)가 생성하는 SIZE수열(61)은 "정수(uInteger, uLong 불문)"로 구성된 수열로서, 제1의사난수열생성기(30)가 생성하는 제1의사난수열(31)의 BYTE 크기(=BYTE LENGTH, 본 명세서에서 BYTE 크기는 BYTE LENGTH의 의미와 같다.)를 지정하고, 동일한 임의난수열(10)과 PASSWORD(20)가 SIZE생성장치(60)에 입력된 경우에도 SIZE수열(61)의 값이 다른 경우에는 생성되는 제1의사난수열(31)의 BYTE 크기도 다르게 생성된다.
따라서, 본 발명에서 SIZE생성장치(60)는 제1의사난수열(31)의 BYTE 크기 값에 직접 대입할 정수로 구성된 수열을 생성하는 장치이므로, 생성된 SIZE수열(61)의 값에 다시 소정의 연산을 하여 제1의사난수열(31)의 BYTE 크기를 정한다는 식으로 변형하는 것은 개념을 혼동한 것이다.
본 발명에서 제1의사난수열(31)의 BYTE 크기가 0이 되면 데이터(70)를 XOR연산할 수 없으므로, SIZE수열(61)을 구성하는 정수에는 0이 포함되지 않는 것을 원칙으로 한다. 그럼에도 불구하고 SIZE생성장치(60)가 0을 포함한 정수를 출력하도록 알고리즘을 구성하는 것을 배제할 필요는 없다. 다만 SIZE수열(61)이 0 뿐인 경우에는 XOR연산장치(50)에서 사용할 제1의사난수열(31)이 없게 되므로 이러한 경우는 알고리즘에서 제외하여야 한다. 이하에서는 SIZE수열(61)을 구성하는 정수에 0이 포함되는 지 여부를 더 언급하지 않는다.
또한, SIZE수열(61)이 동일한 값을 2 회 이상 반복하여 출력한 경우 같은 크기의 제1의사난수열(31)의 BYTE 값을 동일하게 하거나, 다르게 하는 것은 본 발명 암호화, 복호화 장치(100, 200)를 실시하는 응용방법에 속한다.
즉 SIZE수열(61)이 1000, 1000인 경우에 1000 BYTE 의 제1의사난수열(31)이 2 개 생성되지만, 앞의 제1의사난수열(31)과 뒤의 제1의사난수열(31)의 BYTE 값을 동일하게 생성하거나 다르게 생성하는 것은 제1의사난수열생성장치(30)의 알고리즘의 구성문제로서 다양한 응용범위에 속한다.
본 발명의 임의 난수열(10) 또는 PASSWORD(20)는 임의로 입력하거나 생성장치에서 생성하여 사용할 수 있되, 그 방법에 아무런 제한이 없으므로, 단순히 주어진 것으로 보고, 입력방법 및 장치와 생성방법 및 장치 등은 별도로 설명하지 않고 생략한다. 또한, 임의 난수열(10)은 데이터 암호화 장치(100)에서 암호화된 난수열(11)로 출력되면 그 소임을 다하고, 복호화 장치(200)가 암호화된 데이터(71)을 복호화할 때에는 암호화된 난수열(11)과 PASSWORD(20)가 있어야 한다. 따라서, 데이터 암호화 장치(100)는 임의 난수열(10)과 PASSWORD(20)를 사용하여 데이터(70)를 암호화하고, 암호화된 데이터 복호화 장치(200)는 PASSWORD(20)를 사용하여 암호화된 난수열(11)을 복호화한 후 복호화된 임의 난수열(10)과 PASSWORD를 사용하여 암호화된 데이터(71)를 복호화하는 것으로 설명할 수 있다.
데이터 암호화 또는 복호화 장치(100, 200)에서 “임의 난수열”(10) 또는 PASSWORD(20)는 사용자가 ‘문자’를 입력한 후 소정의 ENCODING 함수(는 공지의 것 또는 임의로 개발하여 사용할 수 있다)를 사용하여 BYTE 배열로 변환하여 사용할 수도 있고, 소정의 생성장치에서 생성하여 사용할 수도 있으며, 임의의 저장장치 또는 네트워크에서 가져올 수도 있다.
본 발명에서 PASSWORD(20)를 사용자가 ‘문자’로 입력하는 경우에 있어, 단순히 ENCODING 함수를 사용하여 BYTE 배열 데이터로 변환할 수 있을 뿐 아니라, 사용자가 입력한 ‘문자’의 개수를 불문하고 소정 크기의 BYTE 배열로 변환하도록 소정의 알고리즘을 사용할 수도 있다.
또한, 본 발명에서 PASSWORD(20)는 제1의사난수열 생성장치(30)와 제2의사난수열 생성장치(40)의 입력값으로 사용함에 있어, 서로 다른 BYTE 배열 값을 입력하도록 ENCODING을 달리 할 수도 있으나, 이는 무수히 다양하게 변형가능한 응용실시예에 속한다.
하나의 실시예로서, MICROSOFT가 제공하는 HMACSHA1 기반의 의사(pseudo) 난수 생성기를 사용하여 암호 기반 키 파생 기능인 PBKDF2를 구현하는 Rfc2898DeriveBytes함수를 사용하면 ‘문자’ 개수에 불구하고 동일한 BYTE 크기의 난수열을 생성할 수도 있다.
따라서 본 명세서에서는 무수히 변형 가능한 ENCODING 방법, 제1의사난수열생성기(30) 또는 제2의사난수열생성기(40)의 의사난수열 생성방법들을 어느 하나의 방법으로 특정하지 않고, 더 설명하지 않는다.
본 발명에서 제1의사난수열(31)을 사용하여 데이터(70), 암호화된 데이터(71)를 XOR연산하는 XOR연산장치(50)와 제2의사난수열(41)을 사용하여 임의 난수열(10), 암호화된 난수열(11)을 XOR연산하는 XOR연산장치(50)는 동일할 필요가 없다.
또한, XOR연산장치(50)가 제1의사난수열(31)로 데이터(70), 또는 암호화된 데이터(71)를 제1의사난수열(31)로 XOR연산함에 있어, 제1의사난수열(31)의 BYTE크기보다 작은 데이터(70), 암호화된 데이터(71)에 대하여서는 달리 설명의 필요가 없이 제1의사난수열(31)의 일부로 XOR연산을 실행하면 충분하고,
제1의사난수열(31)의 BYTE크기 보다 데이터(70) 또는 암호화된 데이터(71)가 더 큰 경우에는 제1의사난수열(31)의 크기의 블록으로 나누되, 둘 이상의 블록에 대하여 순차로 또는 임의의 순으로(예, FOR EACH 구문 사용이 가능하므로 순차일 필요가 없다) 또는 병렬로 동시에 XOR연산을 실행할 수도 있으되, 다양한 순차, 임의의 순, 또는 병렬연산의 방법은 본 명세서에 설명한 것에 제한되지 않는다.
이때에 제1의사난수열(31)의 BYTE 배열 크기에 비하여 나머지 데이터(70)의 BYTE 배열 크기가 작은 경우에는 제1의사난수열(31)의 일부만을 사용하는 것이 당연하다.
이러한 원리는 XOR연산장치(50)가 제2의사난수열(51)로 임의 난수열(10) 또는 암호화된 난수열(11)을 XOR 연산하거나, 제1의사난수열(31)로 HASH데이터(70v) 또는 암호화된 HASH데이터(71v)를 XOR연산하는 경우에도 모두 동일하고, 달리 설명하지 않는 한, 본 명세서의 XOR연산에 모두 적용된다.
또한, 본 발명의 XOR연산장치(50)는 배타적 논리합의 연산을 수행하되, 이에 제한되지 아니하고, S-BOX 또는 P-BOX 형태 등의 다른 암호화 또는 복호화의 연산을 추가로 수행하도록 실시될 수도 있다.
본 발명에서 복호화된 데이터가 원본데이터와 동일한 지 여부를 검증하기 위해 본 명세서에서는 HASH 함수를 사용하고 있으나 이에 제한되지 아니한다.
따라서, 본 발명의 데이터 암호화 및 복호화 장치는 본 명세서에 설명한 방법 및 장치에 국한되지 아니하고, 이를 응용하여 다른 방법 및 장치를 추가한 것을 포함하고, 데이터의 암호화, 복호화 방법 및 장치가 필요한 모든 분야, 예컨대, 휘발성 또는 비휘발성 저장장치, 서버 - 클라이언트, VPN 등 일체의 네트워크 방법 및 장치에 적용가능하다. 즉 모든 형태의 유-무선 통신장치, 각종 스마트 장치, 개인용, 차량용, 대규모 연산, 저장, 네트워크 장치의 내부 데이터 처리, 내-외부 데이터 송수신 등에 적용된다.
이에 따라, 본 발명의 데이터 암호화 또는 복호화 장치 및 그 방법에 관하여 도 1 내지 도 6을 참조하여 구체적으로 살펴보기로 한다.
도 1a는 본 발명에 의한 데이터 암호화 장치(100)가 데이터를 암호화하는 과정의 개념도로서, 이에 의하면,
본 발명의 데이터 암호화 장치(100)는 PASSWORD(20)와 임의 난수열(10)을 입력값으로 제1의사난수열생성기(30)가 생성한 소정 크기의 제1의사난수열(31)로 XOR연산장치(50)가 데이터(70)를 XOR연산하여 암호화된 데이터(71)를 출력하고, PASSWORD(20)를 입력값으로 제2의사난수열생성기(40)가 생성한 소정 크기의 제2의사난수열(41)로 XOR연산장치(50)가 상기 임의 난수열(10)을 XOR연산하여 암호화된 난수열(11)을 출력한다.
이때, 암호화된 난수열(11)은 암호화된 데이터(71)의 소정의 위치에 포함시키거나 별도로 분리하여 휘발성 또는 비휘발성 저장장치에 저장하거나 네트워크 전송할 수 있고, 암호화된 난수열(11) 또는 암호화된 데이터(71)의 어느 하나 이상을 파기하면 암호화된 데이터(71)는 사실상 영구적으로 복구할 수 없게 된다.
도 1b는 본 발명에 의한 복호화 장치(200)가 데이터를 복호화하는 과정의 개념도로서, 이에 의하면,
본 발명의 데이터 복호화 장치(200)는 PASSWORD(20)를 입력값으로 제2의사난수열생성기(40)가 생성한 소정 크기의 제2의사난수열(41)을 사용하여 XOR연산장치(50)가 암호화된 난수열(11)을 XOR연산하여 복호화된 임의 난수열(10)을 출력하고, 상기 복호화된 임의 난수열(10)과 상기 PASSWORD(20)를 입력값으로 제1의사난수열생성기(30)가 생성한 소정 크기의 제1의사난수열(31)을 사용하여 XOR연산장치(50)가 암호화된 데이터(71)을 XOR연산하여 복호화된 데이터(70)를 출력한다.
도 2a 는 본 발명에 의한 데이터 암호화 장치(100)가 SIZE생성장치(60)를 더 포함한 경우에, SIZE생성장치(60)가 생성한 SIZE수열(61)에 따라 하나 이상의 다른 BYTE 크기의 제1의사난수열(31)을 생성하여 데이터(70)를 암호화하는 과정을 표현하였는데, 이에 의하면,
본 발명에 의한 데이터 암호화 장치(100)는 SIZE생성장치(60)가 임의 난수열(10) 또는 PASSWORD(20) 중 어느 하나 이상을 입력값으로 하나 이상의 정수로 구성된 수열, 즉 SIZE수열(61)을 생성하면, 제1의사난수열생성기(30)가 제1의사난수열(31)을 생성함에 있어, SIZE생성장치(60)가 생성한 SIZE수열(61)에 따라, 상기 SIZE수열(61)을 구성하는 정수와 같은 BYTE 크기를 갖는 하나 이상의 제1의사난수열(31)을 생성하고, XOR연산장치(50)는 상기 하나 이상의 제1의사난수열(31)을 사용하여 데이터(70)를 순차로 또는 임의의 순으로(예, 전체 BYTE 데이터를 읽은 후 하나 이상의 제1의사난수열(31)의 각 BYTE 크기 단위의 블록으로 데이터(70)를 분할한 후, FOR EACH 구문을 사용하여 각 분할된 블록의 BYTE 데이터와 제1의사난수열(31)을 XOR 연산하고 결합할 수도 있기 때문이다. 이는 데이터 복호화 장치(200)에서도 동일하고, 다시 설명하지 않더라도 원리는 동일하다.) 또는, 도면에 표현하지 않았으나 당연히, 병렬연산(하나 이상의 BYTE 크기로 암호화된 데이터(71)를 분할하여 둘 이상의 블록에 대하여 동시에 연산할 수 있기 때문이다)으로 XOR연산하여 암호화된 데이터(71)를 출력하고, 제2의사난수열생성기(40)는 상기 PASSWORD(20)를 입력값으로 소정 크기의 제2의사난수열(41)을 생성하고, XOR연산장치(50)는 상기 제2의사난수열(41)을 사용하여 상기 임의 난수열(10)을 XOR연산하여 암호화된 난수열(11)을 출력한다.
도 2b 는 본 발명에 의한 복호화 장치(200)가 SIZE생성장치(60)를 더 포함한 경우에, SIZE생성장치(60)가 생성한 SIZE수열(61)에 따라 하나 이상의 다른 BYTE 크기의 제1의사난수열(31)을 생성하여 암호화된 데이터(71)를 복호화하는 과정을 표현하였는데, 이에 의하면,
본 발명에 의한 데이터 복호화 장치(200)는 PASSWORD(20)를 입력 값으로 제2의사난수열생성기(40)가 소정 크기의 제2의사난수열(41)을 생성하고, XOR연산장치(50)는 상기 제2의사난수열(41)을 사용하여 암호화된 난수열(11)을 XOR연산하여 복호화된 임의 난수열(10)을 출력하고, SIZE생성장치(60)가 상기 복호화된 임의 난수열(10) 또는 상기 PASSWORD(20) 중 어느 하나 이상을 입력값으로 하나 이상의 정수로 구성된 수열, 즉 SIZE수열(61)을 생성하면, 제1의사난수열생성기(30)가 상기 하나 이상의 제1의사난수열(31)을 생성함에 있어, SIZE생성장치(60)가 생성한 SIZE수열(61)에 따라, 상기 SIZE수열(61)을 구성하는 정수와 같은 BYTE 크기를 갖는 하나 이상의 제1의사난수열(31)을 생성하고, XOR연산장치(50)는 상기 하나 이상의 제1의사난수열(31)을 사용하여 순차로 또는 임의의 순으로 연산하거나 또는, 도면에 표현하지 않았으나 당연히 병렬연산하는 방법으로(암호화 장치(100)에서 설명한 것과 같은 이유) 암호화된 데이터(71)를 XOR연산하여 복호화된 데이터(70)를 출력할 수 있다.
도 2c 는 도 2a 내지 도 2b에서 사용된 SIZE생성장치(60)의 역할을 보다 상세히 표현한 것인데, 이에 의하면,
본 발명의 데이터 암호화 장치(100) 또는 데이터 복호화 장치(100)에서 SIZE생성장치(60)가 하나 이상의 정수로 구성된 수열인 SIZE수열(61)을 생성하면, 제1의사난수열생성기(30)가 상기 SIZE수열(61)을 구성하는 정수와 같은 BYTE 크기를 갖는 하나 이상의 제1의사난수열(31)을 생성한다.
하나의 실시예로서, SIZE수열(61)이 1024, 2048 인 경우에는 제1의사난수열생성기(30)가 1024byte, 2048byte 크기의 제1의사난수열(31)을 생성하되, 그 byte 배열의 값을 달리한다.
또한, 도면에 표시하지 않았으나, 도 2a, 도2b에서 설명한 바와 마찬가지로, 제1의사난수생성기(30)는 임의 난수열(10), PASSWORD(20), SIZE수열(61)을 모두 입력받아야 한다.
또한, SIZE생성장치(60)의 입력값으로 매번 다르게 생성되는 임의 난수열(10)이 포함된 경우에는 SIZE생성장치(60)가 생성하는 SIZE수열(61)도 매번 다르게 생성되고,
PASSWORD(20)만을 SIZE생성장치(60)의 입력값으로 삼은 경우에는, PASSWORD(20)가 바뀌면 SIZE생성장치(60)가 생성하는 SIZE수열(61)이 달라지게 된다.
또한, SIZE수열(61)이 달라지면, 제1의사난수열생성기(30)가 생성하는 제1의사난수열(31)도 달라지게 되는데, 도 2c에는 표현하지 않았으나, SIZE생성장치(60)가 생성한 SIZE수열(61)에 동일한 수가 둘 이상 포함될 수도 있고, 이 때에 동일한 수의 입력값에 따라 생성된 동일한 BYTE 크기의 제1의사난수열(31)의 BYTE 배열의 값은 제1의사난수열생성기(30)에 사용된 소정의 알고리즘에 따라 달라지는 문제에 불과하므로 본 명세서에서는 이와 같은 경우를 서로 다르게 구별하지 않는다.
즉, SIZE생성장치(60)가 1000,...,1000,...,1000과 같이 같은 수 1000을 반복하여 생성한 경우에도, 생성된 순서가 다르므로 제1의사난수열생성기(30)가 BYTE 크기는 동일하되 값을 달리하는 제1의사난수열(31)을 생성하도록 알고리즘을 구성할 수도 있고, 입력값이 1000으로 동일하면 출력되는 제1의사난수열(31)도 동일한 것으로 알고리즘을 구성할 수도 있다.
따라서, SIZE생성장치(60)를 사용하여 출력되는 제1의사난수열(31)이 하나인 경우에도 제3자로서는 제1의사난수열(31)의 BYTE크기를 전혀 알 수 없으므로 ‘분할-정복(divide-and-conquer) 전략’을 포함하여 현존하는 그 어떠한 다른 복호화 방법으로도 무단으로 복호화할 수 없다.
도 3 과 도 4 는 모두 SIZE생성장치(60)가 생성한 SIZE수열(61) 1000, 2000, 3000을 입력값으로 제1의사난수열생성기(30)가 제1의사난수열 A(31), B(31), C(31)을 생성한 경우를 전제로 한 도면이다.
도 3 은 본 발명의 데이터 암호화, 복호화 장치(100, 200)가 하나의 예로서 제1의산난수열 A(31), B(31), C(31)을 사용하여 데이터(70)를 병렬 연산하여 암호화된 데이터(71)를 출력하거나 복호화하는 가장 기본적인 과정을 표현하였는데, 이에 의하면,
본 발명의 데이터 암호화, 복호화 장치(100, 200)에서 제1의사난수열생성기(30)가 1000byte의 제1의사난수열 A(31), 2000byte의 제1의사난수열 B(31), 3000byte의 제1의사난수열 C(31)를 생성한 경우에 XOR연산장치(50)가 데이터(70)를 제1의사난수열 A(31), B(31), C(31)의 크기의 블록으로 분할하여 둘 이상의 블록에서 동시에 제1의사난수열 A(31), B(31), C(31)를 사용하여 병렬연산하는 방법으로 암호화된 데이터(71)를 출력하거나 암호화된 데이터(71)을 병렬연산하는 방법으로 복호화된 데이터(70)를 출력한다.
또한, 도면에 표현하지 않았으나, 각 블록에 대하여 순차로 또는 임의의 순으로(FOR EACH 구문을 사용할 수 있으므로) XOR연산할 수도 있다.
도 4 는 본 발명의 데이터 암호화, 복호화 장치(100, 200)가 하나의 예로서 제1의사난수열 A(31), B(31), C(31)을 사용하여 XOR연산하여 암호화 또는 복호화하되, 선행하는 XOR연산결과의 일부를 포함하여 나머지 데이터(70) 또는 나머지 암호화된 데이터(71)를 XOR연산하는 내부연산과정을 하나의 큰 블록으로 삼아, 둘 이상의 큰 블록에서 동시에 내부연산을 실행하는 병렬연산의 방법으로 데이터(70)를 암호화하거나, 암호화된 데이터(71)를 복호화하는 과정을 표현하였는데,
이에 의하면, 본 발명의 데이터 암호화 및 데이터 복호화 장치(100, 200)에서 제1의사난수열생성기(30)가 둘 이상의 제1의사난수열(31), 즉 1000byte의 제1의사난수열 A(31), 2000byte의 제1의사난수열 B(31), 3000byte의 제1의사난수열 C(31)를 생성한 경우에, 데이터 암호화 장치(100)가 XOR연산장치(50)에서 제1의사난수열을 A(31) -> B(31) -> C(31)의 순으로 사용하여 데이터(70)를 XOR연산하여 암호화하되, 선행하는 XOR연산결과의 일부를 포함하여 나머지 데이터(70)를 XOR연산하는 것을 소정의 순서로 반복하는 과정을 하나의 큰 블록으로 삼아 연산하되, 둘 이상의 큰 블록에 대하여서는 순차로 또는 임의의 순(예, FOR EACH 구문 사용이 가능하므로)으로 또는 동시에 내부연산을 실행하는 병렬연산으로 데이터(70)를 XOR연산하여 암호화된 데이터(71)를 출력할 수 있다.
데이터 복호화 장치(200)는, XOR연산장치(50)에서 상기 데이터 암호화장치(100)의 XOR연산장치(50)가 XOR연산한 것과 반대의 역순으로, 제1의사난수열을 C(31) -> B(31) -> A(31)의 순으로 사용하여 암호화된 데이터(71)를 XOR연산장치(50)에서 XOR연산하여 복호화하되, 선행하는 XOR연산결과의 일부를 포함하여 나머지 암호화된 데이터(71)를 XOR연산하는 것을 반복하는 과정을 하나의 큰 블록으로 삼아 연산하되, 둘 이상의 큰 블록에 대하여서는 순차로 또는 임의의 순(예, FOR EACH 구문 사용이 가능하므로)으로 또는 동시에 내부연산을 실행하는 병렬연산으로 암호화된 데이터(71)를 XOR연산하여 복호화된 데이터(70)를 출력할 수 있다.
이때 상기 제1의사난수열(31)을 모두 사용하여 내부연산을 실행하는 것이 바람직하고, 소정의 알고리즘에 따라 어느 블록에서는 일부만을 사용하도록 변칙할 수도 있으나, 이는 불필요한 응용실시예이다.
하나의 예를 들어 다시 설명하면,
도 4 에서와 같이, 먼저 1000 BYTE 크기의 제1의사난수열 A(31)로 XOR연산한 후, 2000 BYTE 크기의 제1의사난수열 B(31)로 다시 XOR 연산하는 경우에 있어,
A(31)로 XOR한 연산결과의 일부로, 예컨대 200 BYTE를 포함(선행하는 XOR연산결과를 포함하는 BYTE 크기는 소정의 알고리즘에 따라 정하거나 소정의 크기로 정할 수 있다)하여, 나머지 데이터(70)를 B(31)로 XOR연산하는 경우에, 선행하는 XOR연산결과 중 200 BYTE 와 나머지 데이터(70)에서 1800 BYTE를 합한 2000 BYTE를 대상으로 2000 BYTE의 B(31)으로 XOR 연산하면 된다.
이때, 도면에 표현하지 않았지만, 만약 남은 데이터(70)가 1800 BYTE에 미치지 못하고 예컨대, 1000 BYTE에 불과하면, B(31)에서 800 BYTE 부분은 XOR연산에 사용되지 않게 되고, 해당 큰 블록 내부에서의 XOR 연산은 종료되고, 이는 암호화된 데이터(71)를 복호화하는 XOR연산에서도 같으므로 다시 설명하지 않는다.
이때, 상기 큰 블록 내부의 소정의 연산순서는 A->C->B 또는 C->A->B …등 다양하게 바뀔 수도 있는데, 사실상 불필요한 변형례이다.
또한, 도면에 표현하여 설명하지 않았지만, 본 발명의 데이터 암호화 장치(100) 또는 데이터 복호화 장치(200)가, SIZE생성장치(60)를 포함하거나, 또는 SIZE생성장치(60)를 포함하지 않은 어느 경우이든, 제1의사난수열 생성기(30)가 하나의 제1의사난수열(31) 만을 생성한 경우에 있어,
제1의사난수열(31)이 A(31), B(31), C(31) 등으로 다수인 경우와 마찬가지로, 제1의사난수열(31)이 하나 뿐인 경우에도, 이를 소정의 알고리즘에 따라 수회 반복하여 사용하는 방법으로 선행하는 XOR연산결과의 일부를 포함하여 나머지 데이터(70) 또는 나머지 암호화된 데이터(71)를 XOR연산할 수 있다.
즉, 상기 XOR연산장치(50)가 하나 뿐인 제1의사난수열(31)로 데이터(70)의 일부를 연산하고, 그 XOR연산결과의 일부를 포함하여 나머지 데이터(70)를 다시 상기 제1의사난수열(31)로 XOR연산하는 것을 소정의 알고리즘에 따라 수회 반복하는 내부연산과정을 하나의 큰 블록으로 삼아, 하나 이상의 큰 블록을 연산하되 둘 이상의 큰 블록에 대하여서는 순차로 또는 임의의 순으로 연산하거나 또는 동시에 병렬연산하는 방법으로, 데이터(70)를 암호화하여 암호화된 데이터(71)을 출력하거나, 암호화된 데이터(71)을 복호화하여 복호화된 데이터(70)을 출력할 수 있다.
이때, 큰 블록 내부의 연산을 어떤 조건에서 몇 회의 연산을 반복할 것인지는 소정의 알고리즘에 맡겨지는 것으로서 무한히 많은 다양한 응용실시가 가능하므로 상세히 특정하여 설명하거나 표현하지 않는다.
도 5는 이상 설명한 본 발명에 의한 암호화 및 데이터 복호화 장치(100, 200)를 공개키-개인키 데이터 암호화 장치(300, 400)과 함께 사용한, 서버 - 클라이언트 간의 LOG-IN 보호 방법을 표현한 것이다.
구체적으로 살펴보면,
클라이언트는, LOG-IN용 PASSWORD를 암호화 장치(100)의 PASSWORD(20)로 삼되, 상기 PASSWORD(20)와 매번 다르게 생성되는 임의 난수열(10)을 사용하여 ‘LOG-IN용 PASSWORD를 포함하는 LOG-IN 데이터’(70)를 상기 데이터 암호화 장치(100)에 의해 암호화하고, 암호화된 LOG-IN데이터(71)와 암호화된 난수열(11)을 출력한 후,
LOG-IN ID, 상기 암호화된 LOG-IN 데이터(71), 상기 암호화된 난수열(11)을 공개키 데이터 암호화 장치(300)에서 서버가 제공하는 공개키(301)로 암호화한 “공개키로 암호화된 LOG-IN 데이터”(302)를 출력하여 서버에 전송한다.
이때, 상기 공개키로 암호화된 LOG-IN 데이터(302)는 상기 LOG-IN ID, 상기 암호화된 LOG-IN 데이터(71), 상기 암호화된 난수열(11)을 각각 또는 둘 이상을 묶어 공개키로 암호화하여 전송할 수 있다.
서버가 상기 “공개키로 암호화된 LOG-IN 데이터”(302)를 수신하면,
서버는 개인키 데이터 복호화 장치(400)에서 개인키(401)를 사용하여 상기 “공개키로 암호화된 LOG-IN 데이터”(302)를 개인키로 복호화하여 “개인키로 복호화된 LOG-IN 데이터”(402)에서 “LOG-IN ID, 암호화된 LOG-IN 데이터(71), 암호화된 난수열(11)”을 추출하고,
상기 복호화된 LOG-IN ID에 할당된 LOG-IN PASSWORD를 PASSWORD(20)로 사용하되, 상기 암호화된 난수열(11), 상기 PASSWORD(20)를 사용하여 상기 복호화 장치(200)에서 상기 암호화된 LOG-IN 데이터(71), 상기 암호화된 난수열(11)을 복호화하여 복호화된 LOG-IN 데이터(70), 복호화된 임의 난수열(10)을 출력하고, 상기 복호화된 LOG-IN 데이터(70)에서 ‘LOG-IN용 PASSWORD를 포함한 LOG-IN 데이터’(70)를 추출하여 서버가 보유중인 LOG-IN ID에 할당된 LOG-IN PASSWORD 기타 제반 정보를 비교하여 접속여부를 결정하되,
서버는 상기 복호화 과정에 실패한 경우에는 상기 공개키를 사용하지 않은 경우이거나, LOG-IN ID 에 할당된 LOG-IN PASSWORD, 즉 PASSWORD(20)로 복호화가 되지 않으므로 접속을 거부하고,
상기 복호화 과정에 성공한 경우에도, 상기 복호화된 임의 난수열(10)이 재사용된 것으로 판단되는 경우에는 제3자가 네트워크 송수신되는 LOG-IN 데이터를 무단으로 가로채 재사용한 것으로 간주하여 접속을 거부할 수 있다.
또한, 상기 복호화된 ‘LOG-IN용 PASSWORD를 포함한 LOG-IN 데이터’(70)에 클라이언트의 컴퓨터의 정보 등 LOG-IN에 필요한 다른 정보가 더 포함된 경우에, 서버는 이를 검토하여 접속을 허용 또는 거부할 수도 있다.
이때 제3자로서는 공개키-비밀키 암호화 방식을 양자컴퓨팅 방법으로 무력화하여 상기 “공개키로 암호화된 LOG-IN 데이터”(302)를 복호화하여 LOG IN ID를 추출한 경우에도 PASSWORD(20)를 모르는 한 상기 암호화된 난수열(11)을 복호화할 수 없어서 상기 암호화된 LOG-IN 데이터(71)를 복호화할 수 없게 되고, 또한, LOG-IN 데이터를 제3자가 중간에서 가로채 재사용한 경우에도 접속을 거부할 수 있으므로, OTP 등의 보조장치 없이도 서버 - 클라이언트 간에 안전한 LOG-IN을 제공한다.
또한, LOG-IN에 성공한 이후에는, 본 발명의 데이터 암호화, 복호화 장치(100, 200)를 활용하여 서버-클라이언트 간의 모든 네트워크 송신, 수신 데이터를 암호화하여 전송하고, 수신된 데이터를 복호화 수 있으므로, 제3자로서는 서버 또는 클라이언트를 직접 해킹하지 못하는 한 네트워크 전송 중인 어떠한 데이터도 알 수 없게 되고, 본 발명에 의한 암호화 통신만을 허용하면 제3자가 서버 - 클라이언트를 해킹하는 것도 불가능하게 된다.
물론, 처음부터 서버-클라이언트 간에 본 발명 암호화, 복호화 장치(100, 200)에 의해 암호화된 통신만이 허용되면 LOG-IN 데이터를 별도로 암호화할 필요가 없다.
본 발명의 암호화, 복호화 장치(100, 200)는 복호화된 데이터(70)가 원본데이터와 동일한 지를 검증할 수단을 용이하게 추가할 수 있는데, 바람직한 하나의 실시예를 도 6a와 도6b에 표현하였다.
도 6a에 의하면, 본 발명에 의한 데이터 암호화 장치(100)는 검증수단으로 HASH장치(80)를 더 포함하되, 상기 HASH장치(80)는 소정의 알고리즘에 따라 데이터(70)의 전체 또는 하나 이상의 부분에 대한 HASH데이터(70v)를 생성하고, 데이터 암호화 장치(100)는 암호화된 HASH데이터(71v)를 출력한다.
HASH장치(80)가 데이터(70)의 전체 또는 어느 부분에 대한 HASH 값을 도출할 것인지는 소정의 알고리즘에 따라 다양하게 정할 수 있는 부분이므로 HASH장치(80)는 소정의 알고리즘에 따라 데이터(70)의 전체 또는 하나 이상의 어느 부분에 대한 HASH데이터(70v)를 생성하는 것으로 표현하고 다양한 경우의 수에 따른 설명을 더하지 않는다.
또한, 도6a에 표현한 바와 같이, HASH장치(80)는 임의 난수열(10) 또는 PASSWORD(20)의 어느 하나 이상을 입력값으로 소정의 알고리즘에 따라 데이터(70)의 전체 또는 하나 이상의 부분에 대한 HASH데이터(70v)를 생성할 수 있으되, 입력값으로 사용된 상기 임의 난수열(10) 또는 PASSWORD(20)가 바뀌면 HASH데이터(70v)도 바뀌게 된다.
도 6b에 의하면, 본 발명에 의한 데이터 복호화 장치(200)는 검증수단으로 HASH장치(80), 검증장치(90)를 더 포함하되, 본 발명에 의한 복호화 장치(200)가 암호화된 데이터(71), 암호화된 HASH데이터(71v)를 복호화하여, 복호화된 데이터(70)와 복호화된 HASH데이터(70v)를 출력하면, 상기 HASH장치(80)가 소정의 알고리즘에 따라 상기 복호화된 데이터(70)의 전체 또는 하나 이상의 부분에 대한 HASH데이터(70v)를 생성한다.
상기 검증장치(90)는 상기 복호화된 HASH데이터(70v)와 상기 HASH데이터(70v)를 서로 비교하여 일치하는 지 여부를 검증하여 일치하면 복호화된 데이터(70)가 원본데이터와 일치하는 것으로 간주하고, 불일치하면 복호화를 중단할 수 있다.
이는 HASH함수의 특성에 기인한 것으로서, 데이터 A와 데이터 A의 HASH데이터 A-H에 대하여, HASH데이터 A-H를 소정 난수열 R로 XOR 한 데이터 A-H-R이 데이터 A를 소정 난수열 R로 XOR 한 데이터 A-R의 HASH데이터가 되지 않기 때문이다.
또한, 상기 데이터 복호화 장치(200)의 HASH장치(80)는 상기 데이터 암호화 장치(100)의 HASH장치(80)와 동일한 소정의 알고리즘에 따라, 상기 복호화된 데이터(70)의 전체 또는 하나 이상의 부분에 대한 HASH데이터(70v)를 생성하여야 한다.
따라서, 상기 암호화된 HASH데이터(71v)를 생성한 HASH장치(80)가 임의 난수열(10) 또는 PASSWORD(20)의 어느 하나 이상을 입력값으로 사용한 경우에는, 상기 데이터 복호화 장치(200)의 HASH장치(50)도 동일하게 데이터 복호화 장치(200)가 복호화한 임의 난수열(10) 또는 PASSWORD(20)의 어느 하나 이상을 HASH장치(50)의 입력값으로 사용하여야 한다.
한편, 상기 HASH장치(80)의 입력값으로 데이터(70)와 임의 난수열(10) 또는 PASSWORD(20)의 어느 하나 이상을 사용한 경우에, HASH장치(80)의 입력변수의 BYTE 크기와 일치하도록 ENCODING 방법을 변형하거나, 입력값의 BYTE 크기를 수용하도록 HASH장치를 제작할 수 있으되, 이는 당연한 것이므로 더 설명하지 않는다.
위에서 본 바와 같이, 본 발명은 임의 난수열과 암호(PASSWORD)를 입력값으로 생성된 소정 BYTE 크기의 의사난수열로 데이터를 XOR연산하여 암호화 또는 복호화하는 방법과 장치로서, 사용된 임의 난수열은 다시 PASSWORD를 사용하여 생성한 소정 BYTE 크기의 의사난수열로 암호화하여 보호하므로, PASSWORD를 모르는 제3자가 무단 복호화할 수 없도록 하였으므로 사용가능한 PASSWORD를 전수 대입하여 일일이 복호화를 시도해 보는 방법 이외에는 다른 복호화 방법을 제공하지 않는다.
또한, 본 발명은 SIZE생성장치를 사용하여 PASSWORD를 모르는 제3자로서는 XOR연산에 사용된 의사난수열의 BYTE 크기조차 알 수 없으므로, 소위 최신의 ‘분할-정복(divide-and-conquer) 전략’을 사용하는 것도 불가능하므로, 사용가능한 PASSWORD를 전수 대입하여 일일이 복호화를 시도해 보는 방법 이외에는 다른 복호화 방법을 제공하지 않는다.
또한, 본 발명은 휘발성 및 비휘발성 저장장치에 저장된 데이터를 보호할 수 있을 뿐 아니라, OTP와 같은 보조장치 없이도 서버-클라이언트의 LOG-IN 데이터 또는 송-수신 데이터와 각종 네트워크 전송데이터를 보호할 수 있고, 개인용, 차량용, 대규모 연산 장치, 각종 스마트 장치, 유-무선 통신장치의 내부 데이터, 내-외부 전송 데이터를 보호할 수 있으므로 산업상 아주 유용한 발명이다.
100 : 데이터 암호화 장치
200 : 데이터 복호화 장치
300 : 공개키 데이터 암호화 장치
301 : 공개키
302 : 공개키로 암호화된 데이터
400 : 개인키 데이터 복호화 장치
401 : 개인키
402 : 개인키로 복호화된 데이터
10 : 임의 난수열
11 : 암호화된 난수열
20 : PASSWORD
30 : 제1의사난수열 생성장치
31 : 제1의사난수열
40 : 제2의사난수열 생성장치
41 : 제2의사난수열
50 : XOR연산장치
60 : SIZE출력장치
61 : SIZE수열
70 : 데이터
71 : 암호화된 데이터
70v : HASH데이터(HASHvalue)
71v : 암호화된 HASH데이터(encrypted HASHvalue)
80 : HASH장치
90 : 검증장치
200 : 데이터 복호화 장치
300 : 공개키 데이터 암호화 장치
301 : 공개키
302 : 공개키로 암호화된 데이터
400 : 개인키 데이터 복호화 장치
401 : 개인키
402 : 개인키로 복호화된 데이터
10 : 임의 난수열
11 : 암호화된 난수열
20 : PASSWORD
30 : 제1의사난수열 생성장치
31 : 제1의사난수열
40 : 제2의사난수열 생성장치
41 : 제2의사난수열
50 : XOR연산장치
60 : SIZE출력장치
61 : SIZE수열
70 : 데이터
71 : 암호화된 데이터
70v : HASH데이터(HASHvalue)
71v : 암호화된 HASH데이터(encrypted HASHvalue)
80 : HASH장치
90 : 검증장치
Claims (20)
- 임의 난수열(10)과 PASSWORD(20)를 입력 값으로 제1의사난수열(31)을 생성하는 제1의사난수열생성기(30);
상기 제1의사난수열(31)을 사용하여 데이터(70)를 XOR연산하여 암호화된 데이터(71)을 출력하는 XOR연산장치(50);
상기 PASSWORD(20)를 입력 값으로 소정의 크기의 제2의사난수열(41)을 생성하는 제2의사난수열생성기(40);
상기 제2의사난수열(41)을 사용하여 상기 임의 난수열(10)을 XOR연산하여 암호화된 난수열(11)을 출력하는 XOR연산장치(50);
데이터 암호화 장치(100)는 임의 난수열(10) 또는 PASSWORD(20) 중 어느 하나 이상을 입력값으로 하나 이상의 정수로 구성된 SIZE수열(61)을 생성하는 SIZE생성장치(60);를 포함하여,
제1의사난수열생성기(30)가 제1의사난수열(31)을 생성함에 있어,
SIZE생성장치(60)가 생성한 SIZE수열(61)에 따라, 상기 SIZE수열(61)을 구성하는 정수와 같은 BYTE 크기(BYTE LENGTH)를 갖는 하나 이상의 제1의사난수열(31)을 생성하고, XOR연산장치(50)가 상기 하나 이상의 제1의사난수열(31)을 사용하여 데이터(70)를 XOR연산하여 암호화된 데이터(71)를 출력하는 것을 특징으로 하는 데이터 암호화 장치. - PASSWORD(20)를 입력 값으로 소정 크기의 제2의사난수열(41)을 생성하는 제2의사난수열생성기(40);
상기 제2의사난수열(41)을 사용하여 암호화된 난수열(11)을 XOR연산하여 복호화된 임의 난수열(10)을 출력하는 XOR연산장치(50);
상기 복호화된 임의 난수열(10) 또는 상기 PASSWORD(20) 중 어느 하나 이상을 입력값으로 하나 이상의 정수로 구성된 SIZE수열(61)을 생성하는 SIZE생성장치(60);
상기 복호화된 임의 난수열(10) 및 상기 PASSWORD(20) 및 상기 SIZE수열(61)을 입력 값으로 하나 이상의 제1의사난수열(31)을 생성하는 제1의사난수열생성기(30);
하나 이상의 제1의사난수열(31)을 사용하여 암호화된 데이터(71)를 XOR연산하여 복호화하는 XOR연산장치(50);를 포함하여,
상기 제1의사난수열생성기(30)가 상기 하나 이상의 제1의사난수열(31)을 생성함에 있어, SIZE생성장치(60)가 생성한 SIZE수열(61)에 따라, 상기 SIZE수열(61)을 구성하는 정수와 같은 BYTE 크기(BYTE LENGTH)를 갖는 하나 이상의 제1의사난수열(31)을 생성하고, 상기 XOR연산장치(50)가 상기 하나 이상의 제1의사난수열(31)을 사용하여 암호화된 데이터(71)를 XOR연산하여 복호화된 데이터(70)를 출력하는 것을 특징으로 하는 데이터 복호화 장치. - 삭제
- 삭제
- 삭제
- 삭제
- 청구항 1에 있어서,
상기 제1의사난수열생성기(30)가 하나의 제1의사난수열(31)을 생성한 경우에 상기 XOR연산장치(50)가 상기 제1의사난수열(31)로 상기 데이터(70)를 XOR연산함에 있어,
상기 데이터(70)의 크기가 상기 제1의사난수열(31)보다 큰 경우에 상기 제1의사난수열(31)의 크기로 상기 데이터(70)를 둘 이상의 블록으로 분할하여 각 블록을 순차로 또는 임의의 순으로 또는 둘 이상의 블록에서 동시에 병렬연산으로 암호화된 데이터(71)를 출력하는 것을 특징으로 하는 데이터 암호화 장치. - 청구항 2에 있어서,
상기 제1의사난수열생성기(30)가 하나의 제1의사난수열(31)을 생성한 경우에 상기 XOR연산장치(50)가 상기 제1의사난수열(31)로 상기 암호화된 데이터(71)를 XOR연산함에 있어,
상기 암호화된 데이터(71)의 크기가 상기 제1의사난수열(31)보다 큰 경우에 상기 제1의사난수열(31)의 크기로 상기 암호화된 데이터(71)를 둘 이상의 블록으로 분할하여 각 블록을 순차로 또는 임의의 순으로 또는 둘 이상의 블록에서 동시에 병렬연산으로 복호화된 데이터(70)를 출력하는 것을 특징으로 하는 데이터 복호화 장치. - 청구항 1 에 있어서,
상기 XOR연산장치(50)가 제1의사난수열 생성기(30)가 생성한 제1의사난수열(31)을 사용하여 데이터(70)를 XOR연산함에 있어,
상기 제1의사난수열생성기(30)가 소정의 알고리즘에 따라 소정 크기의 제1의사난수열(31)을 생성한 경우에,
상기 XOR연산장치(50)가 상기 제1의사난수열(31)로 데이터(70)의 일부를 연산하고, 그 XOR연산결과의 일부를 포함하여 나머지 데이터(70)를 다시 상기 제1의사난수열(31)로 XOR연산하는 것을 소정의 알고리즘에 따라 수회 반복하는 내부연산과정을 하나의 큰 블록으로 삼아, 하나 이상의 큰 블록을 연산하되 둘 이상의 큰 블록에 대하여서는 순차로 또는 임의의 순으로 연산하거나 또는 동시에 병렬연산으로 데이터(70)를 암호화하여 암호화된 데이터(71)를 출력하는 것을 특징으로 하는 데이터 암호화 장치. - 청구항 2 에 있어서,
상기 XOR연산장치(50)가 제1의사난수열 생성기(30)가 생성한 제1의사난수열(31)을 사용하여 암호화된 데이터(71)를 XOR연산함에 있어,
상기 제1의사난수열생성기(30)가 소정의 알고리즘에 따라 소정 크기의 제1의사난수열(31)을 생성한 경우에,
상기 XOR연산장치(50)가 상기 제1의사난수열(31)로 암호화된 데이터(71)의 일부를 연산하고, 그 XOR연산결과의 일부를 포함하여 나머지 암호화된 데이터(71)를 다시 상기 제1의사난수열(31)로 XOR연산하는 것을 소정의 알고리즘에 따라 수회 반복하는 내부연산과정을 하나의 큰 블록으로 삼아, 하나 이상의 큰 블록을 연산하되 둘 이상의 큰 블록에 대하여서는 순차로 또는 임의의 순으로 연산하거나 또는 동시에 병렬연산으로 암호화된 데이터(71)를 복호화하여 복호화된 데이터(70)를 출력하는 것을 특징으로 하는 데이터 복호화 장치. - 청구항 1에 있어서,
상기 SIZE생성장치(60)가 하나의 정수를 SIZE수열(61)로 생성하고, 이에 따라 상기 제1의사난수열생성기(30)가 하나의 제1의사난수열(31)을 생성하고, 상기 XOR연산장치(50)가 상기 제1의사난수열(31)을 사용하여 데이터(70)를 XOR연산함에 있어,
상기 XOR연산장치(50)가 상기 제1의사난수열(31)로 데이터(70)의 일부를 연산하고, 그 XOR연산결과의 일부를 포함하여 나머지 데이터(70)를 다시 상기 제1의사난수열(31)로 XOR연산하는 것을 소정의 알고리즘에 따라 수회 반복하는 내부연산과정을 하나의 큰 블록으로 삼아, 하나 이상의 큰 블록을 연산하되 둘 이상의 큰 블록에 대하여서는 순차로 또는 임의의 순으로 연산하거나 또는 동시에 병렬연산으로 데이터(70)를 암호화하여 암호화된 데이터(71)를 출력하는 것을 특징으로 하는 특징으로 하는 데이터 암호화 장치. - 청구항 2에 있어서,
상기 SIZE생성장치(60)가 하나의 수를 SIZE수열(61)로 생성하고, 이에 따라 상기 제1의사난수열생성기(30)가 하나의 제1의사난수열(31)을 생성하고, 상기 XOR연산장치(50)가 상기 제1의사난수열(31)을 사용하여 암호화된 데이터(71)를 XOR연산함에 있어,
상기 XOR연산장치(50)가 상기 제1의사난수열(31)로 암호화된 데이터(71)의 일부를 연산하고, 그 XOR연산결과의 일부를 포함하여 나머지 암호화된 데이터(71)를 다시 제1의사난수열(31)로 XOR연산하는 것을 소정의 알고리즘에 따라 수회 반복하는 내부연산과정을 하나의 큰 블록으로 삼아, 하나 이상의 큰 블록을 연산하되 둘 이상의 큰 블록에 대하여서는 순차로 또는 임의의 순으로 연산하거나 또는 동시에 병렬연산하는 것으로 암호화된 데이터(71)를 복호화하여 복호화된 데이터(70)를 출력하는 것을 특징으로 하는 데이터 복호화 장치. - 청구항 1에 있어서,
상기 XOR연산장치(50)가 둘 이상의 제1의사난수열(31)을 사용하여 데이터(70)를 XOR연산함에 있어,
소정의 알고리즘에 따라 어느 하나의 제1의사난수열(31)로 데이터(70)의 일부를 연산하고, 그 XOR연산결과의 일부를 포함하여 나머지 데이터(70)를 어느 하나의 제1의사난수열(31)로 XOR연산하는 것을 소정의 순서로 반복하는 내부연산과정을 하나의 큰 블록으로 삼아, 하나 이상의 큰 블록을 연산하되, 둘 이상의 큰 블록에 대하여서는 순차로 또는 임의의 순으로 연산하거나 또는 동시에 병렬연산하는 것으로 데이터(70)를 암호화하여 암호화된 데이터(71)를 출력하는 것을 특징으로 하는 데이터 암호화 장치. - 청구항 2에 있어서,
상기 XOR연산장치(50)가 둘 이상의 제1의사난수열(31)을 사용하여 암호화된 데이터(71)를 XOR연산함에 있어,
소정의 알고리즘에 따라 어느 하나의 제1의사난수열(31)로 암호화된 데이터(71)의 일부를 연산하고, 그 XOR연산결과의 일부를 포함하여 나머지 암호화된 데이터(71)를 어느 하나의 제1의사난수열(31)로 XOR연산하는 것을 소정의 순서로 반복하는 내부연산과정을 하나의 큰 블록으로 삼아, 하나 이상의 큰 블록을 연산하되 둘 이상의 큰 블록에 대하여서는 순차로 또는 임의의 순으로 연산하거나 또는 동시에 병렬연산하는 것으로 암호화된 데이터(71)를 복호화하여 복호화된 데이터(70)를 출력하는 것을 특징으로 하는 데이터 복호화 장치. - 청구항 1, 청구항 7, 청구항 9, 청구항 11 또는 청구항 13 중 어느 하나의 항에 있어서,
상기 데이터 암호화장치(100)는 소정의 알고리즘에 따라 데이터(70)의 전체 또는 하나 이상의 부분에 대한 HASH데이터(70v)를 생성하는 HASH장치(80);를 더 포함하되,
상기 데이터 암호화 장치(100)는, 임의 난수열(10)과 PASSWORD(20)를 사용하여, 상기 데이터(70) 및 상기 HASH데이터(70v)를 암호화하여 암호화된 데이터(70) 및 암호화된 HASH데이터(71v), 암호화된 난수열(11)을 출력하는 것을 특징으로 하는 데이터 암호화 장치. - 청구항 2, 청구항 8, 청구항 10, 청구항 12 또는 청구항 14 중 어느 하나의 항에 있어서,
데이터 복호화 장치(200)는 HASH장치(80) 및 검증장치(90);를 더 포함하되,
데이터 암호화장치(100)가 암호화된 데이터(71) 및 암호화된 HASH데이터(71v), 암호화된 난수열(11)을 출력한 경우에,
상기 데이터 복호화장치(200)가 PASSWORD(20)를 사용하여 상기 암호화된 난수열(11), 상기 암호화된 데이터(71) 및 상기 암호화된 HASH데이터(71v)를 복호화하여 복호화된 임의 난수열(10), 복호화된 데이터(70) 및 복호화된 HASH데이터(70v)를 출력하는 과정에서,
상기 HASH장치(80)가 소정의 알고리즘에 따라 상기 복호화된 데이터(70)의 전체 또는 어느 하나 이상의 부분에 대한 HASH데이터(70v)를 생성하면,
상기 검증장치(90)는 상기 생성된 HASH데이터(70v)와 상기 복호화된 HASH데이터(70v)를 비교하여 서로 불일치하면 복호화에 실패한 것으로 간주하여 복호화를 중단하는 데이터 복호화 장치. - 청구항 15에 있어서,
상기 HASH장치(80)가 소정의 알고리즘에 따라 상기 데이터(70)의 전체 또는 어느 하나 이상의 부분에 대한 HASH데이터(70v)를 생성함에 있어,
상기 임의 난수열(10) 또는 PASSWORD(20)의 어느 하나 이상을 입력값으로 HASH데이터(70v)를 생성하는 데이터 암호화 장치. - 청구항 16에 있어서,
상기 HASH장치(80)가 소정의 알고리즘에 따라 상기 복호화된 데이터의 전체 또는 어느 하나 이상의 부분에 대한 HASH데이터(70v)를 생성함에 있어,
상기 복호화된 임의 난수열(10) 또는 PASSWORD(20)의 어느 하나 이상을 입력값으로 HASH데이터(70v)를 생성하는 데이터 복호화 장치. - 삭제
- 삭제
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020230054317A KR102658004B1 (ko) | 2023-04-25 | 2023-04-25 | 데이터 암호화 또는 복호화 장치 및 그 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020230054317A KR102658004B1 (ko) | 2023-04-25 | 2023-04-25 | 데이터 암호화 또는 복호화 장치 및 그 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR102658004B1 true KR102658004B1 (ko) | 2024-04-15 |
Family
ID=90715610
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020230054317A KR102658004B1 (ko) | 2023-04-25 | 2023-04-25 | 데이터 암호화 또는 복호화 장치 및 그 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102658004B1 (ko) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100404246B1 (ko) | 2000-08-07 | 2003-11-03 | 정인숙 | 비주기형 암호키 데이터열 생성방법 및 그 시스템 |
KR100446207B1 (ko) | 2002-01-30 | 2004-08-30 | 정인숙 | 암호화기능을 갖는 데이터 송수신시스템 |
KR20090039451A (ko) * | 2007-10-18 | 2009-04-22 | 주식회사 케이티 | 사용자 패스워드로부터 유도된 비밀키 기반의 인증 방법 |
-
2023
- 2023-04-25 KR KR1020230054317A patent/KR102658004B1/ko active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100404246B1 (ko) | 2000-08-07 | 2003-11-03 | 정인숙 | 비주기형 암호키 데이터열 생성방법 및 그 시스템 |
KR100446207B1 (ko) | 2002-01-30 | 2004-08-30 | 정인숙 | 암호화기능을 갖는 데이터 송수신시스템 |
KR20090039451A (ko) * | 2007-10-18 | 2009-04-22 | 주식회사 케이티 | 사용자 패스워드로부터 유도된 비밀키 기반의 인증 방법 |
Non-Patent Citations (2)
Title |
---|
Padding oracle attack |
Timing vulnerabilities with CBC-mode symmetric decryption using padding |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10187200B1 (en) | System and method for generating a multi-stage key for use in cryptographic operations | |
Ali et al. | A novel improvement with an effective expansion to enhance the MD5 hash function for verification of a secure E-document | |
CA2747891C (en) | Method for generating an encryption/decryption key | |
CN113711564A (zh) | 用于加密数据的计算机实现的方法和*** | |
CN111066077B (zh) | 加密装置、加密方法、解密装置以及解密方法 | |
CN110601822A (zh) | 一种基于量子保密通信技术的加密盲签名方法 | |
Saikumar | DES-Data Encryption Standard | |
Abbasi et al. | Cryptography: Security and integrity of data management | |
Jiménez-Rodríguez et al. | Secure point-to-point communication using chaos | |
Luring et al. | Analysis of security features in DLMS/COSEM: Vulnerabilities and countermeasures | |
CN105763322B (zh) | 一种可混淆的加密密钥隔离数字签名方法及*** | |
Win et al. | Protecting private data using improved honey encryption and honeywords generation algorithm | |
KR102658004B1 (ko) | 데이터 암호화 또는 복호화 장치 및 그 방법 | |
CN116248316A (zh) | 文件加密方法、文件解密方法、装置及存储介质 | |
KR100259836B1 (ko) | N-라운드 라운드 출력문 귀환 블록 암호화/복호화 방법 | |
Thakur et al. | A Comprehensive Review of Wireless Security Protocols and Encryption Applications | |
Arshad et al. | Hill Matrix and Radix-64 Bit Algorithm to Preserve Data Confidentiality. | |
Neforawati et al. | Message Digest 5 (MD-5) Decryption Application using Python-Based Dictionary Attack Technique | |
Bonde | Wireless Security | |
Nazarov et al. | An Architecture Model for Active Cyber Attacks on Intelligence Info-communication Systems: Application Based on Advance System Encryption (AES-512) Using Pre-Encrypted Search Table and Pseudo-Random Functions (PRFs) | |
Thwe et al. | Prevention of Man-In-The-Middle Attack in Diffie-Hellman Key Exchange Algorithm using Proposed Hash Function | |
CN111314051A (zh) | 一种加解密方法和装置 | |
KR20150103394A (ko) | 암호화 시스템 및 그것의 암호 통신 방법 | |
JP2015082077A (ja) | 暗号化装置、制御方法、及びプログラム | |
Parab et al. | Generic approach for encryption using reverse context free grammar productions |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GRNT | Written decision to grant |