KR20050006062A - 암호 처리 장치, 암호 처리 방법 및 컴퓨터 프로그램 - Google Patents

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

Info

Publication number
KR20050006062A
KR20050006062A KR1020040052549A KR20040052549A KR20050006062A KR 20050006062 A KR20050006062 A KR 20050006062A KR 1020040052549 A KR1020040052549 A KR 1020040052549A KR 20040052549 A KR20040052549 A KR 20040052549A KR 20050006062 A KR20050006062 A KR 20050006062A
Authority
KR
South Korea
Prior art keywords
data
processing
clock signal
bit
inverted
Prior art date
Application number
KR1020040052549A
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
Priority claimed from JP2003271525A external-priority patent/JP2005031471A/ja
Application filed by 소니 가부시끼 가이샤 filed Critical 소니 가부시끼 가이샤
Publication of KR20050006062A publication Critical patent/KR20050006062A/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/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry

Landscapes

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

Abstract

본 발명의 구성에 따르면, 변조 클럭 신호는 난수에 기초한 신호에 따라 생성되고, 데이터 처리 타이밍은 변조 클럭 신호에 따라 결정되어 데이터 처리를 실행한다. 따라서, 데이터를 암호화 및 복호화, 즉 암호전력 해석에 기초한 암호 해석에 대한 암호 처리 장치의 경과 시간 측면에서 소비 전력의 측정을 통한 암호 키, 복호 키 등의 비밀 정보 해석은 곤란하게 만들 수 있으며, 이로써 높은 보안 레벨을 갖는 암호 처리 장치 및 방법을 구현할 수 있다.

Description

