KR20030019365A - 메시지 인증 코드에 대한 키 정수 치환 발생 방법 및 장치 - Google Patents

메시지 인증 코드에 대한 키 정수 치환 발생 방법 및 장치 Download PDF

Info

Publication number
KR20030019365A
KR20030019365A KR1020027014648A KR20027014648A KR20030019365A KR 20030019365 A KR20030019365 A KR 20030019365A KR 1020027014648 A KR1020027014648 A KR 1020027014648A KR 20027014648 A KR20027014648 A KR 20027014648A KR 20030019365 A KR20030019365 A KR 20030019365A
Authority
KR
South Korea
Prior art keywords
value
key
round
half round
output
Prior art date
Application number
KR1020027014648A
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 KR20030019365A publication Critical patent/KR20030019365A/ko

Links

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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • 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
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/3033Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters details relating to pseudo-prime or prime number generation, e.g. primality test
    • 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/0625Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI
    • 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/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • 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
    • H04L9/3066Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
    • H04L9/3073Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves involving pairings, e.g. identity based encryption [IBE], bilinear mappings or bilinear pairings, e.g. Weil or Tate pairing
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3242Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
    • 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
    • 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/80Wireless

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Power Engineering (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Physics (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Algebra (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Error Detection And Correction (AREA)
  • Editing Of Facsimile Originals (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Radio Relay Systems (AREA)

Abstract

본 발명은 N이 p와 q로 인수화될 수 있거나, N이 소수일 때 세트Z N을 통해 키 정수 치환을 형성하는 방법에 관한 것이다. N 비트는 인덱스를 나타내는 키 치환을 유도함으로써 치환된다. N이 p 및 q로 인수화가능할 때, 인덱스 세트는 두 부분으로 분할된다. 상기 부분은 "라운드"로 지칭되는 반복 프로세싱을 경험하며, 각 라운드에서, 제 1 절반 라운드 함수는 상기 제 1 부분에서 연산하여 제 1 절반 라운드 값을 형성한다; 상기 제 1 절반 라운드 값 및 상기 제 2 부분은 모듈로-p 가산기에 의해 함께 가산되어 제 1 출력 값을 형성한다; 제 2 절반 라운드 함수는 상기 제 2 부분상에 연산하여 제 2 절반 라운드 값을 형성한다; 상기 제 2 절반 라운드 값과 상기 제 2 부분은 모듈로-q 가산기에 의해 함께 가산되어 제 2 출력 값을 형성한다. 이러한 방식으로, 상기 라운드의 출력은 재정렬된다. N이 소수이며 13보다 작지 않으면, N은 합성수 값 s 및 t로 분리되고, 두개의 세트는 각각 s 및 t 엘리먼트로 형성된다. 각 세트는 그후에 N이 소수가 아닐때의 방법을 이용하여 치환된다. 각 라운드의 단부에서, 두개의 블록은 혼합 연산을 이용하여 결합된다.

Description

메시지 인증 코드에 대한 키 정수 치환 발생 방법 및 장치{GENERATION OF KEYED INTEGER PERMUTATIONS FOR MESSAGE AUTHENTICATION CODES}
메시지 인증 코드(MAC)는 메시지가 특정 가입자로부터 발신되고 다른 가입자에 의해 변경되지 않았음을 검증하기 위해 특정 메시지에 첨부될 수 있는 암호화된 아이템이다. MAC는 통신의 여러 분야에서 이용된다. 예시적인 분야는 무선 통신이다.
무선 통신 분야는 예를 들어, 무선 전화, 페이징, 무선 로컬 루프, 개인 휴대용 정보 단말기(PDAs)와 같은 무선 데이터 애플리케이션, 셀룰라 및 PCS 전화 시스템과 같은 무선 전화, 이동 인터넷 프로토콜(IP) 전화 및 위성 통신 시스템을 포함하는 여러 애플리케이션을 갖는다. 특히 중요한 애플리케이션은 이동 가입자용 무선 전화이다.
주파수 분할 다중 액세스(FDMA), 시분할 다중 액세스(TDMA) 및 코드 분할 다중 액세스(CDMA)를 포함하는 무선 통신 시스템에 대해 여러 무선 인터페이스가 개발되어 왔다. 그와 관련하여, 여러 국내 및 국제 표준은 예를 들어, 앰프스 이동 전화 방식(AMPS), 이동 통신 세계화 시스템(GSM) 및 잠정 표준 95(IS-95)를 포함하여 확립되었다.
예시적인 무선 전화 통신 시스템은 코드 분할 다중 액세스(CDMA) 시스템이다. IS-95 표준 및 파생물인, IS-95A, ANSI J-STD-008, IS-95B, 제안된 제 3 세대 표준 IS-95C 및 IS-2000, 제안된 데이터에 대해 배타적인 고속 데이터율 CDMA 표준 등(통칭하여 IS-95라 함)은 셀룰라 또는 PCS 전화 통신 시스템용 CDMA 무선 인터페이스의 이용을 기술하기 위해 통신 산업 협회(TIA) 및 다른 공지된 표준 기구에 의해 공표된다. IS-95 표준의 이용에 따라 구성되는 예시적인 무선 통신 시스템은 본 발명의 양수인에게 양수되고 여기서 참조로 통합되는 미국 특허 Nos. 5,103,459 및 4,901,307에 기술된다.
무선 시스템을 통해 전송되는 데이터를 암호화하는 일 방법은 국립 표준 협회에 의해 공표되고 이진 코딩 정보를 암호로 변환하기 위해 피스텔(Feistel) 망을 이용하는 FIPS PUB 46-2(1993년 12월 30일) 기술에 의해 개시되는 데이터 암호화 표준(DES)이다. 피스텔 망은 64 비트 길이의 데이터 블록을 변환하기 위해 DES에서 이용된다. 먼저, 초기 치환 단계가 64 비트 데이터 블록상에 수행된다. 치환된 데이터 블록은 32 비트 길이로 두개로 분할되며, 하나의 블록은 L로 라벨링되고 다른 하나는 R로 라벨링된다. 반복 절차는 그후에 다음 관계를 이용하여 블록을처리한다:
여기서 Ki는 i번째 라운드에서 사용된 서브키이며 f는 임의의 함수이다. 함수 f는 또한 "라운드" 함수로 지칭되는데, 왜냐하면 각각의 반복 단계는 라운드로서 지칭되기 때문이다. DES 알고리즘에서, 라운드 함수 f는 네가지 동작으로 구성된다. 먼저, 48 비트 서브키는 키의 56 비트로부터 선택된다. 그후에, 라운드 함수 f는 확장 치환을 통해 32 비트로부터 48 비트로 데이터의 오른쪽 절반 블록을 확장하는 단계, XOR 연산을 통해 48 비트 서브키와 상기 결과를 결합하는 단계, 32개 부가 비트를 생성하는 8개 대체 박스를 통해 상기 결과를 전송하는 단계 및 그 결과를 치환하는 단계를 포함한다. 함수 f의 출력은 또 다른 XOR 연산을 통해 왼쪽 절반 블록과 결합되며 그 결과는 새로운 오른쪽 절반 블록으로 사용되며, 반면에 예전의 오른쪽 절반 블록은 다음 라운드에 대해 새로운 왼쪽 절반 블록으로 사용된다. DES 라운드는 가역성인데 왜냐하면 f는 다음 관계,를 만족시키도록 각 라운드에서 복구될 수 있다.
데이터 블록의 이진 포맷에 기인하여, DES와 같은 종래의 방법은 엘리먼트가 n 항에 대해 데카르트 곱Z 2 xZ 2 x ... xZ 2 세트의 멤버인 평문(plaintext) 메시지를 암호문 메시지로 암호화하며, 상기 암호문 메시지의 엘리먼트 또한 n 항에 대한Z 2 xZ 2 x ... xZ 2 세트의 멤버이다. 여기서 사용된 바와 같이,Z m 은 부가 모듈로 m하에서 순환 그룹 {0, 1, ..., m-1}이다. 따라서, DES의 목적은 평문(예를 들어, 원래 데이터) 메시지에서 비트의 순서를 변경하는 것이 아니다. 오히려, DES의 목적은 암호문의 각 비트가 평문의 모든 비트에 종속하는 암호문을 발생시키는 것이다.
DES는 가역성이며 키의 제어하에 264입력을 264출력으로 변환하기 때문에, DES는 또한 키에 의해 선택된 치환이 인증되지 않은 파티로부터 보안이 유지되도록 정수 세트{0, 1, ..., 264- 1}의 치환을 선택하기 위한 키에 대한 방법으로서 조망될 수 있다.
일반 통신에서, MAC는 함수의 출력이며, 메시지 발신자 및 수신자에 의해서만 알려지는 메시지 및 공유된 비밀 키 K는 함수에 대한 입력이다. 선택된 특정 함수가 안전하면, 전송된 메시지를 가로채고 잠재적으로 변형할 수 있는 능동 공격자는 키 K를 발견하지도 못하고 또는 적당한 확률로 유효하게 수신자에 의해 수용될 메시지를 형성하지도 못한다.
본 발명의 양수인에게 양수되고 여기서 참조로 통합되는 1999년 8월 9일에 출원된 "메시지 인증 코드를 발생시키는 방법 및 장치"란 명칭의 미국 특허 출원 09/371,147에 새로운 유형의 MAC이 제안되는데, 여기서 MAC은 소정 키의 영향하에 m 비트 데이터 블록 비트를 재정렬하고 재정렬된 m 비트 블록의 선형 함수인 x 비트 주기적 덧붙임 검사(CRC)를 형성하는 것에 의존한다. 이러한 MAC은 CRC-MAC으로 지칭된다. 전송자는 CRC-MAC과 함께 원래의 m 비트 데이터 블록을 수신기에 전송한다. 수신기는 수신된 데이터 메시지의 비트를 재정렬하기 위해 공유된 키를 이용한다. 수신기는 그후에 최종 블록으로부터 CRC를 계산할 것이다. 이러한 방법을 이용하여, 수신기는 데이터가 통과시에 변경되었는지를 검출하고 전송동안 발생할 수 있는 적은 수의 에러를 정정할 수 있으며, 그러면서 능동 공격자가 메시지를 위조하거나 변경하는 것을 어렵게 한다.
m 및 x는 m + x = 2x-1- 1일때 최적인 것으로 공지된다. x 비트 CRC-MAC의 구조는 미국 특허 출원 09/371,147에 더욱 상세히 논의된다. 당업자는 16 비트 CRC가 무선 통신 분야에 특히 사용되는 것을 검증함을 이해할 것이다. 상기의 관계에서 숫자 x = 16을 이용하면, CRC-MAC의 구조에 대한 데이터 블록의 최적 크기는 m = (215- 1) - 16 = 32,751 비트이다.
m 및 x의 최적 값에 대해 상기에 기술된 바와 같이, CRC-MAC은 m = (2x-1-1)일 때, 원래 m 비트 데이터 블록의 비트를 재정렬함으로써 m 비트 중간 블록을 형성하기 위해 키를 이용하는 방법을 필요로 한다. 미국 특허 출원 09/371,147에 기술된 바와 같이, m 비트 중간 블록의 구조는 두개의 알고리즘을 이용하여 수행될 수 있다. 제 1 알고리즘은 m 비트 데이터 블록의 비트에 대해 각각의 인덱스를 처리한다. m 비트 데이터 블록의 각 비트 위치와 관련된 각 인덱스 x에 대해, 제 1 알고리즘은 x와 동일한 범위의 고유한 인덱스 y를 결정하기 위해 제 2 알고리즘을호출하며, y는 x 및 공유된 비밀 키로부터 결정된다. 제 1 알고리즘은 그후에 데이터 블록의 위치 x의 비트 값에 대해 중간 블록의 비트 위치 y의 값을 세팅한다.
제 1 알고리즘이 범위 {0, 1, ..., m-1}의 인덱스 x 각각에 대한 상기 단계를 수행한 후에, 중간 블록은 다른 순서의 데이터 블록 비트를 포함하는 m 비트 블록일 것이다. 보호되는 CRC-MAC에 대해, 소정의 주어진 키에 대해, 제 1 알고리즘은 중간 블록의 동일한 위치에 데이터 블록으로부터의 두개의 비트를 배치하지 않는다. 이러한 조건은 각 키에 대해, 제 2 알고리즘이 세트 {0, 1, ..., m-1}에 대한 1:1 매칭을 정의하는 경우에만 만족된다. 1:1 매핑은 일반적으로 기술분야의 치환을 지칭한다. 따라서, CRC-MAC는 세트 {0, 1, ..., m-1}상의 치환을 정의하기 위해 키를 이용하는 방법을 필요로 한다. 부가로, 키에 의해 선택된 치환은 허가되지 않은 파티로부터 숨겨진채로 남아야 한다.
DES는 키에 의해 선택된 치환이 허가되지 않은 파티로부터 보안이 유지되도록 정수의 세트{0, 1, ..., 264- 1}를 통해 치환을 결정하기 위해 키를 이용하는 방법으로 고려될 수 있다. m의 값이 264이면, DES는 제 2 알고리즘에 대한 요건을 만족할 것이다. 그러나, DES 및 다른 블록 암호는 제 2 알고리즘으로 사용될 수 없는데, 왜냐하면 상기의 암호는 순서 2M의 세트간의 1:1 관계를 형성할 목적으로 형성되었으며, 다른 순서의 세트간의 1:1 관계를 정의하지 않기 때문이다. 그렇지 않으면, 블록 암호의 특성은 제 2 알고리즘에 대해 요구된 조건을 만족시킬 것이며 제 2 알고리즘은 보안이라는 동일한 개념을 위해 실행될 것이다.
RSA 알고리즘 및 엘-가멜(El-Gamal) 알고리즘과 같은 소정의 공개 키 암호화 알고리즘은 2제곱과 다른 N의 소정 값에 대해Z N 의 치환을 정의하기 위한 키 방법을 개시한다. 그러나, 이런 방법은 CRC-MAC에 이용되지 못하는데, 왜냐하면 이러한 공개 키 알고리즘은 32,751과 같은 N의 작은 값에 대해 안전하지 않기 때문이다. CRC-MAC에 대해 요구되는 N의 값에 대해, 키에 의해 선택된 치환은 허가되지 않은 파티로부터 보안이 유지되어야 한다.
따라서, CRC-MAC에 대해 데이터 비트의 큰 수 N을 치환시키는 것이 요구된다. 상기에 지칭된 최적의 경우에, 데이터 블록은 32,751 비트를 포함해야 한다. 상기에 기술된 바와 같이, N 비트를 치환하는 것은 키에 의해 선택된 치환이 허가되지 않은 파티로부터 비밀로 남아있도록 세트 {0, 1, ..., N-1} =Z N상의 치환을 정의하기 위한 키 방법을 필요로 한다. 상기의 방법은 N이 합성수이거나 소수일 수 있는 N의 값에 대해 적용가능할 것이 요구된다. 소수는 인수가 1이거나 자신인 1 보다 큰 정수이다. 합성수는 소수가 아닌 1보다 큰 정수이다. 상기의 방법은 통신 시스템에서 메시지 인증 및 에러 정정외에도 매우 다양한 애플리케이션에 적용될 수 있다.
본 발명은 일반적으로 통신 분야에 관한 것이며, 더욱 구체적으로 메시지 인증 코드에 사용하기 위해 한 세트의 정수 모듈로-N을 통해 키 치환을 형성하는 방법 및 장치에 관한 것이다.
도 1은 종래의 암호화 계산 명칭인 DES의 흐름도이다.
도 2는 본 발명의 일 실시예이며, 모듈로-p 가산기 및 모듈로-q 가산기를 이용하는 암호화 계산의 블록선도이다.
도 3은 프로세서를 이용하는 정수 치환 장치의 블록선도이다.
도 4는Z 32752를 통한 암호화 계산의 블록선도이다.
도 5는 도 4의 암호화 계산시 수행되는 바와 같이, 절반 라운드 키 K1i및 K2i의 추출을 도시하는 흐름도이다.
도 6은Z 32751를 통한 또 다른 암호화 치환의 블록선도이다.
도 7은 도 6의 암호화 계산시에 실행된 바와같이, 절반 라운드 키 K1i및 K2i의 추출을 도시하는 흐름도이다.
도 8은 본 발명의 일 실시예인 암호화 계산의 블록선도이며, 상기 암호화 계산은Z N을 통해 수행되며, N은 소수이다.
N의 값이 2의 거듭제곱이 아닐때, 본 발명은 키에 의해 선택된 치환이 허가되지 않은 파티로부터 보안이 유지되도록 키가 세트Z N상의 치환을 정의하도록 하는 방법의 필요성을 설명한다. 본 발명은 13 보다 크거나 같은 모든 정수 N에 대해적용가능하다. 개별 방법은 N이 합성수인지 소수인지에 따라 이용된다.
본 발명은 N 비트 데이터 블록을 치환하는 방법에 관한 것이며, N 비트 데이터 블록의 각 비트는 다수의 N 인덱스로부터의 하나의 인덱스와 연관된다. N 이 합성수이고 N이 1보다 큰 정수 값 p로, 그리고 1보다 큰 정수 값 q로 인수분해되면, 본 발명은 여러 라운드를 수행함으로써 입력 값으로부터 출력 값을 획득하는 방법을 개시하며, 상기 각 라운드는: 상기 입력 값을 제 1 부분 및 제 2 부분으로 분리하는 단계를 포함하는데, 상기 제 1 부분은 그룹Z p를 통해 형성되며 상기 제 2 부분은 그룹Z q를 통해 형성되며 입력 값은 제 2 부분 및 제 1 부분의 결합으로 표현될 수 있으며, 상기 제 1 부분은 정수 값 q로 곱해지며; 제 1 절반 라운드 키 및 제 2 절반 라운드 키를 형성하는 단계; 제 2 부분 및 제 1 절반 라운드 키로부터 제 1 절반 라운드 값을 추출하는 단계를 포함하며, 상기 제 1 절반-라운드 값은 상기 제 2 부분 및 제 1 절반 라운드 키상에 연산하는 제 1 비선형 함수의 출력이며; 모듈로-p 가산기를 이용하여 제 3 부분을 생성하기 위해 상기 제 1 절반 라운드 값과 상기 제 1 부분을 결합하는 단계; 상기 제 1 부분 및 상기 제 2 절반 라운드 키로부터 제 2 절반 라운드 값을 추출하는 단계를 포함하며, 상기 제 2 절반 라운드 값은 제 3 부분 및 제 2 절반 라운드 키에 동작하는 제 2 비선형 함수의 출력이며; 모듈로-q 가산기를 이용하여 상기 제 2 절반 라운드 값과 상기 제 2 부분을 결합하는 단계; 및 상기 제 2 부분과 정수 값 q를 곱하고 그후에 상기 제 2 절반 라운드 값을 가산함으로써 라운드로부터 출력 값을 형성하는 단계를 포함한다.
N이 소수이고, 13 보다 크면, N은 세트Z N이 두개의 세트 A 및 B로 분할될 수 있도록 두개의 합성수 S 및 T의 합산으로 기록될 수 있으며, 세트 A에서의 엘리먼트 수는 S와 같으며, 세트 B의 엘리먼트 수는 T와 동일하다. 합성수 N에 대한 상기의 방법은 세트 A상의 치환을 정의하기 위해 그리고 세트 B상의 치환을 정의하기 위해 인가될 수 있으며, 출력 값은 여러 라운드를 수행함으로써 입력 값으로부터 획득되며, 상기 값 각각은 최종 라운드가 소수 라운드만을 포함하도록 하면서, 소수 라운드 및 혼합 라운드를 구성한다. 소수 라운드는: 라운드 입력 값이 세트 A 인지 또는 세트 B인지를 결정하는 단계; 상기 값이 세트 A에 있으면, 상기에 기술된 바와 같이 라운드 키에 의해 정의된 세트 A 상의 치환을 이용하여 입력 값으로부터 제 1 값을 결정하고, 상기 값이 세트 B에 있으면, 상기에 기술된 바와 같이 라운드 키에 의해 정의된 세트 B상의 치환을 이용하여 입력으로부터 제 1 값을 결정하는 단계를 포함하며; 혼합 라운드는 라운드 출력을 생성하기 위해 전체 세트Z N상의 간단한 치환에 대해 제 1 값을 입력하는 단계를 포함하며, 간단한 치환은 A의 값의 대략 S/N이 A의 값으로 매핑되는 특성을 갖는다.
도 1은 FIPS PUB 46-2(1993년 12월 30일)에 공개된 데이터 암호화 표준(DES)에 의해 기술된 바와 같은 종래의 암호화 계산의 블록선도이다. 입력(100)의 64 비트 블록은 초기 치환 단계(101)에 따라 치환된다. 초기 치환 단계(101)의 결과는 블록 L0(102) 및 블록 R0(103)이다.
제 1 라운드에서, 블록 RO(103) 및 키 비트 K1(104) 블록은 함수 f(105)에 의해 동작된다. 함수 f(105)의 출력 및 블록 L0(102)는 블록 R1(113)을 형성하기 위해 모듈로-2 가산기(106)를 이용하여 결합된다. 블록 L1(112)은 RO(103)와 동일하게 세팅된다.
제 2 라운드에서, 블록 R1(113) 및 키 비트 K2(114) 블록은 함수 f(115)에 의해 동작된다. 함수 f(115)의 출력 및 블록 L1(112)은 블록 R2(123)를 형성하기 위해 모듈로-2 가산기(116)를 이용하여 결합된다. 블록 L2(122)는 블록 R1(113)과 동일하게 세팅된다.
제 1 라운드 및 제 2 라운드에 대해 기술된 절차는 16 라운드가 완료될 때까지 반복된다. nth라운드 동안, 키 비트 Kn(124) 블록 및 블록 Rn은 함수 f(125)에 의해 동작되며, 이러한 동작의 출력은 모듈로-2 가산기(126)를 이용하여 블록 Ln과 결합된다. 최종 라운드에서, 블록 R16(142) 및 블록 L16(143)은 출력(145)을 형성하기 위해 역 초기 치환 단계(144)로의 입력이다.
DES 방법은 비트 블록상에 동작하며, 다른 블록 암호는 또한 비트 블록상에 동작한다. 따라서, 기술의 현상태는 크기 2n의 블록 암호화에 집중되며, n은 일반적으로 블록의 비트 수이다. 본 발명은 소정 크기의 세트로부터 암호화 값으로 유도되는 개선안이다.
도 2는 본 발명의 한 라운드의 예시적인 실시예의 블록선도이며, 키 정수 치환(KIP)은Z N을 통해 형성되고 N은 소수가 아니다. p > 1 이고 q > 1인 소정 정수에 대해 N = pq라 하자. 입력 Ci(200)는 Ci= Li- q + Ri, Li∈ Zp및 Ri∈ Zq이도록, Li(210) 및 Ri(211)인 두 부분으로 분리된다. 부분 Ri(211) 및 절반 라운드키 K1i(212)는 절반 라운드 값(vi)을 형성하기 위해 비선형 함수(f1)에 의해 동작된다. 절반 라운드 값 vi는 부분 L'i(220)를 형성하기 위해 모듈로-p 가산기(215)를 이용하여 부분 Li에 합산된다. 부분 L'i(220) 및 절반 라운드 키 K2i(222)는 절반 라운드 값 v'i를 형성하기 위해 비선형 함수 f2(223)에 의해 연산된다. 절반 라운드 값 v'i및 부분 Ri(211)는 부분 R'i(221)를 획득하기 위해 모듈로 q 가산기(225)를 이용하여 함께 가산된다. 출력 부분 Ci+1(230)는 방정식 Ci+1= L'i- q + R'i에 의해 형성된다. 선택적으로, 부분 L'i(220) 및 부분 R'i(221)는 다음 반복 라운드에서 사용될 수 있다.
도 2에 기술된 방법은 가역성인데, 다시말해 Ci는 Ci+1로부터 결정될 수 있다. 먼저, Ci+1은 부분 L'i, R'i로 분리된다. 관계 Ci+1= L'i_q + R'i가 만족된다. Ri를 추출하기 위해, v'i= f2(L'i, K2i)를 획득하고 R'i(모듈로 q)로부터 절반-라운드 값 v'i를 감산한다. 결과 값은 Ri이다. 일단 Ri가 알려지면, 값 Li는 vi= f1(Ri, K1i)를 평가하고 L'i(모듈로 p)로부터 절반 라운드 값 vi를 감산하여 추출된다. 결과 값은 Li이다. Ci의 값은 Ci= Li_q + Ri로 결정된다.
도 3은 프로세서를 이용하는 정수 치환 장치의 블록선도이다. 제어기(320)는 프로세서(322)에 접속하고 프로세서(322)의 동작을 지시하는 명령 세트를 포함한다. 제어기(320)는 소프트웨어 프로그램 또는 마이크로코드 세트를 포함할 수 있다. 프로세서(322)는 치환 장치에 의해 요구되는 조작을 수행하는 하드웨어이다. 프로세서(322)는 여기에 기술된 기능을 수행하도록 설계된 마이크로제어기, 마이크로프로세서 또는 디지털 신호 처리기로서 실행될 수 있다. 메모리 엘리먼트(324)는 프로세서(322)에 접속하고 값과 명령을 저장하는데 사용된다. 메모리 엘리먼트 (324)는 여기에 기술된 기능을 수행하도록 설계된 랜덤 액세스 메모리 또는 다른 장치를 이용하여 실행될 수 있다. 상기 명령 및 값은 판독전용 메모리 또는 랜덤 액세스 메모리 또는 다른 메모리 장치에 저장될 수 있다.
도 2에 널리 논의된 바와 같이,Z N을 통해 키 정수 치환을 발생시키는 방법은 p와 q에 대해 여러 선택을 수행하도록 변경될 수 있다. 도 4는 p = 178이고 q = 184이며, 따라서 N = 32752가 되는 키 정수 치환 방법의 일 라운드의 실시예의 블록선도이다. 부가로, 숫자 32752는 89 x 23 x 24으로 인수화될 수 있으며, 89 x 2 = 178이며 23 x 23= 184이다. 입력 Ci(400)는 Ci= 184_Li+ Ri가 되도록 부분 Li(410) 및 부분 Ri(411)의 두 부분으로 분리된다. 부분 Ri(411)는 Ri= Cimod 184로부터 추출될 수 있다.
부분 Ri(411) 및 상수 α(413)는 곱셈 결과 u를 생성하기 위해 모듈로 356 곱셈기(414)에 의해 함께 곱해진다. 곱셈 결과 u 및 절반 라운드 키 값 K1i(412)는 결합된 결과 w를 생성하기 위해 모듈로 356 가산기(416)에 의해 함께 가산된다.정수 값 356 = 2 * 178임을 주목해야 한다. 단계(419)에서, 결합된 결과 w는 관계 w = x*m + y에 의해 치환 표시자 값 x 및 대체 입력 값 y로 분해되며, 치환 표시자 값 x는 세트Z 2의 엘리먼트이며, 대체 입력 값 y는 세트Z m의 엘리먼트이며, m은 p와 같게 세팅되며 이 특정 실시예에서 p = 178이다. 치환 표시자 값 x는 두개의 대체 박스 S0(420) 및 S1(421) 중 하나를 선택하도록 사용되며, 각 대체 박스 S0(420) 및 S1(421)은Z 178을 통한 치환이다. 치환 표시자 값 x가 대체 박스 Sx를 선택하는데 사용된 후에, 대체 입력 값 y는 절반 라운드 값 vi를 획득하기 위해 대체 박스 Sx에 의해 동작된다. 절반 라운드 값 vi및 부분 Li(410)는 부분 L'i(424)를 획득하기 위해 모듈로-178 가산기(423)에 의해 동작된다.
부분 L'i(424) 및 상수 β(425)는 곱셈 결과 u'을 생성하기 위해 모듈로-368 곱셈기(426)에 의해 함께 곱해진다. 정수 값 368 = 2*184임을 주목해야 한다. 곱셈 결과 u' 및 절반 라운드 키 값 K2i(428)는 결합된 결과 w'을 생성하기 위해 모듈로-368 가산기(429)에 의해 함께 가산된다. 단계(430)에서, 결합된 결과 w'은 관계 w' =x' * n + y'에 의해 치환 표시자 값 x' 및 대체 입력 값 y'으로 분해되며, 치환 표시자 값 x'은 세트Z 2의 엘리먼트이며, 대체 입력 값 y'은 세트Z n의 엘리먼트이며, n은 q로 세팅되고, 이 특정 실시예에서 q = 184이다. 치환 표시자 값 x'은 두개의 대체 박스 T0(433) 및 T1(434) 중 하나를 선택하는데 사용되며, 각 대체박스 T0(433) 및 T1(434)은Z 186을 통한 치환이다. 치환 표시자 값 x'은 대체 박스 Tx'을 선택하는데 사용되며, 대체 입력 값 y'은 절반 라운드 값 v'i를 획득하기 위해 대체 박스 Tx'에 의해 연산된다. 절반 라운드 값 v'i및 부분 Ri(411)는 부분 R'i(437)를 획득하기 위해 모듈로-178 가산기(436)에 의해 동작된다.
키 정수 치환에 대해 선택된 두개의 함수 f1(480) 및 f2(490)는 구조상으로 서로 유사하다. 함수 f1(480)은 입력을 상수와 곱하고 결과 모듈로-2p를 감소시켜, 값 u를 발생시킨다. 본 발명의 상기 실시예에서, 2p = 356이다. 함수 f2(490)는 입력을 상수 β= 368과 곱하고 결과 모듈로-2q(2q = 368)를 감소시켜, 값 u'을 발생시킨다. 상수 α와 β는 α및 356이 소수가 되도록 선택되며, β및 368이 소수가 되도록 선택된다. 예를 들어, 상수 α는 33 및 356이 소수이기 때문에 정수 값 33과 같도록 세팅될 수 있다. 곱셈에 후속하여, 절반 라운드 키는 모듈로-356이 가산되며, 출력 값 w를 발생시키며 그후에 w = x*m + y로 표현되며, x ∈Z 2, y ∈Z j이며, j는 각각 p 또는 q값을 갖는다. x의 값은 두개 대체 박스 중 하나를 선택하는데 사용된다. 함수 f1(480)에서, 상기 두개의 대체 박스는 S0, S1으로 표시되며 각 대체 박스는Z 178을 통한 치환이다. 함수 f2(490)에서, 이러한 두개의 대체 박스는 T0, T1으로 지칭되며, 각 대체 박스는Z 184를 통한 치환이다. f1의 출력은 vi=Sx(y)인 반면, f2의 출력은 v'i= Tx(y)이다.
절반 라운드 키 값 K1 i 및 K2 i
본 발명의 실시예에서 절반 라운드 키 값은 SOBER II 스트림 암호에 의해 발생될 수 있으며, 상기 스트림 암호는 1997년 9월 22일 출원된 "암호화 스트림 암호를 발생시키는 방법 및 장치"란 명칭의 미국 특허 출원 08/934,582; 1997년 10월 24일 출원된 "암호화 스트림 암호를 발생시키는 방법 및 장치"란 명칭의 미국 특허 출원 08/957,571; 1998년 8월 28일 출원된 "암호화 스트림 암호를 발생시키는 방법 및 장치"란 명칭의 미국 특허 출원 09/143,441; 및 1999년 9월 8일에 출원된 "암호화 스트림 암호를 발생시키는 방법 및 장치"란 명칭의 미국 특허 출원 09/246,366에 기술되어 있다. 상기 언급된 특허 출원은 본 발명의 양수인에게 양도되었으나, 여기서 기술되지 않는다. 그러나, 소정 스트림 암호가 균일하게 분포되는 바이트를 생성할 때의 절반 라운드 키 값을 발생시키는데 사용될 수 있음을 주의해야 한다. 상기 스트림 암호가 s0, s1, ... st, ...,로 표시된 출력 바이트를 생성하면, 두개의 연속하는 바이트의 정수 값, zt= 256s2t+ s2t+1Z 65536을 통해 균일하게 분포될 것이다. 본 발명의 전형적인 실시예에서, SOBER-II는 s0, s1, ... st, ...,로 표시된 충분한 출력 바이트를 생성하기 위해 세션 키 및 가능하게는 소정의 부가 데이터를 이용하여 초기화된다. 절반-라운드 키는 균일하게 분포되는 것으로 설계된다. 절반 라운드 키를 균일하게 발생시키기 위한 방법은 zt가 65504보다 적은 경우에만 두개의 연속하는 바이트의 정수 값, zt= 256s2t+ s2t+1을 이용하는 것이다. 65504는 정수 값 356(2p = 356) 및 368(2q = 368)에 의해 인수화될 수 있으며, 모듈로-356 또는 모듈로-368로 감소되는 0에서 65503사이에 균일하게 분포된 숫자 zt는 각각Z 356Z 368을 통해 균일하게 분포될 것이다.
t = 0로 시작하여, zt의 값이 계산된다. zt가 65504보다 작지 않으면, t는 증가되고 zt의 값은 t의 새로운 값에 대해 계산된다. 이러한 프로세스는 zt의 값이 65504보다 작게 발견될 때까지 반복된다. 65504보다 작은 zt의 값은 그후에 K1i를 획득하기 위해 모듈로-356으로 감소된다. K1i를 결정한 후에, t의 값은 증가되고 zt의 값은 t의 새로운 값에 대해 계산된다. zt가 65504보다 작지 않으면, t는 증가되고 zt의 값은 t의 새로운 값에 대해 계산된다. 이러한 프로세스는 zt의 새로운 값이 65504보다 작게 발견될 때까지 반복된다. 65504보다 작은 zt의 값은 K21을 획득하기 위해 모듈로-368로 감소된다. 결정된 K11및 K21을 가지고, t는 증가되며 프로세스는 t를 0에 세팅하지 않고서 방법의 시작으로 복귀한다. 상기 방법은 모든 절반 라운드 키가 획득될 때까지 K12및 K22, K13및 K23을 결정하도록 반복한다. 도 5는 이러한 반복 프로세스를 설명하는 흐름도이다.
단계(500)에서, 인덱스 t는 0으로 세팅되며 라운드 숫자 i는 1로 세팅된다.단계(510)에서, 중간 값 zt는 관계 zt= 256s2t+ s2t+1에 의해 결정된다. zt가 65504보다 작으면, 단계(520)로 진행한다. zt가 65504보다 작지 않으면, 단계(530)로 진행한다. 단계(520)에서, K1i는 ztmod356과 동일하게 세팅되며, 인덱스 t는 증가되고 프로세스 흐름은 단계(540)로 진행한다. 단계(530)에서, 인덱스 t는 증가되고 프로세스 흐름은 단계(510)로 진행한다. 단계(540)에서, 값 zt는 관계 zt= 256s2t+ s2t+1에 의해 결정되며, 상기 인덱스 t는 단계(520)에서 증가된다. zt가 65504보다 작으면, 단계(550)로 진행하고, 그렇지 않으면, 단계(560)로 진행한다. 단계(550)에서, K2i는 ztmod368과 동일하게 세팅되며, 인덱스 t 및 i는 증가된다. i < r이면, 단계(510)로 복귀한다. 단계(560)에서, 인덱스 t는 증가되고 프로그램 흐름은 단계(540)로 진행한다.
본 발명의 또 다른 실시예에서, 도 2에서 논의되는 키 정수 치환은 p = 33및 q = 1213을 가지고Z 32751을 통해 실행된다. (32751 = 33x 1213임을 주목하라.) 도 6은 p = 33및 q = 1213을 이용하는 방법의 1 라운드의 블록선도이다. 입력 Ci(600)는 Ci= Li* 1213 + Ri가 되도록 두 부분인, 부분 Li(601) 및 부분 Ri(602)로 분리된다. 부분 Li(601)는 관계 Li= Cidiv (1213)에 의해 결정될 수 있으며 부분 Ri(602)는 관계 Ri= Cimod (1213)에 의해 결정될 수 있다. 부분 Ri(602) 및 상수 α(603)은 곱셈 결과 u를 억기 위해 모듈로-273곱셈기(604)에 의해 함께 곱해진다. 상수 α(603)은 상수 α(603)과 숫자 273(273= 19683)이 소수가 되도록 세트Z 19683으로부터 선택된다. 단계(609)에서, u는 항 u1, u2, u3를 얻기 위해 관계 u = 272u1+ 27u2+ u3에 의해 인수화된다.
항 u1및 서브키 값 K1Ai(610)는 대체 입력 값 g1을 얻기 위해 모듈로-27 가산기(61)를 이용하여 함께 가산된다. 항 u2및 서브키 값 K1Bi(611)는 대체 입력 값 g2를 얻기 위해 모듈로-27 가산기(614)를 이용하여 함께 가산된다. 항 u3및 서브키 값 K1Ci(612)는 대체 입력 값 g3를 얻기 위해 모듈로-27 가산기(615)를 이용하여 함께 가산된다. 여기에 기술된 방법은 p 및 q 또는 u 중 적절한 선택에 따라 여러 가능한 실행 형태를 갖는 것을 주목해야 한다. 예를 들어, 가산기의 수는 단계(609)에서 사용된 세개의 항보다는 네개 이상의 항(예를 들어, u = 273u1+ 272u2+ 27u3+ u4)으로 인수화되면 증가될 것이다. 증가된 수의 가산기와 함께, 적절한 수의 서브키 값이 또한 요구될 것이다. 서브키 값 K1Ai(610), K1Bi(611) 및 K1Ci(612)는 세트Z 27의 엘리먼트로부터 선택되며 하기에 논의될 방법으로 결정된다. 이러한 방법은 u가 네개 이상의 항으로 인수화되는 경우와 같이, 본 발명의 다른 실시예를 만족시키기 위해 과도한 실험없이 더 많은 서브키 값을 발생시키도록 형성될 수 있다.
대체 입력 값 g1은 치환된 값 h1을 얻기 위해 대체 박스 S1(619)에 의해 연산된다. 대체 입력 값 g2는 치환된 값 h2를 얻기 위해 대체 박스 S2(620)에 의해 연산된다. 대체 입력 값 g3는 치환된 값 h3를 얻기 위해 대체 박스 S3(621)에 의해 연산된다. 치환된 값 h1, 치환된 값 h2, 치환된 값 h3는 절반 라운드 값 vi를 결정하기 위해 모듈로-27 가산기(625)에 의해 함께 가산된다. 절반 라운드 값 vi및 부분 Li(601)는 부분 L'i(628)를 얻기 위해 모듈로-27 가산기(627)를 이용하여 함께 가산된다.
부분 L'i(628) 및 상수 β(650)는 곱셈 결과 u'i를 얻기 위해 모듈로-1213 곱셈기(655)에 의해 곱해진다. 상수 β(650)는 세트Z 1213의 제로가 아닌 엘리먼트로부터 선택된다. 곱셈 결과 u'i및 절반 라운드 키 값 K2i(653)는 대체 입력 값 g'을 얻기 위해 모듈로-1213 가산기(656)를 이용하여 함께 가산된다. 대체 입력 값 g'은 절반 라운드 값 v'i를 얻기 위해 대체 박스 T(657)에 전송된다. 절반 라운드 값 v'i및 부분 Ri(602)는 부분 R'i(659)를 얻기 위해 모듈로-1213 가산기(658)를 이용하여 함께 가산된다. 부분 L'i(628) 및 부분 R'i(659)는 다음 반복 라운드에서 이용된다. 선택적으로, 부분 L'i(628)는 숫자 값 = 1213에 의해 곱해지고 그후에부분 Ci+1(660)을 형성하기 위해 부분 R'i(659)에 가산된다.
절반 라운드 키 값 K1 i = {K1A i , K1B i , K1C i } 및 K2 i
본 발명의 이 실시예에서의 절반 라운드 키 값은 SOBER II 스트림 암호에 의해 발생된다. 그러나, 소정 스트림 암호는 스트림 암호가 균일하게 분포되는 바이트를 생성하면 절반 라운드 키 값을 발생시키는데 사용될 수 있다. 상기 스트림 암호가 s0, s1, ..., st, ...,로 표시되는 출력 바이트를 생성하면, 그후에 두개의 연속하는 바이트, zt= 256s2t+ s2t+1의 정수 값은Z 65536을 통해 균일하게 분포될 것이다.
서브키 값 K1i= {K1Ai, K1Bi, K1Ci}의 세트는 숫자가 0에서 59048(59049 = 3 x 273)로 균일하게 분포되고 모듈로-273으로 감소되며, 숫자는 또한Z 27xZ 27xZ 27을 통해 균일하게 분포된다. 절반 라운드 키 값 K2i는 숫자가 0에서 65501사이로(여기서 65502 = 54 x 1213) 균일하게 분포되며 모듈로-1213으로 감소되면, 상기 숫자는Z 1213을 통해 균일하게 분포된다. 이러한 관찰을 이용하여, 1 ≤i ≤r일 때 K1i= {K1Ai, K1Bi, K1Ci} 및 K2i에 대해 값을 결정하는 전형적인 방법은 도 7에 상술된 단계를 포함한다.
단계(700)에서, 인덱스 t는 0으로 세팅되며 라운드 숫자 i는 1로 세팅된다. 단계(710)에서, 중간 값 zt는 관계 zt= 256s2t+ s2t+1에 의해 결정된다. zt가 59049보다 작으면, 단계(720)로 진행한다. zt가 59049보다 작지 않으면, 단계(730)로 진행한다. 단계(730)에서, 인덱스 t는 증가되고 프로세스 흐름은 단계(710)로 진행한다. 단계(720)에서, K1i는 ztmod19683과 동일하게 세팅되고, 인덱스 t는 증가된다. 단계(725)에서, K1i= 272K1Ai+ 27K1Bi+ K1Ci가 되도록 K1Ai, K1Bi, K1Ci에 대한 값을 결정한다. 단계(725)후에, 프로그램 흐름은 단계(740)로 진행한다. 단계(740)에서, 값 zt는 관계 zt= 256s2t+ s2t+1에 의해 결정되며, 상기 인덱스 t는 단계 (720)에서 증가되었다. zt가 65502보다 작으면, 단계(750)로 진행하고, 그렇지 않으면 단계(760)로 진행한다. 단계(750)에서, K2i는 ztmod1213과 동일하게 세팅되며, 인덱스 t 및 i는 증가된다. i < r이면, 단계(710)로 복귀한다. 단계(760)에서, 인덱스 t는 증가되고 프로그램 흐름은 단계(740)로 진행한다.
상기에 기술된 방법을 이용하여, 1 ≤i ≤r일 때의 서브키 K1Ai, K1Bi, K1Ci각각이Z 27을 통해 균일하게 분배되며, 1 ≤i ≤r일 때의 제 2 절반 라운드 키 K2i는 균일하게Z 1213을 통해 분배된다. 대체 박스는 비선형성 및 랜덤성과 같은 만족할만한 암호 특성을 갖도록 선택될 수 있다. 절반 라운드 키가 균일하게 분배되면, 대체 박스에 대한 입력은 균일하게 분배되고 독립적일 것이다.
여기에 기술된 키 정수 치환 방법은 메시지 인증 코드에 이용하기 위한 것이지만, 정수 세트의 암호화 치환이 요구되는 데라면 어디서든 이용될 수 있다. 예를 들어, 여기에 기술된 본 발명의 실시예는 DES가 세트 {0, 1, ..., 264- 1}의 정수를 세트 {0, 1, ..., 264- 1}의 다른 정수로 암호화하는 방법와 유사한 방법으로, 세트 {0, 1, ..., N-1}의 정수를 세트 {0, 1, ..., N-1}의 다른 정수로 암호화하는데 사용될 수 있다.
여기에 기술된 키 정수 치환의 복호화 프로세스는 각 라운드내의 두개의 절반 라운드 함수의 순서가 역행하는 것을 제외하고 암호화 프로세스와 동일하며, 각 라운드내의 절반 라운드 키 값의 순서는 역행하며, 출력 vi는 Li로부터 모듈로-p로 감산되며 상기 출력 v'i는 Ri로부터 모듈로-q를 감산한다.
도 8은 본 발명의 또 다른 전형적인 실시예의 블록선도이며, 키 정수 치환은Z N을 통해 형성되며 N은 소수이다. N = S + T로 둔다. N ≥13인 모든 값에 대해, N = S + T가 되도록 두개의 합성수 S와 T가 존재한다. 따라서, 단계(800)에서, N 인덱스의 그룹은 S 인덱스로 구성된 섹션 A(801)와 T 인덱스로 구성된 섹션 B로 분리된다. 섹션 A(801)의 인덱스는 {a0, a1, .., aS-1}로 재라벨링되며 섹션 B(802)의 인덱스는 {b0, b1, ..., bT-1}로 재라벨링된다. 섹션 A(801)는 키 정수 치환 KIPS(810)에 따라 치환된다. 키 정수 치환 KIPS(810)는 상기에 기술된 본 발명의 실시예에 따라 실행될 수 있다. 섹션 B(802)의 인덱스는 키 정수 치환 KIPT(811)에 따라 치환된다. 키 정수 치환 KIPT(811)는 상기에 기술된 본 발명의 실시예에 따라실행될 수 있다.
따라서, KIPN의 소수 라운드는 다음과 같이 정의될 수 있다:
x ∈ {a0, a1, ..., aS-1} 이면, KIPA,B(x) = KIPS(x),
x ∈ {b0, b1, ..., bT-1} 이면, KIPA,B(x) = KIPT(x).
단계(820)에서, KIPA,B(x)의 출력은 1 ≤U ≤N-1일 때 아핀(affine) 연산 AffS(x) = U*x + V(mod N)과 같은 "혼합" 연산되며, U 및 V의 값은 보안 키에 따를 수 있다. 수학적으로, C, D ⊆R이며, b가 D의 고정된 엘리먼트이며, r이 C의 엘리먼트이고,A는 D상에 C를 매핑하는 선형 연산자인 경우에 연산자B:C _ D가Br =Ar + b로 정의되면,B는 아핀 연산자이다.
도 8의 일반적인 방법은 엘리먼트 중 소수를 갖는 세트를 두개 이상의 세트로 분할하며, 각 세트는 소수가 아닌 엘리먼트로 구성되며, 도 2 및 본 발명의 다른 여러 실시예에서 기술된 바와 같이, 합성수 세트상에 키 정수 치환을 수행하는 것이다. 하나의 세트의 엘리먼트의 치환이 상기 하나의 세트에 의해 정의된 출력을 발생시키기 때문에, 혼합 연산은 하나의 세트의 엘리먼트를 각 라운드후에 다른 세트로 산재시키도록 수행된다.
본 발명의 일 실시예에서, 도 8에 기술된 바와 같이, N은 소수이며, S 및 T가 합성수가 되도록 N = S + T로 둔다. 세트 A의 엘리먼트 수가 |A| = S이며 세트 B의 엘리먼트 수가 |B| = T가 되도록 A = {0, 1, S-1}, B = {S, ..., N-1}로 정의한다. 그러면 소수 라운드는 0 ≤x ≤S-1이면 KIPA,B(x) = KIPS(x)로, S ≤x ≤N-1이면 KIPA,B(x) = S + KIPT(x-S)로 정의될 수 있다.
도 8에 기술된 바와 같이, 본 발명의 또 다른 실시예에서, N은 소수이며, T와 T + 1이 합성수가 되도록 N = 2T + 1로 둔다. A ={0, 2, 4, ..., 2T} = {2y: y ∈Z T+1} 및 B = {1, 3, 5, ..., 2T - 1} = {2y + 1: y ∈Z T}로 정의한다. 그러므로, 세트 A는 짝수 값을 포함하며 세트 B는 홀수 값을 포함한다. 소수 라운드는 그후에 x = 2y이면 KIPA,B(x) = 2KIPT+1(y)로, x = 2y + 1이면 KIPA,B(x) = 1 +2KIPT(y)로 정의될 수 있다.
도 8에 기술된 바와 같이, 본 발명의 또 다른 실시예에서, 고정된 상수는 단계(820)의 아핀 매핑 연산시에 사용될 수 있다. U 및 V의 값은 Prob(A에서의 AffU,V(x) : A에서의 x)가 대략 |A|/N이 되도록 선택된다. U 및 V의 값은 세트 A 및 B의 엘리먼트의 분할에 따른다. 세트 A 및 B는 |A| ~ |B| ~ (N/2)가 되도록 선택된다. 치환 Y3= KIPN(X0)는 네개의 소수 라운드 및 세개의 아핀 라운드를 가지며, 상기 치환은 다음과 같이 정의된다:
Y0= KIPA,B(X0),
X1= AffU,V(Y0),
Y1= KIPA,B(X1),
X2= AffU,V(Y1),
Y2= KIPA,B(X2),
X3= AffU,V(Y2), 및
Y3= KIPA,B(X3).
KIPA및 KIPB는 KIPN의 키 길이와 동일한 키 길이로 보안되는 것으로 가정된다. KIPN은 네개의 소수 라운드에서 KIPA및 KIPB에 대해 요구되는 8개의 절반-라운드 키를 획득하기 위해 SOBER II와 같은 키 스케줄을 가져야 한다. 이러한 구조는 보안이 되는 치환을 발생시키도록 신뢰된다.
다른 실시예는 다수의 소수 라운드 및/또는 키 종속 아핀 라운드를 이용하여 실행될 수 있다. 더 많은 소수 라운드가 이용되면, 소수 라운드 함수는 속도를 증가시키기 위해 더 약한 키 정수 치환으로부터 형성될 수 있다.
따라서,Z N을 통해 키 정수 치환을 형성하는 방법이 기술되었다. 상기 기술은 당업자가 본 발명을 제조하고 이용할 수 있도록 제공된다. 이러한 실시예에 대한 여러 변조는 당업자에게 명백할 것이며, 여기에 정의된 일반 원리는 특허 발명을 이용하지 않고서 다른 실시에에 적용될 수 있다. 따라서, 본 발명은 여기에 도시된 실시예에 제한되지 않으며, 여기에 개시된 원리와 신규한 특성에 일치하는 최광위의 범위에 따른다.

Claims (22)

  1. Z N의 입력 값으로부터Z N의 출력 값을 획득하기 위한 방법으로서,
    상기 N = pq이고, p > 1 및 q > 1이며, 다수의 라운드를 포함하며,
    상기 각 라운드는,
    제 1 키 및 제 2 키를 발생시키는 단계;
    Z p의 엘리먼트인 제 1 부분과Z q의 엘리먼트인 제 2 부분으로 라운드 입력을 분리시키는 단계;
    상기 제 1 키를 상기 제 2 부분에 인가하여Z p의 엘리먼트인 제 3 부분을 생성하는 단계;
    모듈로-p 가산기를 이용하여 상기 제 1 부분 및 상기 제 3 부분을 가산하여 제 4 부분을 생성하는 단계;
    상기 제 2 키를 상기 제 4 부분에 인가하여Z q의 엘리먼트인 제 5 부분을 생성하는 단계;
    모듈로-q 가산기를 이용하여 상기 제 5 부분을 상기 제 2 부분에 가산하여 제 6 부분을 생성하는 단계; 및
    상기 제 4 부분과 상기 제 6 부분을 결합하여 상기 라운드의 출력을 형성하는 단계를 포함하며;
    상기 라운드가 최종 라운드이면, 상기 라운드의 출력은 본 발명의 출력 값이며, 상기 라운드가 최종 라운드가 아니면 상기 라운드의 출력은 다음 라운드에 대한 입력이 되는 방법.
  2. 데이터의 N 비트 블록의 각 비트가 다수의 N 인덱스로부터의 하나의 인덱스와 관련되며, 상기 N이 1보다 큰 정수 값 p와 1보다 큰 정수 값 q로 인수화될 수 있는 데이터의 N 비트 블록을 치환하는 방법으로서,
    상기 다수의 N 인덱스를 그룹Z p를 통해 형성되는 제 1 부분 및 그룹Z q를 통해 형성되는 제 2 부분으로 분리시키는 단계를 포함하는데, 이에 따라 상기 다수의 N 인덱스는 상기 제 1 부분의 배수 값과 상기 제 2 부분의 결합으로 표현될 수 있으며, 상기 배수 값은 정수 값 q에 의해 정의되며;
    제 1 절반 라운드 키와 제 2 절반 라운드 키를 형성하는 단계;
    상기 제 2 부분 및 상기 제 1 절반 라운드 키로부터 제 1 절반 라운드 값을 유도하는 단계를 포함하는데, 상기 제 1 절반 라운드 값은 상기 제 2 부분 및 상기 제 1 절반 라운드 키상에 연산하는 제 1 비선형 함수의 출력이며;
    모듈로-p 가산기를 이용하여 상기 제 1 절반 라운드 값과 상기 제 1 부분을 결합하여 제 3 부분을 생성하는 단계;
    상기 제 3 부분 및 상기 제 2 절반 라운드 키로부터 제 2 절반 라운드 값을 유도하는 단계를 포함하는데, 상기 제 2 절반 라운드 값은 상기 제 3 부분 및 상기 제 2 절반 라운드 키상에 연산하는 제 2 비선형 함수의 출력이며; 및
    모듈로-q 가산기를 이용하여 상기 제 2 절반 라운드 값과 상기 제 2 부분을 결합하여 제 4 부분을 생성하는 단계를 포함하는 방법.
  3. 제 2 항에 있어서, 상기 단계들은 다수의 라운드에서 각 라운드에 대해 반복되며, 각 라운드에서 발생되는 상기 제 3 부분 및 상기 제 4 부분은 후속 라운드에서 입력으로 이용되는 것을 특징으로 하는 방법.
  4. 제 3 항에 있어서, 상기 후속 라운드는 최종 라운드이며,
    상기 방법은,
    상기 최종 라운드에서 발생된 상기 제 3 부분과 상기 정수 값 q를 곱하는 단계;
    상기 곱해진 제 3 부분과 상기 최종 라운드에서 발생된 상기 제 4 부분을 결합하여 최종 결과를 생성하는 단계; 및
    상기 최종 결과에 따라 상기 데이터의 N 비트 블록을 치환하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  5. 제 2 항에 있어서, 상기 제 1 절반 라운드 키 및 상기 제 2 절반 라운드 키는 스트림 암호에 의해 발생되는 것을 특징으로 하는 방법.
  6. 제 2 항에 있어서, 상기 제 1 절반 라운드 키 및 상기 제 2 절반 라운드 키는 키 발생 방법에 의해 발생되며,
    상기 키 발생 방법은,
    다수의 균일하게 분포된 바이트를 발생시키는 단계;
    상기 다수의 균일하게 분포된 바이트의 연속 엘리먼트의 제 1 쌍을 함께 가산하여 제 1 중간 값을 생성하는 단계;
    상기 제 1 중간 값을 검사하여 상기 제 1 중간 값이 제 1 미리 결정된 량보다 작은지를 결정하는 단계;
    상기 제 1 중간 값이 상기 제 1 미리 결정된 량보다 크면 상기 다수의 균일하게 분포된 바이트의 연속 엘리먼트의 제 1 쌍을 함께 가산하는 상기 단계로 복귀하는 단계;
    상기 제 1 중간 값을 제 1 정수 값만큼 모듈로 감소시켜 상기 제 1 절반 라운드 키를 생성하는 단계;
    상기 다수의 균일하게 분포된 바이트의 연속 엘리먼트의 제 2 쌍을 함께 가산하여 제 2 중간 값을 생성하는 단계;
    상기 제 2 중간 값을 검사하여 상기 제 2 중간 값이 제 2 미리 결정된 량보다 작은지를 결정하는 단계;
    상기 제 2 중간 값이 상기 제 2 미리 결정된 량보다 크면 상기 다수의 균일하게 분포된 바이트의 연속 엘리먼트의 상기 제 2 쌍을 함께 가산하는 상기 단계로 복귀하는 단계;
    상기 제 2 중간 값을 제 2 정수 값만큼 모듈로 감소시켜 상기 제 2 절반 라운드 키를 생성하는 단계;
    다수의 제 1 절반 라운드 키 및 제 2 절반 라운드 키 쌍을 생성하기 위해 상기 키 발생 방법의 단계들을 반복하는 단계를 포함하며, 상기 연속 엘리먼트의 제 1 쌍 중 하나는 곱셈 숫자에 의해 먼저 곱해지며, 상기 연속 엘리먼트의 제 2 쌍 중 하나는 곱셈 숫자에 의해 먼저 곱해지며, 상기 다수의 제 1 절반 라운드 키 및 제 2 절반 라운드 키 쌍의 각 쌍은 다수 라운드의 각 라운드와 관련되는 것을 특징으로 하는 방법.
  7. 제 6 항에 있어서, 상기 제 1 미리 결정된 량은 상기 제 2 미리 결정된 량과 동일한 것을 특징으로 하는 방법.
  8. 제 6 항에 있어서, 상기 키 발생 방법은 제 1 절반 라운드 키가 K1i= xn-1a1,i+ xn-2a2,i+ ... + an,i이 되도록 다수의 서브키 {a1,i, a2,i, .., an,i}에 대한 값을 결정하는 단계를 더 포함하며, 상기 n ≥2이고, 상기 x는 상기 제 1 미리 결정된 량의 인수이며, 상기 i는 반복 라운드를 식별하는 것을 특징으로 하는 방법.
  9. 제 2 항에 있어서, 상기 제 1 비선형 함수는 다음의 단계를 포함하는 방법이며, 상기 단계는,
    제 1 상수 값으로 상기 제 2 부분을 곱하여 제 1 곱셈 결과를 생성하는 단계;
    상기 제 1 곱셈 결과와 상기 제 1 절반 라운드 키를 결합하여 제 1 결합 결과를 생성하는 단계;
    상기 제 1 결합 결과를 상기 제 1 결합 결과의 치환값으로 대체하여 상기 제 1 절반 라운드 값을 생성하는 단계를 포함하는 것을 특징으로 하는 방법.
  10. 제 9 항에 있어서, 상기 제 1 결합 결과를 대체하는 단계는,
    상기 제 1 결합 값을 대체 표시자 값과 대체 입력 값으로 분해하는 단계;
    상기 대체 표시자 값을 이용하여 제 1 다수의 대체 박스 중 하나를 선택하는 단계; 및
    상기 대체 입력 값을 상기 제 1 다수의 대체 박스로부터 선택된 대체 박스에 입력하여 상기 제 1 절반 라운드 값을 생성하는 단계를 포함하는 것을 특징으로 하는 방법.
  11. 제 2 항에 있어서, 상기 제 2 비선형 함수는 다음의 단계를 포함하는 방법이며, 상기 단계는,
    제 2 상수 값으로 상기 제 3 부분을 곱하여 제 2 곱셈 결과를 생성하는 단계;
    상기 제 2 곱셈 결과와 상기 제 2 절반 라운드 키를 결합하여 제 2 결합 결과를 생성하는 단계; 및
    상기 제 2 결합 결과를 상기 제 2 결합 결과의 치환값으로 대체하여 상기 제 2 절반 라운드 값을 생성하는 단계를 포함하는 것을 특징으로 하는 방법.
  12. 제 11 항에 있어서, 상기 제 1 결합 결과를 대체하는 상기 단계는,
    상기 제 1 결합 결과를 치환 표시자 값과 대체 입력 값으로 분해하는 단계;
    상기 치환 표시자 값을 이용하여 제 2 다수의 대체 박스 중 하나를 선택하는 단계; 및
    상기 대체 입력 값을 상기 제 2 다수의 대체 박스로부터 선택된 대체 박스에 입력하여 상기 제 2 절반 라운드 값을 생성하는 단계를 포함하는 것을 특징으로 하는 방법.
  13. 제 8 항에 있어서, 상기 제 1 비선형 함수는 다음의 단계를 포함하는 방법이며, 상기 단계는,
    제 1 상수 값으로 상기 제 2 부분을 곱하여 제 1 곱셈 결과를 생성하는 단계;
    상기 제 1 곱셈 결과가 xn-1u1+ xn-2u2+ ... + un과 같도록 상기 제 1 곱셈 결과를 상기 un에 의해 표시되는 다수의 항으로 분해하는 단계;
    상기 다수의 서브키 a1,i, a2,i, ..., an,i중 관련된 하나를 이용하여 상기 다수의 항 각각을 모듈로 가산하여 다수의 대체 입력 값을 생성하는 단계;
    상기 다수의 대체 입력 값 각각을 다수의 대체 박스 중 관련된 하나에 입력하여 다수의 대체된 값을 생성하는 단계; 및
    상기 다수의 대체된 값 중 적어도 두개를 모듈로 가산하여 상기 제 1 절반 라운드 값을 생성하는 단계를 포함하는 것을 특징으로 하는 방법.
  14. Z N의 입력 값으로부터Z N의 출력 값을 획득하는 방법으로서,
    N은 소수이며 13보다 크거나 같으며 N = S + T가 되도록 S 및 T는 합성수인 정수 값이며, 상기 방법은 다수의 라운드를 포함하며,
    각 라운드는,
    제 1 키 및 제 2 키를 발생시키는 단계;
    S 입력 값의 제 1 세트의 각 엘리먼트를 세트 {0, ..., S-1}의 고유한 인덱스에 할당하는 단계;
    T 입력 값의 제 2 세트의 각 엘리먼트를 세트 {0, ..., T-1}이 고유한 인덱스에 할당하는 단계;
    상기 다수의 입력 인덱스가 상기 세트 {0, ..., S-1}의 엘리먼트라면 다수의 입력 인덱스상에 상기 제 1 키를 이용하는 제 1 키 정수 치환을 수행하여 제 1 다수의 출력 인덱스를 생성하는 단계;
    상기 다수의 입력 인덱스가 상기 세트 {0, ..., T-1}의 엘리먼트라면 다수의입력 인덱스상에 상기 제 2 키를 이용하는 제 2 키 정수 치환을 수행하여 제 2 다수의 출력 인덱스를 생성하는 단계; 및
    상기 제 1 다수의 출력 인덱스와 상기 제 2 다수의 출력 인덱스를 혼합하는 단계를 포함하는 방법.
  15. 제 14 항에 있어서, 상기 제 1 다수의 출력 인덱스와 상기 제 2 다수의 출력 인덱스를 혼합하는 단계로부터의 출력은 후속 라운드에 대해 입력으로서 이용되는 것을 특징으로 하는 방법.
  16. 제 15 항에 있어서, 상기 후속 라운드는 최종 라운드이며,
    상기 방법은 상기 제 1 다수의 출력 인덱스와 상기 제 2 다수의 출력 인덱스를 혼합하는 상기 단계로부터의 출력에 따라 입력 비트 배열을 출력 비트 배열로 재배열하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  17. 프로세서; 및
    저장 매체를 포함하며, 상기 저장 매체는 N 비트 데이터 블록을 치환하는 프로세서에 의해 실행가능한 명령을 저장하며, 각 비트는 다수의 N 인덱스중 하나의 인덱스와 관련되며, 상기 다수의 N 인덱스는 다음의 단계를 포함하는 방법에 의해 치환되며, 상기 단계는,
    상기 다수의 N 인덱스 각각을 그룹Z p를 통해 형성되는 제 1 부분 및 그룹Z q를 통해 형성되는 제 2 부분으로 분리하는 단계;
    제 1 절반 라운드 키와 제 2 절반 라운드 키를 형성하는 단계;
    상기 제 2 부분과 상기 제 1 절반 라운드 키로부터 상기 제 2 부분 및 상기 제 1 절반 라운드 키상에 연산하는 제 1 비선형 함수의 출력이 되는 제 1 절반 라운드 값을 유도하는 단계;
    모듈로-p 가산기를 이용하여 상기 제 1 절반 라운드 값과 상기 제 1 부분을 결합하여 제 3 부분을 생성하는 단계;
    상기 제 3 부분 및 상기 제 2 절반 라운드 키로부터 상기 제 3 부분 및 상기 제 2 절반 라운드 키상에 연산하는 제 2 비선형 함수의 출력이 되는 제 2 절반 라운드 값을 획득하는 단계; 및
    모듈로-q 가산기를 이용하여 상기 제 2 절반 라운드 값과 상기 제 2 부분을 결합하여 제 4 부분을 생성하는 단계를 포함하며, 상기 다수의 N 인덱스 각각은 상기 제 1 부분의 배수 값과 상기 제 2 부분의 결합으로 표현될 수 있으며, 상기 배수 값은 상기 정수 값 q에 의해 정의되는 무선 통신 장치.
  18. 프로세서; 및
    저장 매체를 포함하며, 상기 저장 매체는 N 비트 데이터 블록을 치환하도록 상기 프로세서에 의해 실행가능한 명령의 세트를 저장하며, 상기 N은 합성수 또는소수이며, N이 합성수이면, 상기 프로세서는 N 비트 데이터 블록상에 키 정수 치환을 수행하는 명령 세트를 실행할 것이며, N이 소수라면, 상기 프로세서는 N 비트 데이터 블록을 제 1 세트 및 제 2 세트로 분리하고 상기 제 1 세트상에 제 1 키 정수 치환을 수행하며 상기 제 2 세트상에 제 2 키 정수 치환을 수행하는 명령 세트를 실행하는 무선 통신 장치.
  19. Z N의 입력 값으로부터Z N의 출력 값을 획득하는 장치로서,
    N = pq이며, p > 1 및 q > 1이며,
    제 1 키 및 제 2 키를 발생시키는 수단;
    라운드 입력을 제 1 부분과 제 2 부분으로 분리하는 수단을 포함하는데, 상기 제 1 부분은Z p의 엘리먼트이고 상기 제 2 부분은Z q의 엘리먼트이며;
    상기 제 1 키를 상기 제 2 부분에 인가하여 제 3 부분을 생성하는 수단을 포함하는데, 상기 제 3 부분은Z p의 엘리먼트이며;
    모듈로-p 가산기를 이용하여 상기 제 1 부분과 상기 제 3 부분을 가산하여 제 4 부분을 생성하는 수단;
    상기 제 2 키를 상기 제 4 부분에 인가하여 제 5 부분을 생성하는 수단을 포함하는데, 상기 제 5 부분은Z q의 엘리먼트이며;
    모듈로-q 가산기를 이용하여 상기 제 5 부분을 상기 제 2 부분에 가산하여 제 6 부분을 생성하는 수단; 및
    상기 제 4 부분 및 상기 제 6 부분을 결합하여 상기 라운드의 출력을 형성하는 수단을 포함하는 장치.
  20. Z N의 입력 값으로부터Z N의 출력 값을 획득하는 장치로서,
    상기 N이 소수이며 13 보다 크거나 같고 S와 T는 N = S + T가 되도록 합성수인 정수 값이며, 상기 방법은 다수의 라운드를 포함하며, 상기 방법의 각 라운드는 다음의 단계를 포함하며,
    제 1 키 및 제 2 키를 발생시키는 수단;
    S 입력 값의 제 1 세트의 각 엘리먼트를 세트 {0, ..., S-1}의 고유한 인덱스에 할당하는 수단;
    T 입력 값의 제 2 세트의 각 엘리먼트를 세트 {0, ..., T-1}의 고유한 인덱스에 할당하는 수단;
    다수의 입력 인덱스가 상기 세트 {0, ..., S-1}의 엘리먼트라면 상기 다수의 입력 인덱스상에 제 1 키 정수 치환을 수행하여 제 1 다수의 출력 인덱스를 생성하는 수단을 포함하는데, 상기 제 1 키 정수 치환은 상기 제 1 키를 이용하며;
    다수의 입력 인덱스가 상기 세트 {0, ..., T-1}의 엘리먼트라면 상기 다수의 입력 인덱스상에 제 2 키 정수 치환을 수행하여 제 2 다수의 출력 인덱스를 생성하는 수단을 포함하며, 상기 제 2 키 정수 치환은 상기 제 2 키를 이용하며;
    상기 제 1 다수 출력 인덱스와 상기 제 2 다수 출력 인덱스를 혼합하는 수단을 포함하는 장치.
  21. N은 합성수 또는 소수일 때 제 1 국과 제 2 국간에 전송되는 N 비트 데이터 메시지를 인증하는 방법으로서,
    상기 제 1 국에서의 그룹Z N의 다수 엘리먼트상에 키 정수 치환을 이용하여 치환 순서를 생성하는 단계;
    상기 치환 순서에 따라 상기 N 비트 데이터 메시지의 다수의 비트를 재정렬하여 치환된 N 비트 메시지를 형성하는 단계;
    상기 치환된 N 비트 메시지에 기초하여 제 1 주기적 덧붙임 검사(CRC) 메시지를 발생시키는 단계;
    상기 제 1 국으로부터 상기 제 2 국으로 상기 N 비트 데이터 메시지 및 상기 제 1 CRC 메시지를 전송하는 단계;
    상기 제 2 국에서 수신된 N 비트 데이터 메시지 및 수신된 CRC 메시지를 검출하는 단계;
    상기 수신된 N 비트 데이터 메시지상의 키 정수 치환을 이용하여 상기 제 2 국에서 제 2 치환 순서를 유도하는 단계;
    상기 제 2 치환 순서에 기초하여 제 2 CRC 메시지를 발생시키는 단계; 및
    상기 수신된 CRC 메시지 및 제 2 CRC 메시지를 비교하는 단계를 포함하며, 상기 비교에 의해 상기 수신된 CRC 메시지 및 상기 제 2 CRC 메시지가 매칭하는지가 상기 수신된 N 비트 데이터 메시지에 의해 인증되는 방법.
  22. 제 21 항에 있어서, 상기 방법은 에러를 정정하는데 사용될 수 있으며,
    상기 수신된 CRC 메시지 및 상기 제 2 CRC 메시지를 비교하는 단계는 미리 결정된 임계 값보다 작거나 같은 에러 량을 발생시키는지를 결정하는 단계;
    상기 비교 단계가 상기 미리 결정된 임계값보다 작거나 같은 에러 량을 발생시키면 상기 수신된 N 비트 데이터 메시지를 정정하는 단계; 및
    상기 비교 단계가 상기 미리 결정된 임계 값보다 큰 에러 량을 발생시키면 상기 N 비트 메시지의 재전송을 요청하는 단계를 포함하는 방법.
KR1020027014648A 2000-05-02 2001-05-01 메시지 인증 코드에 대한 키 정수 치환 발생 방법 및 장치 KR20030019365A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/563,648 US7428305B1 (en) 2000-05-02 2000-05-02 Generation of keyed integer permutations for message authentication codes
US09/563,648 2000-05-02

Publications (1)

Publication Number Publication Date
KR20030019365A true KR20030019365A (ko) 2003-03-06

Family

ID=24251366

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020027014648A KR20030019365A (ko) 2000-05-02 2001-05-01 메시지 인증 코드에 대한 키 정수 치환 발생 방법 및 장치

Country Status (9)

Country Link
US (1) US7428305B1 (ko)
EP (1) EP1279250A2 (ko)
JP (1) JP2004511812A (ko)
KR (1) KR20030019365A (ko)
CN (1) CN1435026A (ko)
AU (1) AU2001257489A1 (ko)
BR (1) BR0110497A (ko)
TW (1) TW533726B (ko)
WO (1) WO2001084772A2 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4549303B2 (ja) * 2005-02-07 2010-09-22 株式会社ソニー・コンピュータエンタテインメント パイプラインを用いてメッセージ認証コードを提供する方法および装置
AU2006243904A1 (en) * 2005-05-11 2006-11-16 Imetrikus, Inc. Methods for ensuring accuracy of health-related data transmission over a network
CN1777089B (zh) * 2005-11-24 2010-11-17 上海森田科学技术研究所有限公司 一种复数移相加密解密方法
CN101169776B (zh) * 2006-10-27 2012-01-25 松下电器产业株式会社 提升中央处理单元运算效能的数据加密方法及加密装置
KR20080072345A (ko) * 2007-02-02 2008-08-06 삼성전자주식회사 암호화 장치 및 그 방법
FR2918830B1 (fr) * 2007-07-13 2009-10-30 Viaccess Sa Verification de code mac sans revelation.
US8411554B2 (en) 2009-05-28 2013-04-02 Apple Inc. Methods and apparatus for multi-dimensional data permutation in wireless networks
JP6052166B2 (ja) * 2011-04-11 2016-12-27 日本電気株式会社 暗号化方法、暗号化装置および暗号化プログラム
CN103595539B (zh) * 2013-11-26 2016-08-24 南开大学 保留格式的数值型个人识别信息的加密方法
US20150222421A1 (en) * 2014-02-03 2015-08-06 Qualcomm Incorporated Countermeasures against side-channel attacks on cryptographic algorithms

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4850019A (en) * 1985-11-08 1989-07-18 Nippon Telegraph And Telephone Corporation Data randomization equipment
US4754482A (en) * 1985-11-26 1988-06-28 Samco Investment Company Method and apparatus for synchronizing encrypting and decrypting systems
JP2683022B2 (ja) * 1988-04-13 1997-11-26 株式会社日立製作所 データ秘匿方式
US5077793A (en) * 1989-09-29 1991-12-31 The Boeing Company Residue number encryption and decryption system
US5511123A (en) * 1994-08-04 1996-04-23 Northern Telecom Limited Symmetric cryptographic system for data encryption
US6038317A (en) * 1997-12-24 2000-03-14 Magliveras; Spyros S. Secret key cryptosystem and method utilizing factorizations of permutation groups of arbitrary order 2l
US6185679B1 (en) * 1998-02-23 2001-02-06 International Business Machines Corporation Method and apparatus for a symmetric block cipher using multiple stages with type-1 and type-3 feistel networks
CN1354935A (zh) 1999-02-26 2002-06-19 奥廷提戴特控股有限公司 包括安全文件标记的数字文件管理和成像系统及方法

Also Published As

Publication number Publication date
US7428305B1 (en) 2008-09-23
TW533726B (en) 2003-05-21
BR0110497A (pt) 2004-12-21
WO2001084772A2 (en) 2001-11-08
JP2004511812A (ja) 2004-04-15
CN1435026A (zh) 2003-08-06
EP1279250A2 (en) 2003-01-29
AU2001257489A1 (en) 2001-11-12
WO2001084772A3 (en) 2002-04-11

Similar Documents

Publication Publication Date Title
US7949129B2 (en) Method and apparatus for facilitating efficient authenticated encryption
US7054445B2 (en) Authentication method and schemes for data integrity protection
US7305084B2 (en) Fast encryption and authentication for data processing systems
JP3188940B2 (ja) 暗号化システム
Saraf et al. Text and image encryption decryption using advanced encryption standard
WO2015015702A1 (ja) 認証暗号装置、認証暗号方法および認証暗号用プログラム
US20070028088A1 (en) Polymorphic encryption method and system
US20020071552A1 (en) Method and apparatus for facilitating efficient authenticated encryption
US6031911A (en) Practical S box design
JP4608319B2 (ja) 複数鍵を用いたストリーム暗号の生成方法
KR20080058462A (ko) 메시지 인증 장치, 메시지 인증 방법, 메시지 인증 프로그램을 기록한 매체
KR20020041815A (ko) 대칭-키 암호에 대한 선형 변환
US7254233B2 (en) Fast encryption and authentication for data processing systems
Knudsen Block Ciphers—a survey
US6560337B1 (en) Systems, methods and computer program products for reducing effective key length of ciphers using one-way cryptographic functions and an initial key
KR20030019365A (ko) 메시지 인증 코드에 대한 키 정수 치환 발생 방법 및 장치
JPWO2006019152A1 (ja) メッセージ認証子生成装置、メッセージ認証子検証装置、およびメッセージ認証子生成方法
US8190892B2 (en) Message authentication code with blind factorization and randomization
Ali et al. A medical image encryption scheme based on Mobius transformation and Galois field
JP2021071570A (ja) 情報処理装置、情報処理方法及びプログラム
US11502818B2 (en) System to secure encoding and mapping on elliptic curve cryptography (ECC)
Hawkes et al. The mundja streaming mac
HOSSEINI et al. CBA Mode (v1-1)
KR20030001888A (ko) 키를 사용하지 않고 블록 정보만을 이용하는 암호알고리즘 설계 방법
Chen et al. Authenticated Encryption Modes of Block Ciphers, Their Security and Implementation Properties

Legal Events

Date Code Title Description
WITB Written withdrawal of application