KR20210013121A - 데이터 처리 장치, 방법 및 컴퓨터 프로그램 - Google Patents

데이터 처리 장치, 방법 및 컴퓨터 프로그램 Download PDF

Info

Publication number
KR20210013121A
KR20210013121A KR1020207036591A KR20207036591A KR20210013121A KR 20210013121 A KR20210013121 A KR 20210013121A KR 1020207036591 A KR1020207036591 A KR 1020207036591A KR 20207036591 A KR20207036591 A KR 20207036591A KR 20210013121 A KR20210013121 A KR 20210013121A
Authority
KR
South Korea
Prior art keywords
bit string
blocks
block
length
key
Prior art date
Application number
KR1020207036591A
Other languages
English (en)
Inventor
유스케 이시다
아쓰시 구니이
준이치 오케타니
심페이 구니이
Original Assignee
젠무테크 가부시키가이샤
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 젠무테크 가부시키가이샤 filed Critical 젠무테크 가부시키가이샤
Publication of KR20210013121A publication Critical patent/KR20210013121A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/24Key scheduling, i.e. generating round keys or sub-keys for block encryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Storage Device Security (AREA)

Abstract

문제점: 기존의 AONT법의 실장 상의 제약을 경감하여, 보다 견고한 시큐리티를 달성한다. 해결 수단: 원 비트열을, 제1 블록 길이를 각각 가지는 복수의 입력 블록에 세그먼트화하여, 랜덤 비트열을 생성하고, 상기 랜덤 비트열에 기초한(제1 블록 길이보다 큰 키 길이의) 키를 사용하는 블록 암호 방식을 이용하여 상기 복수의 입력 블록의 각각을 암호화함으로써 중간 블록을 도출하고, 중간 블록을 소정수마다 연결하여 하나 이상의 출력 블록을 형성하고, 상기 하나 이상의 출력 블록 및 상기 랜덤 비트열을 사용하여 역변환 가능한 변환 함수로 연산함으로써, 새로운 출력 블록을 도출하고, 이들 출력 블록을 포함하는 암호화 비트열을 출력하도록 구성되는 처리 회로를 구비하는 데이터 처리 장치가 제공된다. 상기 암호화 비트열을 원 비트열로 역변환하기 위한 장치, 및 이들 장치에 대응하는 방법 및 프로그램도 더 제공된다.

Description

데이터 처리 장치, 방법 및 컴퓨터 프로그램
본 개시는, 데이터 처리 장치, 방법 및 컴퓨터 프로그램에 관한 것이다.
일반적으로, 시큐리티 리스크로부터 데이터를 보호하기 위해, 패스워드를 사용한 암호화가 이용되고 있다. 그러나, 단지 정보를 암호화하는 것만으로는, 크랙킹 또는 소셜 해킹이라는 공격에 대한 충분한 시큐리티를 확보하는 것이 어렵다. 모든 사용자가 패스워드를 엄중하게 관리하는 것을 기대하는 것도, 현실적이지 않다. 따라서, 최근 비밀 분산법이 주목을 끌고 있다. 비밀 분산법은, 정족수(定足數) 이상의 단편(斷片)(쉐어라고도 함)이 모이지 않는 한 원래의 데이터가 복원 불가능해 지도록, 데이터를 복수의 단편으로 분산하는 기술이다.
비밀 분산법의 대표예인 임계값 분산법에 의하면, 정족수를 k로 하여, 분산수 n를 k 이상의 임의의 정수(整數)로 할 수 있지만, 분산을 통해 데이터 사이즈가 약 n배로 증가한다. 한편, 비특허문헌 1에 있어서 제안된 AONT(All Or Nothing Transform)법은, 총 데이터 사이즈를 약간 밖에 증대시키지 않고, 작은 데이터 블록이 1개라도 결여되면 원래의 데이터 전체가 복원 불가능해지도록, 데이터를 랜덤화(즉, 무의미한 비트열로 변환)한다. 따라서, 변환 후의 데이터를 n개의 단편으로 분산함으로써, AONT법을, 정족수 k가 분산수 n과 같은 비밀 분산법의 일변종으로서 취급할 수 있다. 총 데이터 사이즈를 약간 밖에 증대시키지 않는다는 AONT법의 특성은, 처리 능력, 통신 성능 또는 기억 용량이라는 다양한 면에서 자원에 한계를 가지는 현대의 다양한 시스템 또는 장치에 있어서, 비밀 분산법을 이용하는 것을 용이하게 한다(예를 들면, 특허문헌 1 참조).
비특허문헌 2에 있어서 제안된 CTRT(CounTeR Transform)법은, AONT법을 실천하기 위한 변환 알고리즘의 하나이다. CTRT법의 안전성은, 비특허문헌 2에 있어서 증명되어 있다. CTRT법은, 비트 단위는 아니고 블록 단위로 데이터를 분산시키는 것을 필요로 하지만, 블록 암호를 재이용하여 AONT법을 실장(實裝)하는 것을 가능하게 하는 점에서 컴퓨터 실장과의 높은 친화성을 가진다. 예를 들면, 다른 변환 알고리즘인 비특허문헌 3에 있어서 제안된 OAEP(Optimal Asy㎜etric Encryption Padding)법이 해시값(hash value)의 신장(伸長)이라는 연산 비용이 비교적 큰 처리를 포함하는 것에 대하여, 그러한 처리를 포함하지 않는다. TRT법은, 처리의 고속화의 면에서 우위(優位)이다.
일본 특허 제6221196호 공보
R. Rivest, "All-or-Nothing Encryption and The Package Transform", FSE ' 97 Proceedings of Fast Software Encryption, pp.210-218, 1997 A. Desai, "The Security of All-Or-Nothing Encryption: Protecting Against Exhaustive Key Search", Advances in Cryptology-CRYPTO(2000), pp.359-375, LNCS Vol. 1880, 2000 V. Boyko, "On the Security Properties of OAEP as an All-or-Nothing Transform", Advances in Cryptology-CRYPTO(1999), pp.503-518, LNCS Vol. 1666, 1999
비특허문헌 2에 기재된 CTRT법의 알고리즘은, 데이터 블록의 블록 길이(block length) l과 블록 암호의 키 길이(key length) k와의 사이에, k≤l이라고 하는 제약을 가진다. 예를 들면, 블록 암호의 종래 및 미래의 방식 중 하나인 DES(Data Encryption Standard)는, 블록 길이 l=64 비트, 키 길이 k= 56 비트이므로, 이 제약을 만족시킨다. 한편, DES보다 높은 암호 강도를 가지는 AES(Advanced Encryption Standard)의 블록 길이 l은 128 비트이며, 키 길이 k는 128, 192 또는 256 비트로부터 선택되도록 되어 있다. 이것은, 보다 견고한 시큐리티가 기대되는 AES의 192 또는 256 비트의 키 길이가, 블록 길이보다 크기 때문에, CTRT법을 실장하는 용도로는 이용 불가능한 것을 의미한다.
본 개시에 관한 기술은, 기존의 AONT법에 관련된 전술한 문제를 극복하거나 또는 적어도 경감시키는 것을 목적으로 한다.
본 개시에 의하면, 원 비트열을, 제1 블록 길이를 각각 가지는 복수의 입력 블록에 세그먼트화하여, 상기 제1 블록 길이보다 큰 비트 길이의 랜덤 비트열을 생성하고, 생성되는 상기 랜덤 비트열에 기초한 키로서 상기 제1 블록 길이보다 큰 키 길이의 상기 키를 사용하는 블록 암호형의 대칭 키 암호 방식을 이용하여 상기 복수의 입력 블록의 각각을 암호화하여, 복수의 중간 블록을 도출하고, 도출되는 상기 복수의 중간 블록을 소정수의 중간 블록마다 연결하여, 상기 랜덤 비트열의 상기 비트 길이와 같은 제2 블록 길이를 각각 가지는 하나 이상의 출력 블록을 형성하고, 상기 하나 이상의 출력 블록 및 상기 랜덤 비트열을 사용하여 역변환 가능한 변환 함수로 연산함으로써, 상기 제2 블록 길이를 가지는 새로운 출력 블록을 도출하고, 상기 하나 이상의 출력 블록 및 상기 새로운 출력 블록을 포함하는 암호화 비트열을 출력하도록 구성되는 처리 회로를 구비하는 데이터 처리 장치가 제공된다.
또한, 본 개시에 의하면, 데이터 처리 장치에 있어서 원 비트열을 암호화 비트열로 변환하기 위한 방법으로서, 상기 원 비트열을, 제1 블록 길이를 각각 가지는 복수의 입력 블록에 세그먼트화하는 것과, 상기 제1 블록 길이보다 큰 비트 길이의 랜덤 비트열을 생성하는 것과, 생성되는 상기 랜덤 비트열에 기초한 키로서 상기 제1 블록 길이보다 큰 키 길이의 상기 키를 사용하는 블록 암호형의 대칭 키 암호 방식을 이용하여 상기 복수의 입력 블록의 각각을 암호화하여, 복수의 중간 블록을 도출하는 것과, 도출되는 상기 복수의 중간 블록을 소정수의 중간 블록마다 연결하여, 상기 랜덤 비트열의 상기 비트 길이와 같은 제2 블록 길이를 각각 가지는 하나 이상의 출력 블록을 형성하는 것과, 상기 하나 이상의 출력 블록 및 상기 랜덤 비트열을 사용하여 역변환 가능한 변환 함수로 연산함으로써, 상기 제2 블록 길이를 가지는 새로운 출력 블록을 도출하는 것과, 상기 하나 이상의 출력 블록 및 상기 새로운 출력 블록을 포함하는 상기 암호화 비트열을 출력하는 것을 포함하는 방법이 제공된다.
또한, 본 개시에 의하면, 데이터 처리 장치의 프로세서에 의해 실행된 경우에, 상기 데이터 처리 장치에, 원 비트열을, 제1 블록 길이를 각각 가지는 복수의 입력 블록에 세그먼트화하는 것과, 상기 제1 블록 길이보다 큰 비트 길이의 랜덤 비트열을 생성하는 것과, 생성되는 상기 랜덤 비트열에 기초한 키로서 상기 제1 블록 길이보다 큰 키 길이의 상기 키를 사용하는 블록 암호형의 대칭 키 암호 방식을 이용하여 상기 복수의 입력 블록의 각각을 암호화하여, 복수의 중간 블록을 도출하는 것과, 도출되는 상기 복수의 중간 블록을 소정수의 중간 블록마다 연결하여, 상기 랜덤 비트열의 상기 비트 길이와 같은 제2 블록 길이를 각각 가지는 하나 이상의 출력 블록을 형성하는 것과, 상기 하나 이상의 출력 블록 및 상기 랜덤 비트열을 사용하여 역변환 가능한 변환 함수로 연산함으로써, 상기 제2 블록 길이를 가지는 새로운 출력 블록을 도출하는 것과, 상기 하나 이상의 출력 블록 및 상기 새로운 출력 블록을 포함하는 암호화 비트열을 출력하는 것을 행하게 하기 위한 컴퓨터 프로그램이 제공된다.
또한, 본 개시에 의하면, 암호화 비트열을, 블록 암호형의 대칭 키 암호 방식의 블록 길이와 같은 제1 블록 길이보다 큰 제2 블록 길이를 각각 가지는 복수의 입력 블록에 세그먼트화하여, 상기 복수의 입력 블록을 사용하여, 원 비트열을 상기 암호화 비트열로 변환할 때 이용된 변환 함수에 대하여 역변환으로 되는 변환 함수로 연산함으로써, 원 비트열을 상기 암호화 비트열로 변환할 때 이용된 랜덤 비트열을 복원하고, 상기 복수의 입력 블록 중 하나 이상을 각각 소정수의 중간 블록으로 분리하여, 상기 제1 블록 길이를 각각 가지는 복수의 중간 블록을 형성하고, 복원되는 상기 랜덤 비트열에 기초한 키를 사용하는 상기 대칭 키 암호 방식을 이용하여 상기 복수의 중간 블록의 각각을 복호하여, 복수의 출력 블록을 도출하고, 도출되는 상기 복수의 출력 블록을 연결하여, 상기 원 비트열을 복원하도록 구성되는 처리 회로를 구비하는 데이터 처리 장치가 제공된다.
또한, 본 개시에 의하면, 데이터 처리 장치에 있어서 암호화 비트열을 원 비트열로 역변환하기 위한 방법으로서, 상기 암호화 비트열을, 블록 암호형의 대칭 키 암호 방식의 블록 길이와 같은 제1 블록 길이보다 큰 제2 블록 길이를 각각 가지는 복수의 입력 블록에 세그먼트화하는 것과, 상기 복수의 입력 블록을 사용하여, 원 비트열을 상기 암호화 비트열로 변환할 때 이용된 변환 함수에 대하여 역변환으로 되는 변환 함수로 연산함으로써, 상기 원 비트열을 상기 암호화 비트열로 변환할 때 이용된 랜덤 비트열을 복원하는 것과, 상기 복수의 입력 블록 중 하나 이상을 각각 소정수의 중간 블록으로 분리하여, 상기 제1 블록 길이를 각각 가지는 복수의 중간 블록을 형성하는 것과, 복원되는 상기 랜덤 비트열에 기초한 키를 사용하는 상기 대칭 키 암호 방식을 이용하여 상기 복수의 중간 블록의 각각을 복호하여, 복수의 출력 블록을 도출하는 것과, 도출되는 상기 복수의 출력 블록을 연결하여, 상기 원 비트열을 복원하는 것을 포함하는 방법이 제공된다.
또한, 본 개시에 의하면, 데이터 처리 장치의 프로세서에 의해 실행된 경우에, 상기 데이터 처리 장치에, 암호화 비트열을, 블록 암호형의 대칭 키 암호 방식의 블록 길이와 같은 제1 블록 길이보다 큰 제2 블록 길이를 각각 가지는 복수의 입력 블록에 세그먼트화하는 것과, 상기 복수의 입력 블록을 사용하여, 원 비트열을 상기 암호화 비트열로 변환할 때 이용된 변환 함수에 대하여 역변환으로 되는 변환 함수로 연산함으로써, 원 비트열을 상기 암호화 비트열로 변환할 때 이용된 랜덤 비트열을 복원하는 것과, 상기 복수의 입력 블록 중 하나 이상을 각각 소정수의 중간 블록으로 분리하여, 상기 제1 블록 길이를 각각 가지는 복수의 중간 블록을 형성하는 것과, 복원되는 상기 랜덤 비트열에 기초한 키를 사용하는 상기 대칭 키 암호 방식을 이용하여 상기 복수의 중간 블록의 각각을 복호하여, 복수의 출력 블록을 도출하는 것과, 도출되는 상기 복수의 출력 블록을 연결하여, 상기 원 비트열을 복원하는 것을 행하게 하기 위한 컴퓨터 프로그램이 제공된다.
본 개시에 관한 기술에 의하면, 기존의 AONT법의 실장 상의 제약이 경감되고, 보다 견고한 시큐리티를 달성할 수 있다.
도 1은 일 실시 형태에 관한 수정 CTRT법의 AONT 변환 알고리즘을 모식적으로 표현하는 블록도이다.
도 2는 도 1에 관련하여 설명한 AONT 변환 알고리즘을 블록 길이에 착안하여 추가로 설명하기 위한 설명도이다.
도 3은 일 실시 형태에 관한 수정 CTRT법의 AONT 역변환 알고리즘을 모식적으로 표현하는 블록도이다.
도 4는 일 실시 형태에 관한 확장된 수정 CTRT법의 AONT 변환 알고리즘을 모식적으로 표현하는 블록도(그 1)이다.
도 5는 일 실시 형태에 관한 확장된 수정 CTRT법의 AONT 역변환 알고리즘을 모식적으로 표현하는 블록도(그 1)이다.
도 6은 일 실시 형태에 관한 확장된 수정 CTRT법의 AONT 변환 알고리즘을 모식적으로 표현하는 블록도(그 2)이다.
도 7은 일 실시 형태에 관한 확장된 수정 CTRT법의 AONT 역변환 알고리즘을 모식적으로 표현하는 블록도(그 2)이다.
도 8은 CBC 모드, ECB 모드 및 CFB 모드에서의 수정 CTRT법을 설명하기 위한 도면이다.
도 9는 일 실시 형태에 관한 데이터 처리 장치의 구성의 일례를 나타낸 블록도이다.
도 10은 일 실시 형태에 관한 AONT 변환을 위한 방법의 흐름의 일례를 나타낸 플로우차트이다.
도 11은 일 실시 형태에 관한 AONT 역변환을 위한 방법의 흐름의 일례를 나타낸 플로우차트이다.
이하에, 첨부 도면을 참조하면서, 본 발명의 바람직한 실시형태에 대하여 상세하게 설명한다. 그리고, 본 명세서 및 도면에 있어서, 실질적으로 동일한 기능 구성을 가지는 구성 요소에 대해서는, 동일한 부호를 부여함으로써 중복 설명을 생략한다.
또한, 이하의 순서로 설명을 행한다.
1. 도입(導入)
1―1. AONT법
1―2. 기존의 알고리즘
1―3. 문제점의 설명
2. 새로운 기법
2―1. 수정된 알고리즘
2―2. 알고리즘의 일반화
3. 데이터 처리 장치의 구성예
4. 처리의 흐름
4―1. AONT 변환
4―2. AONT 역변환
5. 정리
<1.도입>
[1―1. AONT법]
비특허문헌 1에 있어서, Rivest는, 메시지 시퀀스(sequence)(메시지 블록의 시퀀스)를 의사(擬似) 메시지 시퀀스에 찍는 변환 f이 AONT라고 하기 위해서는, 변환 f이 다음의 3가지 조건을 만족시킬 것을 제창하고 있다:
·변환 f이 역변환을 가진다. 즉, 의사 메시지 시퀀스가 주어지면 원래의 메시지 시퀀스를 복원할 수 있다;
·변환 f 및 그 역변환이 다항식 시간 내에 계산 가능하다;
·의사 메시지 블록의 모두가 기지(旣知)가 아니면, 원래의 메시지 블록의 어느 1개를 복원하는 것도 계산량적으로 실현 불가능하다.
AONT의 이들 조건을 만족시키는 변환 알고리즘은, 비특허문헌 2에 있어서 제안된 CTRT법 및 비특허문헌 3에 있어서 제안된 OAEP법 등, 몇 가지가 존재한다. OAEP법은, 비트마다의 연산이 가능하므로, 메시지 분산의 유연성이 높다는 장점을 가지지만, 해시값의 신장이라는 연산 비용의 비교적 큰 처리를 포함한다. 한편, CTRT법은, 비트 단위는 아니고 블록 단위로 데이터를 분산시키는 것을 필요로 하지만, 블록 암호를 재이용하여 AONT법을 실장할 수 있으므로 컴퓨터 실장과의 높은 친화성을 가지고, 처리의 고속화의 면에서 우위이다. CTRT법의 안전성은, 비특허문헌 2에 있어서 증명되어 있다.
[1―2. 기존의 알고리즘]
CTRT법에 따라 메시지, 즉 은닉해야 할 데이터의 비트열을 변환하기 위한 변환 알고리즘 및 원 비트열을 복원하기 위한 역변환 알고리즘은, 비특허문헌 2의 제5절 "All―Or―Nothing Transforms"에 기술되어 있다. 아래의 표 1은, 그 변환 알고리즘과 실질적으로 같은 알고리즘을 나타내고 있다.
Figure pct00001
표 1. CTRT법에서의 변환 알고리즘
(비특허문헌 2에서)
표 1의 제1행은, 알고리즘에 입력되는 비트열이 n개의 입력 블록 x[1], …, x[n]으로 세그먼트화되는 것을 나타내고 있다. 각 입력 블록의 블록 길이는 l과 같다. 제2행에 있어서, 비트 길이 l의 랜덤 비트열 K′이 생성된다. 제3행에 있어서, 키 길이 k의 키 K가, 랜덤 비트열 K′를 2의 k승으로 제산한 잉여로서 도출된다. 제4행∼제6행에서는, n개의 입력 블록 x[1], …, x[n]의 각각이, 키 K를 사용하여 어떠한[이상적(理想的)인] 암호 방식 FK를 이용하여 암호화된다. 암호화 후의 블록 x′[1], …, x′[n]을, 여기서는 출력 블록이라고 한다. 제7행에서는, 랜덤 비트열 K′과 출력 블록 x′[1], …, x′[n]과의 사이에서 배타적(排他的) 논리합이 계산되고, 새로운 출력 블록 x′[n+1]이 도출된다. 제8행에 있어서, 일련의 출력 블록 x′[1], x′[2], …, x′[n], x′[n+1]이 암호화된 비트열로서 출력된다.
아래의 표 2는, 비특허문헌 2의 제5절에 기술되어 있는 역변환 알고리즘과 실질적으로 같은 알고리즘을 나타내고 있다.
Figure pct00002
표 2. CTRT법에서의 변환 알고리즘
(비특허문헌 2에서)
표 2의 제1행은, 알고리즘에 입력되는 암호화 비트열이 n+1개의 입력 블록 x′[1], …, x′[n+1]로 세그먼트화되는 것을 나타내고 있다. 각 입력 블록의 블록 길이는 l과 같다. 제2행에 있어서, 입력 블록 x′[1], …, x′[n+1]의 사이에서 배타적 논리합이 계산되고, 원 비트열을 암호화 비트열로 변환할 때 이용된 랜덤 비트열 K′이 복원된다. 제3행에 있어서, 키 길이 k의 키 K가, 랜덤 비트열 K′를 2의 k승으로 제산한 잉여로서 도출된다. 제4행∼제6행에서는, n개의 입력 블록 x′[1], …, x′[n]의 각각이, 키 K를 사용하여 암호 방식 FK를 이용하여 복호된다. 복호 후의 블록 x[1], …, x[n]을, 여기서는 출력 블록이라고 한다. 제7행에 있어서, 일련의 출력 블록 x[1], …, x[n]이 복원된 원 비트열로서 출력된다.
표 1 및 표 2의 설명으로부터 이해할 수 있는 바와 같이, CTRT법은, 은닉해야 할 데이터를 변환하는 프로세스의 도중에 키 길이 k의 키를 생성하고, 생성한 그 키를 사용하는 대칭 키 암호 방식 FK를 이용하여 메시지 블록의 각각을 암호화한다. 실제로는, CTR 모드에서는, 블록마다 변화하는 카운터의 값이 대칭 키 암호 방식으로 암호화되고, 암호화된 카운터값과 각 메시지 블록과의 배타적 논리합에 의해 각 메시지 블록도 또한 암호화된다. 키는, 이들 암호화 후의 블록과의 새로운 배타적 논리합을 통해 메시지 전체에 확산되는 것에 의해 은닉된다. 원 비트열을 복원하기 위해서는, 얻어진 비트열 x′[1], …, x′[n+1] 중 어느 1개의 블록도 결여되지 않고, 1블록이라도 결여되면 원 비트열이 복원 불가능해진다. 이들 블록으로 이루어지는 출력 비트열의 전체는, 예를 들면, 각각의 단편이 하나 이상의 블록을 포함하도록 복수의 단편으로 분산되고, 이들 단편이 상이한(시큐어인) 스토리지(storage)에 각각 기억된다. 그러면, 1개의 스토리지의 시큐리티가 파괴되었다고 해도, 원래의 데이터는 공격자에게 누설(漏洩)하지 않는다. 또한, 데이터를 소유하는 사용자는, 암호키를 스스로 관리하는 것을 필요로 하지 않는다.
[1―3. 문제점의 설명]
전항에서 설명하였던 CTRT법에서의 변환/역변환의 알고리즘은, 블록 길이 l과 블록 암호의 키 길이 k와의 사이에, k≤l라고 하는 제약을 가진다. 이 제약은, 예를 들면, 키 K를 메시지 전체에 확산시켜 은닉하기 위한, 블록 사이의 배타적 논리합을 실현하기 위해 필요로 한다. 예를 들면, 블록 암호의 대표적인 방식의 1개인 DES는, 블록 길이 l=64 비트, 키 길이 k= 56 비트이므로, 이 제약을 만족시키기 위해, 기존의 CTRT법의 실장에 있어서, DES를 이용할 수 있다. 그러나, 통상, 대칭 키 암호 방식(공통 키 암호 방식이라고도 함)의 암호 강도는 키의 길이에 의존한다. 예를 들면, DES의 56 비트라고 하는 키 길이는 너무 짧기 때문에, 비약적으로 향상시킨 현대의 컴퓨터 성능을 전제로 하면, DES는 더 이상 실용적인 시간 내에서 무차별 공격에서도 해독 가능한 것으로 되어 있다.
한편, CTRT법을 실장할 때, 암호 강도의 향상을 위해 보다 키 길이가 큰 블록 암호를 이용한다는 아이디어는, 블록 길이 l과 키 길이 k와의 사이의 전술한 제약에 의해 방해될 수 있다. 예를 들면, Rijndael 암호로서도 알려진 대칭 키 암호 방식인 AES의 블록 길이 l은 128 비트이며, 키 길이 k는 128, 192 또는 256 비트로부터 선택되도록 되어 있다. 따라서, 높은 암호 강도가 기대되는 AES의 192 또는 256 비트라고 하는 키 길이는 AES의 블록 길이보다 크기 때문에, 전술하였던 CTRT법에서의 변환/역변환의 알고리즘에 있어서 이들 키 길이를 채용할 수가 없다.
따라서, 다음 절에서 보다 상세하게 설명하는 실시형태에 있어서, 블록 암호의 블록 길이보다 큰 키 길이를 채용하는 것이 가능하도록, CTRT법의 변환/역변환 알고리즘이 수정된다.
<2. 새로운 기법>
[2―1. 수정된 알고리즘]
이하의 설명에 있어서, 블록 길이 l보다 큰 키 길이 k를 채용하는 것이 가능하도록 수정된 CTRT법에 기초한 기법을, 수정 CTRT법이라고 한다. 아래의 표 3은, 수정 CTRT법에 따라 원 비트열을 AONT 변환하기 위한 변환 알고리즘의 일례를 나타내고 있다. 또한, 도 1은, 표 3의 변환 알고리즘을 모식적으로 표현하는 블록도이다.
Figure pct00003
표 3. 수정된 CTRT법에서의 변환 알고리즘(k=2ℓ의 경우)
표 3의 제1행에 나타낸 바와 같이, 원 비트열, 즉 은닉해야 할 데이터의 비트열은, 먼저, 제1 블록 길이를 각각 가지는 복수의 입력 블록 x[1], …, x[n]으로 세그먼트화된다. 제1 블록 길이는, 후의 스텝에서 이용되는 블록 암호형의 대칭 키 암호 방식에 고유의 블록 길이 l과 같다. 대칭 키 암호 방식으로서 AES가 이용되는 경우에는, l=128 비트이다. 도 1의 상단(上段)에서는, 입력 메시지(10)가 n개의 입력 블록에 세그먼트화되는 모양이 나타나 있다. 입력 메시지(10)의 사이즈가 제1 블록 길이의 정수배(整數倍)가 아닐 경우에는, n개의 입력 블록의 각각의 사이즈가 제1 블록 길이와 같아지도록, 예를 들면, 입력 메시지(10)의 말미(末尾; end)에 하나 이상의 패딩 비트가 추가되어도 된다. 또한, 후에 설명하는 중간 블록의 수를 소정수로 하기 위한 패딩도 여기서 병행하여 행해도 된다. 특히, 후자의 블록 단위의 패딩에서의 패딩 비트는, 랜덤인 비트값을 가지는 것이 바람직하다.
이어서, 표 3의 제2행에 나타낸 바와 같이, 비트 길이 k의 랜덤 비트열 K가, 대칭 키 암호를 위한 키 K로서 생성된다. 키 K의 생성은, 도 1에 있어서 스텝 S11로서 나타나 있다. 여기서는, k=2l인 것으로 한다. 대칭 키 암호 방식으로서 AES가 이용되는 경우에는, 키 길이 k로서 k=256 비트를 선택할 수 있다.
이어서, 표 3의 제3행∼제5행에 나타낸 바와 같이, 생성한 랜덤 비트열에 기초한 키 K를 사용하는 블록 암호형의 대칭 키 암호 방식을 이용하여 CTR 모드로 입력 블록 x[1], …, x[n]의 각각을 암호화하여, 복수의 중간 블록 x′[1], …, x′[n]이 도출된다. 도 1에 있어서, 키 K를 사용한 각 블록의 암호화는, 스텝 S13에서의, 함수(FK)와 암호화된 카운터값과의 배타적 논리합의 연산으로서 표현되어 있다.
이어서, 표 3의 제6행∼제8행에 나타낸 바와 같이, 도출한 복수의 중간 블록 x′[1], …, x′[n]을 2개의 중간 블록마다 연결하여, 제2 블록 길이를 각각 가지는 하나 이상의 출력 블록 y[1], …, y[m―1]이 형성된다. 여기서는, 제2 블록 길이는, 제1 블록 길이의 2배(즉, 2l)와 같고, 또한 키 K의 키 길이(즉, k)와 같다. 도 1에 있어서는, 일련의 중간 블록 중 연속하는 2개의 블록이, 스텝 S15에 있어서 서로 연결되어 있는, 예를 들면, 각각 l 비트의 중간 블록 x′[1] 및 x′[2]가 연결되어 1번째의 출력 블록 y[1]이 형성되고, 마찬가지로 중간 블록 x′[3] 및 x′[4]가 연결되어 2번째의 출력 블록 y[2]가 형성되어 있다. 중간 블록의 수 n가 홀수인 경우에는, 최후의 중간 블록으로서 여기서 패딩 블록이 추가되어도 된다.
이어서, 표 3의 제9행에 나타낸 바와 같이, m―1개의 출력 블록 y[1], …, y[m―1] 및 생성이 끝난 랜덤 비트열(여기서는, 키 K와 같음)의 사이에서 배타적 논리합이 계산되고, 새로운 출력 블록 y[m]이 도출된다. 출력 블록 y[m]의 사이즈는, 전술한 제2 블록 길이와 같다. 출력 블록 y[m]의 도출(導出; derivation)은, 도 1에 있어서 스텝 S17로서 나타나 있다.
이어서, 표 3의 제10행에 나타낸 바와 같이, 일련의 출력 블록 y[1], …, y[m]을 포함하는 암호화 비트열이 출력된다. 도 1에서는, 출력 블록 y[1], …, y[m―1] 및 새로운 출력 블록 y[m]을 포함하는 출력 메시지(20)가 형성되는 모양이 나타나 있다.
마지막으로, 표 3에는 나타내고 있지 않지만, 데이터 변환의 프로세스의 도중에 생성된 키 K가 소거된다. 키 K의 소거는, 도 1에 있어서 스텝 S19로서 나타나 있다. 이와 같은 변환 후의 암호화 비트열은, 예를 들면, 출력 블록 y[1], …, y[m] 중 하나 이상을 각각 포함하는 2개 이상의 분산 비트열로 분산되어, 별개의 기억 디바이스에 의해 기억될 수 있다.
도 2는, 도 1에 관련하여 설명한 AONT 변환 알고리즘을, 블록 길이에 착안하여 추가로 설명하기 위한 설명도이다. 여기서는, 대칭 키 암호 방식으로서 AES가 이용되고, 블록 길이 l=128 비트, 키 길이 k=256 비트인 것으로 한다. 도 2의 최상단에는, 제1 블록 길이 l를 각각 가지는, 일련의 입력 블록 x[1], …, x[n]이 나타나 있다. 이들 입력 블록은, 은닉해야 할 데이터 또는 메시지를 구성하는 블록이다. 입력 블록 x[1], …, x[n]은, 키 길이 k=256(=2l) 비트의 키 K를 사용하는 AES를 이용하여 CTR 모드로 각각 암호화되고, 도 2의 2단째에 나타낸 일련의 중간 블록 x′[1], …, x′[n]이 도출된다. 각각의 중간 블록도 또한 제1 블록 길이를 가진다. 이어서, 일련의 중간 블록 x′[1], …, x′[n] 중 2개씩의 중간 블록이 서로 연결되고, 도 2의 3단째에 나타낸 m―1개의 출력 블록 y[1], …, y[m―1]이 형성된다. 각각의 출력 블록은, 제2 블록 길이(k=2l)을 가진다. 또한, 도 2의 4단째에서는, 출력 블록 y[1], …, y[m―1]의 뒤에 새로운 출력 블록 y[m]이 추가되어 있다. 출력 블록 y[m]는, 출력 블록 y[1], …, y[m―1]과 키 K와의 사이의 배타적 논리합이며, 그 사이즈는 제2 블록 길이(k=2l)와 같다. 그리고, 도 2의 최하단에서는, 모든 출력 블록 y[1], …, y[m]을 포함하는 암호화 비트열이, 2개 이상의 단편 도 1, 도 2, …에 분산되어 있다. 이들 단편 중 가장 작은 단편의 사이즈(g)는, 출력 블록의 사이즈 k 이상이다(2l=k≤g). 어느 단편도, 출력 블록 중 하나 이상을 포함한다. 결과적으로, 이들 단편 중 임의의 하나를 제외하고 다른 모든 단편을 공격자가 손에 넣었다고 해도, 원래의 메시지도 키 K도 실질적으로 누설하지 않는다.
아래의 표 4는, 수정 CTRT법에 따라 암호화 비트열을 AONT 역변환한다(원 비트열을 복원함) 위한 역변환 알고리즘의 일례를 나타내고 있다. 또한, 도 3은, 표 4의 역변환 알고리즘을 모식적으로 표현하는 블록도이다.
Figure pct00004
표 4. 수정된 CTRT법에서의 역변환 알고리즘(k=2ℓ의 경우)
암호화 비트열은, 전형적으로는, 별개의 기억 디바이스에 의해 각각 기억되어 있는 2개 이상의 분산 비트열을 연결함으로써 취득된다. 표 4의 제1행에 나타낸 바와 같이, 암호화 비트열은, 먼저, 제1 블록 길이의 2배의 제2 블록 길이를 각각 가지는 복수의 입력 블록 y[1], …, y[m]으로 세그먼트화된다. 제1 블록 길이는, 블록 암호형의 대칭 키 암호 방식에 고유의 블록 길이와 같다. 여기서는, 대칭 키 암호 방식으로서 AES가 이용되고, 제1 블록 길이는 128 비트, 제2 블록 길이는 256 비트이다. 도 3의 하단(下段)에서는, 암호화 메시지(30)가 m개의 입력 블록에 세그먼트화되는 모양이 나타나 있다.
이어서, 표 4의 제2행에 나타낸 바와 같이, m개의 입력 블록 y[1], …, y[m]의 사이에서 배타적 논리합이 계산되고, 랜덤 비트열에 상당하는 키 K가 복원된다. 여기서는, 키 K의 키 길이 k는, 전술한 제2 블록 길이와 같다. 키 K의 복원은, 도 3에 있어서 스텝 S31로서 나타나 있다.
이어서, 표 4의 제3행∼제5행에 나타낸 바와 같이, 하나 이상의 입력 블록 y[1], …, y[m―1]을 각각 등 사이즈의 2개의 블록으로 분리하여, 제1 블록 길이를 각각 가지는 복수의 중간 블록 x′[1], …, x′[n]이 형성된다. 도 3에 있어서는, 각 입력 블록이 스텝 S33에 있어서 연속하는 2개의 중간 블록으로 분리되어 있다. 예를 들면, 1번째의 입력 블록 y[1]이 중간 블록 x′[1] 및 x′[2]에, 2번째의 입력 블록 y[2]가 중간 블록 x′[3] 및 x′[4]로 분리되어 있다. 최후의 중간 블록이 패딩 블록인 경우에는, 패딩 블록은 여기서 삭제되어도 된다.
이어서, 표 4의 제6행∼제8행에 나타낸 바와 같이, 복원한 랜덤 비트열에 기초한 키 K를 사용하는 블록 암호형의 대칭 키 암호 방식을 이용하여 CTR 모드로 중간 블록 x′[1], …, x′[n]의 각각을 복호하여, 복수의 출력 블록 x[1], …, x[n]이 도출된다. 도 3에 있어서, 키 K를 사용한 각 블록의 복호는, 스텝 S35에서의 배타적 논리합의 연산으로서 표현되어 있다.
이어서, 표 4의 제9행에 나타낸 바와 같이, 일련의 출력 블록 x[1], …, x[n]을 포함하는 원 비트열이 출력된다. 도 3의 상단에서는, 출력 블록 x[1], …, x[n]을 연결하여 원 비트열(40)이 형성되는 모양이 나타나 있다.
마지막으로, 표 4에는 나타내고 있지 않지만, 역변환의 프로세스의 도중에 생성된 키 K가 소거된다. 키 K의 소거는, 도 3에 있어서 스텝 S37로서 나타나 있다.
[2―2. 알고리즘의 일반화]
도 1∼도 3에 모식적으로 나타낸 알고리즘은, 블록 길이 l과 키 길이 k와의 사이에 k=2l라고 하는 관계가 성립되는 케이스에 적용할 수 있다. 예를 들면, 대칭 키 암호 방식으로서 AES가 이용되고, AES의 키 길이로서 256 비트(k=256)가 선택되는 경우, AES 고유의 블록 길이(즉, 메시지 블록 길이)는 128 비트(l=128)이므로, k=2l라고 하는 관계가 성립된다. 이것은, 전술한 수정 CTRT법이, 아직도 충분한 계산량적 안전성을 가지면 되는 AES 중에서도 가장 긴 키 길이를 사용하는 케이스에 적용 가능한 것을 의미한다.
또한, 수정 CTRT법을 확장함으로써, 블록 길이 l과 키 길이 k가 k=2l 이외의 관계를 가지는 다양한 케이스에 대처할 수 있다.
예를 들면, 키 길이 k가 제1 블록 길이 l의 q배(q는 2 이상의 정수)와 같은 것으로 한다(k=ql). 이 경우, 원 비트열을 변환할 때, 암호화된 중간 블록 x′[1], …, x′[n]을 q개의 중간 블록마다 연결함으로써, 제1 블록 길이 l의 q배와 같은 제2 블록 길이를 각각 가지는 하나 이상의 출력 블록이 형성된다. 이로써, 이들 출력 블록과 키 길이 k=ql의 키 K와의 사이에서 배타적 논리합을 계산하여, 키 K를 은닉할 수 있다. 역변환 시에는, 입력 블록 사이의 배타적 논리합을 통하여, 제2 블록 길이와 같은 키 길이(k=ql)의 키 K를 복원한 후에, 각 입력 블록을 연속하는 q개의 중간 블록으로 분리함으로써, 제1 블록 길이 l를 각각 가지는 복수의 중간 블록을 형성할 수 있다. 제1 블록 길이 l은, 이용해야 할 대칭 키 암호 방식에 고유의 블록 길이이다.
또한, 예를 들면, 각 블록을 암호화할 때 사용되는 키의 키 길이 k가 블록 길이 l의 정수배와 같지 않은 경우에는, 예를 들면, 이하에 설명하는 방법에 의해, 수정 CTRT법을 확장시킬 수 있다.
예를 들면, 블록 길이 l가 128 비트이며, 키 길이 k가 192 비트인 경우에 있어서, 원 비트열을 AONT 변환하는 경우에는, 도 4에 나타낸 바와 같이, 스텝 S17에서 출력 블록 y[1]의 배타적 논리합을 연산하기 전에, 스텝 S16에 있어서, 192 비트의 키 K의 상위에 64 비트의 패딩 P을 연결하여 256 비트의 랜덤 비트열 K′(K′=P||K)을 생성한다. 이 경우, 키 K 및 패딩 P은 랜덤으로 결정할 수 있다. 그리고, 스텝 S17에서는, 스텝 S16에서 생성한 256 비트의 랜덤 비트열 K′과 256 비트의 출력 블록 y[1]와의 사이에서 배타적 논리합(XOR)을 연산함으로써, 키 K의 키 길이 k가 블록 길이 l의 정수배와 같지 않은 경우라도, 본 발명에 관한 수정 CTRT법을 확장하여 적용할 수 있다.
또한, 암호화 비트열을 AONT 역변환하는 경우에도, 도 5에 나타낸 바와 같이, 입력 블록 y[1], …, y[m]의 사이에서 배타적 논리합을 연산함으로써, 스텝 S31에 있어서, 192 비트의 키 K에 64 비트의 패딩 P을 연결한 256 비트의 랜덤 비트열 K′를 복원할 수 있다. 그리고, 스텝 S32에 있어서, 복원한 256 비트의 랜덤 비트열 K로부터 64 비트의 패딩 P을 제거함으로써, 192 비트의 키 K가 복원된다. 그리고, 복원한 키 K를 사용하여, 중간 블록 x′[1], …, x′[n]로부터, 출력 블록 x[1], …, x[n]을 출력할 수 있다.
그리고, 이들 방법에서는, 패딩 P을 키 K의 상위에 연결하여 랜덤 비트열 K′를 생성하고 있다(K′=P||K)이, 이에 한정되지 않고, 패딩 P을 키 K의 하위에 연결하여 랜덤 비트열 K′를 생성해도 된다(K′=K||P).
또한, 다른 방법으로서는, 도 6에 나타낸 바와 같이, 먼저, 스텝 S11에 있어서, 블록 길이 l의 정수배와 같은 비트 길이로서, 키 길이 k보다 큰 상기 비트 길이의 랜덤 비트열 K′를 생성한다. 그리고, 스텝 S12에 있어서, 랜덤 비트열 K′에 기초하여, 보다 사이즈의 작은 키 K를 생성하고, 생성한 키 K를 각 블록의 암호화(또는 복호)를 위해 사용해도 된다. 예를 들면, 블록 길이 l가 128 비트이며, 키 길이 k가 192 비트인 경우, 먼저 스텝 S11에서, 256 비트의 랜덤 비트열 K′로서 생성한다. 또한, 스텝 S12에서, 256 비트의 랜덤 비트열 K′의 부분열 중 192 비트 분의 부분열을, 키 K로서 생성한다. 이로써, 스텝 S13에 있어서, 입력 블록 x[1], …, x[n]을 암호화하는 경우에는 192 비트의 키 K를 사용할 수 있다. 또한, 스텝 S17에 있어서, 출력 블록 y[1]에 대하여 배타적 논리합(XOR)을 연산하는 경우에는, 블록 길이의 정수배인 256 비트의 랜덤 비트열 K′를 사용할 수 있다. 그리고, 랜덤 비트열 K′의 부분열을 키 K로서 생성하는 경우, 예를 들면, K′를 2k로 제산한 잉여를 키 K로서 생성할 수 있다.
또한, 암호화 비트열을 AONT 역변환하는 경우에도, 도 7에 나타낸 바와 같이, 스텝 S31에 있어서, 입력 블록 y[1], …, y[m]의 사이에서 배타적 논리합을 계산함으로써, 256 비트의 랜덤 비트열 K′이 복원된다. 그리고, 스텝 S32에서, 복원한 키 K를 잉여 연산함으로써, 256 비트의 K'의 부분열을 192 비트의 키 K로서 생성할 수 있다. 그리고, 복원한 키 K를 사용하여, 중간 블록 x′[1], …, x′[n]로부터, 출력 블록 x[1], …, x[n]을 출력할 수 있다.
그리고, 도 6 및 도 7에 있어서 K′를 2k로 제산한 잉여를 키 K로서 생성하는 경우, K는, K′의 하위 K 비트를 추출한 값과 같게 된다. 즉, 도 6, 도 7에 나타낸 방법과, 도 4, 도 5에 나타낸 방법(패딩 P을 키 K의 하위에 연결하여 랜덤 비트열 K′를 생성하는 방법)에서는, 연산 수순은 상이하지만, K가 같은 경우에는, 생성되는 K는 같은 값으로 된다. 단, 도 6 및 도 7에 나타낸 방법에서는, 도 4, 도 5에 나타낸 방법과 비교하여, 연산량이 적기 때문에, 더욱 바람직한 방법으로 할 수 있다.
이러한 일반화를 위한 방법을 조합함으로써, 기존의 CTRT법이 가지고 있었던 블록 길이 l과 키 길이 k와의 사이의 k≤l라고 하는 제약을 배제하고, 암호 강도, 처리 속도 또는 통신 환경이라는 다양한 조건에 따라서 최적인 암호 방식 및 키 길이를 사용하는 것이 가능해진다. 또한, 본 개시에 관한 기술은, 전술하였다. TR 모드 대신에, CBC(Cipher Block Chaining) 모드, ECB(Electronic CodeBook) 모드, CFB(Cipher FeedBack) 모드, OFB(Output FeedBack) 모드라는 다른 암호 이용 모드가 이용되는 케이스에 적용되어도 된다. CBC 모드에서는, 도 1, 도 3의 VIII 부분이 도 8의 (A)에 나타낸 바와 같이, 변환되는 것 이외에는, 전술하였다. TR 모드와 마찬가지로 수정 CTRT 법에 의한 AONT 변환·역변환을 행할 수 있다. 또한, ECB 모드 또는 CFB 모드에서는, 도 1, 도 3의 VIII 부분이 도 8의 (B) 또는 도 8의 (C)에 나타낸 바와 같이, 각각 변환되는 것 이외에는, 전술하였다. TR 모드와 마찬가지로 수정 CTRT 법에 의한 AONT 변환·역변환을 행할 수 있다. 마찬가지로, OFB 모드에 있어서도, 수정 CTRT 법에 의한 AONT 변환·역변환을 행할 수 있다.
또한, 전술한 예에서는, 키 암호 방식으로서 AES를 이용하는 구성을 예시하였으나, 본 개시에 관한 기술은, AES에 한정되지 않고, k>l로 되도록 블록 길이 l과 키 길이 k를 선택 가능한 트리플 DES, MISTY1, Camellia 등의 임의의 블록 암호(대상 키 암호)를 이용할 수 있다.
<3. 데이터 처리 장치의 구성예>
도 9는, 일 실시 형태에 관한 데이터 처리 장치(100)의 구성의 일례를 나타낸 블록도이다. 도 9를 참조하면, 데이터 처리 장치(100)는, 처리 회로(110), 기억 디바이스(130), 통신 인터페이스(140), 디스플레이(150) 및 입력 인터페이스(160)를 구비한다.
처리 회로(110)는, 예를 들면, CPU(Central Processing Unit) 또는 MPU(Micro Processing Unit)이라는 하나 이상의 범용적인 프로세서를 포함해도 된다. 또한, 처리 회로(110)는, ASIC(Application Specific Integrated Circuit) 또는 FPGA(Field Progra㎜able Gate Arrays)이라는, 예를 들면, AONT 변환/역변환을 위해 특별히 설계된 회로를 포함해도 된다.
기억 디바이스(130)는, 데이터 처리 장치(100)의 동작을 위해 필요로 하는 데이터, 제어 파라미터 및 컴퓨터 프로그램을 기억하기 위한 디바이스이다. 기억 디바이스(130)는, 불휘발성의 기억 매체[예를 들면, ROM(Read Only Memory)] 및 휘발성의 기억 매체[예를 들면, RAM(Random Access Memory)]를 포함해도 된다. 또한, 기억 디바이스(130)는, HDD(Hard Disk Drive) 또는 SSD(Solid State Drive)를 포함해도 된다. 기억 디바이스(130)에 의해 기억되는 제어 파라미터는, 예를 들면, 이용 가능한 암호화 방식의 식별 정보, 선택 가능한 키 길이, 및 분산편의 저장처의 로케이션 등을 포함할 수 있다.
통신 인터페이스(140)는, 데이터 처리 장치(100)에 의한 다른 장치와의 통신을 위한 인터페이스이다. 통신 인터페이스(140)는, 유선 LAN 인터페이스, 무선 LAN(Wi―Fi라고도 함) 인터페이스 또는 셀룰러―통신 인터페이스 등을 포함해도 된다. 도 9의 예에서는, 통신 인터페이스(140)는, 네트워크(190)를 통해 외부 스토리지(180)에 접속되어 있다.
디스플레이(150)는, 예를 들면, 액정 디스플레이(LCD) 또는 유기 발광 다이오드(OLED) 디스플레이 등이라는 표시 디바이스이다. 디스플레이(150)는, 예를 들면, 데이터 처리 장치(100)가 사용자에 제공하는 정보를 스크린에 표시시킨다.
입력 인터페이스(160)는, 사용자가 데이터 처리 장치(100)를 조작하거나 또는 데이터 처리 장치(100)에 정보를 입력하기 위해 사용되는 인터페이스이다. 입력 인터페이스(160)는, 예를 들면, 터치 센서, 키패드, 키보드, 버튼, 스위치 또는 포인팅 디바이스 등이라는, 어떠한 종류의 인터페이스를 포함해도 된다.
처리 회로(110)는, 예를 들면, 기억 디바이스(130)의 컴퓨터 판독 가능한 기억 매체에 기억되어 있는 컴퓨터 프로그램을 실행함으로써, 데이터 처리 장치(100)의 기능성을 동작시킨다. 예를 들면, 데이터 처리 장치(100)는, 논리적인 기능 모듈로서, 데이터 입출력 모듈(111), 변환 모듈(113), 및 역변환 모듈(115)을 포함한다.
데이터 입출력 모듈(111)은, 대상 데이터를 은닉하는 것이 요구되는 경우에, 대상 데이터의 비트열(즉, 원 비트열)을, 예를 들면, 사용자의 지시에 따라 기억 디바이스(130)로부터 판독하거나 또는 통신 인터페이스(140)를 통해 수신하는 등 하여 취득한다. 그리고, 데이터 입출력 모듈(111)은, 취득한 원 비트열을 변환 모듈(113)에 출력한다. 또한, 데이터 입출력 모듈(111)은, 변환 모듈(113)에 의해 원 비트열이 성공리에 암호화 비트열로 변환되면, 암호화 비트열을 2개 이상의 분산 비트열에 분산된다. 이들 분산 비트열의 각각은, 전술한 제2 블록 길이를 가지는 하나 이상의 출력 블록을 포함한다. 데이터 입출력 모듈(111)은, 2개 이상의 분산 비트열을 각각 대응하는 스토리지[예를 들면, 기억 디바이스(130) 또는 외부 스토리지(180)]에 출력하여 기억시킨다.
또한, 데이터 입출력 모듈(111)은, 대상 데이터를 복원하는 것이 요구되는 경우에, 대상 데이터에 관련되는 분산편을 각각 대응하는 스토리지로부터 수집하고, 수집한 분산편을 연결함으로써 형성되는 암호화 비트열을 역변환 모듈(115)에 출력한다. 또한, 데이터 입출력 모듈(111)은, 역변환 모듈(115)에 의해 암호화 비트열로부터 성공리에 원 비트열이 복원되면, 복원된 원 비트열을, 예를 들면, 사용자의 지시에 따라서, 기억 디바이스(130) 또는 디스플레이(150)에 제공하거나, 또는 통신 인터페이스(140)를 통해 다른 장치로 송신한다.
변환 모듈(113)은, 데이터 입출력 모듈(111)로부터 AONT 변환해야 할 원 비트열이 입력된 경우에, 그 원 비트열을 전술한 수정 CTRT법에 따라 암호화 비트열로 변환하고, 암호화 비트열을 데이터 입출력 모듈(111)에 반각(返却)한다. 변환 모듈(113)에 의해 실행되는 구체적인 처리의 흐름의 일례에 대하여, 다음 문단에서 상세하게 설명한다.
역변환 모듈(115)은, 데이터 입출력 모듈(111)로부터 AONT 역변환해야 할 암호화 비트열이 입력된 경우에, 그 암호화 비트열을 전술한 수정 CTRT법에 따라 역변환함으로써 원 비트열을 복원하고, 원 비트열을 데이터 입출력 모듈(111)에 반각한다. 역변환 모듈(115)에 의해 실행되는 구체적인 처리의 흐름의 일례에 대하여, 다음 문단에서 상세하게 설명한다.
<4. 처리의 흐름>
[4―1. AONT 변환]
도 10은, 일 실시 형태에 관한 데이터 처리 장치(100)에 의해 실행될 수 있는 AONT 변환을 위한 방법의 흐름의 일례를 나타낸 플로우차트이다.
먼저, 데이터 입출력 모듈(111)은, 은닉해야 할 대상 데이터를 취득한다(스텝 S111). 그리고, 데이터 입출력 모듈(111)은, 취득한 대상 데이터를 변환 모듈(113)에 출력한다.
이어서, 변환 모듈(113)은, 대상 데이터의 비트열을, 제1 블록 길이를 각각 가지는 복수의 입력 블록에 세그먼트화한다(스텝 S113). 제1 블록 길이는, 블록 암호형의 대칭 키 암호 방식에 고유의 블록 길이와 같다.
이어서, 변환 모듈(113)은, 제1 블록 길이의 정수배와 같은 비트 길이의 랜덤 비트열을 생성한다(스텝 S115). 그리고, 본 명세서에서의 「랜덤인」 비트열과는, 각 비트가 의사적(擬似的)으로 랜덤으로 결정된 값을 가지는 비트열을 포함해도 된다. 여기서는, 제1 블록 길이의 q배(q는 2 이상의 정수)와 같은 비트 길이의 랜덤 비트열이 생성되는 것으로 한다.
이어서, 변환 모듈(113)은, 세그먼트화한 복수의 입력 블록 중 1개를 선택한다(스텝 S117). 그리고, 변환 모듈(113)은, 선택한 입력 블록을 스텝 S115에서 생성한 랜덤 비트열에 기초한 키를 사용하는 블록 암호형의 대칭 키 암호 방식을 이용하여 암호화하여, 암호화된 블록을 도출한다(스텝 S119). 여기서, 도출되는 블록을 중간 블록이라고 한다. 스텝 S119에서 사용되는 키는, 제1 블록 길이보다 큰 키 길이를 가진다. 변환 모듈(113)은, 처리되지 않은 입력 블록이 없어질 때까지, 전술한 스텝 S117 및 스텝 S119의 처리를 반복한다(스텝 S121).
이어서, 변환 모듈(113)은, 도출되는 중간 블록 중 소정수의 블록을 선택한다(스텝 S123). 그리고, 변환 모듈(113)은, 선택한 중간 블록을 연결하여, 제2 블록 길이를 가지는 출력 블록을 형성한다(스텝 S125). 여기서는, q개가 연속하는 중간 블록이 선택되어, 서로 연결된다. 결과적으로, 제2 블록 길이는, 상기 랜덤 비트열의 비트 길이와 같게 된다. 변환 모듈(113)은, 나머지의 중간 블록이 없어질 때까지, 전술한 스텝 S123 및 스텝 S125의 처리를 반복한다(스텝 S127).
이어서, 변환 모듈(113)은, 형성된 모든 출력 블록과 상기 랜덤 비트열와의 사이에서 배타적 논리합을 계산하여, 새로운 출력 블록을 도출한다(스텝 S129).
이어서, 변환 모듈(113)은, 스텝 S125에 있어서 반복적으로 형성된 하나 이상의 출력 블록 및 스텝 S129에 있어서 도출된 상기 새로운 출력 블록을 연결하여, 암호화 비트열을 형성한다(스텝 S131). 그리고, 변환 모듈(113)은, 형성한 암호화 비트열을 데이터 입출력 모듈(111)에 반각한다.
데이터 입출력 모듈(111)은, 암호화 비트열을 출력 블록 중 하나 이상을 각각 포함하는 2개 이상의 분산 비트열에 분산된다(스텝 S133). 그리고, 데이터 입출력 모듈(111)은, 2개 이상의 분산 비트열을 각각 상이한 기억 디바이스에 기억시킨다. 변환 모듈(113)은, AONT 변환이 완료되면, 랜덤 비트열을 소거한다(스텝 S135).
[4―2. AONT 역변환]
도 11은, 일 실시 형태에 관한 데이터 처리 장치(100)에 의해 실행될 수 있는 AONT 역변환을 위한 방법의 흐름의 일례를 나타낸 플로우차트이다.
먼저, 데이터 입출력 모듈(111)은, 복원해야 할 대상 데이터에 관련되는 2개 이상의 분산 비트열을 연결하여, 암호화 비트열을 형성한다(스텝 S161). 그리고, 데이터 입출력 모듈(111)은, 형성한 암호화 비트열을 역변환 모듈(115)에 출력한다.
이어서, 역변환 모듈(115)은, 암호화 비트열을 제2 블록 길이를 각각 가지는 복수의 입력 블록에 세그먼트화한다(스텝 S163). 제2 블록 길이는, 블록 암호형의 대칭 키 암호 방식에 고유의 블록 길이에 상당하는 제1 블록 길이의 q배(q는 2 이상의 정수)와 같은 것으로 한다.
이어서, 역변환 모듈(115)은, 세그먼트화한 복수의 입력 블록의 사이에서 배타적 논리합을 계산하여, 랜덤 비트열을 복원한다(스텝 S165). 여기서 복원되는 랜덤 비트열은, 대칭 키 암호 방식을 이용하여 개개의 블록을 복호할 때 사용되는 키와 동일해도 된다. 또는, 랜덤 비트열은, 개개의 블록을 복호할 때 사용되는 키를 일부에 포함하는 보다 큰 비트열이라도 된다.
이어서, 역변환 모듈(115)은, 전술한 복수의 입력 블록 중 1개를 선택한다(스텝 S167). 그리고, 역변환 모듈(115)은, 선택한 입력 블록을 소정수의 중간 블록에 분리한다(스텝 S169). 여기서는, 각 입력 블록이 q개가 연속하는 중간 블록으로 분리되는 것으로 한다. 결과적으로, 중간 블록의 블록 길이는, 제1 블록 길이와 같게 된다. 또한, 역변환 모듈(115)은, 입력 블록을 분리함으로써 형성된 중간 블록을, 복원한 랜덤 비트열에 기초한 키를 사용하는 대칭 키 암호 방식을 이용하여 각각을 복호하여, 소정수의 출력 블록을 도출한다(스텝 S171). 역변환 모듈(115)은, 처리되지 않은 입력 블록이 없어질 때까지, 전술한 스텝 S167∼스텝 S171의 처리를 반복한다(스텝 S173). 그리고, 입력 블록의 말미의 블록은 스텝 S165에서의 랜덤 비트열의 복원을 위해서만 사용되고, 여기서의 복호의 반복으로부터는 제외되므로, 바람직하다.
이어서, 역변환 모듈(115)은, 전술한 중간 블록의 복호를 통해 도출되는 복수의 출력 블록을 연결하여, 원 비트열을 복원한다(스텝 S175). 그리고, 역변환 모듈(115)은, 복원한 원 비트열을 데이터 입출력 모듈(111)에 반각한다. 역변환 모듈(115)은, AONT 역변환이 완료되면, 랜덤 비트열을 소거한다(스텝 S177).
본 절에서 설명한 처리 스텝은, 반드시 도시된 순서로 실행되지 않아도 된다. 몇 가지의 처리 스텝은, 병렬적으로 실행되어도 된다. 또한, 추가적인 처리 스텝이 채용되어도 되고, 일부의 처리 스텝이 생략되어도 된다.
<5. 정리>
본 개시에 있어서 설명한 수정 CTRT법은, 기존의 CTRT법이 가지고 있었던 블록 길이 l과 키 길이 k와의 사이의 k≤l라고 하는 제약을 배제하고, 보다 시큐리티의 견고한 블록 암호형의 암호 방식 및 키 길이의 조합을 이용하여 AONT 변환/역변환을 실장하는 것을 가능하게 한다. 수정 CTRT법도, 기존의 CTRT법와 마찬가지로, 예를 들면, OAEP법을 필요로 하는 해시값의 신장이라는 연산 비용이 큰 처리를 포함하지 않는다. 또한, 원 비트열에 대한 암호화 비트열의 데이터 사이즈의 증가는, 패딩 비트분에 더하여 출력 블록 1개분의 증가뿐이다. 따라서, 수정 CTRT법에 의하면, 처리 능력, 통신 성능 또는 기억 용량이라는 다양한 면에서 자원에 한계를 가지는 다양한 시스템 또는 장치에 있어서의 이용이 용이하다는 AONT법의 장점을 유지하면서, 보다 긴 키 길이를 선택하여 견고한 시큐리티를 달성할 수 있다.
어떤 실시예에 있어서, 상기 암호 방식은, 128 비트라고 하는 고유의 블록 길이를 가지는 AES(Advanced Encryption Standard)이며, 256 비트의 키 길이를 가지는 암호키가 선택된다. 이 케이스에서는, 키 길이 k가 블록 길이 l의 정확히 2배와 같다. 그러므로, AONT 변환 시에, AES 암호화 후의 중간 블록을 2개씩 연결하여 출력 블록으로 함으로써, 이들 출력 블록과 암호키와의 배타적 논리합을 통해 암호키를 용이하게 메시지 전체에 확산시켜 은닉할 수 있다. 또한, 블록 단위의 비트열의 연결/분리 및 배타적 논리합의 연산의 반복은, 범용 프로세서에서의 고속의 순차 처리 또는 병렬화에 의한 가일층의 고속화에도 적합하다. 단, 이러한 예에 한정되지 않고, 본 개시에 관한 기술은, 다른 키 길이 및 블록 길이의 조합에도 적용할 수 있다.
본 명세서에 있어서 설명한 기법은, 소프트웨어, 펌 웨어, 하드웨어 또는 이들의 임의의 조합으로 실현되어 이루어진다. 소프트웨어 또는 펌 웨어를 구성하는 컴퓨터 프로그램은, 예를 들면, 장치의 내부 또는 외부에 설치되는 컴퓨터 판독 가능한 기억 매체(비일시적인 매체: non―transitory media)에 미리 저장된다. 그리고, 컴퓨터 프로그램은, 예를 들면, 실행 시에 RAM에 로드되고, 처리 회로에 의해 실행된다.
이상, 첨부 도면을 참조하면서 본 발명의 바람직한 실시형태에 대하여 상세하게 설명하였으나, 본 발명의 기술적 범위는 이러한 예에 한정되지 않는다. 본 발명의 기술 분야에서의 통상의 지식을 가진 자이면, 특허 청구의 범위에 기재된 기술적 사상의 범주 내에 있어서, 각종 변경예 또는 수정예에 이를 수 있는 것은 명백하고, 이들에 대해서도, 당연하게 본 발명의 기술적 범위에 속하는 것으로 이해된다.
예를 들면, 전술한 실시형태에서는, 수정 CTRT법에 의해 원 비트열을 AONT 변환하는 경우에, 하나 이상의 출력 블록 y[1], …, y[m―1]과 랜덤 비트열 K과의 사이에서 배타적 논리합을 계산하여, 새로운 출력 블록 y[m]을 도출하는 구성을 예시하였으나, 하나 이상의 출력 블록 y[1], …, y[m―1]과 랜덤 비트열 K과의 사이에서 산술합(算術和)을 계산하여, 새로운 출력 블록 y[m]을 도출하는 구성으로 해도 된다.
또한, 전술한 실시형태에서는, 수정 CTRT법에 의해 암호화 비트열을 AONT 역변환하는 경우에도, 복수의 입력 블록 y[1], …, y[m]의 사이에서 배타적 논리합을 계산하여, 랜덤 비트열 K을 복원하는 구성을 예시하였으나, 복수의 입력 블록 y[1], …, y[m]의 사이에서 산술차(算術差)를 계산하여, 랜덤 비트열 K을 복원하는 구성으로 해도 된다.
반대로, 원 비트열을 AONT 변환하는 경우에 산술차를 이용하고, 암호 비트열을 AONT 역변환하는 경우에 산술합을 사용하는 구성으로 해도 된다.
이와 같이, 수정 CTRT법에 의해 원 비트열을 AONT 변환하는 경우에 있어서 랜덤 비트열 K을 사용하여 y[m]을 도출하는 경우(랜덤 비트열 K을 은닉하는 경우), 및 수정 CTRT법에 의해 암호화 비트열을 AONT 역변환하는 경우에 있어서 랜덤 비트열 K을 복원하는 경우에는, 배타적 논리합에 의한 연산에 한정되지 않고, 산술 연산 등 역변환이 가능한 변환 함수를 사용할 수 있다.
10, 40: 원 비트열
20, 30: 암호화 비트열
100: 데이터 처리 장치
110: 처리 회로
130, 180: 기억 디바이스/스토리지

Claims (14)

  1. 원(原) 비트열을, 제1 블록 길이(block length)를 각각 가지는 복수의 입력 블록에 세그먼트화하고,
    상기 제1 블록 길이보다 큰 비트 길이의 랜덤 비트열을 생성하고,
    생성되는 상기 랜덤 비트열에 기초한 키로서 상기 제1 블록 길이보다 큰 키 길이(key length)의 상기 키를 사용하는 블록 암호형의 대칭 키 암호 방식을 이용하여 상기 복수의 입력 블록의 각각을 암호화하여, 복수의 중간 블록을 도출하고,
    도출되는 상기 복수의 중간 블록을 소정수의 중간 블록마다 연결하여, 상기 랜덤 비트열의 상기 비트 길이와 같은 제2 블록 길이를 각각 가지는 하나 이상의 출력 블록을 형성하고,
    상기 하나 이상의 출력 블록 및 상기 랜덤 비트열을 사용하여 역변환 가능한 변환 함수로 연산함으로써, 상기 제2 블록 길이를 가지는 새로운 출력 블록을 도출하고,
    상기 하나 이상의 출력 블록 및 상기 새로운 출력 블록을 포함하는 암호화 비트열을 출력하도록
    구성되는 처리 회로를 포함하는,
    데이터 처리 장치.
  2. 제1항에 있어서,
    상기 역변환 가능한 변환 함수는, 배타적(排他的) 논리합인, 데이터 처리 장치.
  3. 제1항 또는 제2항에 있어서,
    상기 복수의 입력 블록의 각각을 암호화할 때 사용되는 상기 키는, 상기 랜덤 비트열과 동일한, 데이터 처리 장치.
  4. 제3항에 있어서,
    상기 대칭 키 암호 방식은, AES(Advanced Encryption Standard)이며, 상기 제1 블록 길이는, 128 비트이며, 상기 제2 블록 길이 및 상기 키 길이는, 256 비트인, 데이터 처리 장치.
  5. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 처리 회로는, 상기 암호화 비트열을, 상기 출력 블록 중 하나 이상을 각각 포함하는 2개 이상의 분산 비트열로 분산되도록 추가로 구성되는, 데이터 처리 장치.
  6. 제5항에 있어서,
    상기 처리 회로는, 상기 2개 이상의 분산 비트열을 각각 상이한 기억 디바이스에 기억시키도록 추가로 구성되는, 데이터 처리 장치.
  7. 제1항 또는 제2항에 있어서,
    상기 복수의 입력 블록의 각각을 암호화할 때 사용되는 상기 키는, 상기 랜덤 비트열의 상기 비트 길이보다 작은 상기 키 길이를 가지고, 상기 랜덤 비트열의 일부인, 데이터 처리 장치.
  8. 데이터 처리 장치에 있어서 원 비트열을 암호화 비트열로 변환하기 위한 방법으로서,
    상기 원 비트열을, 제1 블록 길이를 각각 가지는 복수의 입력 블록에 세그먼트화하는 단계;
    상기 제1 블록 길이보다 큰 비트 길이의 랜덤 비트열을 생성하는 단계;
    생성되는 상기 랜덤 비트열에 기초한 키로서 상기 제1 블록 길이보다 큰 키 길이의 상기 키를 사용하는 블록 암호형의 대칭 키 암호 방식을 이용하여 상기 복수의 입력 블록의 각각을 암호화하여, 복수의 중간 블록을 도출하는 단계;
    도출되는 상기 복수의 중간 블록을 소정수의 중간 블록마다 연결하여, 상기 랜덤 비트열의 상기 비트 길이와 같은 제2 블록 길이를 각각 가지는 하나 이상의 출력 블록을 형성하는 단계;
    상기 하나 이상의 출력 블록 및 상기 랜덤 비트열을 사용하여 역변환 가능한 변환 함수로 연산함으로써, 상기 제2 블록 길이를 가지는 새로운 출력 블록을 도출하는 단계; 및
    상기 하나 이상의 출력 블록 및 상기 새로운 출력 블록을 포함하는 상기 암호화 비트열을 출력하는 단계;
    를 포함하는, 방법.
  9. 데이터 처리 장치의 프로세서에 의해 실행된 경우에, 상기 데이터 처리 장치에,
    원 비트열을, 제1 블록 길이를 각각 가지는 복수의 입력 블록에 세그먼트화하는 단계;
    상기 제1 블록 길이보다 큰 비트 길이의 랜덤 비트열을 생성하는 단계;
    생성되는 상기 랜덤 비트열에 기초한 키로서 상기 제1 블록 길이보다 큰 키 길이의 상기 키를 사용하는 블록 암호형의 대칭 키 암호 방식을 이용하여 상기 복수의 입력 블록의 각각을 암호화하여, 복수의 중간 블록을 도출하는 단계;
    도출되는 상기 복수의 중간 블록을 소정수의 중간 블록마다 연결하여, 상기 랜덤 비트열의 상기 비트 길이와 같은 제2 블록 길이를 각각 가지는 하나 이상의 출력 블록을 형성하는 단계;
    상기 하나 이상의 출력 블록 및 상기 랜덤 비트열을 사용하여 역변환 가능한 변환 함수로 연산함으로써, 상기 제2 블록 길이를 가지는 새로운 출력 블록을 도출하는 단계; 및
    상기 하나 이상의 출력 블록 및 상기 새로운 출력 블록을 포함하는 암호화 비트열을 출력하는 단계;
    를 행하게 하기 위한, 컴퓨터 프로그램.
  10. 암호화 비트열을, 블록 암호형의 대칭 키 암호 방식의 블록 길이와 같은 제1 블록 길이보다 큰 제2 블록 길이를 각각 가지는 복수의 입력 블록에 세그먼트화하고,
    상기 복수의 입력 블록을 사용하여, 원 비트열을 상기 암호화 비트열로 변환할 때 이용된 변환 함수에 대하여 역변환으로 되는 변환 함수로 연산함으로써, 원 비트열을 상기 암호화 비트열로 변환할 때 이용된 랜덤 비트열을 복원하고,
    상기 복수의 입력 블록 중 하나 이상을 각각 소정수의 중간 블록으로 분리하여, 상기 제1 블록 길이를 각각 가지는 복수의 중간 블록을 형성하고,
    복원되는 상기 랜덤 비트열에 기초한 키를 사용하는 상기 대칭 키 암호 방식을 이용하여 상기 복수의 중간 블록의 각각을 복호하여, 복수의 출력 블록을 도출하고,
    도출되는 상기 복수의 출력 블록을 연결하여, 상기 원 비트열을 복원하도록 구성되는 처리 회로를 포함하는, 데이터 처리 장치.
  11. 제10항에 있어서,
    상기 변환 함수는, 배타적 논리합인, 데이터 처리 장치.
  12. 제10항 또는 제11항에 있어서,
    상기 복수의 중간 블록의 각각을 복호할 때 사용되는 상기 키는, 상기 랜덤 비트열의 비트 길이보다 작은 키 길이를 가지고, 상기 랜덤 비트열의 일부인, 데이터 처리 장치.
  13. 데이터 처리 장치에 있어서 암호화 비트열을 원 비트열로 역변환하기 위한 방법으로서,
    상기 암호화 비트열을, 블록 암호형의 대칭 키 암호 방식의 블록 길이와 같은 제1 블록 길이보다 큰 제2 블록 길이를 각각 가지는 복수의 입력 블록에 세그먼트화하는 단계;
    상기 복수의 입력 블록을 사용하여, 원 비트열을 상기 암호화 비트열로 변환할 때 이용된 변환 함수에 대하여 역변환으로 되는 변환 함수로 연산함으로써, 상기 원 비트열을 상기 암호화 비트열로 변환할 때 이용된 랜덤 비트열을 복원하는 단계;
    상기 복수의 입력 블록 중 하나 이상을 각각 소정수의 중간 블록으로 분리하여, 상기 제1 블록 길이를 각각 가지는 복수의 중간 블록을 형성하는 단계;
    복원되는 상기 랜덤 비트열에 기초한 키를 사용하는 상기 대칭 키 암호 방식을 이용하여 상기 복수의 중간 블록의 각각을 복호하여, 복수의 출력 블록을 도출하는 단계; 및
    도출되는 상기 복수의 출력 블록을 연결하여, 상기 원 비트열을 복원하는 단계;
    를 포함하는, 방법.
  14. 데이터 처리 장치의 프로세서에 의해 실행된 경우에, 상기 데이터 처리 장치에,
    암호화 비트열을, 블록 암호형의 대칭 키 암호 방식의 블록 길이와 같은 제1 블록 길이보다 큰 제2 블록 길이를 각각 가지는 복수의 입력 블록에 세그먼트화하는 단계;
    상기 복수의 입력 블록을 사용하여, 원 비트열을 상기 암호화 비트열로 변환할 때 이용된 변환 함수에 대하여 역변환으로 되는 변환 함수로 연산함으로써, 원 비트열을 상기 암호화 비트열로 변환할 때 이용된 랜덤 비트열을 복원하는 단계;
    상기 복수의 입력 블록 중 하나 이상을 각각 소정수의 중간 블록으로 분리하여, 상기 제1 블록 길이를 각각 가지는 복수의 중간 블록을 형성하는 단계;
    복원되는 상기 랜덤 비트열에 기초한 키를 사용하는 상기 대칭 키 암호 방식을 이용하여 상기 복수의 중간 블록의 각각을 복호하여, 복수의 출력 블록을 도출하는 단계; 및
    도출되는 상기 복수의 출력 블록을 연결하여, 상기 원 비트열을 복원하는 단계;
    를 행하게 하기 위한, 컴퓨터 프로그램.
KR1020207036591A 2018-05-25 2019-05-24 데이터 처리 장치, 방법 및 컴퓨터 프로그램 KR20210013121A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2018100539 2018-05-25
JPJP-P-2018-100539 2018-05-25
PCT/JP2019/020628 WO2019225735A1 (ja) 2018-05-25 2019-05-24 データ処理装置、方法及びコンピュータプログラム

Publications (1)

Publication Number Publication Date
KR20210013121A true KR20210013121A (ko) 2021-02-03

Family

ID=68616849

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207036591A KR20210013121A (ko) 2018-05-25 2019-05-24 데이터 처리 장치, 방법 및 컴퓨터 프로그램

Country Status (4)

Country Link
US (1) US11764945B2 (ko)
JP (1) JP7226829B2 (ko)
KR (1) KR20210013121A (ko)
WO (1) WO2019225735A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7008120B1 (ja) * 2020-11-18 2022-01-25 レノボ・シンガポール・プライベート・リミテッド 情報記憶システム、情報処理装置、及び情報記憶方法
CN115567650B (zh) * 2022-12-06 2023-03-03 江苏太湖锅炉股份有限公司 一种锅炉智能运行监控云平台的数据管理方法
CN116527400B (zh) * 2023-06-29 2023-09-12 北京可利邦信息技术股份有限公司 一种多方向置乱的数据加密方法及系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6221196B2 (ko) 1979-11-08 1987-05-11 Nippon Electric Co

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7546461B2 (en) * 2005-06-28 2009-06-09 Microsoft Corporation Strengthening secure hash functions
JP2016517046A (ja) * 2013-04-24 2016-06-09 エヌイーシー ヨーロッパ リミテッドNec Europe Ltd. データを暗号化する方法およびシステム
JP6557727B2 (ja) * 2014-12-03 2019-08-07 ナグラビジョン エス アー メッセージを暗号化/復号化するためのブロック暗号方法及びこの方法を実施するための暗号装置
JP6221196B1 (ja) 2017-03-15 2017-11-01 株式会社ウフル ログ管理システム、ログ管理装置、方法及びコンピュータプログラム
US10360391B2 (en) * 2017-04-03 2019-07-23 International Business Machines Corporation Verifiable keyed all-or-nothing transform
US10944568B2 (en) * 2017-10-06 2021-03-09 The Boeing Company Methods for constructing secure hash functions from bit-mixers

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6221196B2 (ko) 1979-11-08 1987-05-11 Nippon Electric Co

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
A. Desai, "The Security of All-Or-Nothing Encryption: Protecting Against Exhaustive Key Search", Advances in Cryptology-CRYPTO(2000), pp.359-375, LNCS Vol. 1880, 2000
R. Rivest, "All-or-Nothing Encryption and The Package Transform", FSE ' 97 Proceedings of Fast Software Encryption, pp.210-218, 1997
V. Boyko, "On the Security Properties of OAEP as an All-or-Nothing Transform", Advances in Cryptology-CRYPTO(1999), pp.503-518, LNCS Vol. 1666, 1999

