KR20070086509A - 암호 작성 프로세싱의 스피드를 증가시키는 방법 및 장치 - Google Patents

암호 작성 프로세싱의 스피드를 증가시키는 방법 및 장치 Download PDF

Info

Publication number
KR20070086509A
KR20070086509A KR1020077014110A KR20077014110A KR20070086509A KR 20070086509 A KR20070086509 A KR 20070086509A KR 1020077014110 A KR1020077014110 A KR 1020077014110A KR 20077014110 A KR20077014110 A KR 20077014110A KR 20070086509 A KR20070086509 A KR 20070086509A
Authority
KR
South Korea
Prior art keywords
encryption
algorithm
encryption algorithm
applying
shared secret
Prior art date
Application number
KR1020077014110A
Other languages
English (en)
Other versions
KR100917073B1 (ko
Inventor
어니스트 브릭켈
게리 그라운케
Original Assignee
인텔 코오퍼레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인텔 코오퍼레이션 filed Critical 인텔 코오퍼레이션
Publication of KR20070086509A publication Critical patent/KR20070086509A/ko
Application granted granted Critical
Publication of KR100917073B1 publication Critical patent/KR100917073B1/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
    • 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]
    • 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
    • H04L9/0656Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
    • H04L9/0662Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
    • H04L9/0668Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator producing a non-linear pseudorandom sequence
    • 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/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or 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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Nonlinear Science (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Storage Device Security (AREA)

Abstract

캐스케이디드 블록 암호 시스템(cascaded block cipher system)에서 데이터를 암호화하는 것은, 제1 및 제2 파티들 사이에 공유된 비밀을 키로 이용하여 비밀 내부 키를 발생시키도록 제1 암호화 알고리즘을 적용하는 단계; 비밀 내부 키를 이용하여 복수의 평문 데이터 블록으로부터 복수의 암호문 데이터 블록을 발생시키도록 사전결정된 라운드 수만큼 제2 암호화 알고리즘을 적용하는 단계; 및 제1 암호화 알고리즘을 적용하는 단계와 제2 암호화 알고리즘을 적용하는 단계를 반복하는 단계에 의해 달성될 수 있다.
데이터 암호화(data encryption), 세션 키(session key), 비밀 내부 키(secret inner key), 암호문(ciphertext), 공유 비밀 상태(shared secret state)

Description

암호 작성 프로세싱의 스피드를 증가시키는 방법 및 장치{METHOD AND APPARATUS FOR INCREASING THE SPEED OF CRYPTOGRAPHIC PROCESSING}
본 명세서의 일부는 저작권 보호를 받는 자료를 포함한다. 누군가의 특허 문서 또는 특허 공개에 의한 팩스 복사에 대해 저작권자가 이를 금지하지는 않지만, 다른 경우에는 저작권이 적용된다.
본 발명은 일반적으로 암호 작성(cryptography)에 관한 것으로, 특히, 암호화(encryption) 및 암호 해독(decryption) 프로세싱에 관한 것이다.
평문(plaintext) 데이터의 내용을 인증되지 않은 액세스로부터 보호하기 위해 암호화 알고리즘이 평문 데이터를 암호문 데이터(ciphertext data)로 암호화하는데 사용된다. 이러한 프로세싱을 위한 다양한 암호화 알고리즘이 해당 기술분야에서 알려져 있다. 암호화는 하드웨어 또는 소프트웨어에서 구현될 수 있다. 소프트웨어에서 구현되는 경우, 일부 암호화 알고리즘은 많은 프로세싱 자원들(processing resources)을 소비할 수 있다. 예를 들어, 평문이 압축되지 않은 고선명 비디오 내용(high definition video content)을 표현하는 경우, 소프트웨어 기반 암호화는 일부 애플리케이션에 대하여 너무 느릴 수 있다. 그러므로, 충분한 보안을 그대로 제공하면서 암호화 프로세싱의 속도를 올리는 기술이 필요하다. 또 한, 암호 해독 프로세싱 속도를 올리는 대응 기술도 필요하다.
본 발명은 캐스케이디드 블록 암호 시스템(cascaded block cipher system)에서 데이터를 암호화하는 것이다. 본 발명은, 제1 및 제2 파티들 사이에 공유된 비밀을 키로 이용하여 비밀 내부 키를 발생시키도록 제1 암호화 알고리즘을 적용하는 단계; 비밀 내부 키를 이용하여 복수의 평문 데이터 블록으로부터 복수의 암호문 데이터 블록을 발생시키도록 사전결정된 라운드 수만큼 제2 암호화 알고리즘을 적용하는 단계; 및 제1 암호화 알고리즘을 적용하는 단계와 제2 암호화 알고리즘을 적용하는 단계를 반복하는 단계로 구성된다.
본 발명의 특징 및 장점들은 다음의 본 발명의 상세한 설명으로부터 명확해 질 것이다.
도 1은 본 발명의 일 실시예에 따른 암호화 유닛(encryption unit)의 다이어그램.
도 2는 본 발명의 일 실시예에 따라 암호화 프로세싱을 도시한 흐름도.
도 3은 본 발명의 일 실시예에 따른 암호화 시스템의 다어어그램.
도 4는 본 발명의 추가적인 실시예에 따라 암호화 프로세싱을 도시한 흐름도.
도 5는 본 발명의 실시예에 따라 경량 업데이트 함수(lightweight update function)를 위해 워드(word) 집합을 그리드 패턴으로 맵핑하는 다어어그램.
도 6은 본 발명의 일 실시예에 따른 경량 업데이트 함수의 흐름도.
도 7은 본 발명의 추가적인 실시예에 따른 암호화 시스템의 다어어그램.
본 발명의 실시예들은 빠르고 안전한 방법으로 암호 작성 알고리즘을 수행하기 위한 방법 및 장치를 포함한다. 본 발명의 실시예는 강력 보안(strong security)을 유지하면서 더 빠른 속도의 암호화를 달성하기 위해 감소된 라운드 암호화 알고리즘(reduced round encryption algorithm)과 함께 강력 카운터 모드 암호화 알고리즘(strong counter mode encryption algorithm)을 이용한다. 실시예들은 카운터 모드의 강력 외부 암호를 이용하여 키잉 재료(keying material)(내부 키) 및 빠르고, 각 생성된 내부 키와 함께 제한된 수의 암호화만큼만 동작하는 상대적으로 약한 내부 암호(weak inner cipher)를 제작하는 캐스케이딩 블록 암호 시스템(cascading block cipher system)을 포함한다. 적이 내부 암호를 해독하기 위한 충분한 평문/암호문 쌍을 얻지 못하도록 내부 키는 자주 변경된다. 또한, 적이 하나의 내부 키를 계산할 수 있더라도, 이 사실은 적이 다른 내부 키를 계산하는데 도움을 주지 않는다. 일부 실시예에서, 공유 비밀 상태는 카운터 모드의 대칭 암호화 알고리즘으로부터 발생되어 전반적인 암호화 프로세싱의 보안을 향상시킨다. 추가적으로, 대응 기술들은 암호 해독 프로세싱에 사용될 수 있다.
본 명세서에서 본 발명의 "일 실시예"에 관한 언급은 실시예에 관하여 설명된 특정 특징, 구조 또는 특성이 본 발명의 적어도 하나의 실시예에 포함된다는 것을 의미한다. 따라서, 본 명세서에 여러 곳에 있는 "일 실시예" 문구의 표시는 반드시 동일한 실시예를 언급하는 것은 아니다.
도 1은 본 발명의 일 실시예에 따라 암호화 유닛을 도시한다. 암호화 유닛(100)은 k개의 평문 데이터 블록 P(0,..,k-1)(102)을 암호문 데이터 C(0,..,k-1)(104)로 변환하는 암호화 프로세싱을 수행한다. 일부 실시예에 따르면, 암호화 유닛(100)는 아래에서 더 설명되는 암호화 동작들을 수행하는데 있어서 공유 비밀(106) 및 공유 비밀 상태(108) 값을 사용한다. 암호화 유닛(100)는 하드웨어 또는 소프트웨어에서 구현될 수 있다. 암호 해독을 수행하기 위해, 암호 해독 유닛(도시되지 않음)은 대응하는 암호 해독 동작들을 이용하여 암호문 블록들을 평문으로 변환한다.
도 2는 본 발명의 일 실시예에 따라 암호화 유닛(100)에 의해 수행되는 암호화 프로세싱을 도시하는 흐름도(200)이다. 보호된 방법으로 데이터를 교환하려고 하는 두 파티(party)가 있다고 하자. 제1 파티 및 제2 파티는 단계(202)에서 공지의 키 교환 절차를 수행하여 공유 비밀(106)을 정의한다. 일 실시예에서, 공지의 디피 헬만(Diffie-Hellman) 키 교환 절차가 사용될 수 있다. 일 실시예에서, 공유 비밀은 세션 키(session key)를 포함하고, 이 세션 키는 공유 비밀의 적어도 일 부분이 된다. 세션 키는 대칭 암호작성 프로세스(symmetric cryptographic processes)에 사용되는 암호작성 키(cryptographic key)가 될 수 있다. 다른 실시예에서, 공유 비밀은 임의 길이의 비트 스트링(예컨대 1024 비트, 2048 비트 등)을 포함하고, 세션 키는 공유 비밀을 입력 파라미터로 사용하는 계산에 의해 공유 비밀로부터 얻어질 수 있다.
단계(204)에서, 내부 키 카운터 j가 초기화될 수 있다. 단계(206)에서, 평문 데이터를 암호화하려고 하는 파티는 j번째 내부 키를 발생시키고, 각 내부 키(j=0,.. , 내부 키의 개수-1)는 세션 키를 키로 이용하는 카운터 j의 대칭 암호화와 동일하다. 일 실시예에서, 대칭 암호화 동작은 내부 키 스트림을 발생시키기 위해 고급 암호화 표준(Advanced Encryption Standard: AES) 카운터(CTR) 모드의 공지의 AES 알고리즘 애플리케이션(미국 국립 표준 기술 연구소(NIST) 특별 출판물 800-38A, 2001판에서 설명됨)을 포함한다. AES의 카운터 모드의 전형적인 사용에서, 카운터 j의 암호화가 평문 블록 P(i)를 암호문 블록으로 암호화하는데 직접 사용되는데, 예컨대, C(i)=P(i) XOR AES(j)이고, 여기서 AES(j)는 세션 키를 AES 키로 사용하는 카운터 j의 AES 암호화를 나타낸다. 그러나, 본 발명의 실시예에서, 내부 키는 본 명세서에서 설명된 바와 다른 방식 및 새로운 방식으로 사용될 수 있다. InnerKey(j)=AES(j)가 j번째 내부 키를 표시한다고 하자. 단계(208)에서, 암호화 파티는 InnerKey(j) 및 공지의 선택된 "경량(lightweight)" 암호화(LWE) 알고리즘을 이용하여 k개의 평문 P(j*k+0), P(j*k+1),.., P(j*k+k-1) 블록을 암호화하여 암호문 블록 C(j*k+0), C(j*k+1),..., C(j*k+k-1)을 형성한다.
일 실시예에서, 단계(208)의 암호화는 아래와 같이 수행된다.
i=j*k+0,...,j*k+k-1에 대하여, "경량(lightweight)" 암호화 알고리즘(LWE)을 이용하여, C(i)=InnerKey(j)에 의해 암호화된 P(i) 라 두자.
다음으로, 단계(210)에서, 내부 키 카운터(j)가 증가될 수 있다. 단계(212)에서, 평문 데이터의 모든 블록이 암호화되면, 프로세싱은 종료된다. 그렇지 않으 면, 평문 데이터의 더 많은 블록이 암호화되어야 하고, 따라서 카운터 j의 증가된 값을 이용하여 단계(206)에서 k개의 블록들의 다음 세트에 대해 프로세싱이 계속된다.
일 실시예에서, "경량(lightweight)" 암호화(LWE) 알고리즘은 공지의 표준 암호작성 알고리즘을 포함하지만, 더 적은 라운드를 이용하여 암호화가 표준 구현보다 훨씬 빨라진다. 예를 들어, 공지의 라인달 알고리즘(Rijndael algorithm)은 10회 대신에 2회 또는 3회 라운드만이 사용될 수 있다. 이와 달리, 공지의 서펜트 알고리즘(Serpent algorithm)은 32회 라운드 대신에 3내지 4회 라운드만이 사용될 수 있다. 더 적은 라운드를 이용함에도 불구하고, 암호화 결과는 본 발명에 따라 충분한 보안을 제공한다. 라이달 및 서펜트 알고리즘에 대한 자세한 내용은 앞서의 1998년 8월 20~22일의 "제1회 AES 지원자 회의(The First AES Candidate Conference)", NIST에서 찾아볼 수 있다. 다른 실시예에서, 이 알고리즘의 다른 회수의 라운드가 사용되거나, 다른 암호화 알고리즘이 사용될 수 있다.
이 실시예에서, 강력 카운터 모드 암호화 알고리즘(예컨대, AES)이 더 빠른 고리즘(예컨대, 적은 라운드 회수의 라인달 또는 서펜트)과 함께 사용될 수 있다.
본 발명의 일 실시예의 의사 코드(pseudo-code)가 표 1에 나타나 있다.
ⓒ 2004 Intel Corporation LWE를 예컨대 2 라운드 라인달 또는 3 라운드 서펜트와 같은 경량 암호화 프로세스라고 하자. i = 0 /* 데이터 블록의 수를 카운트 */ j = 0 /* 내부 키를 카운트 */ 모든 평문이 암호화 될 때까지 반복 {lnnerKey(j)<-j encrypted by Session Key using AES in Counter mode Repeat k times, /* k는 블록 크기 */ { C(i) <- P(i) encrypted by lnnerKey(j) using LWE i <- i + 1 } j ← j+1 }
도 3은 본 발명의 일 실시예에 따라 암호화 시스템의 다이어그램이다. 도 3의 캐스케이드된 블록 암호에서, 카운터 값(304)은 세션 키(302)와 같은 공유 비밀 및 카운터 모드의 AES(306)와 같은 대칭 암호화 알고리즘을 이용하여 암호화되어 내부 키를 생성한다(308). 내부 키(308)는 경량 암호화(LWE) 유닛과 함께 사용되어 평문 블록(102)을 암호문(104)으로 암호화한다. 일 실시예에서, LWE 유닛은 공지의 라인달 알고리즘의 2 또는 3 라운드의 구현을 포함한다. 이와 달리, LWE 유닛은 공지의 서펜트 알고리즘의 3 또는 4 라운드를 구현할 수 있다. 내부 키(308)는, 카운터 값(304)을 수정하고 이 수정된 카운터 값 및 카운터 모드의 AES 알고리즘을 이용하여 새로운 내부 키를 발생시킴으로써 빈번히 변경될 수 있다. 일 실시예에서, 카운터 값은 매 선택된 k개의 평문 데이터 블록들마다 증가될 수 있다. 내부 키를 빈번히 변경함으로써, 암호문 결과의 보안은 개선될 수 있다.
도 4는 본 발명의 추가적인 실시예에 따라 암호화 유닛(100)에 의해 수행되는 암호화 프로세싱을 도시한 흐름도이다. 이 실시예에서, 카운터 모드의 AES와 같은 암호화 알고리즘은 외부 암호(outer cipher)로 사용되어 내부 키 및 공유 상태(shared state)를 제공할 수 있고, 약하고 빠른 암호화 알고리즘은 내부 암호(inner cipher)로 사용되어 암호화 마스크(encryption mask)를 발생시킬 수 있다. 암호화 마스크는 평문 데이터와 XOR 연산되어 암호문 데이터를 제작할 수 있다.
캐스케이드된 암호 구조는 외부 및 내부 암호를 포함한다. 외부 암호는 키 스트림 발생기(key stream generator)로 사용되어 내부 암호에 사용되는 키들을 제작한다. 외부 암호는 또한 암호화 마스크의 생성에 있어 내부 암호에 의해 사용되는 공유 비밀 상태를 위한 상태 발생기(state generator)로 사용될 수 있다. 내부 암호는 감소된 라운드 수로 암호의 속도를 높이고 많은 양의 데이터를 다루는데 필요한 프로세싱 전력량을 감소시키는데 사용될 수 있다. 내부 암호는 상태를 암호화하여 평문 데이터와 XOR 연산된 비트 스트림을 제작하는데 사용될 수 있다. 공유 비밀 상태 모두가 암호화된 후에, 업데이트 함수가 공유 비밀 상태를 수정하는데 가해질 수 있다. 그 후 새로운 고유 비밀 상태는 비트 스트림을 연장하도록 암호화될 수 있다. 이 프로세스는 반복될 수 있다. 내부 암호의 감소된 강도(strength) 때문에, 내부 암호가 사용되도록 허가되는 블록의 개수는 작게 유지된다. 블록 한계(block limit)에 달하는 경우, 외부 암호가 새로운 내부 암호 키 및 공유 비밀 상태를 제작하도록 다시 사용된다.
보호된 방법으로 데이터를 교환하려는 두 파티가 있다고 가정하자. 제1 파티 및 제2 파티는 단계(600)에서 공지의 키 교환 절차를 수행하여 공유 비밀(106)을 정의한다. 일 실시예에서, 공유 비밀은 세션 키를 포함하고, 이 세션 키는 공유 비밀의 일부가 된다. 세션 키는 대칭 암호작성 프로세스에 사용되는 암호작성 키가 될 수 있다. 다른 실시예에서, 공유 비밀은 임의 길이의 비트 스트링을 포함한다. 공유 비밀은 공유 비밀 상태 R(108)로 알려진 복수의 암호작성 파라미터들을 만드는데 사용될 수 있다. 단계(602)에서, 각 파티는 공유 비밀에 기초하여 공유 비밀 상태 R의 자신의 고유의 복사본(copy)을 만든다. 공유 비밀 상태 R의 암호작성 파라미터들을 만드는 한가지 방법은 공지의 암호작성 해시 함수(cryptographic hash function)를 적용하는 것이다. 각 다른 암호작성 파라미터에 대하여, 파라미터 이름 및 공유 비밀은 암호작성 파라미터를 형성하도록 해시 함수를 적용하여 함께 해싱될 수 있다. 공유 비밀 상태 R의 암호작성 파라미터들을 만드는 또 다른 방법은 (예컨대, AES와 같은) 공지의 암호화 함수(encryption function)를 적용하는 것이다. 각 다른 암호작성 파라미터에 대해, 파라미터 이름은 공유 비밀(106)과 암호화되어 암호작성 파라미터를 형성한다. 다른 실시예에서, 다른 방법이 사용될 수 있다. 따라서, 두 파티는 공유 비밀(106)을 가지기 때문에, 이들은 다른 공유 비밀(108)을 형성할 수 있다. 단계(603)에서, 내부 키 카운터 j가 초기화될 수 있다.
단계(604)에서, 평문 데이터를 암호화하려고 하는 파티는 j번째 내부 키를 발생시키고, 여기서 각 내부 키(j=0,..., 내부 키 수-1)는 공유 비밀을 키로 이용하는 카운터 j의 대칭 암호화와 동일하다. 일 실시예에서, 사용된 공유 비밀은 세션 키를 포함한다. 일 실시예에서, 대칭 암호화 동작은 내부 키 스트림을 발생시키기 위해 고급 암호 표준(Advanced Encryption Standard: AES) 카운터(CTR) 모드의 공지의 AES 알고리즘 애플리케이션(미국 국립 표준 기술 연구소(NIST) 특별 출판물 800-38A, 2001판에서 설명됨)을 포함한다. AES의 카운터 모드의 전형적인 사용에서, 키 j의 암호화가 평문 블록 P(i)를 암호문 블록 C(i)=P(i) XOR 키 AES(j)으로 암호화하는데 직접 사용되는데, 여기서 AES(j)는 세션 키를 AES 키로 사용하는 카운터 j의 AES 암호화를 나타낸다. 그러나, 본 발명의 실시예에서, 내부 키는 본 명세서에서 설명된 바와 다른 방식 및 새로운 방식으로 사용될 수 있다.
일 실시예에서, R0, R1,..., Rk -1이 공유 비밀 상태 R을 표시하고, 여기서 k는 단계(602)에서 만들어진 암호작성 파라미터의 개수라고 하자. 단계(606)에서, 암호화 파티(encrypting party)는 단계(604)에서 발생한 내부 키 및 공유 비밀 상태 R을 이용하여 평문 P(0), P(1),..., P(k-1)의 k개 블록을 암호화하여 암호문 블록 C(0), C(1), ... , C(k-1)을 형성시킨다.
일 실시예에서, 단계(606)의 암호화는 다음과 같이 수행된다.
i=0,..., k-1에 대하여, T(i)="경량" 암호화 알고리즘(LWE)을 이용하여 내부 키(j)에 의해 암호화된 R(i) 로 두고, 여기서 T가 암호화 유닛 내의 임시 저장소라고 하면, C(i)=P(i) XOR T(i)로 된다.
다음으로, 단계(608)에서, 공유 비밀 상태 R은 "경량" 방법으로 업데이트될 수 있다. 일 실시예에서, 경량 업데이트는 내부 암호로서 2 라운드 AES 암호에 의해 수행될 수 있다. 또 다른 실시예에서, 경량 업데이트는 내부 암호로서 3 라운드 서펜트 암호에 의해 수행될 수 있다. 이들은 키 팽창 함수를 닮고, R(i) 값들의 혼합(mixing), 비선형성(non-linearity)을 제공하며, LWE 알고리즘보다 더 나은 성능을 제공한다.
공유 비밀 상태의 경량 업데이트(lightweight updating: LWUD)를 위한 AES 실시예에서, LWUD 및 AES 키 스케줄 사이의 차이는 LWUD가 마지막 블록 값을 이용하여 R(i) 값들 사이의 혼합(mixing)을 제공하는 점에 있다. 내부 암호로서 AES와 함께 사용되는 LWUD 함수는 키 스케쥴 같은 프로세스를 이용한다. LWUD 함수는 상태 데이터 내의 단일 R(i) 값에 대해 동작한다. 각 R(i) 값은 FIPS 197에 설명된 바와 같이 다루어지고 계속적으로 업데이트되는 네 개의 32비트 값들로 다루어진다. 제1 32 비트 값, Ri , 0는, 이전 블록, Ri -1,3의 마지막 워드로부터의 입력을 포함하는 S-박스 룩업(S-box lookup)을 이용한다. 만약 인덱스 i가 제로이면, RRCOUNT -1,3 값(랩 어라운드(wrap around))이 사용될 수 있다. 동작의 다음 순서는 Ri ,0을 업데이트하는데 사용될 수 있다.
1. 만약 i가 제로이면 temp를 Ri -1,3으로 설정하고 아니면 temp를 RRCOUNT -1, 3 로 설정
2. temp에 표준 AES RotWord() 변환을 적용; 리틀-엔디안(little-endian) 프로세서에서, 이것은 32 값의 24 비트 왼쪽 회전(left rotation)과 동일
3. temp에 표준 AES SubBytes() 변환을 적용하여 temp의 각 바이트가 자신의 표준 AES S-박스 값으로 교체되도록 함
4. Ri ,0을 temp XOR Ri , 0로 설정
나머지 값들, Ri ,1에서 Ri ,3은 이들을 이들과 블록 내의 이전 워드와의 XOR 값으로 설정하여 업데이트될 수 있다. 예를 들어, Ri ,2는 Ri ,2 XOR Ri ,1로 설정된다. 일 실시예에서, 추가적인 열 시프트(row shift)가 이 포인트에 더해질 수 있고, 따라서 열 2는 왼쪽으로 1 바이트 순환 시프트되고(cyclically shifted), 열 3은 왼쪽으로 2 바이트 순환 시프트되며, 열 4는 왼쪽으로 3 바이트 순환 시프트된다. 또 다른 실시예에서, temp와 Ri ,0의 XOR 값은 단계 3 후가 아닌 단계 3 전에 발생할 수 있다.
Ri -1,3 에 대한 랩 어라운드 참조(wrap around reference)를 다루기 위한 최적화(optimization)는 아래와 같다. 새로운 상태 데이터가 발생된 후, temp를 RRCOUNT -1,3으로 설정한다. 이것은 제1 시간 상태 블록 R0가 업데이트되는 랩 어라운드 케이스를 다룬다. 추가적으로, 블록이 업데이트될 때마다, temp를 Ri ,3으로 설정한다. 이는 내부 키가 변경될 때까지 랩 어라운드 케이스를 포함하는, 모든 블록 업데이트에 대한 모든 케이스들을 자동으로 다룬다.
서펜트 실시예에서, 다른 LWUD 함수가 사용될 수 있다. 서펜트 암호와 함께 사용하기 위한 업데이트 함수는 각각 128 비트로 된 4개의 표준 서펜트 블록들의 시퀀스(sequence)에 대해 동작한다. 각 4 블록 집합은 32 비트 리틀 엔디안(little-endian) 워드의 4×4(four-by-four) 그리드로 다루어진다. 도 5는 각 16 워드 세트를 업데이트된 함수에 의해 사용되는 그리드 패턴으로 매핑하는 것을 도시한다. 워드들은 메모리 순서로 나타난다. 상기 추천된 파라미터들을 이용하여, 상태 데이터 내의 8개의 128 비트 서펜트 블록은 두 세트의 그리드 데이터로 조직된다.
도 6은 이 실시예에 대한 전반적인 상태 업데이트 함수 흐름을 도시한다. 프로세스는 업데이트 단계들 사이에서 데이터를 전달(propagate)하는데 사용되는 임시의 4×4 "업데이트 그리드(update grid)"(도시되지 않음)를 이용한다. 도면의 왼쪽에서 오른쪽에 걸쳐 추천된 파라미터로 상태 업데이트를 완성하도록 수행되는 동작들이 나타나 있다. 업데이트 함수는 다음의 단계들을 이용한다.
1. 상태 데이터 내의 마지막 그리드를 업데이트 그리드로 복사
2. 데이터 회전 프로세스를 업데이트 그리드에 적용
3. 상태 내의 각 그리드에 대해, 아래를 실시
4. S-박스 교체(S-box substitution)를 업데이트 그리드에 적용
5. 업데이트 그리드의 각 워드를 자신과 현재 상태 그리드 내의 대응 워드의 XOR 값으로 교체
6. 현재 상태 그리드의 내용을 업데이트 그리드의 내용으로 덮어씀
회전 스테이지(rotate stage)는 상태 업데이트 함수의 시작에서 한번만 수행된다(상기 단계 2). 이는 상태 데이터 내의 모든 비트들 사이에서 대량의 상호작용(heavy interaction)을 유발한다. 이것은 프로세싱의 부분이 다른 업데이트 동작들에 비해 "느리기" 때문에 상태 데이터 내의 각 그리드의 프로세싱에서 수행되지 않는다.
도 4로 돌아와서, 단계(610)에서, 블록들을 암호화하고 업데이트하는 것(606 및 608)은 현재 InnerKey(j)를 이용하여 선택된 시간 횟수(본 명세서에서 g로 표기)만큼 반복될 수 있다. 새로운 내부 키는 단계(612)에서 발생될 수 있고 단계(606, 608, 및 610)는 k*g개의 평문 데이터 P 블록만큼 반복될 수 있다. 단계(614)에서, 매 선택된 반복 횟수 f 마다 새로운 공유 비밀 상태 R이 생성될 수 있다. 일 실시예에서, 새로운 공유 비밀 상태의 생성은 AES 암호화 알고리즘의 애플리케이션을 포함하여, "강력 업데이트(strong update)" 방법으로 새로운 내부 키를 이용하여 공유 비밀 상태의 각 파라미터를 암호화한다. 또 다른 실시예에서, 새로운 공유 비밀 상태 R의 생성은 카운터 j를 증가시키고, R0, R1, ..., Rk -1 값들에 대한 카운터의 다음 k 값의 암호화를 이용하여 달성될 수 있다. 평문 데이터의 모든 블록이 암호문 데이터로 처리되었을 때, 프로세싱은 끝난다.
일 실시예에서, k, g 및 f 파라미터는 f*k*g가 256 이하가 되도록 선택될 수 있다. 일 실시예에서, 공유 비밀 상태 R의 구성요소들은 공유 비밀로서 128 비트 키들을 이용하여 암호화될 수 있다.
본 발명의 일 실시예는 아래의 의사 코드 표 2에서 보다 형식적으로 정의된다.
ⓒ 2004 Intel Corporation 파라미터 k, g, 및 f를 선택 LWE를 예컨대 2나 3 라운드 라인달 또는 3이나 4 라운드 서펜트와 같은 경량 암호화 프로세스라고 하자. LWUD(Lightweight Update)를, 공유 비밀 상태 및 내부 키(j)를 입력으로 하고 새로운 공유 비밀 상태를 출력하는 함수라고 하자. LWUD는 빨라야 하고 암호작성 스크램블링(cryptographic scrambling) 동작을 수반해야 한다. SUD(Strong Update)를, 공유 비밀 상태 및 내부 키(j)를 입력으로 하고 새로운 공유 비밀 상태를 출력하는 함수라고 하자. SUD는 암호적으로 매우 강해야 하고 AES 암호와의 시간과 유사한 시간내에 수행되어야 한다. SUD의 예 Shared Secret State = R(O), R(1), ... , R(k-1) For i = 0 .. k-1, R(i) <- R(i) encrypted by InnerKey(j) using AES. i = 0 /* i는 전체 데이터 블록을 카운트 */ j = 0 /* j는 내부 키를 카운트 */ R(O), R(1),..., R(k-1 )를 공유 비밀 상태라고 하자 모든 평문이 암호화될 때까지 반복: {Repeat f times: /* 매 f 마다 공유 비밀 상태를 변경 */ {lnnerKey(j) <- j encrypted by Session Key using AES in Counter mode Repeat g times: {For ik = O to k - 1, {T(ik) <- R(ik) encrypted by lnnerKey(j) using LWE C(i) <- P(i) XOR T(ik) i <- i + 1 } Shared Secret State <- LWUD (Shared Secret State) } j <- j + 1 } Shared Secret State <- SUD (Shared Secret State) }
본 발명의 실시예의 효율성은 공지된 AES 알고리즘의 구현과 비교된다. 만약 LWE 알고리즘이 2 라운드의 공지된 라인달 알고리즘 또는 3 라운드의 공지된 서펜트 알고리즘이라면, LWE 프로세싱 시간은 AES 프로세싱 시간의 약 1/5이다. f*g*k 평문 블록을 암호화하는 AES 암호화 수를 세어보자. LWUD 및 SUD 방법이 예전에 주어진 예라고 가정하자. f 마스크를 계산하기 위한 f AES 암호화가 있다. mask(j)를 이용하는 LWE를 설정하기 위한 f 키 확장 동작이 또한 있다. 이것을 AES 암호화와 동일한 양의 시간으로 근사시키자. SUD를 계산하기 위한 k+1 AES 암호화가 있다. LWUD를 계산하기 위한 g*f LWE 암호화가 있고, T(ik)'s를 계산하기 위한 f*g*k LWE 암호화가 있다. 따라서 전체 프로세싱 시간은 대략 2f + k+1 + g*f/5 + f*g*k/5 AES 암호화이다. 만약 매 평문 블록당 상환된 계산량(amortized amount of computation)을 얻기 위해 이것을 f*g*k로 나누면, 2/(gk) + 1/(fg) + 1/(fgk) + 1/(5k) + 1/5를 얻는다. 만약 f=g=k=16으로 두면, 4 초과의 계획된 스피드 향상(projected speed improvement)에 대해, 이 합은 AES 암호화의 대략 23%이다. 일부 실시예에서, 3 라운드의 라인달 또는 4 라운드의 서펜트가 바람직할 수 있지만, 스피드 향상은 줄어들 것이다.
도 7은 본 발명의 추가적인 실시예에 따른 암호화 시스템의 다어어그램이다. 도 7의 캐스케이디드 블록 암호에서, 카운터 값(704)은 세션 키(702)와 같은 공유 비밀, 및 예컨대 카운터 모드의 AES(706)와 같은, 대칭 암호화 알고리즘을 이용하여 암호화되어 내부 키(708)를 제작한다. 일 실시예에서, AES는 공유 비밀 상태(712)를 발생시키는데 사용될 수 있다. 내부 키(708)는 경량 암호화(LWE) 유닛(710)과 함께 사용되어 암호화 마스크 T(711)를 발생시키고, 이 마스크는 XOR 함수(714)로의 입력이 되어 평문 블록(102)을 암호문(104)으로 암호화한다. 경량 업데이트 유닛(713)은 공유 비밀 상태(712)를 업데이트하는데 사용될 수 있다. 일 실시예에서, LWE 유닛은 공지된 라인달 알고리즘의 2 라운드 구현을 포함한다. 이와 달리, LWE 유닛은 3 라운드의 공지된 서펜트 알고리즘을 구현할 수 있다. 이와 달리, 3 라운드의 라인달 또는 4 라운드의 서펜트가 사용될 수 있다. 내부 키(708)는 카운터 값(704)을 수정하고 이 수정된 카운터 값 및 카운터 모드의 AES 알고리즘을 이용하여 새로운 내부 키를 발생시킴으로써 자주 변경될 수 있다. 일 실시예에서, 카운터 값은 매 선택된 k 블록의 평문 데이터에 대해 증가될 수 있다. 내부 키를 자주 변경함으로써, 만들어진 암호문의 보안이 향상될 수 있다. 주기적으로, 공유 비밀 상태(712)는 강력 업데이트 유닛(716)에 의해 다시 발생될 수 있다.
암호화 프로세싱이 본 명세서에서 다양한 실시예로 상세히 설명되어 있지만, 암호 해독 프로세싱의 수행은 본 발명에 기초하여 평문 데이터를 얻기 위해 암호문에 적절한 역 동작을 취하면 된다는 것을 당업자라면 알 수 있다.
본 명세서에 개시된 동작들은 일련의 프로세스로 설명되어 있지만, 일부 동작들은 사실 병렬로 또는 동시에 수행될 수 있다. 또한, 일부 실시예에서 동작들의 순서는 본 발명의 범위를 넘지 않는 한도 내에서 재조정될 수 있다.
본 명세서에 설명된 기술들은 임의의 특정 하드웨어 또는 소프트웨어 구성에 한정되지 않는다. 이 기술들은 임의의 연산 또는 프로세싱 환경에 적용될 수 있다. 기술들은 하드웨어, 소프트웨어, 또는 이들의 조합에서 구현될 수 있다. 기술들은, 프로세서, 프로세서에 의해 판독가능한 저장 매체(휘발성 및 비휘발성 메모리 및/또는 저장 요소를 포함), 적어도 하나의 입력 장치, 및 하나 이상의 출력 장치를 각각 포함하는, 모바일 또는 정지 컴퓨터(stationary computer), 개인용 디지털 보조기, 셋톱 박스, 셀룰라 텔레폰 및 페이저(pagers), 및 다른 전자 장치들과 같은 프로그램가능 기계(programmable machine) 상에서 실행되는 프로그램에서 구현될 수 있다. 입력 장치를 이용하여 입력된 데이터에 프로그램 코드가 적용되어 설명된 기능들을 수행하고 출력 정보를 발생시킨다. 출력 정보는 하나 이상의 출력 장치에 가해질 수 있다. 당업자라면 본 발명이 멀티프로세서 시스템, 미니컴퓨터, 메인프레임 컴퓨터 등을 포함하는 다양한 컴퓨터 시스템 구성들에 적용될 수 있다는 것을 알 수 있다. 본 발명은 또한 통신 네트워크를 통해 링크된 원격 프로세싱 장치들에 의해 작업이 수행될 수 있는 분산 연산 환경(distributed computing environments)에 또한 적용될 수 있다.
각 프로그램은 프로세싱 시스템과 통신하도록 하이 레벨 절차형 또는 객체 지향 프로그래밍 언어로 구현될 수 있다. 그러나, 원하는 경우 프로그램은 어셈블리어나 기계어로 구현될 수 있다. 어떤 경우에서도, 언어는 컴파일되거나 해석될 수 있다.
프로그램 인스트럭션(program instructions)은 이 인스트럭션으로 프로그램된 범용 또는 전용 프로세싱 시스템으로 하여금 본 명세서에 설명된 동작들을 수행하도록 하는데 사용될 수 있다. 이와 달리, 동작들은 이 동작들을 수행하기 위한 배선에 의해 접속된 로직(hardwired logic)을 포함하는 특정 하드웨어 구성요소들에 의해 또는 프로그램된 컴퓨터 구성요소들 및 커스텀 하드웨어 구성요소들에 의해 수행될 수 있다. 본 명세서에 설명된 방법들은 컴퓨터 프로그램 제품으로 제공될 수 있는데, 이 제품은 이 방법들을 수행하기 위해 프로세싱 시스템 또는 다른 전자 장치를 프로그램하는데 사용될 수 있는 인스트럭션을 저장한 기계 판독가능 매체를 포함할 수 있다. 본 명세서에서 사용된 "기계 판독가능 매체(machine readable medium)" 용어는 기계(machine)에 의해 수행되는 일련의 인스트럭션을 저장하거나 인코딩할 수 있고 기계로 하여금 본 명세서에 설명된 임의의 한 방법을 수행하도록 하는 임의의 매체를 포함한다. "기계 판독가능 매체(machine readable medium)" 용어는 따라서 반도체 메모리(solid-state memories), 광학 및 마그네틱 디스크, 및 데이터 신호를 인코딩하는 캐리어 웨이브(carrier wave) 등을 포함할 수 있다. 또한, 어떠한 조치를 취하거나 결과를 가져오는 점에서 소프트웨어를 여러가지 형태로(예컨대, 프로그램, 절차, 프로세스, 애플리케이션, 모듈, 장치, 로직 등) 말하는 것이 일반적이다. 이러한 표현들은 단지 프로세싱 시스템에 의한 소프트웨어의 실행이 프로세서로 하여금 결과를 가져오기 위한 액션을 수행하도록 하는 것을 속기 방식으로 기술한 것에 불과한다.
본 발명이 예시적인 실시예에 관하여 설명되어 있지만, 본 명세서는 제한적인 의미로 해석되어서는 안 된다. 본 발명에 관한 당업자에게 자명한 본 발명의 예시적인 실시예 및 다른 실시예들의 수정은 본 발명의 범위 및 사상 내에 있는 것으로 간주된다.

Claims (42)

  1. 데이터를 암호화하는 방법으로서,
    제1 및 제2 파티들 사이에 공유된 비밀(secret)을 키(key)로 이용하여 비밀 내부 키(secret inner key)를 발생시키도록 제1 암호화 알고리즘(encryption algorithm)을 적용하는 단계;
    상기 비밀 내부 키를 이용하여 복수의 평문 데이터(plaintext data) 블록으로부터 복수의 암호문 데이터(ciphertext data) 블록을 발생시키도록 사전결정된 라운드 수(predetermined number of rounds)만큼 제2 암호화 알고리즘을 적용하는 단계; 및
    상기 제1 암호화 알고리즘을 적용하는 단계 및 상기 제2 암호화 알고리즘을 적용하는 단계를 반복하는 단계
    를 포함하는 데이터 암호화 방법.
  2. 제1항에 있어서,
    상기 제2 암호화 알고리즘의 계산(computation)은 상기 제1 암호화 알고리즘의 계산보다 적고(less), 상기 제2 암호화 알고리즘은 상기 제1 암호화 알고리즘보다 약한(weaker) 데이터 암호화 방법.
  3. 제1항에 있어서,
    상기 제1 암호화 알고리즘은 카운터 모드(counter mode: CTR)로 동작하는 고급 암호화 표준(Advanced Encryption Standard: AES) 암호화 알고리즘을 포함하는 데이터 암호화 방법.
  4. 제1항에 있어서,
    상기 제2 암호화 알고리즘은 라인달 알고리즘(Rijndael algorithm)을 포함하는 데이터 암호화 방법.
  5. 제4항에 있어서,
    상기 사전결정된 라운드 수는 2 또는 3인 데이터 암호화 방법.
  6. 제1항에 있어서,
    상기 제2 암호화 알고리즘은 서펜트 알고리즘(Serpent algorithm)을 포함하는 데이터 암호화 방법.
  7. 제6항에 있어서,
    상기 사전결정된 라운드 수는 3 또는 4인 데이터 암호화 방법.
  8. 제1항에 있어서,
    상기 공유 비밀(shared secret)은 세션 키(session key)를 포함하는 데이터 암호화 방법.
  9. 제1항에 있어서,
    상기 제1 및 제2 파티들은 이 파티들 사이의 상기 공유 비밀을 교환하도록 키 교환 절차를 수행하는 데이터 암호화 방법.
  10. 제1항에 있어서,
    모든 평문 데이터 블록이 암호문 데이터로 암호화될 때까지 상기 제1 암호화 알고리즘을 적용하는 단계, 상기 제2 암호화 알고리즘을 적용하는 단계, 및 반복하는 단계를 반복하는 단계
    를 더 포함하는 데이터 암호화 방법.
  11. 복수의 기계 판독가능 인스트럭션들(machine readable instructions)을 갖는 저장 매체(storage medium)를 포함하는 물품으로서,
    상기 인스트럭션이 프로세서에 의해 실행되는 경우, 상기 인스트럭션은 평문 데이터에서 암호문 데이터로의 암호화를 제공하고, 상기 인스트럭션들은
    제1 및 제2 파티들 사이에 공유된 비밀을 키(key)로 이용하여 비밀 내부 키(secret inner key)를 발생시키도록 제1 암호화 알고리즘(encryption algorithm)을 적용하는 단계;
    상기 비밀 내부 키를 이용하여 복수의 평문 데이터(plaintext data) 블록으 로부터 복수의 암호문 데이터(ciphertext data) 블록을 발생시키도록 사전결정된 라운드 수만큼 제2 암호화 알고리즘을 적용하는 단계; 및
    상기 제1 암호화 알고리즘을 적용하는 단계 및 상기 제2 암호화 알고리즘을 적용하는 단계를 반복하는 단계
    를 포함하는 물품.
  12. 제11항에 있어서,
    상기 제1 암호화 알고리즘은 카운터 모드(CTR)로 동작하는 고급 암호화 표준(AES) 암호화 알고리즘을 포함하는 물품.
  13. 제11항에 있어서,
    상기 제2 암호화 알고리즘은 라인달 알고리즘 및 서펜트 알고리즘 중 적어도 하나를 포함하고, 상기 사전결정된 라운드 수는 2, 3 및 4 중 적어도 하나를 포함하는 물품.
  14. 제1 및 제2 파티들 사이의 공유된 비밀을 이용하여 비밀 내부 키를 발생시키는 제1 암호화 유닛(encryption unit); 및
    상기 비밀 내부 키를 이용하여 복수의 평문 데이터 블록으로부터 복수의 암호문 데이터 블록을 발생시키도록 사전결정된 라운드 수만큼 동작하는 제2 암호화 유닛
    을 포함하는 캐스케이딩 블록 암호 시스템(cascading block cipher system).
  15. 제14항에 있어서,
    상기 공유 비밀은 세션 키를 포함하는 캐스케이딩 블록 암호 시스템.
  16. 제14항에 있어서,
    상기 제1 암호화 유닛은 카운터 모드(CTR)로 동작하는 고급 암호화 표준(AES) 암호화 알고리즘을 구현하는 캐스케이딩 블록 암호 시스템.
  17. 제14항에 있어서,
    상기 제2 암호화 유닛은 라인달 알고리즘 및 서펜트 알고리즘 중 적어도 하나를 포함하고, 상기 사전결정된 라운드 수는 2, 3 및 4 중 적어도 하나를 포함하는 캐스케이딩 블록 암호 시스템.
  18. 데이터를 암호 해독하는 방법으로서,
    제1 및 제2 파티들 사이에 공유된 비밀을 키로 이용하여 비밀 내부 키를 발생시키도록 제1 암호화 알고리즘을 적용하는 단계;
    상기 비밀 내부 키를 이용하여 복수의 암호문 데이터 블록으로부터 복수의 평문 데이터 블록을 발생시키도록 사전결정된 라운드 수만큼 암호 해독 알고리즘(decryption algorithm)을 적용하는 단계; 및
    상기 제1 암호화 알고리즘을 적용하는 단계 및 상기 암호 해독 알고리즘을 적용하는 단계를 반복하는 단계
    를 포함하는 암호 해독 방법.
  19. 제18항에 있어서,
    상기 제1 암호화 알고리즘은 카운터 모드(CTR)로 동작하는 고급 암호화 표준(AES) 암호화 알고리즘을 포함하는 암호 해독 방법.
  20. 제18항에 있어서,
    상기 암호 해독 알고리즘은 라인달 알고리즘 및 서펜트 알고리즘 중 적어도 하나를 포함하고, 상기 사전결정된 라운드 수는 2, 3 및 4 라운드 중 적어도 하나를 포함하는 암호 해독 방법.
  21. 데이터를 암호화하는 방법으로서,
    제1 파티 및 제2 파티 사이에 공유된 비밀을 이용하여 공유 비밀 상태(shared secret state)를 만드는 단계;
    제1 및 제2 파티들 사이의 상기 공유된 비밀을 이용하여 카운터를 암호화하여 비밀 내부 키를 발생시키도록 카운터 모드의 제1 암호화 알고리즘을 적용하는 단계;
    상기 비밀 내부 키 및 상기 공유 비밀 상태를 이용하여 복수의 평문 데이터 블록으로부터 복수의 암호문 데이터 블록을 발생시키도록 사전결정된 라운드 수만큼 제2 암호화 알고리즘을 적용하는 단계;
    각 라운드 사이에 상기 공유 비밀 상태를 업데이트하는 단계; 및
    상기 카운터를 수정하고 상기 제1 암호화 알고리즘을 적용하는 단계, 상기 제2 암호화 알고리즘을 적용하는 단계, 및 상기 업데이트 하는 단계를 반복하는 단계
    를 포함하는 데이터 암호화 방법.
  22. 제21항에 있어서,
    제2 사전결정된 라운드 수 후에 새로운 공유 비밀 상태를 만드는 단계를 더 포함하는 데이터 암호화 방법.
  23. 제21항에 있어서,
    상기 제1 암호화 알고리즘은 카운터 모드(CTR)로 동작하는 고급 암호화 표준(AES) 암호화 알고리즘을 포함하는 데이터 암호화 방법.
  24. 제21항에 있어서,
    상기 제2 암호화 알고리즘은 라인달 알고리즘을 포함하는 데이터 암호화 방법.
  25. 제24항에 있어서,
    상기 사전결정된 라운드 수는 2 또는 3인 데이터 암호화 방법.
  26. 제21항에 있어서,
    상기 제2 암호화 알고리즘은 서펜트 알고리즘을 포함하는 데이터 암호화 방법.
  27. 제26항에 있어서,
    상기 사전결정된 라운드 수는 3 또는 4인 데이터 암호화 방법.
  28. 제21항에 있어서,
    상기 공유 비밀은 세션 키를 포함하는 데이터 암호화 방법.
  29. 제21항에 있어서,
    상기 제1 및 제2 파티들은 이 파티들 사이의 상기 공유 비밀을 교환하도록 키 교환 절차를 수행하는 데이터 암호화 방법.
  30. 제21항에 있어서,
    모든 평문 데이터 블록이 암호문 데이터로 암호화될 때까지 상기 제1 암호화 알고리즘을 적용하는 단계, 상기 제2 암호화 알고리즘을 적용하는 단계, 및 반복하 는 단계를 반복하는 단계
    를 더 포함하는 데이터 암호화 방법.
  31. 복수의 기계 판독가능 인스트럭션들을 갖는 저장 매체를 포함하는 물품으로서,
    상기 인스트럭션이 프로세서에 의해 실행되는 경우, 상기 인스트럭션은 평문 데이터를 암호문 데이터로 암호화하는 것을 제공하고, 상기 인스트럭션들은
    제1 파티 및 제2 파티 사이의 공유된 비밀을 이용하여 공유 비밀 상태(shared secret state)를 만드는 단계;
    제1 및 제2 파티들 사이의 상기 공유된 비밀을 이용하여 카운터를 암호화하여 비밀 내부 키를 발생시키도록 카운터 모드의 제1 암호화 알고리즘을 적용하는 단계;
    상기 비밀 내부 키 및 상기 공유 비밀 상태를 이용하여 복수의 평문 데이터 블록으로부터 복수의 암호문 데이터 블록을 발생시키도록 사전결정된 라운드 수만큼 제2 암호화 알고리즘을 적용하는 단계;
    각 라운드 사이에 상기 공유 비밀 상태를 업데이트하는 단계; 및
    상기 카운터를 수정하고 상기 제1 암호화 알고리즘을 적용하는 단계, 상기 제2 암호화 알고리즘을 적용하는 단계, 및 상기 업데이트 하는 단계를 반복하는 단계
    를 포함하는 물품.
  32. 제31항에 있어서,
    제2 사전결정된 라운드 수 후에 새로운 공유 비밀 상태를 만들기 위한 인스트럭션들을 더 포함하는 물품.
  33. 제31항에 있어서,
    상기 제1 암호화 알고리즘은 카운터 모드(CTR)로 동작하는 고급 암호화 표준(AES) 암호화 알고리즘을 포함하는 물품.
  34. 제31항에 있어서,
    상기 제2 암호화 알고리즘은 라인달 알고리즘 및 서펜트 알고리즘 중 적어도 하나를 포함하고, 상기 사전결정된 라운드 수는 2, 3 및 4 중 적어도 하나를 포함하는 물품.
  35. 캐스케이딩 블록 암호 시스템(cascading block cipher system)으로서,
    제1 파티 및 제2 파티에 알려진 공유 비밀 상태;
    상기 제1 및 제2 파티들 사이의 공유 비밀을 키로 사용하여 카운터를 암호화하여 비밀 내부 키를 발생시키도록 카운터 모드로 동작하는 제1 암호화 유닛;
    상기 비밀 내부 키 및 상기 공유 비밀 상태를 이용하여 암호화 마스크(encryption mask)를 발생시키도록 사전결정된 라운드 수만큼 동작하는 제2 암호 화 유닛;
    복수의 평문 데이터 블록 및 상기 암호화 마스크로부터 복수의 암호문 데이터 블록을 발생시키는 배타적 논리합(XOR) 로직; 및
    라운드 사이에 상기 공유 비밀 상태를 수정하는 제1 업데이트 유닛
    을 포함하는 캐스케이딩 블록 암호 시스템.
  36. 제35항에 있어서,
    제2 사전결정된 라운드 수 후에 새로운 공유 비밀 상태를 만드는 제2 업데이트 유닛을 더 포함하는 캐스케이딩 블록 암호 시스템.
  37. 제35항에 있어서,
    상기 공유 비밀은 세션 키를 포함하는 캐스케이딩 블록 암호 시스템.
  38. 제35항에 있어서,
    상기 제1 암호화 유닛은 카운터 모드(CTR)로 동작하는 고급 암호화 표준(AES) 암호화 알고리즘을 구현하는 캐스케이딩 블록 암호 시스템.
  39. 제35항에 있어서,
    상기 제2 암호화 유닛은 라인달 알고리즘 및 서펜트 알고리즘 중 적어도 하나를 구현하고, 상기 사전결정된 라운드 수는 2, 3 및 4 중 적어도 하나를 포함하 는 캐스케이딩 블록 암호 시스템.
  40. 제1 파티 및 제2 파티 사이의 공유된 비밀을 이용하여 공유 비밀 상태를 만드는 단계;
    제1 및 제2 파티들 사이의 상기 공유된 비밀을 이용하여 카운터를 암호화해서 비밀 내부 키를 발생시키도록 제1 암호화 알고리즘을 적용하는 단계;
    상기 비밀 내부 키 및 상기 공유 비밀 상태를 이용하여 복수의 암호문 데이터 블록으로부터 복수의 평문 데이터 블록을 발생시키도록 사전결정된 라운드 수만큼 암호 해독 알고리즘을 적용하는 단계;
    각 라운드 사이에 상기 공유 비밀 상태를 업데이트하는 단계; 및
    상기 카운터를 수정하고 상기 제1 암호화 알고리즘을 적용하는 단계, 상기 암호 해독 알고리즘을 적용하는 단계, 및 상기 업데이트 하는 단계를 반복하는 단계
    를 포함하는 데이터 암호 해독 방법.
  41. 제40항에 있어서,
    상기 제1 암호화 알고리즘은 카운터 모드(CTR)로 동작하는 고급 암호화 표준(AES) 암호화 알고리즘을 포함하는 데이터 암호 해독 방법.
  42. 제40항에 있어서,
    상기 암호 해독 알고리즘은 라인달 알고리즘 및 서펜트 알고리즘 중 적어도 하나를 구현하고, 상기 사전결정된 라운드 수는 2, 3 및 4 라운드 중 적어도 하나를 포함하는 암호 해독 방법.
KR1020077014110A 2004-12-09 2005-12-09 암호 작성 프로세싱의 스피드를 증가시키는 방법 및 장치 KR100917073B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/008,904 2004-12-09
US11/008,904 US8155306B2 (en) 2004-12-09 2004-12-09 Method and apparatus for increasing the speed of cryptographic processing

Publications (2)

Publication Number Publication Date
KR20070086509A true KR20070086509A (ko) 2007-08-27
KR100917073B1 KR100917073B1 (ko) 2009-09-15

Family

ID=35898866

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077014110A KR100917073B1 (ko) 2004-12-09 2005-12-09 암호 작성 프로세싱의 스피드를 증가시키는 방법 및 장치

Country Status (6)

Country Link
US (2) US8155306B2 (ko)
EP (1) EP1829276B1 (ko)
JP (1) JP2008523728A (ko)
KR (1) KR100917073B1 (ko)
CN (1) CN101073220B (ko)
WO (1) WO2006063275A1 (ko)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100864092B1 (ko) * 2006-11-23 2008-10-16 한국전자통신연구원 블록암호의 블록 체이닝 모드를 사용한 패킷 암호화 방법,이를 이용한 패킷 암/복호화 서비스 제공 방법
KR101005276B1 (ko) * 2008-01-07 2011-01-04 고려대학교 산학협력단 데이터 의존 연산을 사용하는 암호화 방법
KR101150289B1 (ko) * 2010-06-24 2012-05-24 충북대학교 산학협력단 복합 암호 시스템과 이를 이용한 복합 암호 알고리즘 구성 방법
KR20190060179A (ko) * 2017-11-24 2019-06-03 (주)잉카엔트웍스 공통 중간 언어를 위한 보안 제공 장치와 방법, 및 보안 실행 장치와 방법
US10411880B2 (en) 2015-10-29 2019-09-10 Samsung Sds Co., Ltd. Apparatus and method for encryption
CN112242970A (zh) * 2019-07-16 2021-01-19 丁爱民 一种数据分割加密安全加固方法及装置

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2594385C (en) * 2005-01-11 2012-11-27 Samsung Electronics Co., Ltd. Apparatus and method for ciphering/deciphering a signal in a communication system
JP4596256B2 (ja) * 2005-08-02 2010-12-08 ソニー株式会社 送受信システムおよび方法、送信装置および方法、受信装置および方法、並びにプログラム
EP1793606A1 (en) * 2005-12-05 2007-06-06 Microsoft Corporation Distribution of keys for encryption/decryption
US8139768B2 (en) * 2006-01-19 2012-03-20 Microsoft Corporation Encrypting content in a tuner device and analyzing content protection policy
US8209548B2 (en) * 2006-02-06 2012-06-26 International Business Machines Corporation Secure caching technique for shared distributed caches
DE102006027639B4 (de) * 2006-06-13 2008-06-19 Nec Europe Ltd. Verfahren zur Etablierung eines geheimen Schlüssels
WO2008061395A1 (fr) * 2006-11-23 2008-05-29 Tsinghua University Circuit de cryptage aes d'un flot de données exécuté lors d'un déséquencement
US8036377B1 (en) * 2006-12-12 2011-10-11 Marvell International Ltd. Method and apparatus of high speed encryption and decryption
US8000467B2 (en) * 2007-03-19 2011-08-16 Stmicroelectronics Sa Data parallelized encryption and integrity checking method and device
US7925009B2 (en) * 2007-05-25 2011-04-12 Red Hat, Inc. Hybrid data encryption
US8265272B2 (en) * 2007-08-29 2012-09-11 Red Hat, Inc. Method and an apparatus to generate pseudo random bits for a cryptographic key
US8781117B2 (en) * 2007-08-29 2014-07-15 Red Hat, Inc. Generating pseudo random bits from polynomials
US8416947B2 (en) * 2008-02-21 2013-04-09 Red Hat, Inc. Block cipher using multiplication over a finite field of even characteristic
US7945049B2 (en) * 2008-02-28 2011-05-17 Red Hat, Inc. Stream cipher using multiplication over a finite field of even characteristic
US8560587B2 (en) * 2008-05-22 2013-10-15 Red Hat, Inc. Non-linear mixing of pseudo-random number generator output
US8588412B2 (en) 2008-05-23 2013-11-19 Red Hat, Inc. Mechanism for generating pseudorandom number sequences
US8358781B2 (en) * 2008-11-30 2013-01-22 Red Hat, Inc. Nonlinear feedback mode for block ciphers
US9240927B2 (en) 2009-02-26 2016-01-19 Qualcomm Incorporated Methods and apparatus for enhanced overlay state maintenance
US8971530B2 (en) * 2009-06-24 2015-03-03 Intel Corporation Cryptographic key generation using a stored input value and a stored count value
US9026803B2 (en) * 2009-11-30 2015-05-05 Hewlett-Packard Development Company, L.P. Computing entities, platforms and methods operable to perform operations selectively using different cryptographic algorithms
US8515059B2 (en) * 2010-03-30 2013-08-20 Daniel W. Engels Cryptographic processor with dynamic update of encryption state
JP5167374B2 (ja) * 2011-01-21 2013-03-21 シャープ株式会社 データ暗号化装置、及び、メモリカード
US8498410B2 (en) * 2011-03-14 2013-07-30 Motorola Solutions, Inc. Methods for customizing a Rijndael block cipher
US9369274B2 (en) * 2012-07-06 2016-06-14 International Business Machines Corporation Cipher text translation
US8983069B2 (en) * 2013-03-14 2015-03-17 Robert Bosch Gmbh System and method for counter mode encrypted communication with reduced bandwidth
JP6178142B2 (ja) * 2013-07-12 2017-08-09 株式会社東芝 生成装置、方法およびプログラム
US20150033016A1 (en) * 2013-07-23 2015-01-29 Battelle Memorial Institute Systems and methods for securing real-time messages
US9800517B1 (en) * 2013-10-31 2017-10-24 Neil Anderson Secure distributed computing using containers
US9405919B2 (en) * 2014-03-11 2016-08-02 Qualcomm Incorporated Dynamic encryption keys for use with XTS encryption systems employing reduced-round ciphers
US10873454B2 (en) 2014-04-04 2020-12-22 Zettaset, Inc. Cloud storage encryption with variable block sizes
US10298555B2 (en) 2014-04-04 2019-05-21 Zettaset, Inc. Securing files under the semi-trusted user threat model using per-file key encryption
US9363247B2 (en) * 2014-04-04 2016-06-07 Zettaset, Inc. Method of securing files under the semi-trusted user threat model using symmetric keys and per-block key encryption
US10043029B2 (en) 2014-04-04 2018-08-07 Zettaset, Inc. Cloud storage encryption
CN104253684B (zh) * 2014-09-23 2018-02-02 深圳市汇顶科技股份有限公司 加密方法和加密装置
US9436847B2 (en) * 2014-09-26 2016-09-06 Intel Corporation Cryptographic pointer address encoding
KR102376506B1 (ko) 2014-10-20 2022-03-18 삼성전자주식회사 암복호화기, 암복호화기를 포함하는 전자 장치 및 암복호화기의 동작 방법
CN104333446B (zh) * 2014-11-10 2016-01-13 衡阳师范学院 一种新型超轻量级qtl分组密码实现方法
US10108820B2 (en) * 2015-01-20 2018-10-23 Mediatek Inc. Snapshot data and hibernation data processing methods and devices
US9773432B2 (en) * 2015-06-27 2017-09-26 Intel Corporation Lightweight cryptographic engine
CN108141353B (zh) * 2015-07-09 2020-06-26 华为技术有限公司 密码算法升级的方法及设备
CN105049204A (zh) * 2015-07-30 2015-11-11 苏州中科启慧软件技术有限公司 基于ctr模式和分组密码vh的轻量级流密码技术vhc
US9729310B2 (en) * 2015-10-08 2017-08-08 The Boeing Company Scrambled counter mode for differential power analysis resistant encryption
US10360820B2 (en) 2016-09-04 2019-07-23 Shahriar Pourazin Instrumentation privacy apparatus and method
KR101924067B1 (ko) 2016-10-28 2019-02-22 삼성에스디에스 주식회사 암호화 장치 및 방법
US11463236B2 (en) * 2016-12-09 2022-10-04 Cryptography Research, Inc. Programmable block cipher with masked inputs
RU173234U1 (ru) * 2017-03-06 2017-08-17 Общество с ограниченной ответственностью "КАСКАД" Устройство раунда шифрования данных по алгоритму "магма" и стандарту гост р 34.12-2015
RU2654078C1 (ru) * 2017-03-06 2018-05-16 Общество с ограниченной ответственностью "КАСКАД" Устройство раунда шифрования данных по алгоритму "магма" и стандарту гост р 34.12-2015
CN106911711A (zh) * 2017-03-30 2017-06-30 林星森 一种武器瞄准系统的安全加密方法
US10733318B2 (en) 2017-11-21 2020-08-04 International Business Machines Corporation Processing analytical queries over encrypted data using dynamical decryption
CN109379180B (zh) * 2018-12-20 2022-04-19 湖南国科微电子股份有限公司 Aes算法实现方法、装置及固态硬盘
JP7383985B2 (ja) * 2019-10-30 2023-11-21 富士電機株式会社 情報処理装置、情報処理方法及びプログラム
US11102005B2 (en) * 2020-01-23 2021-08-24 Bank Of America Corporation Intelligent decryption based on user and data profiling

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3591857B2 (ja) * 1993-12-27 2004-11-24 キヤノン株式会社 擬似乱数生成方法及び装置、通信方法及び装置
US5454039A (en) * 1993-12-06 1995-09-26 International Business Machines Corporation Software-efficient pseudorandom function and the use thereof for encryption
AU728942B2 (en) * 1995-06-30 2001-01-18 Canon Kabushiki Kaisha A communication apparatus and a communication system
JPH09233066A (ja) * 1996-02-23 1997-09-05 Sony Corp 暗号化/解読化方法および装置
AUPO799197A0 (en) * 1997-07-15 1997-08-07 Silverbrook Research Pty Ltd Image processing method and apparatus (ART01)
EP1161811B1 (en) * 1999-03-22 2007-08-29 Agency for Science, Technology and Research Method and apparatus for encrypting and decrypting data
WO2001058079A2 (de) 2000-02-04 2001-08-09 Christian Kossak Chiffriermethode
AU2001249511A1 (en) * 2000-03-31 2001-10-15 Vdg Inc. Authentication method and schemes for data integrity protection
US20020178360A1 (en) * 2001-02-25 2002-11-28 Storymail, Inc. System and method for communicating a secure unidirectional response message
US20020199001A1 (en) * 2001-02-25 2002-12-26 Storymail, Inc. System and method for conducting a secure response communication session
US6862354B1 (en) * 2000-09-29 2005-03-01 Cisco Technology, Inc. Stream cipher encryption method and apparatus that can efficiently seek to arbitrary locations in a key stream
CA2327911A1 (en) * 2000-12-08 2002-06-08 Cloakware Corporation Obscuring functions in computer software
US7987510B2 (en) * 2001-03-28 2011-07-26 Rovi Solutions Corporation Self-protecting digital content
GB2374260B (en) * 2001-10-12 2003-08-13 F Secure Oyj Data encryption
US20030165242A1 (en) * 2001-11-19 2003-09-04 Adrian Walker Confusion encryption
US7242766B1 (en) * 2001-11-21 2007-07-10 Silicon Image, Inc. Method and system for encrypting and decrypting data using an external agent
US7580972B2 (en) * 2001-12-12 2009-08-25 Valve Corporation Method and system for controlling bandwidth on client and server
US7236592B2 (en) * 2002-02-01 2007-06-26 International Business Machines Corporation Efficient stream cipher system and method
JP4491706B2 (ja) * 2002-04-19 2010-06-30 ソニー株式会社 暗号化復号化装置およびデータ受信装置
US7392384B2 (en) * 2002-06-28 2008-06-24 Hewlett-Packard Development Company, L.P. Method and system for secure storage, transmission and control of cryptographic keys
US7336783B2 (en) * 2003-01-24 2008-02-26 Samsung Electronics, C., Ltd. Cryptographic systems and methods supporting multiple modes
US7406176B2 (en) * 2003-04-01 2008-07-29 Microsoft Corporation Fully scalable encryption for scalable multimedia
US7472285B2 (en) * 2003-06-25 2008-12-30 Intel Corporation Apparatus and method for memory encryption with reduced decryption latency
KR101081729B1 (ko) * 2003-07-07 2011-11-08 로비 솔루션스 코포레이션 저작권 침해를 제어하고 쌍방향 컨텐츠를 인에이블시키기 위한 재프로그램가능한 보안

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100864092B1 (ko) * 2006-11-23 2008-10-16 한국전자통신연구원 블록암호의 블록 체이닝 모드를 사용한 패킷 암호화 방법,이를 이용한 패킷 암/복호화 서비스 제공 방법
KR101005276B1 (ko) * 2008-01-07 2011-01-04 고려대학교 산학협력단 데이터 의존 연산을 사용하는 암호화 방법
KR101150289B1 (ko) * 2010-06-24 2012-05-24 충북대학교 산학협력단 복합 암호 시스템과 이를 이용한 복합 암호 알고리즘 구성 방법
US10411880B2 (en) 2015-10-29 2019-09-10 Samsung Sds Co., Ltd. Apparatus and method for encryption
KR20190060179A (ko) * 2017-11-24 2019-06-03 (주)잉카엔트웍스 공통 중간 언어를 위한 보안 제공 장치와 방법, 및 보안 실행 장치와 방법
CN112242970A (zh) * 2019-07-16 2021-01-19 丁爱民 一种数据分割加密安全加固方法及装置
CN112242970B (zh) * 2019-07-16 2022-09-02 丁爱民 一种数据分割加密安全加固方法及装置

Also Published As

Publication number Publication date
CN101073220B (zh) 2013-03-27
US20120189119A1 (en) 2012-07-26
CN101073220A (zh) 2007-11-14
WO2006063275A1 (en) 2006-06-15
KR100917073B1 (ko) 2009-09-15
EP1829276A1 (en) 2007-09-05
US20060126843A1 (en) 2006-06-15
EP1829276B1 (en) 2013-03-20
US8155306B2 (en) 2012-04-10
JP2008523728A (ja) 2008-07-03

Similar Documents

Publication Publication Date Title
KR100917073B1 (ko) 암호 작성 프로세싱의 스피드를 증가시키는 방법 및 장치
US9031228B2 (en) Systems and methods for implementing block cipher algorithms on attacker-controlled systems
US8705731B2 (en) Selection of a lookup table with data masked with a combination of an additive and multiplicative mask
US20060023875A1 (en) Enhanced stream cipher combining function
US8094816B2 (en) System and method for stream/block cipher with internal random states
US8966279B2 (en) Securing the implementation of a cryptographic process using key expansion
US8504845B2 (en) Protecting states of a cryptographic process using group automorphisms
US8718280B2 (en) Securing keys of a cipher using properties of the cipher process
JP7031580B2 (ja) 暗号化装置、暗号化方法、復号化装置、及び復号化方法
US8699702B2 (en) Securing cryptographic process keys using internal structures
Asaad et al. Advanced Encryption Standard Enhancement with Output Feedback Block Mode Operation
US20020101985A1 (en) Single-cycle hardware implementation of crypto-function for high throughput crypto-processing
KR20190020988A (ko) 컴퓨터 실행 가능한 경량 화이트박스 암호화 방법 및 장치
US8687803B2 (en) Operational mode for block ciphers
Blaze et al. The MacGuffin block cipher algorithm
US20240097880A1 (en) High-speed circuit combining aes and sm4 encryption and decryption
KR100259836B1 (ko) N-라운드 라운드 출력문 귀환 블록 암호화/복호화 방법
US20230403134A1 (en) Method for processing encrypted data
JP2018514816A (ja) 変形鍵を用いる高速aes
Pitale et al. Cryptographic algorithm development and application for encryption and decryption
CN113343276B (zh) 基于广义二维猫映射的轻量级分组密码算法gcm的加密方法
Al-Kareem et al. Modify Twofish Algorithm to Lightweight using Present Techniques for Data Protection
Shrivas et al. Added Advanced Encryption Standard (A-Aes): With 512 Bits Data Block And 512, 768 And 1024 Bits Encryption Key
Hattab et al. Developing the Complexity and Security of the Twofish Algorithm Through a New Key Scheduling Design
ElShafee A 64 BITS ROTOR ENHANCED BLOCK CIPHER (REBC3)

Legal Events

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

Payment date: 20120904

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20130902

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140829

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20150827

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20160830

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee