KR20070039161A - 암호화 시스템, 방법 및 결합 함수 - Google Patents

암호화 시스템, 방법 및 결합 함수 Download PDF

Info

Publication number
KR20070039161A
KR20070039161A KR1020077004542A KR20077004542A KR20070039161A KR 20070039161 A KR20070039161 A KR 20070039161A KR 1020077004542 A KR1020077004542 A KR 1020077004542A KR 20077004542 A KR20077004542 A KR 20077004542A KR 20070039161 A KR20070039161 A KR 20070039161A
Authority
KR
South Korea
Prior art keywords
block
round
key
blocks
key stream
Prior art date
Application number
KR1020077004542A
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 KR20070039161A publication Critical patent/KR20070039161A/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/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
    • 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)
  • Storage Device Security (AREA)

Abstract

암호화 시스템 및 방법은 키 스트림 블록으로부터 복수의 라운드 키를 생성하고, 결합 함수를 수행하는 것을 포함한다. 평문 데이터 블록의 세트를 암호문 데이터 블록의 세트로 암호화하는 경우, 세트 내의 평문 데이터의 각 블록은 선택된 키 스트림 블록 및 선택된 라운드 키의 고유한 결합을 이용하여 프로세스되며, 키 스트림의 크기는 평문 데이터의 크기보다 작다. 암호문 데이터 블록의 세트를 평문 데이터 블록의 세트로 복호화하는 경우, 세트 내의 암호문 데이터의 각 블록은 선택된 키 스트림 블록 및 선택된 라운트 키의 고유한 결합을 이용하여 프로세스되며, 키 스트림의 크기는 암호문 데이터의 크기보다 작다.

Description

암호화 시스템, 방법 및 결합 함수{STREAM CIPHER COMBINING SYSTEM AND METHOD}
본 발명은 전반적으로 암호화에 관한 것으로서, 특히 스트림 암호화기 및 결합 함수에 관한 것이다.
몇몇 사례에서, 암호화 시스템은 압축되지 않은 비디오 데이터를 보호하도록 이용된다. 비디오 데이터는 압축되지 않으므로, 사용자에게 디스플레이하도록 프로세스될 데이터량이 매우 크다. 통상적으로, AES(Advanced Encryption Standard) 암호화기와 같은 알려진 블록 암호화기를 이용하는 이러한 데이터의 암호화는, 예를 들어, 몇몇 콘텐츠 보호 애플리케이션에 대해 너무 느리다.
전형적인 스트림 암호화기 부호화 연산에 있어서, 배타적 논리합과 같은 간단한 결합 연산을 이용함으로써 평문 데이터에 키 스트림을 직접 적용하여 암호문 데이터를 생성한다. 역으로, 복호화 연산 동안, 동일한 키 스트림에 의해 역결합 연산이 이용되어 다시 암호문 데이터를 평문 데이터로 변경한다. 이러한 접근 방법에 대한 한 가지 단점은 프로세스될 데이터로서 동일한 양의 키 스트림 비트를 필요로 한다는 점이다.
따라서 암호화 시스템의 성능 특성을 개선시키는 것과 같은 방식으로 평문 데이터의 크기보다 작은 키 스트림을 이용하여 적절한 보안성을 더 제공하는 암호화 시스템이 요구된다.
본 발명의 특징 및 장점은 후술하는 본 발명의 상세한 설명으로부터 보다 명백해질 것이다.
도 1은 본 발명의 실시예에 따른 암호화 시스템의 고 레벨 블록도이고,
도 2는 본 발명의 실시예에 따른 암호화 시스템의 키 생성 프로세싱을 도시하는 블록도이며,
도 3은 본 발명의 실시예에 따른 암호화 시스템에 의해 암호화를 위한 결합 함수 프로세싱을 도시하는 블록도이고,
도 4는 본 발명의 실시예에 따른 암호화 시스템에 의해 복호화를 위한 결합 함수 프로세싱을 도시하는 블록도이다.
본 발명의 실시예는 1 라운드 1회 블록 암호화기에서의 라운드 키로서 키 스트림의 일부분을 이용함으로써 스트림 암호화기 성능을 향상시키는 방법 및 장치이다. 이는 원하는 보안성을 보존하면서 동일한 양의 시간으로 더욱 많은 데이터가 암호화되거나 복호화되도록 한다.
본 발명의 실시예에서, 보다 적은 수의 키 스트림 블록은 기본 스트림 암호화기에 대해 통상 행해지는 바와 같이 연산될 수 있으나, 키 스트림 블록은 짧은 블록 암호화기 내에서 라운드 키로서 이용될 수도 있고, 각각의 키 스트림 블록의 결합은 라운드 키에 대한 기본으로서 최소 한번만 이용된다. 일 실시예에서, 평문 데이터 블록의 일부가 알려져 있는 경우(그에 따라 거의 알려져져 않은 평문의 블록이 도출 가능한 경우) 키 스트림에 대해 반대로 풀지 못하도록 결합 연산 간에 치환 박스(S 박스)와 같은 비선형 변환이 이용될 수도 있다. 짧은 블록 암호화기는 치환 연산에 대한 입력 데이터로서 다중 블록의 각각으로부터 대응하는 비트를 이용할 수 있으며, 다중 블록은 함께 암호화되거나 복호화될 수도 있다. 일 실시예에서, 키 스트림 비트에 대해 쉬프팅(shifting) 또는 다른 변환이 행해져 키 스트림의 초기 블록으로부터 후속적인 라운드 키를 형성할 수도 있다.
본 발명의 명세서에서 "일 실시예" 또는 "실시예"라고 지칭하는 것은 그 실시예와 관련하여 기술된 특정의 특성, 구조 또는 특징이 본 발명의 적어도 하나의 실시예에 포함된다는 것을 의미한다. 따라서, 명세서 전반에 걸쳐 각종 부분에서 나타나는 "일 실시예"란 표현의 등장은 반드시 동일한 실시예를 지칭할 필요는 없다.
도 1은 본 발명의 실시예에 따른 암호화 시스템(100)의 고 레벨 블록도이다. 이러한 시스템에서, 초기화 벡터(IV)(102 및 104)는 키 스트림 생성기(106)에 입력될 수 있다. 초기화 벡터는 복수의 랜덤하게(randomly) 또는 의사 랜덤하 게(pseudo-randomly) 생성된 비트를 포함한다. 일 실시예에서, IV는 비록 다른 실시예에서 다른 크기 및 블록의 수가 이용될 수 있으나, 4개의 블록을 포함할 수 있으며, IV의 각 블록 내의 비트 수는 128일 수 있다. 키(104)는 임의의 비트 시퀀스일 수 있다. 일 시시예에서, 키는 비밀로 유지된다. 실시예에서, 키의 비트 수는 128일 수 있으며, 다른 실시예에서 다른 크기가 이용될 수 있다. 키 스트림 생성기(106)는 키 및 IV를 채택하여 키 스트림(108)을 생성한다. 일 실시예에서, 키 스트림 생성기는 당 분야에서 통상의 지식을 가진 자에게 잘 알려진 방법에 따라, 카운터 모드(CTR) 또는 출력 피드백 모드(CFB)에서 동작하는 알려진 블록 암호화기를 채용함으로써 입력 데이터에 근거하여 키 스트림을 생성한다. 일 실시예에서, 키 스트림 생성기는 AEB 암호화기를 이용한다. 다른 실시예에서, 다른 알려진 블록 암호화기가 이용될 수도 있다. 또 다른 실시예에서, 블록 암호화기 대신에 키 스트림 생성기로서 스트림 암호화기(예를 들면, RC4)가 이용될 수 있다. 통상적으로, 키 스트림은 임의의 비트 길이일 수 있다. 본 발명의 실시예에서, 키 스트림은 평문(114)의 비트 수보다 적은 비트 수를 포함하여 결합 함수(116)의 전체 성능이 향상된다.
실시예에서, 키 스트림(108)은 라운드 키 생성기(110) 및 결합 함수(116)에 입력될 수도 있다. 라운드 키 생성기는 키 스트림의 블록을 이용하여 복수의 아운드 키를 생성한다. 일 실시예에서, 라운드 키는 4개의 키 스트림 블록에 대해 일시에 연산함으로써, 4개의 그룹으로 생성될 수 있다(일 실시예에서 각 블록은 128 비트를 포함함). 실시예에서, 라운드 키 생성기는 쉬프트 함수(특정 비트 수에 대 해 좌측 또는 우측)와 같은 논리 함수를 포함할 수도 있다. 다른 실시예에서, 키 스트림 블록에 대해 다른 논리 함수가 수행되어 라운드 키를 생성할 수도 있다. 라운드 키(112)는 임의의 크기로 이루어질 수도 있다. 일 실시예에서, 각각의 라운드 키는 128 비트를 포함할 수도 있다.
도 1에 도시한 바와 같은 일 실시예에서, 결합 함수(116)는 라운드 키(112) 및 키 스트림(108)을 이용하여 평문(114)을 암호문(118)으로 암호화할 수 있다. 이와 달리, 라운드 키 및 키 스트림을 이용하여 암호문(118)의 평문(114)으로의 복호롸를 수행하도록 역 수학적 특성을 갖는 결합 함수가 이용될 수 있다. 본 발명의 실시예에서 키 스트림은 평문보다 적으므로, 본 발명의 암호화기는 종래 기술의 방법보다 빠른 암호문을 생성한다.
도 2는 본 발명의 실시예에 따른 암호화 시스템의 키 생성 프로세싱을 도시하는 블록도이다. 이 도면은 도 1에 도시한 실시예의 블록(106-112)의 추가적인 세부 사항을 도시한다. 키(104) 및 IV(102)는 키 스트림 생성기(106)에 입력될 수도 있다. IV는 IV(200), IV+1(202), IV+2(204) 및 IV+3(206)으로 라벨링된 4개의 블록으로 그룹화될 수 있다. 일 실시예에서, 각각의 IV 블록은 128 비트를 포함한다. 다른 실시예에서, 다른 크기가 이용될 수 있다. IV의 각 블록은 블록 암호화기에 입력될 수 있다. 일 실시예에서, 블록 암호화기는 AES일 수 있다. 예를 들어, 도 2에 도시한 바와 같이, 제 1 블록 IV(200)는 제 1 AES(208)에 입력될 수 있고, 제 2 블록 IV+1(202)는 제 2 AES(210)에 입력될 수 있으며, 제 3 블록 IV+2(204)는 제 3 AES(212)에 입력될 수 있고, 제 4 블록 IV+3(206)는 제 4 AES(214)에 입력될 수 있다. AES 암호화기의 각각은, 예를 들어, 카운터(CTR) 모드에서 이용되어, 선택된 IV 블록 및 키에 대해 근거하여 키 스트림의 블록을 생성할 수 있다. (일 실시예에서) 4개의 블록 그룹에 대해 연산하는 경우, AES 암호화기는 키 스트림 0(KS0)(216), 키 스트림 1(KS1)(218), 키 스트림 2(KS2)(220) 및 키 스트림 3(KS3)(222)에 각각 입력될 수 있다. 키 스트림 생성기는 4개의 키 스트림 블록의 연속적인 세트를 시간 초과하여 생성하도록 연산될 수도 있다. 키 스트림 블록은 도시한 바와 같이, 복수의 라운드 키 생성기(RKG)(250, 252, 254, 256)에 입력될 수 있다. 각각의 RKG는 입력으로서 수신된 키 스트림의 블록을 이용하여 라운드 키를 생성한다. (일 실시예에서) 4애의 블록 그룹에 대해 하나의 반복으로 연산하는 경우, 4개의 RKG(250, 252, 254, 256)의 세트는 라운드 키 RK0(224), RK1(226), RK2(228), RK3(230)를 각각 생성한다. 일 실시예에서, 각각의 라운드 키는 128 비트이나, 다른 크기가 이용될 수 있다. 키 스트림 블록 및 라운트 키를 생성하는 각각의 경로는 병렬적으로 수행될 수 있다. 실시예에서, 4개의 RKG는 단일의 엔티티(entity)로 결합되어 4개의 모든 블록에 대해 일시에 라운트 키 생성 함수를 수행할 수 있다.
키 스트림 생성기 및 라운드 키 생성기에 의한 하나의 반복 프로세싱의 결과는 원래의 키(104) 및 초기화 벡터 블록(200, 202, 204, 206)로부터 도출되는, 4개의 키 스트림 블록 세트 (KS0, KS1, KS2, KS3), 4개의 라운드 키(RK0, RK1, RK2, RK3)이다. 본 발명의 실시예에서, 한 쌍의 키 스트림 블록 및 라운드 키의 고유한 결합 각각(예를 들면, (KS0, RK0), (KS1, RK1),...(KS3, RK2), (KS3, RK3))은, 2개 의 결합 함수(116) 라운드에 있어서의 키로서 이용되어 16개의 평문 블록으로부터 16개의 암호문 블록을 생성할 수 있다. 따라서, 키 스트림 데이터의 4개의 블록만을 이용하는 본 발명의 실시예에서 복호화 연산의 암호화는 16개의 데이어 블록에 대해 수행될 수 있다. 이로 인해 종래 기술의 시스템에 대해 4개의 인자까지 프로세싱이 향상된다.
이러한 성능 개선은 다음과 같이 획득될 수 있다. 도 3은 본 발명의 실시예에 따라 암호화를 위한 결합 함수 프로세싱을 도시하는 블록도이다. 통상적으로, 결합 함수는 2개의 라둔드 및 S 박스 변환 세트를 포함한다. 평문(114)은 결합 함수(116)에 입력될 수도 있다. 평문은 선택된 키 스트림 블록과 함께 반전 가능한 제 1 라운드 대수 함수에 입력되어 제 1 중간 결과를 생성한다. 제 1 중간 결과는 4개의 S 박스 세트에 전송된다. S 박스는 제 2 중간 결과를 생성한다. 제 2 중간 결과는 선택된 라운드 키와 함께 반전 가능한 제 2 라운드 대수 함수에 입력된다. 제 2 라운드의 출력은 암호문(118)을 포함한다. 평문 데이터 세트 내의 블록 각각은 결합 함수에 의해 실질적으로 프로세스되어 다른 모든 블록과 병렬적으로 암호문 데이터 블록의 세트를 생성한다.
일 실시예에서, 16개의 평문 데이터 스트림 블록의 각각의 연속적인 부분은 (결합 함수의 각 반복 부분에서) 4개의 블록의 4개의 그룹으로 분할되며, 이들 각각은, P0, P1, P2 및 P3(232); P4, P5, P6 및 P7(234); P8, P9, P10 및 P11(236); 및 P12, P13, P14 및 P15(238)로 분할되며, 각각의 블록은 128 비트를 포함한다. 따라서, 일 실시예에서, 세트 내의 블록 수는 16이다. 제 1 라운드 프로세싱에 대 해, 평문 블록 P0은 키 스트림 0(KS0)(216)과 함께 XOR과 같은 반전 가능한 대수 함수에 입력될 수 있다. XOR 핸들링(handling) P0의 출력은 제 1 S 박스(240)에 전송될 수 있다. 평문 블록 P1은 키 스트림 1(KS1)(218)과 함께 XOR과 같은 반전 가능한 대수 함수에 입력될 수 있다. XOR 핸들링 P1의 출력은 제 1 S 박스(240)에 전송될 수 있다. 평문 블록 P2는 키 스트림 2(KS2)(220)과 함께 XOR과 같은 반전 가능한 대수 함수에 입력될 수 있다. XOR 핸들링 P2의 출력은 제 1 S 박스(240)에 전송될 수 있다. 평문 블록 P3은 키 스트림 3(KS3)(222)과 함께 XOR과 같은 반전 가능한 대수 함수에 입력될 수 있다. XOR 핸들링 P3의 출력은 제 1 S 박스(240)에 전송될 수 있다.
마찬가지의 방식으로, 평문 블록 P4는 키 스트림 0(KS0)(216)과 함께 XOR과 같은 반전 가능한 대수 함수에 입력될 수 있다. 도 3의 명확성을 위해, KS0은 KS0의 행에서 XOR 함수의 각각에 대해 통과하는 것으로서 도시되어 있다. XOR 핸들링 P4의 출력은 제 2 S 박스(242)에 전송될 수 있다. 평문 블록 P5는 키 스트림 1(KS1)(218)과 함께 XOR과 같은 반전 가능한 대수 함수에 입력될 수 있다. 도 3의 명확성을 위해, KS1은 KS1의 행에서 XOR 함수의 각각에 대해 통과하는 것으로서 도시되어 있다. XOR 핸들링 P5의 출력은 제 2 S 박스(242)에 전송될 수 있다. 평문 블록 P6은 키 스트림 2(KS2)(220)과 함께 XOR과 같은 반전 가능한 대수 함수에 입력될 수 있다. 도 3의 명확성을 위해, KS2는 KS2의 행에서 XOR 함수의 각각에 대해 통과하는 것으로서 도시되어 있다. XOR 핸들링 P6의 출력은 제 2 S 박스(242)에 전송될 수 있다. 평문 블록 P7은 키 스트림 3(KS3)(222)과 함께 XOR과 같은 반 전 가능한 대수 함수에 입력될 수 있다. 도 3의 명확성을 위해, KS3은 KS3의 행에서 XOR 함수의 각각에 대해 통과하는 것으로서 도시되어 있다. XOR 핸들링 P7의 출력은 제 2 S 박스(242)에 전송될 수 있다.
마찬가지의 방식으로, 평문 블록 P8은 키 스트림 0(KS0)(216)과 함께 XOR과 같은 반전 가능한 대수 함수에 입력될 수 있다. XOR 핸들링 P8의 출력은 제 3 S 박스(244)에 전송될 수 있다. 평문 블록 P9는 키 스트림 1(KS1)(218)과 함께 XOR과 같은 반전 가능한 대수 함수에 입력될 수 있다. XOR 핸들링 P9의 출력은 제 3 S 박스(244)에 전송될 수 있다. 평문 블록 P10은 키 스트림 2(KS2)(220)과 함께 XOR과 같은 반전 가능한 대수 함수에 입력될 수 있다. XOR 핸들링 P10의 출력은 제 3 S 박스(244)에 전송될 수 있다. 평문 블록 P11은 키 스트림 3(KS3)(222)과 함께 XOR과 같은 반전 가능한 대수 함수에 입력될 수 있다. XOR 핸들링 P11의 출력은 제 3 S 박스(244)에 전송될 수 있다.
마찬가지의 방식으로, 평문 블록 P12는 키 스트림 0(KS0)(216)과 함께 XOR과 같은 반전 가능한 대수 함수에 입력될 수 있다. XOR 핸들링 P12의 출력은 제 4 S 박스(246)에 전송될 수 있다. 평문 블록 P13은 키 스트림 1(KS1)(218)과 함께 XOR과 같은 반전 가능한 대수 함수에 입력될 수 있다. XOR 핸들링 P13의 출력은 제 4 S 박스(246)에 전송될 수 있다. 평문 블록 P14는 키 스트림 2(KS2)(220)과 함께 XOR과 같은 반전 가능한 대수 함수에 입력될 수 있다. XOR 핸들링 P14의 출력은 제 4 S 박스(246)에 전송될 수 있다. 평문 블록 P15는 키 스트림 3(KS3)(222)과 함께 XOR과 같은 반전 가능한 대수 함수에 입력될 수 있다. XOR 핸들링 P15의 출 력은 제 4 S 박스(246)에 전송될 수 있다.
따라서, 16개의 XOR 함수의 각각은 16개의 평문 블록 중 하나를 프로세스하고 변환된 평문 데이터 블록을 치환 박스(S 박스)로 각각 전송한다. 각각의 S 박스(240, 242, 244 246)는 비선형 매핑 함수를 포함하여 4개의 입력 블록 토큰의 세트를 함께(예를 들면, 4개의 블록으로부터 512 비트) 4개의 출력 블록 세트로 변환한다. 본 멩세서에서는 당 분야에서 알려진 임의의 S 박스가 채용될 수 있다.
각 S 박스의 출력은 XOR 함수와 같은 16개의 반전 가능한 대수 함수 세트를 포함하는 제 2 라운드 결합 함수에 입력된다. 제 1 암호문 블록(264)은 다음과 같이 생성될 수 있다. 암호문 블록 C0은 제 1 S 박스(240)로부터 출력된 제 1 블록 출력 및 제 1 라운드 키 0(RK0)(224)에 대해 XOR 함수와 같은 반전 가능한 대수 함수를 수행함으로써 생성될 수 있다. 암호문 블록 C1은 제 1 S 박스(240)로부터 출력된 제 2 블록 출력 및 RK0(224)에 대해 XOR 함수와 같은 반전 가능한 대수 함수를 수행함으로써 생성될 수 있다. 암호문 블록 C2는 제 1 S 박스(240)로부터 출력된 제 3 블록 출력 및 RK0(224)에 대해 XOR 함수와 같은 반전 가능한 대수 함수를 수행함으로써 생성될 수 있다. 암호문 블록 C3은 제 1 S 박스(240)로부터 출력된 제 4 블록 출력 및 RK0(224)에 대해 XOR 함수와 같은 반전 가능한 대수 함수를 수행함으로써 생성될 수 있다.
마찬가지의 방식으로, 제 2 암호문 블록(266)은 다음과 같이 생성될 수 있다. 암호문 블록 C4는 제 2 S 박스(242)로부터 출력된 제 1 블록 출력 및 REK1(226)에 대해 XOR 함수와 같은 반전 가능한 대수 함수를 수행함으로써 생성될 수 있다. 암호문 블록 C5는 제 2 S 박스(242)로부터 출력된 제 2 블록 출력 및 RK1(226)에 대해 XOR 함수와 같은 반전 가능한 대수 함수를 수행함으로써 생성될 수 있다. 암호문 블록 C6은 제 2 S 박스(242)로부터 출력된 제 3 블록 출력 및 RK1(226)에 대해 XOR 함수와 같은 반전 가능한 대수 함수를 수행함으로써 생성될 수 있다. 암호문 블록 C7은 제 2 S 박스(242)로부터 출력된 제 4 블록 출력 및 RK1(226)에 대해 XOR 함수와 같은 반전 가능한 대수 함수를 수행함으로써 생성될 수 있다.
마찬가지의 방식으로, 제 3 암호문 블록(268)은 다음과 같이 생성될 수 있다. 암호문 블록 C8은 제 3 S 박스(244)로부터 출력된 제 1 블록 출력 및 RK2(228)에 대해 XOR 함수와 같은 반전 가능한 대수 함수를 수행함으로써 생성될 수 있다. 암호문 블록 C9는 제 3 S 박스(244)로부터 출력된 제 2 블록 출력 및 RK2(228)에 대해 XOR 함수와 같은 반전 가능한 대수 함수를 수행함으로써 생성될 수 있다. 암호문 블록 C10은 제 3 S 박스(244)로부터 출력된 제 3 블록 출력 및 RK2(228)에 대해 XOR 함수와 같은 반전 가능한 대수 함수를 수행함으로써 생성될 수 있다. 암호문 블록 C11은 제 3 S 박스(244)로부터 출력된 제 4 블록 출력 및 RK2(228)에 대해 XOR 함수와 같은 반전 가능한 대수 함수를 수행함으로써 생성될 수 있다.
마찬가지의 방식으로, 제 4 암호문 블록(270)은 다음과 같이 생성될 수 있다. 암호문 블록 C12는 제 4 S 박스(246)로부터 출력된 제 1 블록 출력 및 RK3(230)에 대해 XOR 함수와 같은 반전 가능한 대수 함수를 수행함으로써 생성될 수 있다. 암호문 블록 C13은 제 4 S 박스(246)로부터 출력된 제 2 블록 출력 및 RK3(230)에 대해 XOR 함수와 같은 반전 가능한 대수 함수를 수행함으로써 생성될 수 있다. 암호문 블록 C14는 제 4 S 박스(246)로부터 출력된 제 3 블록 출력 및 RK3(230)에 대해 XOR 함수와 같은 반전 가능한 대수 함수를 수행함으로써 생성될 수 있다. 암호문 블록 C15는 제 4 S 박스(246)로부터 출력된 제 4 블록 출력 및 RK3(230)에 대해 XOR 함수와 같은 반전 가능한 대수 함수를 수행함으로써 생성될 수 있다.
도 3에 데이터의 암호화가 도시되어 있으나, 당 분야에서 통상의 지식을 가진 자라면 데이터의 복호화가 마찬가지의 방식으로 휘급될 수 있으며, 역 연산 프로세싱에 의한 것은 아니라는 것을 인지할 것이다. 도 4는 본 발명의 실시예에 따른 암호화 시스템에 의해 암호화를 위한 결합 함수 프로세싱을 도시하는 블록도이다. 도 4에 도시한 바와 같이, 결함 함수(117)를 이용하여 암호문을 평문으로 다시 복호화하기 위해, (도 3에 도시한 바와 같이 암호화를 위해 데이터가 상부로부터 하부로 흐르는 것과는 반대로) 복호화를 위해 데이터가 도면의 하부로부터 상부로 흐른다. S 박스는 역 연산으로 함수되어 역 S 박스(241, 243, 245, 247)를 형성할 것이고, 당 분야에서 잘 알려져 있는 바와 같이, 다른 모든 반전 가능한 대수 함수의 역함수가 이용될 수도 있다.
다른 실시예에서, 도 3 및 도 4에 도시한 암호화 시스템의 각종 특성이 수정될 수도 있다. 예를 들어, 일 실시에에서, S 박스가 제거될 수도 있다. 이것은 저감된 보안성 비용으로 프로세스하는 시스템의 속도를 높인다. 실시예에서, 예를 들어, 가산, 또는 감산과 같이, XOR 이외의 다른 반전 가능한 대수 함수가 제 1 및 제 2 라운드에 대해 이용될 수도 있다. 암호화를 위해 가산 또는 감산이 이용되는 경우, 복호화를 위해 역 연산이 이용되어야 한다. 다른 실시예에서, 제 1 및 제 2 라운드에 대해 이용된 대수 함수가 상이할 수도 있다. 예를 들면, 제 1 라운드에서 XOR이 이용될 수도 있으며 제 2 라운드에서 2의 보수 가산이 이용될 수도 있다(또는 그 반대로 이용될 수도 있음). 또 다른 실시예에서, 동일한 라운드에서 프로세싱 블록을 위해 상이한 반전 가능한 대수 함수가 이용될 수도 있다. 다른 실시예에서, 블록의 크기가 변경될 수도 있다.
본 발명의 실시예의 결합 함수는 기본 스트림 암호화기에 비해 결합 함수의 상대적으로 빠른 연산으로 인해 통상의 스트림 암호화기의 결합 함수에 비해 성능 개선(예를 들어, 치환 연산의 특징에 따라, 4배 또는 8배까지 우수한)을 위한 작은 상수 인자를 허용한다.
소프트웨어로 구현되는 경우, 매우 빠른 통상의 스트림 암호화기가 이용된다 하더라도, 이것은, 예를 들어, 압축되지 않은 비디오 데이터의 콘텐츠 보호 연산이 아니라, 비디오 데이터의 프로세싱에 대해 더 높은 프로세서 성능을 허용할 수 있다. 하드웨어로 구현되는 경우, 동일한 성능을 얻기 위해 보다 적은 수의 게이트가 요구될 것이다.
본 명세서에서 기술된 기법은 임의의 특정한 하드웨어 또는 소프트웨어 구성으로 제한되지 않으나, 이들은 임의의 연산 또는 프로세싱 환경에서 응응성을 찾을 수 있다. 이 기법은 하드웨어, 소프트웨어, 또는 이 둘의 결합으로 구현될 수도 있다. 이 기법은 프로세서, 그 프로세서(휘발성 및 비휘발성 메모리 및/또는 저장 소자를 포함함)에 의해 판독 가능한 저장 매체, 적어도 하나의 입력 디바이스 및 하나 이상의 출력 디바이스를 각각 포함하는, 고정형 컴퓨터, PDA(personal digital assistant), 셋 탑 박스, 셀룰라폰, 호출기 및 다른 전자 디바이스와 같은 프로그램 가능한 머신 상에서 실행하는 프로그램으로 구현될 수도 있다. 입력 디바이스를 이용하여 입력된 데이터에 프로그램 코드를 인가하여 기술된 함수를 수행하고 출력 정보를 생성한다. 하나 이상의 출력 디바이스에 출력 정보가 인가될 수도 있다. 당 분야에서 통상의 지식을 가진 자라면 본 발명은 멀티프로세서 시스템, 미니컴퓨터, 메인프레림 컴퓨터 둥을 포함하여, 각종 컴퓨터 시스템 구성에 의해 실행될 수 있다. 본 발명은 통신 네트워크를 통해 링크되는 원격 프로세싱 디바이스에 의해 태스크가 수행될 수 있는 분산형 연산 환경에서 또한 실행될 수 있다.
고 레벨 프로시쥬어 또는 객체 지향 프로그래밍 언어에서 각각의 프로그램이 구현되어 프로세싱 시스템과 통신할 수도 있다. 그러나, 필요하다면, 어셈블리 또는 기계어로 프로그램이 구현될 수도 있다. 임의의 경우에, 이 언어는 컴파일(compile)돠거나 인터프리트(interprete)될 수 있다.
인스트럭션에 의해 프로그래밍되는 범용 또는 전용 프로세싱 시스템이 본 명세서에서 기술된 연산을 수행하도록 하기 위해 프로그램 인스트럭션이 이용될 수도 있다. 이와 달리, 연산은, 그 연산을 수행하는 하드와이어 로직(hardwired logic)을 포함하는 특정의 하드웨어 콤포넌트에 의해, 또는 프로그래밍된 컴퓨터 콤포넌 트 및 커스텀 하드웨어 콤포넌트의 임의의 결합에 의해 수행될 수도 있다. 본 명세서에서 기술된 방법은 프로세싱 시스템을 프로그래밍하는데 이용될 수 있는 인스트럭션을 저장한 머신 판독 가능한 매체 및 본 방법을 수행하는 다른 전자 디바이스를 포함할 수 있는 컴퓨터 프로그램 제품으로서 제공될 수 있다. 본 명세서에서 사용된 "머신 판독 가능한 매체"란 용어는, 머신에 의한 실행을 위해 인스트럭션의 시퀀스를 저장하거나 인코딩할 수 있으며, 머신이 본 명세서에서 기술된 임의의 방법 중 하나를 수행하도록 하는 임의의 매체를 포함할 것이다. 따라서 "머신 판독 가능한 매체"란 용어는 고체 상태 메모리, 광 디스크, 자기 디스크 및 데이터 신호를 인코딩하는 반송파를 포함할 것이나, 이에 한정되지는 않을 것이다. 또한, 당 분야에서 액션을 취하거나 결과를 야기하는 것으로서 하나의 형태 또는 다른 형태(예를 들어, 프로그램, 프로시쥬어, 프로세스, 애플리케이션, 모듈, 로직 등)로 소프트웨어를 지칭하는 것이 통상적이다. 이러한 표현은 단지 프로세서가 결과를 생성하는 액션을 수행하도록 하는 프로세싱 시스템에 의한 소프트웨어의 실행을 언급하는 간단한 방식일 뿐이다.
본 발명은 예시적인 실시예를 참조하여 기술되었으나, 이러한 기술은 본 발명을 제한하는 의미에서 구성되도록 의도된 것은 아니다. 예시적인 실시예의 각종 변형예 뿐만 아니라 본 발명의 다른 실시예는, 당 분야에서 통상의 지식을 가진 자에게 명백하며, 본 발명의 정신 및 범위 내에 속하는 것으로 간주된다.

Claims (70)

  1. 키 및 초기화 벡터에 적어도 부분적으로 근거하여 키 스트림(key stream)을 생성하는 키 스트림 생성기와,
    상기 키 스트림에 적어도 부분적으로 근거하여 복수의 라운드 키(a plurality of round keys)를 생성하는 라운드 키 생성기와,
    동등한 크기의 평문 데이터 블록의 세트, 상기 키 스트림, 상기 라운드 키에 적어도 부분적으로 근거하여 암호문 데이터 블록의 세트를 생성하며, 복수의 키 스트림 블록을 이용하여 상기 평문 데이터 블록에 대해 연산해서 제 1 중간 결과를 생성하는 제 1 라운드 대수 함수, 상기 제 1 중간 결과에 대해 연산하여 제 2 중간 결과를 생성하는 복수의 비선형 변환 함수, 상기 라운드 키를 이용하여 상기 제 2 중간 결과에 대해 연산해서 상기 암호문 데이터를 생성하는 제 2 라운드 대수 함수를 구비하는 결합 함수를 포함하는
    암호화 시스템.
  2. 제 1 항에 있어서,
    상기 평문 데이터 블록 세트 내의 평문 데이터의 각 블록은, 선택된 키 스트림 블록 및 선택된 라운드 키의 고유의 결합을 이용하여 상기 결합 함수에 의해 프로세스되는 암호화 시스템.
  3. 제 1 항에 있어서,
    각각의 비선형 변환 함수는 치환 박스(S 박스)를 포함하는 암호화 시스템.
  4. 제 1 항에 있어서,
    상기 키 스트림의 크기는 상기 평문 데이터의 크기보다 작은 암호화 시스템.
  5. 제 1 항에 있어서,
    상기 키 스트림 블록의 수는 상기 라운드 키의 수인 암호화 시스템.
  6. 제 1 항에 있어서,
    상기 제 1 라운드 대수 함수는 복수의 배타적 논리합(XOR) 함수를 포함하는 암호화 시스템.
  7. 제 1 항에 있어서,
    상기 제 1 라운드 대수 함수의 각각은 상기 평문 데이터 블록 및 상기 키 스 트림의 블록을 입력으로서 수용하여 상기 제 1 중간 결과의 블록을 생성하는 암호화 시스템.
  8. 제 1 항에 있어서,
    상기 제 2 라운드 대수 함수는 복수의 배타적 논리합(XOR) 함수를 포함하는 암호화 시스템.
  9. 제 1 항에 있어서,
    상기 제 2 라운드 대수 함수의 각각은 상기 제 2 중간 결과의 블록과, 상기 라운드 키 중 하나를 입력으로서 수용하여 상기 암호문 데이터 블록을 생성하는 암호화 시스템.
  10. 제 1 항에 있어서,
    상기 평문 데이터 블록의 세트 내의 평문 데이터의 각 블록은 실질적으로 상기 세트의 다른 모든 블록과 병렬적으로 상기 결합 함수에 의해 프로세스되어 상기 암호문 데이터를 생성하는 암호화 시스템.
  11. 복수의 키 스트림의 블록을 이용하여 평문 데이터 블록의 세트에 대해 연산해서 제 1 중간 결과를 생성하는 제 1 라운드 대수 함수와,
    상기 제 1 중간 결과에 대해 연산하여 제 2 중간 결과를 생성하는 복수의 비선형 변환 함수와,
    복수의 라운드 키를 이용하여 상기 제 2 중간 결과에 대해 연산해서 암호문 데이터 블록의 세트를 생성하는 제 2 라운드 대수 함수
    를 포함하는 결합 함수.
  12. 제 11 항에 있어서,
    상기 평문 데이터 블록의 세트 내의 평문 데이터의 각 블록은, 선택된 키 스트림 블록 및 선택된 라운드 키의 고유의 결합을 이용하여 상기 결합 함수에 의해 프로세스되는 결합 함수.
  13. 제 11 항에 있어서,
    각각의 비선형 변환 함수는 치환 박스(S 박스)를 포함하는 결합 함수.
  14. 제 11 항에 있어서,
    상기 키 스트림의 크기는 상기 평문 데이터의 크기보다 작은 결합 함수.
  15. 제 11 항에 있어서,
    상기 제 1 라운드 대수 함수는 복수의 배타적 논리합(XOR) 함수를 포함하는 결합 함수.
  16. 제 11 항에 있어서,
    상기 제 1 라운드 대수 함수의 각각은 상기 평문 데이터 블록 및 상기 키 스트림의 블록을 입력으로서 수용하여 상기 제 1 중간 결과의 블록을 생성하는 결합 함수.
  17. 제 11 항에 있어서,
    상기 제 2 라운드 대수 함수는 복수의 배타적 논리합(XOR) 함수를 포함하는 결합 함수.
  18. 제 11 항에 있어서,
    상기 제 2 라운드 대수 함수의 각각은 상기 제 2 중간 결과의 블록과, 상기 라운드 키 중 하나를 입력으로서 수용하여 상기 암호문 데이터 블록을 생성하는 결합 함수.
  19. 제 11 항에 있어서,
    상기 평문 데이터 블록의 세트 내의 평문 데이터의 각 블록은 실질적으로 상기 세트의 다른 모든 블록과 병렬적으로 상기 결합 함수에 의해 프로세스되어 상기 암호문 데이터를 생성하는 결합 함수.
  20. 초기화 벡터 및 키에 적어도 부분적으로 근거하여 복수의 키 스트림 블록(a plurality of blocks of a key stream)을 생성하는 단계와,
    복수의 라운드 키(a plurality of round key)를 생성하되, 각각의 라운드 키가 키 스트림 블록에 적어도 부분적으로 근거하는 단계와,
    암호문 데이터 블록의 세트를 생성하는 단계로서, i) 평문 데이터의 각 블록 및 선택된 키 스트림에 대해 제 1 라운드 대수 함수를 수행해서 제 1 중간 결과를 생성하고, ii) 상기 제 1 중간 결과에 대해 비선형 변환 함수를 수행하여 제 2 중 간 결과를 생성하며, iii) 상기 제 2 중간 결과 블록의 각각 및 선택된 라운드 키에 대해 제 2 라운드 대수 함수를 수행하여 암호문 데이터의 각 블록을 생성함으로써, 상기 평문 데이터 블록의 세트로부터 상기 암호문 데이터 블록의 세트를 생성하는 단계
    를 포함하는 암호화 방법.
  21. 제 20 항에 있어서,
    상기 평문 데이터 블록의 세트 내의 평문 데이터의 각 블록은, 선택된 키 스트림 블록 및 선택된 라운드 키의 고유의 결합을 이용하여 프로세스되는 암호화 방법.
  22. 제 20 항에 있어서,
    상기 키 스트림의 크기는 상기 평문 데이터의 크기보다 작은 암호화 방법.
  23. 제 22 항에 있어서,
    상기 키 스트림 블록의 수는 상기 라운드 키의 수인 암호화 방법.
  24. 제 20 항에 있어서,
    상기 제 1 라운드 대수 함수를 수행하는 단계는 복수의 배타적 논리합(XOR) 함수를 수행하는 것을 포함하는 암호화 방법.
  25. 제 20 항에 있어서,
    상기 제 2 라운드 대수 함수를 수행하는 단계는 복수의 배타적 논리합(XOR) 함수를 수행하는 것을 포함하는 암호화 방법.
  26. 제 20 항에 있어서,
    상기 평문 데이터 블록의 세트 내의 평문 데이터의 각 블록은 실질적으로 상기 세트의 다른 모든 블록과 병렬적으로 프로세스되어 상기 암호문 데이터를 생성하는 암호화 방법.
  27. 평문 데이터 블록의 세트로부터 암호문 데이터 블록의 세트를 생성하는 방법으로서,
    상기 평문 데이터의 각 블록 및 선택된 키 스트림 블록에 대해 제 1 라운드 대수 함수를 수행하여 제 1 중간 결과를 생성하는 단계와,
    상기 제 1 중간 결과에 대해 비선형 변환 함수를 수행하여 제 2 중간 결과를 생성하는 단계와,
    상기 제 2 중간 결과 블록의 각각 및 선택된 라운드 키에 대해 제 2 대수 함수를 수행하여 상기 암호문 데이터 블록의 각각을 생성하는 단계로서, 상기 선택된 라운드 키는 상기 키 스트림으로부터 적어도 부분적으로 생성되는 상기 생성 단계
    를 포함하는 암호화 방법.
  28. 제 27 항에 있어서,
    상기 평문 데이터 블록의 세트 내의 평문 데이터의 각 블록은, 선택된 키 스트림 블록 및 선택된 라운드 키의 고유의 결합을 이용하여 프로세스되는 암호화 방법.
  29. 제 27 항에 있어서,
    상기 키 스트림의 크기는 상기 평문 데이터의 크기보다 작은 암호화 방법.
  30. 제 27 항에 있어서,
    상기 평문 데이터 블록의 세트 내의 평문 데이터의 각 블록은 실질적으로 상기 세트의 다른 모든 블록과 병렬적으로 프로세스되어 상기 암호문 데이터를 생성하는 암호화 방법.
  31. 키 스트림 블록으로부터 복수의 라운드 키를 생성하는 단계와,
    평문 데이터 블록의 세트를 암호문 데이터 블록의 세트로 암호화하는 단계를 포함하며,
    상기 평문 데이터 블록의 세트 내의 평문 데이터의 각 블록은, 선택된 키 스트림 블록 및 선택된 라운드 키의 고유의 결합을 이용하여 프로세스되며, 상기 키 스트림의 크기는 상기 평문 데이터의 크기보다 작은
    암호화 방법.
  32. 제 31 항에 있어서,
    상기 평문 데이터 블록의 세트 내의 평문 데이터 블록 각각은 실질적으로 상기 세트의 다른 모든 블록과 병렬적으로 프로세스되어 상기 암호문 데이터를 생성하는 암호화 방법.
  33. 키 및 초기화 벡터에 적어도 부분적으로 근거하여 키 스트림을 생성하는 키 스트림 생성기와,
    상기 키 스트림에 적어도 부분적으로 근거하여 복수의 라운드 키를 생성하는 라운드 키 생성기와,
    동등한 크기의 암호문 데이터 블록의 세트, 상기 키 스트림, 상기 라운드 키에 적어도 부분적으로 근거하여 평문 데이터 블록의 세트를 생성하며, 상기 라운드 키를 이용하여 상기 암호문 데이터 블록에 대해 연산해서 제 1 중간 결과를 생성하는 제 1 라운드 대수 함수, 상기 제 1 중간 결과에 대해 연산하여 제 2 중간 결과를 생성하는 복수의 비선형 역변환 함수, 상기 복수의 키 스트림 블록을 이용하여 상기 제 2 중간 결과에 대해 연산해서 상기 평문 데이터를 생성하는 제 2 라운드 대수 함수를 구비하는 결합 함수를 포함하는
    암호화 시스템.
  34. 제 33 항에 있어서,
    상기 암호문 데이터 블록의 세트 내의 암호문 데이터 블록의 각각은, 선택된 키 스트림 블록 및 선택된 라운드 키의 고유의 결합을 이용하여 상기 결합 함수에 의해 프로세스되는 암호화 시스템.
  35. 제 33 항에 있어서,
    상기 키 스트림의 크기는 상기 암호문 데이터의 크기보다 작은 암호화 시스템.
  36. 제 33 항에 있어서,
    상기 키 스트림의 블록의 수는 상기 라운드 키의 수인 암호화 시스템.
  37. 제 33 항에 있어서,
    상기 제 1 라운드 대수 함수 및 상기 제 2 라운드 대수 함수 중 적어도 하나는 복수의 배타적 논리합(XOR) 함수를 포함하는 암호화 시스템.
  38. 제 33 항에 있어서,
    상기 제 1 라운드 대수 함수의 각각은 상기 암호문 데이터 블록 및 선택된 라운드 키를 입력으로서 수용하여 상기 제 1 중간 결과의 블록을 생성하는 암호화 시스템.
  39. 제 33 항에 있어서,
    상기 제 2 라운드 대수 함수의 각각은 상기 제 2 중간 결과의 블록 및 상기 키 스트림의 선택된 블록을 입력으로서 수용하여 상기 평문 데이터 블록을 생성하는 암호화 시스템.
  40. 제 33 항에 있어서,
    상기 암호문 데이터 블록의 세트 내의 암호문 데이터의 각 블록은 실질적으로 상기 세트의 다른 모든 블록과 병렬적으로 상기 결합 함수에 의해 프로세스되어 상기 평문 데이터를 생성하는 암호화 시스템.
  41. 복수의 라운드 키를 이용하여 암호문 데이터 블록의 세트에 대해 연산해서 제 1 중간 결과를 생성하는 제 1 라운드 대수 함수와,
    상기 제 1 중간 결과에 대해 연산하여 제 2 중간 결과를 생성하는 복수의 비선형 역변환 함수와,
    복수의 키 스트림 블록을 이용하여 상기 제 2 중간 결과에 대해 연산해서 평문 데이터 블록의 세트를 생성하는 제 2 라운드 대수 함수
    를 포함하는 결합 함수.
  42. 제 41 항에 있어서,
    상기 암호화 데이터 블록의 세트 내의 암호문 데이터 블록의 각각은, 선택된 키 스트림 블록 및 선택된 라운드 키의 고유의 결합을 이용하여 상기 결합 함수에 의해 프로세스되는 결합 함수.
  43. 제 41 항에 있어서,
    상기 키 스트림의 크기는 상기 암호문 데이터의 크기보다 작은 결합 함수.
  44. 제 41 항에 있어서,
    상기 제 1 라운드 대수 함수 및 상기 제 2 라운드 대수 함수 중 적어도 하나는 복수의 배타적 논리합(XOR) 함수를 포함하는 결합 함수.
  45. 제 41 항에 있어서,
    상기 제 1 라운드 대수 함수의 각각은 상기 암호문 데이터 블록 및 라운드 키를 입력으로서 수용하여 상기 제 1 중간 결과의 블록을 생성하는 결합 함수.
  46. 제 41 항에 있어서,
    상기 제 2 라운드 대수 함수의 각각은 상기 제 2 중간 결과의 블록과, 선택된 키 스트림 블록을 입력으로서 수용하여 상기 평문 데이터 블록을 생성하는 결합 함수.
  47. 제 41 항에 있어서,
    상기 암호문 데이터 블록의 세트 내의 암호문 데이터 블록 각각은 실질적으로 상기 세트의 다른 모든 블록과 병렬적으로 상기 결합 함수에 의해 프로세스되어 상기 평문 데이터를 생성하는 결합 함수.
  48. 초기화 벡터 및 키에 적어도 부분적으로 근거하여 복수의 키 스트림 블록을 생성하는 단계와,
    복수의 라운드 키를 생성하되, 각각의 라운드 키가 키 스트림 블록에 적어도 부분적으로 근거하는는 단계와,
    평문 데이터 블록의 세트를 생성하는 단계로서, i) 암호문 데이터 블록의 각각 및 선택된 라운트 키에 대해 제 1 라운드 대수 함수를 수행하여 제 1 중간 결과를 생성하고, ii) 상기 제 1 중간 결과에 대해 비선형 역변환 함수를 수행하여 제 2 중간 결과를 생성하며, iii) 상기 제 2 중간 결과의 각 블록 및 선택된 키 스트림 블록에 대해 제 2 라운드 대수 함수를 수행하여 평문 데이터의 각 블록을 생성함으로써, 상기 암호문 데이터 블록의 세트로부터 상기 평문 데이터 블록의 세트를 생성하는 단계
    를 포함하는 암호화 방법.
  49. 제 48 항에 있어서,
    상기 암호문 데이터 블록의 세트 내의 암호문 데이터의 각 블록은, 선택된 키 스트림 블록 및 선택된 라운드 키의 고유의 결합을 이용하여 프로세스되는 암호화 방법.
  50. 제 48 항에 있어서,
    상기 키 스트림의 크기는 상기 암호문 데이터의 크기보다 작은 암호화 방법.
  51. 제 48 항에 있어서,
    상기 키 스트림 블록의 수는 상기 라운드 키의 수인 암호화 방법.
  52. 제 48 항에 있어서,
    상기 제 1 라운드 대수 함수 및 상기 제 2 라운드 대수 함수 중 적어도 하나를 수행하는 단계는 복수의 배타적 논리합(XOR) 함수를 수행하는 것을 포함하는 암호화 방법.
  53. 제 48 항에 있어서,
    상기 암호문 데이터 블록의 세트 내의 암호문 데이터의 각 블록은 실질적으로 상기 세트의 다른 모든 블록과 병렬적으로 프로세스되어 상기 평문 데이터를 생성하는 암호화 방법.
  54. 복수의 머신 판독 가능한 인스트럭션을 갖는 저장 매체를 포함하는 제품으로서, 인스트럭션이 프로세서에 의해 실행되는 경우, 상기 인스트럭션은,
    초기화 벡터 및 키에 적어도 부분적으로 근거하여 복수의 키 스트림 블록을 생성하는 단계와,
    복수의 라운드 키를 생성하되, 각각의 라운드 키가 키 스트림 블록에 적어도 부분적으로 근거하는 단계와,
    평문 데이터 블록의 세트를 생성하는 단계로서, i) 암호문 데이터의 각 블록 및 선택된 라운트 키에 대해 제 1 라운드 대수 함수를 수행하여 제 1 중간 결과를 생성하고, ii) 상기 제 1 중간 결과에 대해 비선형 역변환을 수행하여 제 2 중간 결과를 생성하며, iii) 상기 제 2 중간 결과의 각 블록 및 선택된 키 스트림 블록에 대해 제 2 라운드 대수 함수를 수행하여 평문 데이터의 각 블록을 생성함으로써, 상기 암호문 데이터 블록의 세트로부터 상기 평문 데이터 블록의 세트를 생성하는 단계
    를 포함하는 제품.
  55. 제 54 항에 있어서,
    상기 암호문 데이터 블록의 세트 내의 암호문 데이터 각 블록은, 선택된 키 스트림 블록 및 선택된 라운드 키의 고유의 결합을 이용하여 프로세스되는 제품.
  56. 제 54 항에 있어서,
    상기 키 스트림의 크기는 상기 암호문 데이터의 크기보다 작은 제품.
  57. 제 54 항에 있어서,
    상기 키 스트림 블록의 수는 상기 라운드 키의 수인 제품.
  58. 제 54 항에 있어서,
    상기 암호문 데이터 블록의 세트 내의 암호문 데이터의 각 블록은 실질적으로 상기 세트의 다른 모든 블록과 병렬적으로 프로세스되어 상기 평문 데이터를 생성하는 제품.
  59. 암호문 데이터 블록의 세트로부터 평문 데이터 블록의 세트를 생성하는 방법으로서,
    상기 암호문 데이터의 각 블록 및 선택된 라운트 키에 대해 제 1 라운드 대수 함수를 수행하여 제 1 중간 결과를 생성하는 단계와,
    상기 제 1 중간 결과에 대해 비선형 역변환을 수행하여 제 2 중간 결과를 생성하는 단계와,
    상기 제 2 중간 결과의 각 블록 및 선택된 키 스트림 블록에 대해 제 2 라운드 대수 함수를 수행하여 상기 평문 데이터의 각 블록을 생성하되, 상기 선택된 라운드 키는 상기 키 스트림으로부터 적어도 부분적으로 생성되는 단계
    를 포함하는 암호화 방법.
  60. 제 59 항에 있어서,
    상기 암호문 데이터 블록의 세트 내의 암호문 데이터 각 블록은, 선택된 키 스트림 블록 및 선택된 라운드 키의 고유의 결합을 이용하여 프로세스되는 암호화 방법.
  61. 제 59 항에 있어서,
    상기 키 스트림의 크기는 상기 암호문 데이터의 크기보다 작은 암호화 방법.
  62. 제 59 항에 있어서,
    상기 암호문 데이터 블록의 세트 내의 암호문 데이터 블록 각각은 실질적으로 상기 세트의 다른 모든 블록과 병렬적으로 프로세스되어 상기 평문 데이터를 생성하는 암호화 방법.
  63. 복수의 머신 판독 가능한 인스트럭션을 갖는 저장 매체를 포함하는 제품으로서, 상기 인스트럭션이 프로세서에 의해 실행될 때, 상기 인스트럭션은,
    암호문 데이터의 각 블록 및 선택된 라운트 키에 대해 제 1 라운드 대수 함수를 수행하여 제 1 중간 결과를 생성하고,
    상기 제 1 중간 결과에 대해 비선형 역변환 함수를 수행하여 제 2 중간 결과 를 생성하며,
    상기 제 2 중간 결과의 각 블록 및 선택된 키 스트림 블록에 대해 제 2 라운드 대수 함수를 수행하여 평문 데이터의 각 블록을 생성하되, 선택된 라운드 키는 상기 키 스트림으로부터 적어도 부분적으로 생성되도록 함으로써,
    상기 암호문 데이터 블록의 세트로부터 상기 평문 데이터 블록의 세트를 생성하는
    제품.
  64. 제 63 항에 있어서,
    상기 암호문 데이터 블록의 세트 내의 암호문 데이터 각 블록은, 선택된 키 스트림 블록 및 선택된 라운드 키의 고유의 결합을 이용하여 프로세스되는 제품.
  65. 제 63 항에 있어서,
    상기 키 스트림의 크기는 상기 암호문 데이터의 크기보다 작은 제품.
  66. 제 63 항에 있어서,
    상기 암호문 데이터 블록의 세트 내의 암호문 데이터의 각 블록은 실질적으 로 상기 세트의 다른 모든 블록과 병렬적으로 프로세스되어 상기 평문 데이터를 생성하는 제품.
  67. 키 스트림 블록으로부터 복수의 라운드 키를 생성하는 단계와,
    암호문 데이터 블록의 세트를 평문 데이터 블록의 세트로 복호화하는 단계를 포함하며,
    상기 암호문 데이터 블록의 세트 내의 암호문 데이터 각 블록은, 선택된 키 스트림 블록 및 선택된 라운드 키의 고유의 결합을 이용하여 프로세스되고,
    상기 키 스트림의 크기는 상기 암호문 데이터의 크기보다 작은
    암호화 방법.
  68. 제 67 항에 있어서,
    상기 암호문 데이터 블록의 세트 내의 암호문 데이터의 각 블록은 실질적으로 상기 세트의 다른 모든 블록과 병렬적으로 프로세스되어 상기 평문 데이터를 생성하는 암호화 방법.
  69. 복수의 머신 판독 가능한 인스트럭션을 갖는 저장 매체를 포함하는 제품으로 서, 상기 인스트럭션이 프로세서에 의해 실행될 때, 상기 인스트럭션은,
    키 스트림 블록으로부터 복수의 라운드 키를 생성하고,
    암호문 데이터 블록의 세트를 평문 데이터 블록의 세트로 복호화하며,
    상기 암호문 데이터 블록의 세트 내의 암호문 데이터 각 블록은, 선택된 키 스트림 블록 및 선택된 라운드 키의 고유의 결합을 이용하여 프로세스되고,
    상기 키 스트림의 크기는 상기 암호문 데이터의 크기보다 작은
    제품.
  70. 제 69 항에 있어서,
    상기 암호문 데이터 블록의 세트 내의 암호문 데이터의 각 블록은 실질적으로 상기 세트의 다른 모든 블록과 병렬적으로 프로세스되어 상기 평문 데이터를 생성하는 제품.
KR1020077004542A 2004-07-30 2005-07-15 암호화 시스템, 방법 및 결합 함수 KR20070039161A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/909,004 US20060023875A1 (en) 2004-07-30 2004-07-30 Enhanced stream cipher combining function
US10/909,004 2004-07-30

Publications (1)

Publication Number Publication Date
KR20070039161A true KR20070039161A (ko) 2007-04-11

Family

ID=35447733

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077004542A KR20070039161A (ko) 2004-07-30 2005-07-15 암호화 시스템, 방법 및 결합 함수

Country Status (5)

Country Link
US (1) US20060023875A1 (ko)
EP (1) EP1779584A1 (ko)
KR (1) KR20070039161A (ko)
CN (1) CN1993922B (ko)
WO (1) WO2006012363A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101068367B1 (ko) * 2008-02-27 2011-09-28 인텔 코오퍼레이션 병렬 연산 모드에서 aes 암호화 및 암호 해독을 최적화하는 방법 및 장치

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8050401B2 (en) * 2005-09-27 2011-11-01 The Boeing Company High speed configurable cryptographic architecture
KR101369748B1 (ko) * 2006-12-04 2014-03-06 삼성전자주식회사 데이터 암호화 방법 및 그 장치
US8538015B2 (en) 2007-03-28 2013-09-17 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
CN100594691C (zh) * 2007-10-09 2010-03-17 华中科技大学 Manet网络的数据传递加密方法
KR100930591B1 (ko) * 2007-12-10 2009-12-09 한국전자통신연구원 고속 세션 변경이 가능한 암호화 장치
US20100014671A1 (en) * 2008-06-19 2010-01-21 General Instrument Corporation Secure interchip transport interface
US20100158243A1 (en) * 2008-12-19 2010-06-24 Robert Bosch Gmbh Method of encryption in networked embedded systems
FR2963713A1 (fr) * 2010-08-04 2012-02-10 St Microelectronics Grenoble 2 Procede de chiffrement d'un flux de donnees
US10439802B2 (en) * 2010-08-04 2019-10-08 Lawrence P. Huang System for scrambling and methods for use therewith
CN101945383B (zh) * 2010-09-06 2013-09-25 苏州国芯科技有限公司 一种用于无线局域网的面积紧凑的算法硬件实现方法
US9331848B1 (en) * 2011-04-29 2016-05-03 Altera Corporation Differential power analysis resistant encryption and decryption functions
CN104011709B (zh) * 2011-12-22 2018-06-05 英特尔公司 在256位数据路径中执行jh加密散列的指令
US9639597B2 (en) 2012-10-30 2017-05-02 FHOOSH, Inc. Collecting and classifying user information into dynamically-updated user profiles
CN104158788B (zh) * 2013-05-13 2017-08-29 普天信息技术研究院有限公司 一种端到端传输数据的方法
US9407437B1 (en) 2014-03-25 2016-08-02 Amazon Technologies, Inc. Secure initialization vector generation
KR20170005850A (ko) * 2014-05-14 2017-01-16 미쓰비시덴키 가부시키가이샤 암호 장치, 기억 시스템, 복호 장치, 암호 방법, 복호 방법, 암호 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체 및 복호 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체
US9842227B2 (en) 2014-09-23 2017-12-12 FHOOSH, Inc. Secure high speed data storage, access, recovery, and transmission
US10579823B2 (en) 2014-09-23 2020-03-03 Ubiq Security, Inc. Systems and methods for secure high speed data generation and access
CN104504322B (zh) * 2014-12-05 2017-12-08 中国科学院信息工程研究所 对USB Key验证、读取、加密、解密的方法
US9942211B1 (en) * 2014-12-11 2018-04-10 Amazon Technologies, Inc. Efficient use of keystreams
CN106788971A (zh) * 2016-12-14 2017-05-31 上海电机学院 一种基于流密码算法的子密钥生成方法
CN106953875A (zh) * 2017-04-26 2017-07-14 吉林大学珠海学院 基于多密钥流密码的顺序加密方法
US11349656B2 (en) * 2018-03-08 2022-05-31 Ubiq Security, Inc. Systems and methods for secure storage and transmission of a data stream
CN111740816B (zh) * 2019-03-25 2023-03-31 山东文斌信息安全技术有限公司 Bwgcf分组密码算法实现方法
JP7383985B2 (ja) * 2019-10-30 2023-11-21 富士電機株式会社 情報処理装置、情報処理方法及びプログラム
CN112910630B (zh) * 2021-02-02 2022-12-06 浙江大华技术股份有限公司 扩展密钥的置换方法及装置
KR20220146115A (ko) * 2021-04-23 2022-11-01 삼성에스디에스 주식회사 키 스트림 생성 방법 및 장치
CN113672946A (zh) * 2021-07-15 2021-11-19 平头哥(上海)半导体技术有限公司 数据加解密组件、相关装置和方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6560337B1 (en) * 1998-10-28 2003-05-06 International Business Machines Corporation Systems, methods and computer program products for reducing effective key length of ciphers using one-way cryptographic functions and an initial key
GB2353191A (en) * 1999-07-09 2001-02-14 Hw Comm Ltd Packet data encryption/decryption
JP2002049310A (ja) * 2000-08-04 2002-02-15 Toshiba Corp 暗復号装置、認証装置及び記憶媒体
US20030086564A1 (en) * 2001-09-05 2003-05-08 Kuhlman Douglas A. Method and apparatus for cipher encryption and decryption using an s-box
DE60213650T2 (de) * 2001-12-10 2007-08-09 International Business Machines Corp. Zugriff auf verschlüsselten rundsendeinhalt
US7257229B1 (en) * 2002-06-07 2007-08-14 Winbond Electronics Corporation Apparatus and method for key scheduling
US7826613B2 (en) * 2002-08-19 2010-11-02 Qualcomm Incorporated Stream cipher cryptographic system and method
US7336783B2 (en) * 2003-01-24 2008-02-26 Samsung Electronics, C., Ltd. Cryptographic systems and methods supporting multiple modes

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101068367B1 (ko) * 2008-02-27 2011-09-28 인텔 코오퍼레이션 병렬 연산 모드에서 aes 암호화 및 암호 해독을 최적화하는 방법 및 장치