Also Published As

Publication number Publication date
US11764945B2 (en) 2023-09-19
US20210211270A1 (en) 2021-07-08
WO2019225735A1 (ja) 2019-11-28
JP7226829B2 (ja) 2023-02-21
JPWO2019225735A1 (ja) 2021-06-03

Similar Documents

Publication Publication Date Title
KR101516574B1 (ko) 형태보존 암호화를 위한 가변길이 블록암호 장치 및 방법
KR102219476B1 (ko) 데이터를 암호화하는 방법 및 그를 위한 장치
US20160373249A1 (en) Encryption method and encryption device
KR102019159B1 (ko) 정수 기반 준동형 암호 기법에 일반적으로 적용 가능한 압축 암복호화 장치 및 방법
CN108173640B (zh) 一种高安全性的字符串对称加密和解密方法
JP6035459B2 (ja) 暗号化装置、復号化装置、及びプログラム
JP2016513825A (ja) 安全通信方法および装置
JP7226829B2 (ja) データ処理装置、方法及びコンピュータプログラム
MXPA05005358A (es) Metodo para generar una cifra de corriente usando multiples claves.
US11108543B2 (en) Method for encrypting data for distributed storage
Rajput et al. An improved cryptographic technique to encrypt text using double encryption
JP5689826B2 (ja) 秘密計算システム、暗号化装置、秘密計算装置及びその方法、プログラム
JP5992651B2 (ja) 暗号化方法、プログラム、および、システム
KR20150122494A (ko) 암호화 장치, 암호화 방법, 복호화 방법 및 컴퓨터 판독가능 기록매체
CN103501220A (zh) 加密方法和装置
Smaoui et al. Cryptography with chaos and shadowing
KR101584220B1 (ko) 암호화 데이터 정렬 유지를 위한 인코딩 방법
CN111314052B (zh) 一种数据加密和解密方法
KR101583285B1 (ko) 확장 키를 이용한 블록 암호화 방법 및 그 방법에 따른 장치
KR101790325B1 (ko) 암호화 및 복호화 시스템
Polak et al. Breaking LFSR using genetic algorithm
Som et al. A simple algebraic model based polyalphabetic substitution cipher
Charru et al. Improved Cryptography Algorithm to Enhanced Data Security
Avramenko et al. Serial encryption using the functions of real variable
KR101553148B1 (ko) 비트 확장 방식을 이용한 암호화 장치 및 방법

Legal Events

Date Code Title Description
A201 Request for examination