암호 처리 장치, 암호 처리 방법 및 컴퓨터 프로그램{CRYPTOGRAPHIC PROCESSING APPARATUS, CRYPTOGRAPHIC PROCESSING METHOD AND COMPUTER PROGRAM}
본 발명은 암호 처리 장치, 암호 처리 방법 및 컴퓨터 프로그램에 관한 것으로, 특히, 암호 처리에 의해 생성된 중간 데이터의 저장 타이밍과 같은 처리 타이밍을 난수에 기초하여 생성하는 변조 클럭 신호에 따라 제어함으로써, 암호 해석에 대한 내성을 높인 암호 처리 장치, 암호 처리 방법 및 컴퓨터 프로그램에 관한 것이다.
현재, 네트워크 통신, 전자 상거래의 발전에 수반하여, 보안 유지가 중요한 문제로 되고 있다. 보안을 유지하는 방법들 중 하나는 암호 기술이다. 현재, 여러가지 암호화 방법을 이용한 통신이 실제로 행해지고 있다.
예를 들면, IC 카드와 같은 소형의 장치 내에 암호 처리 모듈을 내장하고, IC 카드와 데이터 판독/기입 장치로서의 사용되는 리더/라이터 사이에서 데이터 송수신을 행하여, 인증 처리, 또는 송수신 데이터의 암호화 및 복호화를 행하는 시스템이 실용화되고 있다.
암호 처리 모듈에서는, 예를 들면 평문(plain text)을 입력하여 암호문을 출력하는 데이터 암호화 처리, 또는 암호문을 입력하여 평문을 출력하는 복호화 처리가 실행된다. 이들 암호 처리는 암호 처리 모듈을 구성하는 하드웨어, 예를 들면 반도체 모듈에 의한 전기적인 처리를 포함한다. 따라서, 이러한 반도체 모듈에서 암호 처리가 실행되는 동안 전력 소비를 해석함으로써, 암호 처리에 적용된 키 및 알고리즘이 해석될 우려가 있다.
예를 들면, IC와 같은 연산 처리 장치에 대한 공격, 즉 암호 해독 공격으로서, 처리 시간을 해석함으로써 비밀 정보를 추정하는 타이밍 어택(TA: Timing attack), 암호 처리동안 소비 전력의 관측에 의해 비밀 정보를 추정하는 단순 전력 해석(SPA : Simple Power Analysis), 대량의 데이터에 대한 암호 처리에서의 소비 전력을 측정하고, 이들 측정 데이터를 통계적으로 해석함으로써 비밀 정보를 추정하는 전력 차분 해석(DPA : Differential Power Analysis) 등이 있다.
일반적인 암호 처리 장치는, 데이터 입력부, 기억부, 암호 처리부, 및 데이터 출력부로 구성된다. 이 장치는 예를 들면, 입력 데이터의 암호화를 행하는 경우에는 다음과 같이 동작한다. 즉, 데이터 입력부로부터 암호 처리부로 평문이 입력된다. 암호 처리부는, 예를 들면 DES(Data Encryption Standard) 등의 암호 처리 알고리즘을 실행하는 처리부에서 일정한 암호 처리 알고리즘에 따른 데이터 처리가 이루어진다.
암호 처리 알고리즘의 실행 과정에서 생성된 중간 데이터를 순차적으로 기억부에 저장하고, 또한 기억부에 저장한 중간 데이터를 취득하여 미리 정해진 일정한 처리 순서에 따라 암호화 처리를 실행한다. 암호 처리부에서, 미리 정해진 일련의 암호 처리 알고리즘이 종료되면, 생성된 암호문이 출력부를 통해 출력된다.
이러한 암호 처리 장치에서, 암호화 처리의 개시 시부터 특정한 암호화 중간 처리 절차가 개시될 때까지 소요되는 시간은 대략 일정해진다. 암호 알고리즘의 실장 방법에 대해서는 이하에 언급된 비특허 문헌 1에 자세히 설명되고 있다.
이러한 암호 처리 장치는, 상술한 단순 전력 해석 및 전력 차분 해석라 명명되는 암호 해석법을 적용함으로써, 암호 처리에 적용하는 키 정보 및 알고리즘이 해석될 우려가 있다.
단순 전력 해석 및 전력 차분 해석은 현재의 메모리 및 레지스터와 같은 반도체 디바이스에서, 특정한 시각에, 반도체 디바이스가 보유하는 값에 변화가 발생한 경우와, 보유하는 값에 변화가 발생하지 않는 경우에서, 소비 전력에 차가 발생한다는 특징을 이용하여, 암호 처리 장치가 암호 처리를 실행하고 있는 여러가지 타이밍에서 소비 전력을 측정함으로써, 암호 처리 장치가 보유하고 있는 암호 키 등의 비밀 정보를 식별하는 암호 해석법이다.
단순 전력 해석이나 전력 차분 해석이 유효하게 기능하는 조건으로서는 첫째, 소비 전력을 측정하고 있는 각 시점에서 행해지고 있는 암호 처리 절차를 식별할 수 있는 것, 둘째 각 시각에서 측정한 소비 전력의 값이 해당 시각에서 암호화 장치 내에서 행해지고 있는 암호화 처리의 연산 결과를 명확하게 반영하고 있는 것의 2가지를 들 수 있다.
종래의 암호화 장치, 복호화 장치 및 암호화/복호화 장치와 같은 암호 처리 장치에서는, 상기 2가지 조건이 만족되어, 단순 전력 해석이나 전력 차분 해석이 유효하게 기능하여, 암호문이 해석될 수 있다는 문제점이 존재하였다.
이 문제에 대처하기 위해, 몇가지 방법이 제안되고 있다. 예를 들면, 특허 문헌 1에는 차분 해독이나 선형 해독을 방지하는 것을 목적으로 한 데이터의 암호화 방법 및 장치가 기재되어 있다. 이 특허 문헌 1에 따르면, 데이터를 복수 블록으로 분할하고, 이 분할된 블록을 순차적으로 암호화하는 구성에서, 암호 처리 대상의 블록에 적용하는 키를, 이전 처리 블록의 중간 결과로부터 유도하는 구성으로 함으로써, 블록마다 다른 키를 적용한 처리를 행하는 것이다. 그 결과, 통계적인 키 추정이 곤란하게 된다.
또한, 특허 문헌 2에는 암호 처리에 적용하는 키 정보의 누설을 방지한 구성이 도시되어 있다. 이 특허 문헌 2에 기재된 구성은 암호화된 키 정보를 불휘발성 메모리에 저장하고, 전원 투입 시에 불휘발성 메모리로부터 암호화된 키 정보를 복호하며, 복호의 결과로서의 키 정보를 휘발성 메모리에 저장한다. 이들 동작들은 암호 처리에 적용된다. 전원 차단 시에 휘발성 메모리로부터 키 정보를 능동적으로 소거함으로써, 키 정보의 누설을 방지한다.
또한, 특허 문헌 3에는 단순 전력 해석 및 전력 차분 해석 등의 소비 전력의 측정에 의한 암호 해석에 대하여 내성이 있는 암호화 장치가 개시되어 있다. 이 특허 문헌 3에 기재된 구성에 따르면, 중간 데이터 제어 수단은 암호 처리에서 생성되는 중간 데이터를 난수에 따라 변화시키고, 이 난수에 따라 변화한 중간 데이터에 기초하는 암호 처리를 실행한다. 또한, 최종적인 출력(암호문)에 대해서는 난수에 의존하지 않는 데이터로 하는 것을 가능하게 한 것이다. 본 구성에서는, 암호 처리 디바이스의 상태 변화는 난수에 따라 변화한 중간 데이터에 기초하는 변화로 된다. 그 결과, 단순 전력 해석 및 전력 차분 해석과 같은 소비 전력의 측정에 의한 암호 해석의 곤란성이 높아진다는 것이다.
또한, 후술되는 비특허 문헌 2에는 암호 처리의 실행 시퀀스에서, 랜덤한 타이밍 시프트를 삽입함으로써, 파형의 타이밍 맞춤을 곤란하게 하는 방어법이 나타나 있다.
상술한 바와 같이, 암호 키 또는 알고리즘의 누설에 대한 대책에 대한 제안은 여러가지 존재한다. 그러나, 예를 들면 특허 문헌 1에 기재된 구성은 블록 단위로, 처리 완료 블록으로부터 중간 데이터를 추출하여, 새로운 키를 생성하는 복잡한 처리가 필요해지며, 연산 처리 효율의 저하 및 처리 지연이라는 문제를 발생시킬 우려가 있다. 또한, 특허 문헌 2에 기재된 구성은 키 데이터 그 자체의 누설을 방지하는 효과는 갖지만, 암호 처리 실행 중의 단순 전력 해석 및 전력 차분 해석과 같은 소비 전력의 측정에 의한 암호 해석에 대한 대책은 제공하지 않는다. 또한, 특허 문헌 3에 기재된 난수를 이용한 방법에 대해서는, 고층 전력 차분 해석이라 부르는 암호 해석법에 의해 공격이 가능한 것이 메써지(Messerges)에 의해 이미 나타나 있다. 예를 들면, ["Using Second-Order Power Analysis to Attack DPA Resistant Software", T.S. Messerges, CHES2000]에 설명되어 있다.
또한, 상술한 비특허 문헌 2는 암호 처리의 실행 시퀀스 동안 랜덤한 타이밍 시프트를 삽입하여 파형의 타이밍 매칭을 곤란화할 수 있다고 설명되어 있지만, 구체적인 랜덤 타이밍 시프트의 삽입 방법이 개시되어 있지 않다. 또한, 타이밍 시프트 삽입에 수반되는 퍼포먼스 저하에 대한 해결 수단에 대한 개시가 없어서, 일정 시간 내의 고속 처리가 요구되는 시스템에는 적용할 수 없다는 문제가 있다.
예를 들면, 암호 처리를 실행하는 IC 모듈은 예를 들면 역의 개찰구 등의 여러가지 게이트, 또는 쇼핑 센터 등에서 많이 이용되도록 되어 있으며, 소형화 및 처리의 신속화의 요구가 엄격하게 되어 있다. 따라서, 처리 알고리즘을 복잡화시키지 않고 고속 처리가 가능하며, 또한 전력 차분 해석이나, 고층 전력 차분 해석에 대한 내성이 있는 구성을 필요로 한다.
특허 문헌 1: 일본 특개평9-230786호 공보
특허 문헌 2: 일본 특개평8-504067호 공보
특허 문헌 3: 일본 특개2000-305453호 공보
비특허 문헌 1: "Applied Cryptography" (Bruce Shneier 저) John Wieley & Sons, Inc., 1996, ISBN 0-471-11709-9, pp.623-673
비특허 문헌 2: "DES and Differential Power Analysis", Louis Goubin, Jacques Patarin, CHES99
본 발명은 상기 문제점을 감안하여 이루어진 것으로, 처리 알고리즘을 복잡화시키지 않고 암호 처리 시퀀스가 갖는 규칙적인 처리에 수반하는 소비 전력 변동의 검출 등에 기초하는 단순 전력 해석, 전력 차분 해석 및 고층 전력 차분 해석에 의한 암호 해석의 곤란성을 높일 수 있는 암호 처리 장치, 암호 처리 방법 및 컴퓨터 프로그램을 제공하는 것을 목적으로 한다.
도 1은 DES 암호 처리의 기본 구성을 나타내는 도면.
도 2는 라운드 함수부의 각 라운드를 구성하는 변환부의 구성을 나타내는 도면.
도 3은 F 함수의 구성을 나타내는 도면.
도 4는 트리플 DES(Triple DES) 암호 처리 구성을 나타내는 도면.
도 5는 Sbox를 갖는 F 함수의 구성 및 중간 데이터 기억부로서의 레지스터를 갖는 암호 처리 디바이스의 구성예를 도시한 도면.
도 6은 암호 처리 실행 디바이스로서의 IC 모듈의 구성예를 나타내는 도면.
도 7은 클럭 신호에 기초하는 처리 타이밍의 제어를 도시한 도면.
도 8은 클럭 신호의 예 및 클럭 신호에 의한 처리 타이밍의 제어를 나타내는 도면.
도 9는 본 발명의 구성에 따른 암호 처리 실행 디바이스로서의 lC 모듈의 구성예(제1 실시예)를 나타내는 도면.
도 10의 (a) 내지 (e)는 변조 클럭 신호의 생성예, 및 변조 클럭 신호에 의한 처리 타이밍의 제어를 나타내는 도면.
도 11은 변조 클럭 신호에 의한 처리 타이밍의 제어를 도시한 도면.
도 12는 변조 클럭 신호 생성부에 의한 처리 절차를 도시한 흐름도.
도 13은 본 발명에 따른 암호 처리 장치의 변환 처리부 및 레지스터의 데이터 저장 구성의 구체적 구성의 예(제2 실시예)를 나타낸 도면.
도 14는 본 발명에 따른 암호 처리 장치의 변환 처리부 및 레지스터의 데이터 저장 구성의 구체적 구성예(제3 실시예)를 나타낸 도면.
도 15는 AES 암호 처리 구성을 도시하는 도면.
도 16은 본 발명의 구성이 적용 가능한 암호 처리 실행 디바이스로서의 IC 디바이스의 구성예를 나타내는 도면.
<도면의 주요 부분에 대한 부호의 설명>
110 : 라운드 함수부
111 : 초기 치환부
112, 113 : 변환부
114 : 역치환부
120 : 키 스케줄부
121 : 선택 치환부
122, 123 : 키 생성부
151 : F 함수부
171, 172 : 치환부
본 발명의 제1 양상은 암호 처리 장치를 제공하는 것으로서, 이 암호 처리 장치는, 데이터 처리 타이밍 제어 신호로서의 사용될 변조 클럭 신호를 생성하기 위한 변조 클럭 신호 생성부; 및 상기 변조 클럭 신호를 수신하고, 상기 입력된 변조 클럭 신호에 따라 처리 타이밍을 결정하여 데이터 처리를 실행하는 데이터 처리부를 포함하며, 상기 변조 클럭 신호 생성부는 난수에 기초하는 난수 신호에 대응한 변조 클럭 신호를 생성하여, 상기 변조 클럭 신호를 상기 데이터 처리부로 출력하는 구성을 갖는다.
본 발명의 제2 양상은 난수에 기초하여 난수에 대응하는 변조 클럭 신호 -상기 변조 클럭 신호는 데이터 처리 타이밍 제어 신호로서 사용됨- 를 생성하는 변조 클럭 신호 생성 단계; 및 상기 변조 클럭 신호를 수신하고, 상기 입력 변조 클럭 신호에 따라 처리 타이밍을 결정하여 데이터 처리를 실행하는 데이터 처리 단계를 포함하는 암호 처리 방법을 제공한다.
본 발명의 제3 양상은 암호 처리가 컴퓨터 시스템상에서 실행되도록 하기 위한 컴퓨터 프로그램을 제공하기 위한 것으로, 이 컴퓨터 프로그램은 난수에 기초하여 난수에 대응하는 변조 클럭 신호 -상기 변조 클럭 신호는 데이터 처리 타이밍 제어 신호로서 사용됨- 를 생성하는 변조 클럭 신호 생성 단계; 및 상기 변조 클럭 신호를 수신하고, 상기 입력 변조 클럭 신호에 따라 처리 타이밍을 결정하여 데이터 처리를 실행하는 데이터 처리 단계를 포함하는 것을 특징으로 한다.
본 발명의 제4 양상은 입력 데이터의 데이터 처리를 실행하기 위한 데이터 처리부; 상기 데이터 처리부에 의한 데이터 처리를 통해 생성된 중간 데이터를 구성하는 비트 데이터의 반전된 데이터를 생성하기 위한 반전된 데이터 생성 수단; 및 각기 상기 중간 데이터에 대응하는 상기 반전된 비트 데이터 및 비반전된 비트 데이터를 저장하기 위한 복수의 데이터 저장부를 포함하는 암호 처리 장치를 제공한다.
본 발명의 제5 양상은 입력 데이터의 데이터 처리를 실행하는 데이터 처리 단계; 상기 데이터 처리 단계에서의 데이터 처리를 통해 생성되는 중간 데이터를 구성하는 비트 데이터의 반전 데이터를 생성하는 반전 데이터 생성 단계; 및 상기 중간 데이터에 대응하는 비반전 비트 데이터 및 반전 비트 데이터를 각각 복수의 데이터 저장부에 저장하는 데이터 저장 단계를 포함하는 암호 처리 방법을 제공한다.
본 발명의 제6 양상은 암호 처리가 컴퓨터 시스템상에서 실행되도록 하기 위한 컴퓨터 프로그램을 제공하기 위한 것으로, 이 컴퓨터 프로그램은 입력 데이터의 데이터 처리를 실행하는 데이터 처리 단계; 상기 데이터 처리 단계에서의 데이터 처리를 통해 생성되는 중간 데이터를 구성하는 비트 데이터의 반전 데이터를 생성하는 반전 데이터 생성 단계; 및 상기 중간 데이터에 대응하는 비반전 비트 데이터 및 반전 비트 데이터를 각각 복수의 데이터 저장부에 저장하는 데이터 저장 단계를 포함하는 것을 특징으로 한다.
본 발명의 구성에 따르면, 변조 클럭 신호는 난수에 기초한 신호에 따라 생성되고, 데이터 처리 타이밍은 변조 클럭 신호에 따라 결정되어 데이터 처리를 실행한다. 따라서, 데이터를 암호화 및 복호화, 즉 전력 분석에 기초한 암호 해석에 대한 암호 처리 장치의 경과 시간 측면에서 소비 전력의 측정을 통한 암호화 키, 복호화 키 등의 비밀 정보 해석은 곤란하게 만들며, 이로써 높은 보안 레벨을 가진 암호 처리 장치 및 방법을 구현할 수 있다.
본 발명의 구성에 따르면, 만일 지연량이 미리 설정된 허용가능 최대 지연시간보다 짧은 경우, 난수 신호에 대응하는 변조 클럭 신호에 따라 제어를 실행하고, 만일 지연시간이 미리 설정된 허용가능 최대 지연 시간에 도달하는 경우, 정격 클럭 신호에 대응하는 클럭 신호에 따라 제어가 실행된다. 따라서, 과도한 처리 지연의 생성이 방지될 수 있고 미리 설정된 기간내에 처리 완료가 보장될 수 있다.
본 발명의 구성에 따르면, 예를 들면, 복수단을 갖는 라운드 함수부로 이루어진 공통 키 암호 처리를 실행하기 위한 암호 처리 장치에서, 각 단에서 F 함수 출력을 저장하는 타이밍, 즉 치환부를 통해 SBox로부터 출력된 중간 데이터의 출력치를 저장하는 타이밍과, 다음 단 처리에 대한 레지스터로부터의 데이터 판독 타이밍은 난수에 의해 결정되고, 미리 선정된 허용가능 최대 지연 시간이후에, 데이터 판독 및 데이터 기입이 정격 클럭 신호에 따라 실행된다. 따라서, 허용가능 최대 지연 시간 이전에 난수에 기초한 불규칙한 타이밍에서 데이터 처리를 실행하여, 경과 시간 측면에서 측정된 소비 전력의 측정을 통한 암호화 키 및 복호화 키와 같은 비밀 정보를 취득하는 암호 해석 방법에 대한 내성을 향상시킬 수 있다. 미리 선정된 허용가능 최대 지연 시간 이후에, 데이터 기입 및 데이터 판독은 정격 클럭 신호에 따라 실행되어, 과도한 처리 지연의 발생이 방지될 수 있으며 미리 선정된 기간내에 처리 완료가 보장될 수 있다.
본 발명의 구성에 따르면, 다양한 해석 공격에 대한 높은 내성을 지닌 암호 처리 장치 및 암호 처리 방법이 처리 알고리즘을 복잡화시키지 않고도 구현될 수 있다.
본 발명의 구성에 따르면, 데이터 암호화 또는 복호화를 하는 동안 장치의소비 전력을 측정함으로써 암호 키 및 복호 키와 같은 비밀 정보를 취득하는 암호 해석 방법, 즉 즉 전력 해석 및 전력 차분 해석과 같은 소비 전력 측정을 통한 암호 해석은 곤란하게 되고, 고차수 차분 전력 해석의 추가적인 응용도 곤란하게 만들 수 있다.
이하, 본 발명에 따른 암호 처리 장치, 암호 처리 방법 및 컴퓨터 프로그램의 상세에 대하여 설명한다.
암호 처리 알고리즘에는, 여러가지 것이 있지만, 크게 분류하면, 암호화 키와 복호화 키를 다른 키, 예를 들면 공개 키와 비밀 키로서 설정하는 공개 키 암호 방식과, 암호화 키와 복호화 키를 공통의 키로서 설정하는 공통 키 암호 방식으로 분류된다.
공통 키 암호 방식들 중 한 방식에서, 공통 키에 기초하여 복수의 키를 생성하고, 생성한 복수의 키를 이용하여 암호 처리를 반복하여 실행하는 방식이 있다. 이러한 키 생성 방식을 적용한 알고리즘의 대표적인 것이 공통 키 블록 암호 방식이다.
공통 키 블록 암호의 알고리즘은 주로, 입력 데이터의 변환을 실행하는 라운드 함수부와, 라운드 함수부의 각 라운드에 적용하는 키를 생성하는 키 스케줄부로 나눌 수 있다. 라운드 함수부의 각 라운드에 적용하는 키(서브-키)는 1개의 메인 키에 기초하여, 키 스케줄부에 입력되어 생성되며, 이 생성된 키는 각 라운드 함수부에서 적용된다. 이 공통 키 암호 방식의 대표적인 방식으로 미국 연방 표준 암호 방식으로서의 DES(Data Encryption Standard)가 있다.
DES 암호 처리의 기본 구조에 대하여, 첨부된 도면을 참조하여 설명한다. DES 암호 처리는 변환 함수가 단순한 반복에 의해, 평문을 암호문으로 변환하는 구조를 갖는다. 도 1에 DES 암호 처리의 기본 구성을 나타낸다. 입력 데이터의 변환을 실행하는 라운드 함수부(110)와, 라운드 함수부의 각 라운드에 적용하는 키를 생성하는 키 스케줄부(120)로 구성된다.
라운드 함수부(110)에서, 평문(64 비트)은 먼저, 초기 치환부(111)에서, L, R 각 32 비트로 분할된다. 이렇게 분할된 L, R 32 비트가 제1단 변환부(112)에 입력되며, 키 스케줄부(120)의 제1단 키 생성부(122)로부터 입력하는 키 K(1)에 기초하여 변환 처리가 이루어진다. 변환 처리 결과는 다음단의 제2단 변환부(113)에 입력된다.
키 스케줄부(120)에서는 먼저, 선택 치환부(121)에 의해 입력 메인 키(64 비트)의 패리티 8 비트가 제거되고, 나머지 56 비트의 교체 처리가 실행되어 제1단 키 생성부(122)에 입력된다. 제1단 키 생성부(122)에서는 입력 비트 열의 시프트 처리 및 패리티 비트의 제거 등이 실행되어, 48 비트의 서브 키 K(1)를 생성하여, 생성한 서브 키 K(1)를 라운드 함수부(110)의 제1단 변환부(112)로 출력한다. 제1단 키 생성부(122)에서는 시프트 처리에 의한 상위 비트 열(28 비트)과 하위 비트 열(28 비트)을 하단의 제2단 키 생성부(123)에 출력한다.
라운드 함수부는 16단의 변환부를 갖는다. 각 변환부는 각각 전단의 변환부의 출력을 입력으로 하여 키 스케줄부(120)로부터 입력되는 키를 적용한 변환 처리를 실행하여, 변환 결과를 후단의 변환부로 출력한다. 16단의 변환부에서 변환된출력이 역치환부(114)에 입력되고, 초기 치환부(111)의 역치환 처리가 실행되어, 암호문으로서 출력된다.
도 2는 라운드 함수부(110)의 각 라운드를 구성하는 변환부의 구성을 도시한다. 도 2에 도시한 바와 같이, 변환부는 전단 (n-1단)의 변환부로부터 2개의 입력, L(n-1), R(n-1)을 입력하고, 키 스케줄부로부터 키(k(n))를 입력한다. F 함수부(151)에서, 키 스케줄부로부터 입력되는 키(k(n))를 이용함으로써, 전단 변환부로부터 입력되는 비트 열(R(n-1))의 변환 처리가 이루어지며, 변환 결과가 전단 변환부로부터 입력되는 나머지 비트 열(L(n-1))과 배타적 논리합이 실행되고, 다음단의 변환부의 출력 R(n)이 생성된다. 다음단의 변환부에는 R(n-1)로부터 취득된 비트 열 L(n)과, 상술한 F 함수 및 배타적 논리합 연산에 의해 생성된 비트 열 R(n)이 입력되어 마찬가지의 처리가 반복된다.
F 함수의 구성을 도 3에 도시한다. F 함수는 비선형 처리를 실행하는 복수의 Sbox를 갖는다. 라운드 함수부의 전단로부터의 입력값 R(n-1)은 치환부(171)에 의해 48 비트로 확대되고, 또한 48비트의 비트 열과 키 스케줄부로부터 입력되는 키(48 비트)간에 배타적 논리합 연산이 실행된다. 이 배타적 논리합의 출력이 한번에 6 비트씩 비선형 변환 처리를 실행하는 복수의 Sbox (181-1)∼(181-8) 각각에 입력된다. 각 Sbox에서는, 예를 들면 변환 테이블을 적용한 6 비트로부터 4 비트로의 비선형 변환 처리가 실행된다.
Sbox (181-1)∼(181-8)로부터의 출력 비트 4×8=32는 치환부(172)로 입력되고, 비트 위치의 교체 처리가 이루어져서, F 함수 출력 32 비트를 생성하여 출력한다.
도 1∼도 3을 참조하여 설명한 바와 같이, 복수단(16단)의 변환 처리에 의해 DES 암호 처리가 실행된다. 이 DES 암호 처리를 보다 암호 강도를 높이기 위해 복수회 실행하는 구성, 예를 들면 3회의 DES 암호 처리를 실행하는 트리플 DES 암호 처리가 여러가지 분야, 예를 들면 인터넷을 통한 데이터 통신 기기간의 상호 인증 처리나, IC 카드와 리더/라이터 간의 상호 인증 처리 등에 적용하는 암호 처리로서 많이 채용되고 있다. 트리플 DES 암호 처리를 구별하기 위해, 1회의 DES 암호 처리를 행하는 것을 싱글 DES 암호 처리라 부른다.
트리플 DES(Triple DES) 암호 처리 구성은, 도 4에 도시한 바와 같이, 도 1∼도 3을 참조하여 설명한 DES 암호 처리를 3회 반복하여 실행함으로써, 평문으로부터 암호문을 생성한다. 싱글 DES 암호 처리부(185, 186 및 187) 각각이 상술한 16단의 라운드 함수부를 가지며, Sbox를 갖는 F 함수에 의한 처리를 16회 반복한다.
통상, 트리플 DES 암호 처리에서는, 최초의 싱글 DES 암호 처리부(185)와, 최후의 DES 암호 처리부(187)에 동일한 메인 키(Kl)를 적용하고, 중간의 DES 암호 처리부(186)에는 다른 메인 키(K2)를 적용한다. 이와 같이, DES 암호 처리를 복수회 반복하여 실행함으로써, 암호 보안이 강화될 수 있다.
그러나, 이러한 공통 키 암호 처리에서는 암호 해석에 의한 키, 또는 암호 알고리즘의 누설이 문제가 된다. 먼저, 단순 전력 해석(SPA : Simple Power Analysis)에 대하여 설명한다. 스마트 카드 등의 탬퍼 내성(tamper-proof) 디바이스 대부분은 트랜지스터로 구성된 논리 회로로 이루어진다. 게이트에 전압이 가해졌을 때에, 전류가 흘러서, 전력이 소비된다. 일반적으로, 회로의 소비 전력은 실행하고 있는 연산과 데이터의 값에 관계된다. 예를 들면, 곱셈 연산은 0을 기입하는 경우보다도 1을 기입하는 경우가 소비 전력이 커져서, 곱셈 연산과 근 연산(root calculation)에서는 각각 상이한 전력을 소비한다.
이와 같이, 연산이나 데이터값에 따라 전력 소비량이 변동하기 때문에, 비밀 정보를 이용한 연산을 행하고 있는 디바이스의 소비 전력의 변화를 관찰함으로써, 비밀 정보에 관하여 허밍 웨이트(humming weight) 등의 정보를 얻는 것이 가능해져서, 엔트로피를 작게 할 수 있다. 소비 전력의 변화를 직접 해석에 이용하는 방법을 단순 전력 해석이라고 부른다.
디바이스의 소비 전력은, 디바이스와 전원, 또는 접지 사이에 저항을 직렬로 삽입하고, 저항을 흐르는 전류값으로부터 구할 수 있다. 실제로 공통 키 암호의 연산을 행하고 있는 스마트 카드에 대하여 소비 전력 측정을 행하면, 측정 파형보다 공통 키 암호의 각 단의 연산이 분명하게 확인된다. 또한, 소비 전력 파형을 자세히 해석함으로써 키 레지스터의 교환 등의 정보를 얻을 수 있다.
다음으로, 전력 차분 해석(DPA : Differential Power Analysis)에 대하여 설명한다. 탬퍼 내성 디바이스의 소비 전력은 일반적으로 연산 내용과 연산에 이용되고 있는 비밀 정보에 의존한다. 그러나, 이들 내용에 의존한 소비 전력의 변화는 작아서, 측정 오차나 노이즈 등으로부터 분별하는 것은 일반적으로 곤란하다.
따라서, 코쳐(Kocher) 등은 대량의 측정값의 평균을 취하여 측정 오차나 노이즈 등의 영향을 작게 하고, 전체 데이터의 평균값과의 차분을 취함으로써 연산 동작에 의한 전력 소비의 영향을 제거하고, 이용되는 비밀 정보에 의한 소비 전력의 변화만을 추출하는 방법(전력 차분 해석)을 제안하였다.
코쳐(Kocher) 등은 DES에 대한 적용예를 나타내고 있다. 먼저, 라운드 함수부의 제1단, 또는 제16단에 입력되는 키의 일부 비트에 대하여 예상하고, 제1단 또는 제16단의 마지막에 메모리에 기입될 것으로 예상되는 데이터의 1 비트의 값에 주목한다. 이 값에 따라 소비 전력의 관측 데이터를 그룹 단위로 분류한다. 다음에, 각각의 그룹에 대하여 측정값의 평균을 취하여, 이들의 차분을 계산한다. 예상이 올바르며 주목한 비트가 연산에 이용될 때, 소비 전력의 차분이 커진다. 예상이 다른 경우. 그 차분은 확인할 수 없다.
전력 차분 해석은, 구체적으로는 이하의 수순(단계 1∼ 단계 7)에 따른 해석이 행해진다.
단계 1: m 회 암호화 프로세스를 관측하여, 각각 제16 단의 소비 전력의 변화 T1, ... , Tm을 취득한다. 또한, 암호문 C1, ..., Cm을 기록한다. 제16단의 소비 전력의 변화를 해석에 이용할 경우, 평문의 정보는 필요없다. m은 1000 정도면 충분하다.
단계 2: 키에 의존한 분배 함수 D(Ks, C)를 선택하며, 여기서 Ks는 어떠한 키 정보, C는 암호문이다. 예를 들면, 최종 단의 Sbox 1의 출력의 첫번째 비트의 값에 주목하여, Sbox에 공급되는 6 비트의 부분 키를 추정하는 경우를 고려하자. 이 경우, 함수 D는 다음식으로 제공된다.
K16은 제16단에 Sbox 1에 공급되는 6 비트의 부분 키의 예상값이고, C6은 K16과 배타적 논리합(XOR)되는 암호문의 6 비트이고, SBOX1(x)는 Sbox1에 6 비트 x가 공급된 경우의 출력 결과의 첫번째 비트이고, C1은 SBOX1의 출력 결과에 배타적 논리합(XOR)되는 암호문의 1 비트이다.
단계 3: 함수 D를 이용하여 T1,..., Tm을 2개의 그룹으로 나눈다.
S0={Ti|D(·, ·, ·)=0}
S1={Ti|D(·, ·, ·)=1}
다음으로, 각각의 그룹에 대하여 소비 전력의 평균값을 취한다.
단, |S0|+|S1|=m.
단계 4 : A0과 A1의 차분을 취하여, 전력 차분 신호를 얻는다.
=A0-A1
단계 5: 부분 키의 예상값 Ks가 올바르지 않는 경우, D(·, ·, ·)는 암호문에 대하여 거의 랜덤하게 "0"과 "1"을 출력한다. 따라서, 충분히 많은 샘플을취하면,의 값은 0에 가까워진다. 그러나, 실제로는 올바른 예상값 Ks와의 상호 작용을 위해,의 파형은 완전히 편평하게 되지는 않는다. Ks가 올바른 경우에는, D(·, ·, ·)는 주목한 비트의 실제의 값과 동일한 값을 취하기 위해, m에서 ∞로 함으로써,는 주목한 비트를 이용할 때에 소비하는 전력에 가까워진다.
다른 데이터값이나 측정 오차 등의, D(·, ·, ·)에 의존하지 않는 것은 0에 가까워진다. 소비 전력은 데이터의 비트값에 의존하기 때문에, D(·, ·, ·)의 파형은 주목한 비트가 이용되는 영역에서 펄스를 보이고, 그것 이외의 영역에서는 평탄해진다.
단계 6: 이상을 반복하여, Sbox1에 공급되는 부분 키를 추정한다. 반복의 최대값은 26=64회이다.
단계 7: 마찬가지의 작업을 나머지 7개의 Sbox에 대하여 행하여, 비밀 키에 대하여 48 비트의 정보를 얻는다. 나머지 8 비트의 키 정보는 전 탐색에 의해 구해진다. 이것은 DES에 관한 예이지만, Camellia 등에서 이용되고 있는 8×8 Sbox에 대해서도 마찬가지로 적용이 가능하다.
다음으로, 고층 전력 차분 해석에 대하여 설명한다. 상기 설명한 전력 차분 해석은 샘플의 하나의 이벤트에 기초를 둔 정보에 대하여 해석을 행하고 있지만, 고차 전력 차분 해석은 복수의 이벤트에 기초한 정보와 관련되어 해석에 이용한다. 분배 함수 D는 샘플마다 각각 다른 가중을 하거나, 2개 이상의 그룹 분할을 할 수 있다. 그와 같은 함수는 많은 방어책을 가져서, 평문이나 암호문의 정보가 불완전한 경우라도 해석이 가능한 경우가 있다. 또한, 특징적인 통계적 성질을 갖는 샘플에 대해서는 단순하게 평균을 취하지 않고 다른 처리를 행하는 것이 유효하다.
도 1∼도 4를 참조하여 설명한 복수단(16단)의 변환 처리에 의해 암호 처리가 실행되는 경우, 각 단의 처리 결과, 즉 중간 데이터가 일단, 기억부로서의 레지스터에 저장되고, 다음 처리단에서의 처리의 개시 시에 레지스터로부터 중간 데이터가 추출되고 다음단의 처리가 실행된다. 즉, 레지스터로의 중간 데이터의 저장, 및 레지스터로부터의 중간 데이터의 추출이 반복되어 실행되게 된다.
구체적인 처리에 대하여, 도 5를 참조하여 설명한다. 도 5에는 Sbox(204)를 갖는 F 함수의 구성 및 중간 데이터 기억부로서의 레지스터(207, 208)을 갖는 암호 처리 디바이스의 구성예이다.
도 1∼도 4를 참조하여 설명한 복수단(16단)의 변환 처리를 실행하는 경우, 각 처리단마다 생성하는 중간 데이터가 레지스터(207, 208)에 저장되며, 다음 처리단에서는 레지스터(207) 및 레지스터(208)로부터 중간 데이터가 추출되어 처리가 실행된다.
도 5의 (a)는 도 2에 도시하는 변환 처리부에 상당하고, 그 상세 및 중간 데이터 기억부로서의 레지스터를 도시한 것이 도 5의 (b)이다. 전단 (n-1단)의 처리 결과, 즉, L(n-1), R(n-1)은 각각 L 레지스터(211), R 레지스터(212)에 저장되고, R 레지스터(212)의 32 비트 데이터가 F 함수부(200)에 입력된다. 치환부(201)에서, 32 비트의 데이터는 48 비트로 확대 치환된다. 치환부(201)은 도 3의 치환부(171)에 상당한다.
또한, 치환부(201)의 출력에 대하여, 키 스케줄부로부터 키(k(n))(202)가 적용되고, 배타적 논리합(XOR)부(203)에서 배타적 논리합 연산 처리가 이루어지며, 처리 결과가 Sbox(204)에 입력된다. Sbox에서 비선형 변환이 실행되고, Sbox(204) 출력이 치환부(205)에서 비트 교체 등의 치환 처리가 실행된 후, 치환 결과가 배타적 논리합(XOR)부(206)에서 L 레지스터(211)의 저장값과 배타적 논리합 연산 처리가 이루어지며, 그 결과가 R 레지스터(212), L 레지스터(211)에 저장된다. 이들 저장 데이터가 또한 다음단의 처리에서 추출되어 마찬가지의 처리가 반복되게 된다.
단순 전력 분석, 전력 차분 해석, 및 고차 전력 차분 해석에 대한 대응책을 고려하지 않은, 도 5에 도시한 바와 같은 실행에서는 F 함수부(200)의 출력이 직접 레지스터에 저장되고, 후단의 처리에는 레지스터로부터의 데이터 추출을 실행하여 추출한 데이터에 기초하는 처리가 실행된다.
이들 처리를 실행하는 디바이스는 트랜지스터로 구성된 논리 회로이고, 상술한 바와 같이 실행하고 있는 연산과 이용되고 있는 데이터의 값에 관계하는 소비 전력이 발생한다. 예를 들면, 레지스터에 대한 데이터 기입에서, 0을 기입하는 경우와 1을 기입하는 경우에서 다른 소비 전력이 사용된다. 따라서, 레지스터에 대한 중간 데이터의 기입, 판독을 반복하여 실행하는 연산을 행하고 있는 디바이스의 소비 전력의 변화를 관찰함으로써, 비밀 정보의 해석을 행하는 것이 가능해진다.
암호 처리를 실행하는 디바이스로서의 IC 모듈(300)의 구성예를 도 6에 도시한다. 상술한 암호 처리는, 예를 들면 PC, IC 카드, 리더/라이터, 기타, 여러가지정보 처리 장치에서 실행 가능하다. 도 6에 도시하는 IC 모듈(300)은 이들 여러가지 기기에 구성하는 것이 가능하다.
도 6에 도시하는 CPU(Central processing Unit)(301)은 암호 처리의 개시나, 종료, 암호 처리 프로그램에 따른 각 처리의 실행, 데이터의 송수신의 제어, 각 구성부 간의 데이터 전송 제어, 메모리(레지스터)(302)로의 데이터 저장, 메모리(레지스터)(302)로부터의 데이터 판독 처리, 그 밖의 각종 처리를 실행하는 프로세서이다. 프로세서에 의해 실행되는 다양한 처리의 실행 타이밍은 클럭 신호 생성부(310)에 의해 생성된 클럭 신호에 의해 제어된다.
메모리(레지스터)(302)는 CPU(301)이 실행하는 프로그램, 또는 연산 파라미터로서의 고정 데이터를 저장하는 ROM(Read-Only-Memory), CPU(301)의 처리에서 실행되는 프로그램, 및 프로그램 처리에서 적절하게 변화하는 파라미터의 저장 영역, 작업 영역으로서 사용되는 RAM(Random Access Memory) 등으로 이루어진다. 메모리(레지스터)(302)에는 상술한 중간 데이터의 저장 영역도 형성된다. 또한, 메모리(302)는 암호 처리에 필요한 키 데이터 등의 저장 영역으로서 사용 가능하다.
난수 생성기(303)는 암호 처리에 필요하게 되는 키의 생성 등에서 필요하게 되는 난수의 발생 처리를 실행한다.
송수신부(304)는 외부와의 데이터 통신을 실행하는 데이터 통신 처리부이고, 예를 들면 리더/라이터 등, IC 모듈과의 데이터 통신을 실행하여, IC 모듈 내에서 생성한 암호문의 출력, 또는 외부의 리더/라이터 등의 기기로부터의 데이터 입력 등을 실행한다.
먼저, 도 5를 참조하여 설명한 바와 같이, 암호 처리에서 발생하는 중간 데이터는 레지스터에 저장되고, 또한 다음 처리에서 레지스터로부터 중간 데이터의 판독이 행해지게 된다. 이들 데이터의 기록 및 판독할 때의 처리 타이밍은 일정 사이클의 주기를 갖는 클럭 신호에 의해 제어된다.
즉, 도 7에 도시한 바와 같이, 클럭 신호 생성부(310)은 일정 주기의 클럭 신호를 생성하여 이를 프로세서로서의 CPU(301)에 공급한다. CPU(301)는 메모리(레지스터)(302)에 대한 데이터 기입 및 데이터 판독 처리를 실행한다.
도 8에 도시한 바와 같이, 클럭 신호 생성부(310)이 생성하는 클럭 신호는 일정 주기의 클럭 사이클을 갖는 디지털 파형 신호이다. 예를 들면, CPU(301)은 메모리(레지스터)(302)에 대한 데이터 기입 처리, 또는 메모리(레지스터)(302)에 대한 데이터 판독 처리를 실행한다.
클럭 신호 생성부(310)이 생성하는 클럭 신호는 시간 간격이 일정하기 때문에, 소비 전력을 측정함으로써 암호화 키나 복호 키 등의 비밀 정보를 얻는 암호 해석법이 유효하게 작동할 수 있다. 즉, 시간 경과에 수반되는, 소비 전력의 추이를 관찰함으로써, 레지스터에 대한 데이터 저장 타이밍 등, 각종 처리 타이밍이 해석되게 된다.
본 발명은 이러한 규칙적인 처리 타이밍에 따른 처리에 기인하는 공격에 대한 약점을 해소하는 것이다. 본 발명의 구성에서, 클럭 신호를 그대로, 처리 실행 타이밍의 제어 신호로서 이용하는 것이 아니라, 난수에 기초하여 랜덤한 처리 실행 타이밍 제어 신호로서의 변조 클럭 신호를 생성한다.
본 발명에 따른, 암호 처리 실행 디바이스로서의 IC 모듈(500)의 구성예를 도 9에 도시한다. 도 9에 도시하는 CPU(Central processing Unit)(501)은 데이터 처리 기능을 갖는 프로세서이고, 암호 처리의 개시나, 종료, 암호 처리 프로그램에 따른 각 처리의 실행, 데이터의 송수신의 제어, 각 구성부 간의 데이터 전송 제어, 메모리(레지스터)(502)에의 데이터 저장, 메모리(레지스터)(502)로부터의 데이터 판독 처리, 그 밖의 각종 처리를 실행하는 프로세서이다. 프로세서에 의해 실행되는 다양한 처리의 실행 타이밍은 변조 클럭 신호 생성부(530)이 생성하는 변조 클럭 신호에 의해 제어된다.
변조 클럭 신호 생성부(530)는 일정 주기의 정규 클럭 신호를 클럭 신호 생성부(510)로부터 수신함과 함께, 난수 신호 생성부(520)이 생성하는 난수 신호를 수신하며, 이들 2개의 신호에 기초하여 변조 클럭 신호를 생성한다. 변조 클럭 신호 생성부(530)는 카운터(540)를 가지며, 카운터로부터 처리의 지연 시간이 미리 정한 허용 지연 시간보다 짧은지의 여부를 계측한다. 만일 처리 지연 시간이 허용 지연 시간보다 짧은 경우에는, 난수 신호에 기초하는 변조 클럭 신호를 CPU(501)에 출력하고, 지연이 허용 지연 시간의 상한이 되면, 일정 주기의 정규 클럭 신호는 CPU(501)로 출력된다. 이들 처리에 따라, 처리의 실행 타이밍이 제어되게 된다. 이들 처리의 상세에 대해서는 후술한다.
메모리(레지스터)(502)는 CPU501이 실행하는 프로그램, 또는 연산 파라미터로서의 고정 데이터를 저장하는 ROM(Read-Only-Memory), CPU(501)의 처리에서 실행되는 프로그램을 저장하기 위한 저장 영역 또는 작업 영역으로서 사용될RAM(Random Access Memory) 등으로 이루어진다. 메모리(레지스터)(502)는 상술한 중간 데이터의 저장 영역도 갖는다. 또한, 메모리(502)는 암호 처리에 필요한 키 데이터 등의 저장 영역으로서 사용 가능하다. 비밀 데이터 등의 저장 영역은 탬퍼 내성 구조를 갖는 메모리로서 구성되는 것이 바람직하다.
난수 생성기(503)는 암호 처리에 필요하게 되는 키의 생성 등에서 필요하게 되는 난수의 발생 처리를 실행한다.
송수신부(504)는 외부와의 데이터 통신을 실행하는 데이터 통신 처리부이고, 예를 들면 리더/라이터 등, IC 모듈과의 데이터 통신을 실행하여, IC 모듈 내에서 생성한 암호문의 출력, 또는 리더/라이터 등의 기기로부터의 데이터 입력 등을 실행한다.
본 실시예의 구성에서, 데이터 처리 기능을 갖는 CPU(501)의 실행 처리, 예를 들면 메모리(레지스터)(502)에 대한 데이터 저장 처리나, 메모리(레지스터)(502)에 대한 데이터 판독 처리 타이밍 등의 각종 처리 타이밍은, 변조 클럭 신호 생성부(530)이 생성하는 변조 클럭 신호에 기초하여 결정된다.
도 10의 (a) 내지 (e)를 참조하여, 변조 클럭 신호 생성부(530)이 생성하는 변조 클럭 신호에 대하여 설명한다. 변조 클럭 신호 생성부(530)은 일정 주기의 정규 클럭 신호를 클럭 신호 생성부(510)으로부터 수신함과 함께, 난수 신호 생성부(520)이 생성하는 난수 신호를 입력으로 하여, 이들 2개의 신호에 기초하여 변조 클럭 신호를 생성한다.
도 10의 (a)는 클럭 신호 생성부(510)으로부터 입력되는 일정 주기의 정규클럭 신호를 나타낸다. 도 10의 (b)는 난수 신호 생성부(520)이 생성하는 난수의 예이며, 도 10의 (c)는 난수에 기초하여 생성되는 난수 신호이다.
도 10의 (B)에서는 난수 [110011101101]의 난수 데이터예를 나타내고 있다. 도 10의 (c)의 난수 신호는 난수 [1]이 [High], 난수 [0]이 [Low]로 되도록 설정된 신호이다. 난수는 난수 신호 생성부(520)에서 랜덤하게 생성되는 난수이며, 도 10의 (c)의 난수 신호는 랜덤하게 생성되는 난수에 기초하여 설정되는 신호이다.
변조 클럭 신호 생성부(530)은 도 10의 (a)의 일정 주기의 정규 클럭 신호를 클럭 신호 생성부(510)으로부터 수신하고, 도 10의 (c)의 난수 신호를 난수 신호 생성부(520)으로부터 수신하며, 이들 2개의 신호에 기초하여, 도 10의 (e)의 변조 클럭 신호를 생성하여, 처리 타이밍의 제어 신호로서 출력한다. 도 10의 (e)의 변조 클럭 신호에서, 각종 처리 타이밍은 변조 클럭 신호의 상승 에지 (1)∼(5)에 설정된다.
도 10의 (e)의 변조 클럭 신호는 전반은 도 10의 (c) 난수 신호이고, 후반은 도 10의 (a) 클럭 신호에 대응하는 신호이다. 변조 클럭 신호 생성부(530)은 카운터(540)을 가지며, 카운터(540)는 도 10의 (c)의 난수 신호에 기초하여 처리를 실행한 경우의 지연을 계측한다. 즉, 도 10의 (a)의 정규 클럭 신호에 기초하는 처리에 비해, 도 10의 (c)의 난수 신호에 기초하는 처리에 의해 발생하는 지연을 카운트한다. 만일 지연이 미리 설정한 허용 지연 시간보다 짧은 경우에는, 도 10의 (c)의 난수 신호를 변조 클럭 신호로서 출력하고, 지연이 미리 설정한 허용 지연 시간의 상한에 도달한 경우에는 도 10의 (a)의 정규 클럭 신호를 변조 클럭 신호로서 출력한다. 이 처리에 의해, 처리 지연이 과대해지는 것이 방지되어, 소정 시간 내의 처리 완료가 보증된다.
도 10의 (a) 내지 (e)에 나타난 예에서는, 최대의 허용 지연 시간을 카운터=4로서 설정한 예를 나타내고 있다. 즉, 도 10의 (a)의 정규 클럭 신호에 대하여, 도 10의 (c)의 난수 신호의 처리 타이밍 발생 수의 지연이 4가 될 때까지는 도 10의 (c) 난수 신호를 변조 클럭 신호로서 출력하고, 지연이 4에 도달한 경우에는 도 10의 (a)의 정규 클럭 신호를 변조 클럭 신호로서 출력한다.
도 10의 (d)의 카운터는 초기 상태는 [0]으로 설정되어, 도 10의 (a)의 정규 클럭 신호의 상승 또는 하강 에지의 발생 수와, 도 10의 (c)의 난수 신호의 상승 또는 하강의 발생 수의 차가 발생한 시점에, 카운트 업한다. 본 도면에 나타난 예에서는 포인트 (a), (c), (e), (f)의 각 점에서, 도 10의 (a)의 정규 클럭 신호의 상승 또는 하강 에지가 발생하고 있지만, 도 10의 (c)의 난수 신호의 상승 또는 하강 에지가 발생하지 않고, 이들 각 포인트에서 카운터(540)는 카운트 업된다.
도 10의 (a) 내지 (e)의 예에서는, 최대 허용 지연 시간을 카운터=4로서 설정한 예이다. (f)의 포인트에서, 카운터의 카운트값이 4로 되기 때문에, 도 10의 (e)에 도시한 바와 같이, 포인트(f)까지는 도 10의 (c)의 난수 신호를 변조 클럭 신호로서 출력하고, 지연이 미리 설정한 허용 지연 시간의 상한, 즉 카운트=4에 도달한 경우에는 도 10의 (a)의 정규 클럭 신호를 변조 클럭 신호로서 출력한다. 이 처리에 의해, 처리 지연은 정규 클럭 수로 변환될 때 클럭 수=4까지 억제하는 것이 가능하다. 따라서, 지연이 과대해지는 것이 방지되어, 소정 시간 내의 처리 완료가 보증된다.
도 11을 참조하여, 변조 클럭 신호에 따라 레지스터에 대한 데이터 기입 처리 및, 레지스터로부터의 데이터 판독 처리에 대하여 설명한다.
메모리(레지스터)(502)에 대한 데이터 기입, 또는 메모리(레지스터)(502)로부터의 데이터 판독 처리는, 예를 들면 먼저 도 1∼도 5를 참조하여 설명한 복수단의 라운드 함수부에서의 각 단의 Sbox 출력에 기초하는 데이터의 저장 처리나, 다음단의 처리 개시 시에 반복하여, 실행된다.
이들 처리 타이밍은 변조 클럭 신호 생성부(530)이 생성하는 변조 클럭 신호에 기초하여 결정된다. CPU(501)는 변조 클럭 신호 생성부(530)이 생성하는 변조 클럭 신호를 취하여, 입력하는 변조 클럭 신호에 의해 결정되는 처리 타이밍, 즉, 도 10의 (e)의 포인트 (1)∼(5)에서, 메모리(레지스터)(502)에 대한 데이터 기입, 또는 메모리(레지스터)(502)로부터의 데이터 판독 처리가 실행된다.
변조 클럭 신호 생성부(530)은 도 10의 (a)의 일정 주기의 정규 클럭 신호를 클럭 신호 생성부(510)로부터 수신하고, 또한 도 10의 (c)의 난수 신호를 수신하며, 이들 2개의 신호에 기초하여, 도 10의 (e)의 변조 클럭 신호를 생성한다.
변조 클럭 신호 생성부(530)는 카운터(540)을 가지며, 카운터(540)에 의해, 도 10의 (c)의 난수 신호에 기초하여 처리를 실행한 경우의 지연을 계측한다. 만일 지연이 미리 설정한 허용 지연 시간보다 짧은 경우에는, 도 10의 (c) 난수 신호를 변조 클럭 신호로서 출력하며, 지연이 미리 설정한 허용 지연 시간의 상한에 도달한 경우에는 도 10의 (a)의 정규 클럭 신호를 데이터 처리부로서 기능하는CPU(501)에 변조 클럭 신호로서 공급한다. CPU(501)는 변조 클럭 신호 생성부(530)로부터 입력되는 변조 클럭 신호에 기초하는 타이밍 제어 하에서 처리가 실행된다. 이 지연 시간의 카운트 처리에 의해, 처리 지연이 과대해지는 것이 방지되어, 소정 시간 내의 처리 완료가 보증된다.
도 12는 변조 클럭 신호 생성부(530)에서 실행하는 변조 클럭 신호의 생성 및 출력 처리 수순을 설명하는 흐름도를 나타낸다. 이 흐름도를 참조하여, 변조 클럭 신호 생성부(530)의 처리 수순을 설명한다.
단계 S101에서, 변조 클럭 신호 생성부는, 일정 주기의 정규 클럭 신호(도 10의 (a) 참조) 및 난수 신호(도 10의 (c) 참조)를 수신한다.
단계 S102에서, 난수 신호(도 10(c) 참조)에 기초하여, 변조 클럭 신호를 생성하고, 변조 클럭 신호 생성부에서의 카운터가 정규 클럭 신호에 대한 난수 신호의 지연 카운트를 개시(도 10의 (d) 참조)한다.
단계 S103에서, 카운터에 의해 카운트되는 카운트 수에 기초하여 결정되는 지연량이 미리 정한 허용 지연 시간 이내인지의 여부를 판정한다. 도 10의 (a)의 예에서는, 카운트 수=4를 허용 최대 지연 시간으로서 설정하고 있다.
지연량이 미리 정한 허용 최대 지연 시간 미만인 경우(단계 S103의 판정: 예)에는 단계 S104로 진행하여, 난수 신호를 변조 클럭 신호로서 출력한다. 지연량이 미리 설정한 허용 최대 지연 시간에 도달한 경우(단계 S103의 판정: 아니오)에서 단계 S105로 진행하여, 정규 클럭 신호를 변조 클럭 신호로서 출력한다.
이와 같이, 본 발명의 구성에 따르면, 난수에 기초하여 생성되는 변조 클럭신호를 적용하여 처리 타이밍이 설정되며, 예를 들면 중간 데이터의 레지스터로의 저장 처리, 또는 레지스터로부터의 데이터 판독 처리가 변조 클럭 신호에 기초하여 제어된다. 따라서, 규칙적인 클럭에 의한 처리가 실행되지 않게 되어, 시간축에 따른 전력 소비의 해석에 기초하는 암호 해석에 대한 내성을 높이는 것이 가능해져서, 보안 레벨이 높은 암호 처리가 가능해진다.
또한, 본 발명의 구성에서는 난수 신호에 기초하는 제어에 의해 발생하는 지연량을 카운터에 의해 계측하고, 지연량이 허용 최대 지연 시간에 도달한 이후에는 정규 클럭 신호를 출력하여, 정규 클럭 신호에 의해 설정되는 타이밍 처리를 실행한다. 따라서, 시스템은 처리 지연이 과대해지는 것을 방지하고, 소정 시간 내의 처리 완료를 보증하여, 고속 처리가 필요한 시스템에서도 처리 에러를 발생시키지 않는다.
도 13은 본 발명에 따른 암호 처리 장치의 데이터 처리부로서의 변환 처리부 및 데이터 기억부로서의 레지스터에 대한 데이터 기억 구성의 구체적 구성예의 다른 예를 도시한다. 도 13에 도시하는 본 발명의 암호 처리 장치 구성에서는, 상술한 단순 전력 해석, 전력 차분 해석, 고차 전력 차분 해석에 대처하기 위해, S 박스(604)의 출력에 기초하는 F 함수부(600)으로부터의 출력은 배선에 의해 2개로 분기된다. 한쪽은 출력값을 변경하지 않고, 제1 데이터 저장부(610)에 입력되어, R 레지스터(612) 및 L 레지스터(611)에 저장된다. 다른 출력은 제2 데이터 저장부(620)에 입력되며, 인버터(621, 622)에 의해 출력값이 반전된 후, R' 레지스터(622), 및 L' 레지스터(632)에 저장된다.
레지스터에 비트값을 보존할 때에 소비되는 전력은 S 박스(604)의 출력의 허밍 웨이트에 비례(보다 엄밀하게는 상관(correlation)이 큼)한다. 출력값을 그대로 저장하는 제1 데이터 저장부(610)의 R 레지스터(612) 및 L 레지스터(611)과, 출력값의 반전 데이터를 저장하는 제2 데이터 저장부(620)의 R' 레지스터(622), 및 L' 레지스터(632)로 분기시켜 데이터를 저장함으로써, 양쪽의 허밍 웨이트의 합을 항상 일정하게 유지할 수 있다. 상술한 디바이스의 소비 전력의 변화를 관찰함으로써 비밀 정보에 관한 허밍 웨이트의 정보 취득이 곤란해져서, 소비 전력의 변화에 기초하는 해석의 곤란성을 높일 수 있다.
각 레지스터에 대한 비반전 데이터 및 반전 데이터의 저장 타이밍은 어긋남이 없는 타이밍에서 병렬로 실행하는 것이 바람직하다. 이러한 타이밍 제어를 행함으로써, 시간축을 따른 디바이스의 소비 전력의 변화에 관한 허밍 웨이트의 정보 취득이 곤란해진다.
도 13에 도시하는 구성에 기초하는 처리에 대하여 설명한다. 도 13의 구성은 암호 처리를 실행하는 복수단의 변환 처리를 반복하여 실행하는 F 함수를 포함하는 변환 처리부 및 중간 데이터 기억부로서의 레지스터를 나타내는 도면이다.
전단 (n-1단)의 처리 결과, 즉, L(n-1), R(n-1)은 각각 제1 데이터 저장부(610)의 L 레지스터(611) 및 R 레지스터(612)에 저장되며, R 레지스터의 32 비트 데이터가 F 함수부(600)에 입력되고, 치환부(601)에서, 32 비트로부터 48 비트로 확대 치환된다. 치환부(601)은 도 3의 치환부(171)에 상당한다.
또한, 치환부(601)의 출력에 대하여, 키 스케줄부에서 키(k(n))(602)가 적용되어, 배타적 논리합(XOR)부(603)에서 배타적 논리합 연산 처리가 이루어지며, 처리 결과가 S 박스(604)에 입력된다. S 박스(604)에서 비선형 변환이 실행되고, S 박스(604) 출력이 치환부(605)에서 비트 교체 등의 치환 처리가 실행된다. 이후, 치환 결과가 배타적 논리합(XOR)부(606)에서 제1 데이터 저장부(610)의 L 레지스터(611)의 저장값과 배타적 논리합 연산 처리가 이루어진다.
그 결과는 제1 데이터 저장부(610)의 R 레지스터(612) 및 L 레지스터(611)에 저장된다. 이들 저장 데이터가 또한 다음단의 처리에서 추출되어 마찬가지의 처리가 반복된다. 또한, 본 실시예의 구성에서는 S 박스(604)로부터 치환부(605)를 통한 출력값이 인버터(621)에 의해 비트 데이터가 반전되고, 제2 데이터 저장부(620)의 R' 레지스터(622)에 저장된다. R' 레지스터(622)에 저장되는 값은 R 레지스터(612)에 저장되는 32 비트 데이터를 반전한 32 비트 데이터로 된다.
또한, 제1 데이터 저장부(610)의 L 레지스터(611)에 저장되는 32 비트 데이터에 대응하여, 인버터(631)에 의해 비트 데이터가 반전되고, 제2 데이터 저장부(620)의 L' 레지스터(632)에 저장된다. L' 레지스터(632)에 저장되는 비트 데이터의 값은 L 레지스터(611)에 저장되는 32 비트 데이터를 반전한 32 비트 데이터로 된다.
제2 데이터 저장부(620)의 R' 레지스터(622), 및 L' 레지스터(632)에 저장된 비트 데이터는 다음단의 처리에는 이용되지 않는다.
이와 같이, 본 실시예의 구성에서는 S 박스(604)로부터 치환부(605)를 통한 출력값이, 제1 데이터 저장부(610)의 R 레지스터(612) 및 L 레지스터(611)에 그대로 저장됨과 함께, 제2 데이터 저장부(620)의 R' 레지스터(622) 및 L' 레지스터(632)에 출력값의 반전 데이터를 저장한다. 따라서, 레지스터 저장 처리동안 양쪽의 허밍 웨이트의 합을 항상 일정하게 유지할 수 있다. 그 결과, 디바이스의 소비 전력의 변화의 관찰에 의한 비밀 정보에 관한 허밍 웨이트 정보의 취득 곤란성이 높아져서, 결과적으로, 소비 전력의 변화에 기초하는 해석의 곤란성을 높일 수 있다.
다음으로, 본 발명의 제3 실시예의 구성에 대하여 설명한다. 본 실시예에 따른 암호 처리 장치의 변환 처리부 및 레지스터에 대한 데이터 기억 구성의 구체적 구성예를 도 14에 도시한다. 도 14에 도시하는 본 발명의 암호 처리 장치 구성에서는 상술한, 단순 전력 해석, 전력 차분 해석, 고차 전력 차분 해석에 대처하기 위해, 제2 실시예와 마찬가지로, S 박스(704)의 출력에 기초하는 F 함수부(700)으로부터의 출력을 배선에 의해 2개로 분기하고, 제1 데이터 저장부(710) 및 제2 데이터 저장부(720)에 입력한다.
제3 실시예에서는 제1 데이터 저장부(710) 및 제2 데이터 저장부(720)에 입력되는 값을 반전 데이터로 할지 비반전 데이터로 할지를 선택 가능하게 하고 있다. 제1 데이터 저장부(710)에 입력되는 값을 비반전 데이터로 한 경우, 제2 데이터 저장부(720)에 입력되는 값을 반전 데이터로 한다. 또한, 제1 데이터 저장부(710)에 입력되는 값을 반전 데이터로 한 경우, 제2 데이터 저장부(720)에 입력되는 값을 비반전 데이터로 한다.
제1 데이터 저장부(710) 및 제2 데이터 저장부(720)의 각 레지스터 입력단에각각 스위치(751, 752, 762, 772)를 설치하고, 레지스터 저장값을 인버터(721, 731, 761, 771)을 통해 반전 데이터로 할지, 혹은 인버터를 통하지 않고 비반전 데이터로서 저장할지를 설정 가능하게 하고 있다.
제1 데이터 저장부(710) 및 제2 데이터 저장부(720)의 각 레지스터에 입력하는 비트 데이터는 각각 32 비트 데이터이다. 전체 비트를 반전 비트 데이터로 하거나 혹은 비반전 비트 데이터로서 각각의 레지스터에 입력하는 구성으로 하여도 되지만, 32 비트 데이터의 1 비트마다 반전, 비반전 비트 데이터를 생성하여, 각각의 레지스터에 입력하는 구성으로 하여도 된다.
즉, 예를 들면, F 함수부(700)로부터의 출력에 기초하여 배타적 논리합(XOR)부(706)으로부터 출력되는 비트 열이 [01001011 ...]일 때, 전체 비트의 비반전 데이터를 제1 데이터 저장부(710)의 R 레지스터(712)에 입력하고, 반전 데이터를 제2 데이터 저장부(720)의 R' 레지스터(722)에 저장하는 경우에는, 제1 데이터 저장부(710)의 R 레지스터(712)에 입력되는 값은 출력 비트 열 [01001011 ...]과 마찬가지의 값으로 되어, 제2 데이터 저장부(720)의 R' 레지스터(722)에 입력하는 값은 반전 비트 열 [10110100 ,,,]으로 된다.
또한, F 함수부(700)로부터의 출력에 기초하여 배타적 논리합(XOR)부(706)으로부터 출력되는 비트 열이 [01001011 ...]일 때, 32 비트중 1 비트마다 반전, 비반전 데이터를 제1 데이터 저장부(710)의 R 레지스터(712)에 입력하고, 그 R 레지스터(712)에 입력되는 비트 데이터와 반대 패턴의 비트 데이터를 제2 데이터 저장부(720)의 R' 레지스터(722)에 저장하는 경우에는, 제1 데이터 저장부(710)의 R 레지스터(712)에 입력되는 값, 및 제2 데이터 저장부(720)의 R' 레지스터(722)에 입력되는 값은 하기와 같이 된다.
출력 비트 열 : [01001011 ...]
R 레지스터 저장값 : [00011110...]
R' 레지스터 저장값 : [11100001 ...]
상기 기술에서, 언더라인으로 나타낸 데이터가 출력값의 반전 비트 데이터이다.
전체 비트 데이터의 반전 데이터와 비반전 데이터가 조합에 의해 각각, 제1 데이터 저장부 및 제2 데이터 저장부에 비트 데이터를 저장한 경우라도, 혹은 상술된 바와 같이 비트마다 반전 데이터 및 비반전 데이터의 조합을 생성하여 제1 데이터 저장부 및 제2 데이터 저장부에 저장한 경우라도, 제1 데이터 저장부 및 제2 데이터 저장부에는 32 비트의 각 비트에 대하여, 0과 1, 혹은 1과 0의 비트쌍이 서로 저장되게 된다.
제1 데이터 저장부(710)의 L 레지스터(711)과, 제2 데이터 저장부(720)의 L' 레지스터(732)에 저장되는 값도 각각 32 비트의 각 비트에 대하여, 0과 1, 혹은 1과 0의 비트쌍이 서로 저장되게 된다.
상술한 바와 같이, 레지스터에 비트값을 보존할 때에 소비되는 전력은 S 박스의 출력의 허밍 웨이트에 비례하기 때문에, 제1 데이터 저장부(710)의 R 레지스터(712) 및 L 레지스터(711)과, 제2 데이터 저장부(720)의 R' 레지스터(722), 및 L' 레지스터(732)로 분기시키고, 0과 1, 혹은 1과 0의 비트쌍을 저장함으로써, 쌍방의 허밍 웨이트의 합을 항상 일정하게 유지할 수 있다. 디바이스의 소비 전력의 변화 관찰에 의한 허밍 웨이트의 정보 취득이 곤란해져서, 소비 전력의 변화에 기초하는 해석의 곤란성을 높일 수 있다.
본 실시예의 경우, 제1 데이터 저장부(710)의 각 레지스터(711, 712)에 저장되는 데이터는 다음단의 처리에 사용되게 된다. 따라서, 반전 비트 데이터를 이들 레지스터에 저장한 경우에는, 다음단의 처리에 적용하기 위한 데이터 출력 시에, 재차, 반전 처리를 실행하는 것이 필요하다. 그 때문에, 제1 데이터 저장부(710)의 R 레지스터(712) 및 L 레지스터(711)의 출력단에, 인버터(781, 791) 및 스위치(782, 792)가 제공된다.
제1 데이터 저장부(710)의 R 레지스터(712) 및 L 레지스터(711)에 저장된 비트 데이터가 반전 데이터인 경우에는, 인버터(781, 791)을 통해 재차 반전한 비트 데이터를 다음단의 처리에 적용하는 값으로서 출력한다. 이 처리에 의해, 비트 데이터의 반전 처리가 행해지지 않는 경우와 전적으로 마찬가지의 출력 결과를 얻는 것이 가능하게 된다.
도 14에 도시하는 구성에 기초하는 처리에 대하여 설명한다. 도 14의 구성은 도 13과 마찬가지로, 암호 처리를 실행하는 복수단의 변환 처리를 반복하여 실행하는 F 함수를 포함하는 변환 처리부 및 중간 데이터 기억부로서의 레지스터를 나타내는 도면이다.
전단 (n-1단)의 처리 결과에 기초하는 비트 데이터는 각각 제1 데이터 저장부(710)의 L 레지스터(711) 및 R 레지스터(712)에 저장된다. 이 값은 미리 설정된제어 프로그램에 따라, 반전 비트, 혹은 비반전 비트로서 저장되어 있다.
R 레지스터(712)의 32 비트 데이터는 스위치(782)의 제어에 의해, 저장 비트가 반전 비트인 경우에는, 인버터(781)을 통해 F 함수부(700)에 입력되며, 저장 비트가 비반전 비트인 경우에는 인버터(781)을 통하지 않고 F 함수부(700)에 입력된다.
F 함수부(700)의 치환부(701)에서, 32 비트로부터 48 비트로 확대 치환된다. 치환부(701)은 도 3의 치환부(171)에 상당하다. 또한 치환부(701)의 출력에 대하여, 키 스케줄부에서 키(k(n))(702)가 적용되어, 배타적 논리합(XOR)부(703)에서 배타적 논리합 연산 처리가 이루어져서, 처리 결과가 S 박스(704)에 입력된다. S 박스(704)에서 비선형 변환이 실행되고, S 박스(704) 출력이 치환부(705)에서 비트 교체 등의 치환 처리가 실행된다. 이후, 치환 결과가 배타적 논리합(XOR)부(706)에서 제1 데이터 저장부(710)의 L 레지스터(711)의 저장값과 배타적 논리합 연산 처리가 이루어진다. 또, L 레지스터(711)의 32 비트 데이터는 스위치(792)의 제어에 의해, 저장 비트가 반전 비트인 경우에는 인버터(791)을 통해 배타적 논리합(XOR)부(706)에 입력되며, 저장 비트가 비반전 비트인 경우에는 인버터(791)을 통하지 않고 배타적 논리합(XOR)부(706)에 입력된다.
그 결과는 제1 데이터 저장부(710)의 R 레지스터(712) 및 L 레지터(711)에, 반전 비트 혹은 비반전 비트로서 저장된다. 그 저장 비트 패턴과 반대 패턴을 갖는 비트 데이터가 제2 데이터 저장부(720)의 R' 레지스터(722) 및 L' 레지스터(732)에 저장된다. 제2 데이터 저장부(720)의 R' 레지스터(722), 및 L' 레지스터(732)에 저장된 비트 데이터는 다음단의 처리에는 이용되지 않는다.
상술한 실시예에서는 DES 암호 처리 알고리즘에 적용하는 예를 중심으로 하여 설명하였다. 또한, DES에 대체되는 차세대 공통 키 암호로서 알려져 있는 AES(Advanced Encryption Standard) 암호에서도 본 발명의 적용은 가능하다. AES는 키 길이가 128, 192, 256 비트와, DES의 64 비트의 키 길이에 비해 긴 비트 길이의 키를 적용한 암호 처리로서, 강한 보안성을 제공한다.
AES에서는 키 길이 및 블록 길이 모두 128, 192, 256 비트와, 독립적으로 다른 비트 길이로 한 처리가 가능하며, 상술한 DES와 마찬가지로, 복수의 라운드의 처리를 반복하여 실행한다.
또한, AES 암호 처리에서는 도 15에 도시한 바와 같이 입력 평문(801)에 대하여 프리 키(K-pre)(802)를 적용한 초기 변환(Pre-whitening)을 실행한 후, 복수 라운드로 이루어지는 AES 암호 처리부(803)에서 AES 암호 처리를 실행하고, 또한, 최종적으로 포스트 키(K-post)(804)를 적용한 최종 변환(Post-whitening)을 실행하여 암호문을 출력하는 구성을 갖는다. 이 AES 암호 처리는 강화된 해독 곤란성을 갖는, 즉 보안성이 높은 암호 처리이다.
이 AES 암호 처리에서도, AES 암호 처리의 실행 과정에서 발생하는 중간 데이터의 저장에서, 상술한 바와 마찬가지의 반전 데이터를 생성하여 레지스터에 저장하는 구성을 갖는다. 따라서, 레지스터 저장 처리에서의 양쪽의 허밍 웨이트의 합을 항상 일정하게 유지할 수 있다. 그 결과, 디바이스의 소비 전력의 변화의 관찰에 의한 비밀 정보에 관한 허밍 웨이트 정보의 취득 곤란성이 높아져서, 결과적으로, 소비 전력의 변화에 기초하는 해석의 곤란성을 높일 수 있다.
마지막으로, 상술한 암호 처리를 실행하는 디바이스로서의 IC 모듈(900)의 구성예를 도 16에 도시한다. 상술한 처리는 예를 들면 PC, IC 카드, 리더/라이터, 기타, 여러가지 정보 처리 장치에서 실행 가능하고, 도 16에 도시하는 IC 모듈(900)은 이들 여러가지 기기에 구성하는 것이 가능하다.
도 16에 도시하는 CPU(Central processing Unit)(901)은 암호 처리의 개시나, 종료, 데이터의 송수신의 제어, 각 구성부 사이의 데이터 전송 제어, 그 밖의 각종 프로그램을 실행하는 프로세서이다. 메모리(902)는 CPU(901)이 실행하는 프로그램, 혹은 연산 파라미터로서의 고정 데이터를 저장하는 ROM(Read-Only-Memory), CPU(901)의 처리에서 실행되는 프로그램, 및 프로그램 처리에서 적절하게 변화하는 파라미터의 저장 영역, 작업 영역으로서 사용되는 RAM(Random Access Memory) 등으로 이루어진다. 또한, 메모리(902)는 상술한 중간 데이터를 저장하기 위한 저장 영역을 갖는다. 메모리(902)는 암호 처리에 필요한 키 데이터 등의 저장 영역으로서 사용 가능하다. 데이터 등의 저장 영역은 탬퍼 내성 구조를 갖는 메모리로서 구성되는 것이 바람직하다.
암호 처리부(903)은 예를 들면 상술한 DES, AES에 따른 암호 처리, 복호 처리 등을 실행한다. 또, 여기서는 암호 처리 수단을 개별 모듈로 한 예를 나타내었지만, 이러한 독립한 암호 처리 모듈을 설치하지 않고, 예를 들면 암호 처리 프로그램을 ROM에 저장하고, CPU(901)이 ROM 저장 프로그램을 판독하여 실행하도록 구성해도 된다.
난수 발생기(904)는 암호 처리에 필요하게 되는 키의 생성 등에서 필요해지는 난수의 발생 처리를 실행한다.
송수신부(905)는 외부와의 데이터 통신을 실행하는 데이터 통신 처리부이고, 예를 들면 리더/라이터 등, IC 모듈과의 데이터 통신을 실행하여, IC 모듈 내에서 생성한 암호문의 출력, 혹은 외부의 리더/라이터 등의 기기로부터의 데이터 입력 등을 실행한다.
상술한 실시예에서는, 카운터를 필수적인 유닛으로 하고 있지만, 지연량이나, 퍼포먼스의 저하를 고려할 필요가 없는 경우에는 카운터에 의한 지연량의 계측을 실행할 필요가 없다. 따라서, 카운터를 설치하지 않고, 항상 난수 신호에 기초하여 생성하는 변조 클럭 신호를 제어 클럭으로서 출력하고, 난수 신호에 기초하여 생성하는 변조 클럭 신호에 따른 처리를 실행하는 구성으로 하여도 된다.
이상, 특정한 실시예를 참조하면서, 본 발명에 대하여 설명하였다. 그러나, 본 발명의 요지를 일탈하지 않는 범위 내에서 당업자가 해당 실시예의 수정이나 대용을 할 수 있는 것은 자명하다. 즉, 본 발명은 예시적인 형태로 본 발명을 개시한 것일 뿐, 한정적으로 해석되어서는 안된다. 본 발명의 요지를 판단하기 위해서는 첫머리에 기재한 특허 청구의 범위를 고려해야 한다.
명세서 내에서 설명한 일련의 처리는, 하드웨어, 또는 소프트웨어, 또는 양자의 복합 구성에 의해 실행하는 것이 가능하다. 만일 소프트웨어에 의한 처리를 실행할 경우에는, 처리 시퀀스를 기록한 프로그램을 전용의 하드웨어에 조립된 컴퓨터 내의 메모리에 인스톨하여 실행시키거나, 또는 각종 처리가 실행 가능한 범용 컴퓨터에 프로그램을 인스톨하여 실행시키는 것이 가능하다.
예를 들면, 프로그램은 기록 매체로의 하드 디스크 또는 ROM에 미리 저장될 수도 있다. 대안적으로, 프로그램은 플렉서블 디스크, CD-ROM(Compact Disc Read Only Memory), MO(Magneto-Optical) 디스크, DVD(Digital Versatile Disc), 자기 디스크 및 반도체 메모리와 같은 착탈식 기록 매체에 일시적 또는 영구적으로 저장될 수 있다. 이러한 타입의 착탈식 기록 매체는 일명 패키지 소프트웨어로서 공급될 수 있다.
프로그램은 상술한 착탈식 기록 매체로부터 컴퓨터에 설치될 수 있으며, 다운로드 사이트로부터 컴퓨터에 무선 전송되거나, LAN(Local Area Network) 및 인터넷과 같은 네트워크를 통해 컴퓨터에 유선 전송된다. 컴퓨터는 이러한 방식으로 전송된 프로그램을 수신하여 하드 디스크와 같은 장착형 기록 매체에 설치한다.
본 명세서에서 기술된 다양한 프로세스는 기재에 따라 순차적으로 실행될 뿐만 아니라, 처리를 실행하는 장치의 처리 능력 또는 필요에 따라 병렬적으로 또는 개별적으로 실행되어도 된다. 또한, 본 명세서에서 시스템이란, 복수의 장치의 논리적 집합 구성이고, 각 구성의 장치가 동일한 케이싱 내에 있는 것에는 한하지 않는다.
본 발명은 인증 처리, 암호 처리를 실행하는 디바이스, 예를 들면 암호 처리 모듈을 갖는 IC 카드 또는 그 밖의 암호 처리 장치에 적용 가능하다. 본 발명의 구성을 적용함으로써, 전력 해석에 의한 IC 모듈 내의 암호 처리 키나 알고리즘의누설이 곤란해져서, 또한 과대한 처리 지연도 방지된다. 본 발명의 구성에 따라 보안 레벨이 높은 암호 처리 실행 기능을 갖는 디바이스 또는 장치가 제공할 수 있다.