Also Published As

Publication number Publication date
CN1993922B (zh) 2012-11-14
US20060023875A1 (en) 2006-02-02
WO2006012363A1 (en) 2006-02-02
EP1779584A1 (en) 2007-05-02
CN1993922A (zh) 2007-07-04

Similar Documents

Publication Publication Date Title
KR20070039161A (ko) 암호화 시스템, 방법 및 결합 함수
Gan et al. A chaotic image encryption algorithm based on 3-D bit-plane permutation
US7945049B2 (en) Stream cipher using multiplication over a finite field of even characteristic
JP3864675B2 (ja) 共通鍵暗号装置
JP3901909B2 (ja) 暗号化装置およびプログラムを記録した記録媒体
US8416947B2 (en) Block cipher using multiplication over a finite field of even characteristic
JP5402632B2 (ja) 共通鍵ブロック暗号化装置、共通鍵ブロック暗号化方法及びプログラム
US6185304B1 (en) Method and apparatus for a symmetric block cipher using multiple stages
EP0725511B1 (en) Method for data encryption/decryption using cipher block chaining (CBC) and message authentication codes (MAC)
US6185679B1 (en) Method and apparatus for a symmetric block cipher using multiple stages with type-1 and type-3 feistel networks
US6189095B1 (en) Symmetric block cipher using multiple stages with modified type-1 and type-3 feistel networks
Norouzi et al. Breaking a novel image encryption scheme based on an improper fractional order chaotic system
KR102397579B1 (ko) 부채널 분석 방지를 위한 화이트박스 암호 방법 및 장치
KR20180081559A (ko) 암호화 동작을 위한 키 시퀀스 생성
US20100124328A1 (en) Extensive ciphertext feedback
JP2008035305A (ja) 暗号化方法及びデータ秘匿方法
Acharya Image encryption using a new chaos based encryption algorithm
JP2004157535A (ja) データ暗号化方法
Korda et al. Securing Data in the Cloud using the SDC Algorithm
Saudagar et al. Image encryption based on advanced encryption standard (aes)
Ramesh et al. RK algorithm: stochastic parallel methodology for symmetric key cryptography
Sahu et al. Accelerating lattice based proxy re-encryption schemes on GPUs
Bhavani et al. Security enhancement using modified AES and Diffie–Hellman key exchange
Kumar et al. New Symmetric Key Cipher Based on Quasigroup
Subashanthini et al. Image Encryption Using New Chaotic Map Algorithm

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
B601 Maintenance of original decision after re-examination before a trial
E801 Decision on dismissal of amendment
J301 Trial decision

Free format text: TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20080911

Effective date: 20090917