Claims (23)

  1. 암호 처리 장치에 있어서,
    데이터 처리 타이밍 제어 신호로서의 사용될 변조 클럭 신호를 생성하기 위한 변조 클럭 신호 생성부; 및
    상기 변조 클럭 신호를 수신하고, 상기 입력된 변조 클럭 신호에 따라 처리 타이밍을 결정하여 데이터 처리를 실행하는 데이터 처리부를 포함하며,
    상기 변조 클럭 신호 생성부는 난수에 기초하는 난수 신호에 대응한 변조 클럭 신호를 생성하여, 상기 변조 클럭 신호를 상기 데이터 처리부로 출력하는 것을 특징으로 하는 암호 처리 장치.
  2. 제1항에 있어서,
    일정한 주기를 갖는 정격 클럭 신호를 생성하기 위한 클럭 신호 생성부; 및
    상기 정격 클럭 신호에 대한 난수 신호의 지연량을 계측하기 위한 카운터를 더 포함하며,
    상기 변조 클럭 신호 생성부는 상기 카운터에 의해 계측된 지연이 미리 설정된 허용가능 지연 시간보다 짧은 경우에는 상기 데이터 처리부에 상기 난수 신호에 대응하는 상기 변조 클럭 신호를 출력하고, 상기 지연이 상기 미리 설정된 허용가능 지연 시간의 상한치에 도달할 경우에는 상기 데이터 처리부에 상기 정격 클럭 신호에 대응하는 상기 변조 클럭 신호를 출력하는 것을 특징으로 하는 암호 처리장치.
  3. 제1항에 있어서, 상기 데이터 처리부는 암호 처리시 생성된 중간 데이터를 레지스터에 저장하는 처리를 위한 타이밍, 또는 암호 처리의 실행시 적용되는 중간 데이터의 상기 레지스터로부터의 판독 처리를 위한 타이밍을 상기 변조 클럭 신호에 따라 결정하는 것을 특징으로 하는 암호 처리 장치.
  4. 제1항에 있어서,
    상기 암호 처리 장치는 복수단의 라운드 함수부를 적용한 공통 키 암호 처리 방식에 따른 암호 처리를 실행하기 위한 암호 처리 장치이고;
    상기 데이터 처리부는 상기 복수단의 라운드 함수부에서 생성된 중간 데이터를 레지스터에 저장하는 처리를 위한 타이밍, 또는 상기 복수단의 라운드 함수부에서의 처리시에 적용되는 상기 중간 데이터를 상기 레지스터로부터의 판독 처리를 위한 타이밍을 상기 변조 클럭 신호에 따라 결정하는 것을 특징으로 하는 암호 처리 장치.
  5. 암호 처리 방법에 있어서,
    난수에 기초하여 난수에 대응하는 변조 클럭 신호 -상기 변조 클럭 신호는 데이터 처리 타이밍 제어 신호로서 사용됨- 를 생성하는 변조 클럭 신호 생성 단계; 및
    상기 변조 클럭 신호를 수신하고, 상기 입력 변조 클럭 신호에 따라 처리 타이밍을 결정하여 데이터 처리를 실행하는 데이터 처리 단계를 포함하는 것을 특징으로 하는 암호 처리 방법.
  6. 제5항에 있어서,
    일정한 주기를 갖는 정격 클럭 신호를 생성하는 클럭 신호 생성 단계; 및
    상기 정격 클럭 신호에 대한 상기 난수 신호의 지연량을 계측하기 위한 지연량 계측 단계를 더 포함하며,
    상기 변조 클럭 신호 생성 단계는 상기 계측된 지연량이 미리 설정된 허용가능 지연 시간보다 짧은 경우에는 상기 데이터 처리부에 출력된 클럭 신호로서 상기 난수 신호에 대응하는 상기 변조 클럭 신호를 설정하고, 상기 지연이 상기 미리 설정된 허용가능 지연 시간의 상한치에 도달할 경우에는 상기 데이터 처리부에 상기 정격 클럭 신호에 대응하는 상기 변조 클럭 신호를 출력하는 것을 특징으로 하는 암호 처리 방법.
  7. 제5항에 있어서,
    상기 데이터 처리 단계는 암호 처리시 생성된 중간 데이터를 레지스터에 저장하는 처리를 위한 타이밍, 또는 암호 처리의 실행시 적용되는 중간 데이터의 레지스터로부터의 판독 처리를 위한 타이밍을 상기 변조 클럭 신호에 따라 결정하는 것을 특징으로 하는 암호 처리 방법.
  8. 제5항에 있어서,
    상기 암호 처리 단계는 복수단의 라운드 함수부를 적용한 공통 키 암호 처리 방식에 따른 암호 처리를 실행하기 위한 암호 처리 단계이고;
    상기 데이터 처리 단계는 상기 복수단의 라운드 함수부에서 생성된 중간 데이터를 레지스터에 저장하는 처리를 위한 타이밍, 또는 상기 복수단의 라운드 함수부에서의 처리시에 적용되는 상기 중간 데이터를 상기 레지스터로부터의 판독 처리를 위한 타이밍을 상기 변조 클럭 신호에 따라 결정하는 것을 특징으로 하는 암호 처리 방법.
  9. 암호 처리가 컴퓨터 시스템상에서 실행되도록 하기 위한 컴퓨터 프로그램에 있어서,
    난수에 기초하여 난수에 대응하는 변조 클럭 신호 -상기 변조 클럭 신호는 데이터 처리 타이밍 제어 신호로서 사용됨- 를 생성하는 변조 클럭 신호 생성 단계; 및
    상기 변조 클럭 신호를 수신하고, 상기 입력 변조 클럭 신호에 따라 처리 타이밍을 결정하여 데이터 처리를 실행하는 데이터 처리 단계를 포함하는 것을 특징으로 하는 컴퓨터 프로그램.
  10. 암호 처리 장치에 있어서,
    입력 데이터의 데이터 처리를 실행하기 위한 데이터 처리부;
    상기 데이터 처리부에 의한 데이터 처리를 통해 생성된 중간 데이터를 구성하는 비트 데이터의 반전된 데이터를 생성하기 위한 반전된 데이터 생성 수단; 및
    각기 상기 중간 데이터에 대응하는 상기 반전된 비트 데이터 및 비반전된 비트 데이터를 저장하기 위한 복수의 데이터 저장부
    를 포함하는 것을 특징으로 하는 암호 처리 장치.
  11. 제10항에 있어서,
    상기 암호 처리 장치는 복수단의 라운드 함수부를 적용한 공통 키 암호 처리 방식에 따라 암호 처리를 실행하기 위한 암호 처리 장치이고;
    상기 데이터 처리부는 복수단의 데이터 변환부를 포함하며;
    상기 중간 데이터는 상기 데이터 변환부들의 각 단의 출력 데이터인 것을 특징으로 하는 암호 처리 장치
  12. 제10항에 있어서,
    상기 복수의 데이터 저장부는
    상기 중간 데이터를 구성하는 비트 데이터를 반전없이 저장하기 위한 제1 데이터 저장부; 및
    상기 중간 데이터를 구성하는 모든 비트 데이터를 반전시켜서 저장하기 위한 제2 데이터 저장부를 포함하는 것을 특징으로 하는 암호 처리 장치.
  13. 제10항에 있어서,
    상기 복수의 데이터 저장부는
    상기 중간 데이터를 구성하는 상기 비트 데이터에 대하여, 비트 단위로 반전 또는 비반전한 데이터를 저장하기 위한 제1 데이터 저장부; 및
    상기 중간 데이터를 구성하는 비트 데이터에 대하여, 상기 제1 데이터 저장부에서 저장된 상기 비트 데이터의 비트 단위의 반전 데이터를 저장하기 위한 제2 데이터 저장부를 포함하는 것을 특징으로 하는 암호 처리 장치.
  14. 제10항에 있어서,
    상기 반전된 데이터 생성 수단은 인버터이고;
    상기 복수의 데이터 저장부들 중 하나는 상기 인버터를 통해 반전된 데이터를 저장하는 것을 특징으로 하는 암호 처리 장치.
  15. 제10항에 있어서,
    상기 복수의 데이터 저장부들 중에서, 상기 데이터 처리부로 데이터를 출력하는 중간 데이터 저장 수단으로서의 데이터 저장부의 출력단에 출력 데이터 반전 처리 수단을 더 포함하는 것을 특징으로 하는 암호 처리 장치.
  16. 제10항에 있어서,
    상기 암호 처리 장치는 상기 복수의 데이터 저장부에 대한 데이터 저장 처리에서의 허밍 웨이트(humming weight)의 합을 일정하게 유지하도록, 상기 중간 데이터의 비반전 데이터 및 반전 데이터에 대한 저장 처리를 실행하는 구성을 갖는 구성인 것을 특징으로 하는 암호 처리 장치.
  17. 암호 처리 방법에 있어서,
    입력 데이터의 데이터 처리를 실행하는 데이터 처리 단계;
    상기 데이터 처리 단계에서의 데이터 처리를 통해 생성되는 중간 데이터를 구성하는 비트 데이터의 반전 데이터를 생성하는 반전 데이터 생성 단계; 및
    상기 중간 데이터에 대응하는 비반전 비트 데이터 및 반전 비트 데이터를 각각 복수의 데이터 저장부에 저장하는 데이터 저장 단계를 포함하는 것을 특징으로 하는 암호 처리 방법.
  18. 제17항에 있어서,
    상기 암호 처리 방법은 복수단의 라운드 함수부를 적용한 공통 키 암호 처리 방식에 따른 암호 처리를 실행하는 암호 처리 방법이고,
    상기 데이터 처리 단계는 복수단의 데이터 변환 단계를 포함하며,
    상기 중간 데이터는 상기 데이터 변환 단계들의 각 단의 출력 데이터인 것을 특징으로 하는 암호 처리 방법.
  19. 제17항에 있어서,
    상기 복수의 데이터 저장 단계는,
    상기 중간 데이터를 구성하는 비트 데이터를 반전없이 저장하는 제1 데이터 저장 단계, 및
    상기 중간 데이터를 구성하는 비트 데이터를 반전하여 저장하는 제2 데이터 저장 단계를 포함하는 것을 특징으로 하는 암호 처리 방법.
  20. 제17항에 있어서,
    상기 데이터 저장 단계는
    상기 중간 데이터를 구성하는 비트 데이터에 대하여, 비트 단위로 반전 또는 비반전한 데이터를 저장하는 제1 데이터 저장 단계, 및
    상기 중간 데이터를 구성하는 비트 데이터에 대하여, 상기 제1 데이터 저장 단계에서 저장되는 비트 데이터의 비트 단위의 반전 데이터를 저장하는 제2 데이터 저장 단계를 포함하는 것을 특징으로 하는 암호 처리 방법.
  21. 제17항에 있어서,
    상기 암호 처리 방법은 데이터 저장부내의 저장 데이터가 반전 데이터이고, 또한 데이터 처리에 적용하여야 할 데이터인 경우에, 상기 저장 데이터의 재반전 처리를 행하도록 구성되고;
    상기 데이터 처리 단계는 해당 재반전 데이터에 대한 데이터 처리를 실행하는 것을 특징으로 하는 암호 처리 방법.
  22. 제17항에 있어서,
    상기 암호 처리 방법은 상기 복수의 데이터 저장부에 대한 데이터 저장 처리에서의 허밍 웨이트의 합을 일정하게 유지하기 위해, 상기 중간 데이터의 비반전 데이터 및 반전 데이터에 대한 저장 처리를 실행하도록 구성되는 것을 특징으로 하는 암호 처리 방법.
  23. 암호 처리가 컴퓨터 시스템상에서 실행되도록 하기 위한 컴퓨터 프로그램에 있어서,
    입력 데이터의 데이터 처리를 실행하는 데이터 처리 단계;
    상기 데이터 처리 단계에서의 데이터 처리를 통해 생성되는 중간 데이터를 구성하는 비트 데이터의 반전 데이터를 생성하는 반전 데이터 생성 단계; 및
    상기 중간 데이터에 대응하는 비반전 비트 데이터 및 반전 비트 데이터를 각각 복수의 데이터 저장부에 저장하는 데이터 저장 단계를 포함하는 것을 특징으로 하는 컴퓨터 프로그램.
KR1020040052549A 2003-07-07 2004-07-07 암호 처리 장치, 암호 처리 방법 및 컴퓨터 프로그램 KR20050006062A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JPJP-P-2003-00271524 2003-07-07
JP2003271524 2003-07-07
JPJP-P-2003-00271525 2003-07-07
JP2003271525A JP2005031471A (ja) 2003-07-07 2003-07-07 暗号処理装置、および暗号処理方法

Publications (1)

Publication Number Publication Date
KR20050006062A true KR20050006062A (ko) 2005-01-15

Family

ID=33455622

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040052549A KR20050006062A (ko) 2003-07-07 2004-07-07 암호 처리 장치, 암호 처리 방법 및 컴퓨터 프로그램

Country Status (4)

Country Link
US (1) US20050055596A1 (ko)
EP (1) EP1496641A3 (ko)
KR (1) KR20050006062A (ko)
CN (1) CN1601578A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100850348B1 (ko) * 2007-04-02 2008-08-04 (주)하이디어 솔루션즈 시적 비결정성 암호 알고리즘 구현방법
US11838402B2 (en) 2019-03-13 2023-12-05 The Research Foundation For The State University Of New York Ultra low power core for lightweight encryption

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7373463B2 (en) * 2003-02-13 2008-05-13 Stmicroelectronics S.A. Antifraud method and circuit for an integrated circuit register containing data obtained from secret quantities
CN100565445C (zh) * 2004-01-27 2009-12-02 Nxp股份有限公司 对功率分析攻击的防护
JP4674440B2 (ja) * 2004-03-04 2011-04-20 ソニー株式会社 データ処理回路
KR100855958B1 (ko) * 2004-11-24 2008-09-02 삼성전자주식회사 해밍거리를 이용한 부가 채널 공격에 안전한 암호화시스템 및 방법
CN101044535B (zh) * 2005-03-16 2011-06-15 三菱电机株式会社 数据变换装置以及数据变换方法
JP4823904B2 (ja) * 2005-03-31 2011-11-24 パナソニック株式会社 データ暗号化装置及びデータ暗号化方法
US8997255B2 (en) 2006-07-31 2015-03-31 Inside Secure Verifying data integrity in a data storage device
US8352752B2 (en) 2006-09-01 2013-01-08 Inside Secure Detecting radiation-based attacks
JP4117008B2 (ja) * 2006-10-30 2008-07-09 シャープ株式会社 暗号化装置
EP2133882B1 (en) * 2008-06-13 2015-08-12 EM Microelectronic-Marin SA Non-volatile memory device and method for secure readout of protected data
JP5146156B2 (ja) * 2008-06-30 2013-02-20 富士通株式会社 演算処理装置
JP2011169977A (ja) * 2010-02-16 2011-09-01 Renesas Electronics Corp 暗号処理装置
WO2011101994A1 (ja) * 2010-02-22 2011-08-25 株式会社東芝 暗号化装置
JP5433498B2 (ja) * 2010-05-27 2014-03-05 株式会社東芝 暗号処理装置
GB2487901B (en) * 2011-02-03 2019-12-04 Advanced Risc Mach Ltd Power signature obfuscation
JP5652363B2 (ja) * 2011-03-28 2015-01-14 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにプログラム
US8769355B2 (en) 2011-06-27 2014-07-01 Freescale Semiconductor, Inc. Using built-in self test for preventing side channel security attacks on multi-processor systems
US8958550B2 (en) * 2011-09-13 2015-02-17 Combined Conditional Access Development & Support. LLC (CCAD) Encryption operation with real data rounds, dummy data rounds, and delay periods
CN102710413A (zh) * 2012-04-25 2012-10-03 杭州晟元芯片技术有限公司 一种抗dpa/spa攻击的系统和方法
US9448942B2 (en) 2012-08-20 2016-09-20 Freescale Semiconductor, Inc. Random access of a cache portion using an access module
US9092622B2 (en) 2012-08-20 2015-07-28 Freescale Semiconductor, Inc. Random timeslot controller for enabling built-in self test module
US10142099B2 (en) 2013-01-11 2018-11-27 Qualcomm Incorporated Method and apparatus for a computable, large, variable and secure substitution box
US10127390B2 (en) 2013-03-27 2018-11-13 Irdeto B.V. Tamper resistant cryptographic algorithm implementation
EP3147774A1 (fr) * 2015-09-25 2017-03-29 Gemalto Sa Generateur d'horloge aleatoire
US10891396B2 (en) 2016-05-27 2021-01-12 Samsung Electronics Co., Ltd. Electronic circuit performing encryption/decryption operation to prevent side- channel analysis attack, and electronic device including the same
CN109861818A (zh) 2019-03-06 2019-06-07 京东方科技集团股份有限公司 加密及解密电路、加密及解密设备以及加密及解密方法
CN111600873B (zh) * 2020-05-13 2023-03-10 江苏芯盛智能科技有限公司 防侧信道攻击方法及相关装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5404402A (en) * 1993-12-21 1995-04-04 Gi Corporation Clock frequency modulation for secure microprocessors
US6327661B1 (en) * 1998-06-03 2001-12-04 Cryptography Research, Inc. Using unpredictable information to minimize leakage from smartcards and other cryptosystems
EP1293856A1 (fr) * 2001-09-18 2003-03-19 EM Microelectronic-Marin SA Circuit Intégré sécurisé comprenant des parties à caractère confidentiel, et procédé pour sa mise en action

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100850348B1 (ko) * 2007-04-02 2008-08-04 (주)하이디어 솔루션즈 시적 비결정성 암호 알고리즘 구현방법
US11838402B2 (en) 2019-03-13 2023-12-05 The Research Foundation For The State University Of New York Ultra low power core for lightweight encryption

Also Published As

Publication number Publication date
EP1496641A3 (en) 2005-03-02
US20050055596A1 (en) 2005-03-10
CN1601578A (zh) 2005-03-30
EP1496641A2 (en) 2005-01-12

Similar Documents

Publication Publication Date Title
KR20050006062A (ko) 암호 처리 장치, 암호 처리 방법 및 컴퓨터 프로그램
EP1873671B1 (en) A method for protecting IC Cards against power analysis attacks
EP3208789B1 (en) Method of protecting a circuit against a side-channel analysis
US7984305B2 (en) Encryption processing apparatus and encryption processing method for setting a mixed encryption processing sequence
JP2007195132A (ja) 暗号処理装置
JP2001268072A (ja) 情報処理装置、情報処理方法、及びカード部材
CN110190951B (zh) 一种针对des算法l寄存器翻转的功耗攻击方法及系统
Tunstall Smart card security
Delavar et al. A ring oscillator-based PUF with enhanced challenge-response pairs
WO2008013083A1 (fr) Générateur de nombres pseudo-aléatoires, dispositif de cryptage de flux et programme
KR101997005B1 (ko) 전력 분석을 통한 도청에 대항하여 전자 회로를 보호하는 방법 및 이를 이용한 전자 회로
Tena-Sánchez et al. DPA vulnerability analysis on Trivium stream cipher using an optimized power model
JP2005134478A (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP2005031471A (ja) 暗号処理装置、および暗号処理方法
JP2006019872A (ja) 暗号処理装置
JP2005045752A (ja) 暗号処理装置、および暗号処理方法
Azouaoui et al. Fast side-channel security evaluation of ECC implementations: shortcut formulas for horizontal side-channel attacks against ECSM with the montgomery ladder
JP2007174024A (ja) 暗号処理装置
JP2006054568A (ja) 暗号化装置、復号化装置、および方法、並びにコンピュータ・プログラム
Li et al. Enhanced correlation power analysis attack against trusted systems
JP2006025366A (ja) 暗号化装置及び半導体集積回路
Strobel et al. Side channel analysis attacks on stream ciphers
JP2005134477A (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
Zadeh et al. Theoretical simple power analysis of the grain stream cipher
JP4765609B2 (ja) 暗号処理装置

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid