발명을 실시하기
위한 최선의 형태
(실시예 1)
도 1~도 11을 이용하여 실시예 1을 설명한다. 실시예 1은 비선형 변환의 처리를 행하는 기본 소자 A, 선형 변환의 처리를 행하는 기본 소자 B, 및 기본 소자 A와 기본 소자 B를 이용하여 암호 알고리즘을 처리하는 회로에 관한 것이다. 또, 이하에서, n 비트의 데이터 A와, n 비트의 데이터 B와의 비트끼리의 배타적 논리합을 A<XOR>B라고도 표기한다.
임의의 암호 알고리즘 F는, 그 안전성을 견지하기 위해서, 반드시 비선형 변환 Si(0≤i≤p)와 선형 변환 Lj(0≤j≤q)의 조합으로 이루어진다. 이것은, 디지털 회로로 실장한 경우에, AND(논리곱) 게이트와 XOR(배타적 논리합) 게이트의 조합으로 등가 변환할 수 있는 것을 의미한다. 당연히, OR(논리합), NOR(부정 논리합), NAND(부정 논리곱) 등의 기본 게이트를 조합시키더라도 실장 가능하다. 그러나, 그들의 처리도, 모두 AND 게이트와 XOR 게이트의 조합으로 등가 변환할 수 있다. 이 때문에, AND와 XOR를 중심으로 설명한다. 청구의 범위는 AND, XOR, OR, NOR, NAND 등의 모든 기본 게이트에 대한 것이다.
먼저, 비선형 변환 Si를 구성하는 기본 소자 A에 대하여 설명한다. 이하, 비선형 변환을 구성하는 소자를 기본 소자 A라고 부르는 것으로 한다. 또한, 비선형 변환 Si는 기본 소자 A에 의해 구성되어 있는 것으로 한다.
도 1은, 기본 소자 A가 2bit의 입력 데이터 (x1, x2)를 입력하는 경우를 상정하여, 기본 소자 A의 처리를 설명하기 위한 편의적인 소자(20)를 도시하는 도면이다. 도 1의 소자(20)는, 기본 소자 A의 처리를 설명하기 위한 편의적인 구성이며, 기본 소자 A의 실시예를 나타내는 것은 아니다. 기본 소자 A의 구체적인 실시예는 도 6의 기본 소자 A(100)로서 후술한다.
소자(20)는 XOR(22), AND 게이트(23), XOR(27), AND 게이트(24)를 구비한다. 소자(20)는 (xi, xj)에 난수 r이 배타적 논리합된 x1(x1=xi^r), x2(x2=xj^r)를 입력받는다. 또한, 난수 r 및 제어 신호 en(26)을 입력받는다.
소자(20)의 동작을 설명한다.
(1) 소자(20)는 데이터(xi, xj)(소정 데이터의 일례)와 난수 r(제 1 난수의 일례)의 배타적 논리합인 x1(x1=xi^r), x2(x2=xj^r)를 입력받는다.
(2) XOR(22)은, (x1, x2)(XOR 데이터의 일례) 및 난수 r을 입력받아, 배타적 논리합을 실행한다. 즉, 「xi^r^r」 및 「xj^r^r」을 실행한다. XOR(22)의 출력은 xi와 xj로 된다.
(3) AND 게이트(23)는 xi, xj를 입력받아, 「xi&xj」를 출력한다(출력점(25)).
(4) XOR(27)은 난수 r(제 2 난수의 일례)과 「xi&xj」를 입력받아, 「xi&xj^r」을 출력한다.
(5) AND 게이트(24)는, 「xi&xj^r」과 제어 신호 en(26)을 입력받아, 제어 신호 en(26)이「1」일 때, 「z=xi&xj^r」을 출력한다. 단, 이것은 일례이며, 기본 소자 A의 동작은, 제어 신호 en의 유의(有意)를「0」이라고 하면, AND 게이트(24)를 OR 게이트로 치환한 동작으로 실현하여도 좋다.
또한, 제어 신호 en이 「상승」 또는 「하강」으로 유의를 결정하는 신호라고 하면, 기본 소자 A의 동작은, AND 게이트(24)를 플립플롭으로 치환하고, 제어 신호 en이 「상승」 또는 「하강」으로 XOR(27)의 출력을 취입하는 방식의 동작으로 실현하여도 좋다. 이하, 기본 소자 A의 동작은, 설명의 이해를 간단히 하기 위해서 제어 신호 en의 유의를 「1」로 하고, 전술한 AND 게이트(24)에 의한 동작으로 설명한다. 청구의 범위는, 신호의 유의가 「0」, 「1」, 「상승」, 「하강」의 모든 방식에 대한 것이다. 또한, 이것은 기본 소자 B에 대해서도 마찬가지이다.
다음에, n-bit 입력의 경우를, 도 1에 나타낸 2bit 입력의 소자(20)와 대비시켜 설명한다. 비선형 변환 Si의 각 비선형 처리에 있어서, 예컨대, n 입력 AND를 하기와 같은 (1a) 내지 (4a)의 처리를 행하는 기본 소자 A로 실현한다. 기본 소자 A는, 입력으로서, n-bit의 데이터인 X(x1, x2, …, xn)와, n-bit의 난수인 Ra(r1, r2, …, rn)(제 1 난수의 일례)와, 1 bit의 난수인 rb(제 2 난수의 일례)와 제어 신호 en(지령 신호의 일례)을 입력받는다. 그리고, 출력으로서,
z=((x1^r1)&(x2^r2)&…(xn^rn)^rb)&en
을 출력한다.
(1a) n-bit의 입력 X(x1, x2, …, xn)(XOR 데이터의 일례)를, n 비트의 난수 Ra(r1, r2, …, rn)와 배타적 논리합한다(또, x1, x2 등은 입력 전에 난수 Ra와 배타적 논리합되어 있는 것으로 한다). 이것을 X'라고 한다. 소자(20)의 경우에서는, x1=xi^r, x2=xj^r이다. 또한, 난수 Ra=(r1, r2)=(r, r)이다. 따라서, X'=(xi, xj)이다.
(2a) X'의 모든 비트에 대하여 논리곱(AND)을 취한다. 이것을 x"로 한다. 소자(20)의 경우는, x"=xi&xj로 된다.
(3a) x"와, 1 bit의 난수인 rb를 배타적 논리합한다. 이것을 y로 한다. 소자(20)의 경우는, rb=r이고, y=xi&xj^r로 된다.
(4a) y와 제어용 신호 en의 AND를 취해 출력한다. 이것을 z로 한다. 소자(20)의 경우는, 상술한 바와 같이, z=xi&xj^r로 된다. 또, z를 출력하는 경우는, 모든 입력 신호가 확정된 후, 제어 신호 en을 「1」로 하는 것에 의해 단숨에 출력한다.
상기한 (1a) 내지 (4a)의 처리를 모두 단일의 연산 소자에서 실행하고, 이것을 기본 소자 A로서 비선형 변환 Si를 구성한다. z를 출력하는 경우는, 전술한 바와 같이, 모든 입력 신호가 확정된 후, 제어 신호 en에 의해 출력 z를 단숨에 출력한다.
기본 소자 A의 특징은 이하의 점에 있다. 즉, 종래의 암호 처리 알고리즘의 처리의 대상으로 되는 데이터 (xi, xj 등)와 난수를 배타적 논리합한 데이터를 입력받는다. 그리고, 종래의 처리의 대상으로 되는 데이터에 대한 소정의 논리 연산의 결과에 난수를 배타적 논리합한 상태로 출력한다. 또한, 출력 시에는, 전부 입력 신호가 확정된 후에 출력한다. 이 특징에 의해, 디바이스 내에서 처리되는 비밀 정보를 디바이스의 소비 전력으로부터 특정하고자 하는 공격에 대하여 대항할 수 있다. 대항할 수 있는 것은 다음 이유에 의한다. 출력 z에는 난수 r이 배타적 논리합되어 출력된다. 이 난수 r은 「0」과 「1」이 1/2의 확률로 출현하기 때문에, 출력 z의 신호 천이율α은 1/2로 된다. 또한, z를 출력하는 경우는, 전부 입력 신호의 상태 천이가 완료된 경우에, 처리를 실행하여 출력 신호 z를 출력한다. 여기서 「처리」란, n-bit의 데이터인 X(XOR 데이터)와 난수 Ra(제 1 난수)의 배타적 논리합에 의해 n 비트의 데이터를 산출하고, 산출한 n 비트 데이터의 각 비트를 이용해서 AND 연산(소정의 논리 연산의 일례)을 실행하여, 실행한 AND 연산(논리 연산)의 결과와 난수 rb(제 2 난수)의 배타적 논리합을 실행하는 일련의 과정을 말한다. 이 때문에, 공격자로부터는 출력 z의 전력의 변동을 검출할 수 없기 때문이다. 후술하는 기본 소자 B에 관해서도 마찬가지이다. 또, 이 특징점에 대해서는 도 8~도 11의 설명으로 한다.
기본 소자 A의 구성을 보다 간단히 하기 위해서, 난수를 1 bit만 이용하는 것도 가능하다. 즉
(1b) n-bit의 입력 X(x1, x2, …, xn)를, 1 bit의 난수 r에 의한 n-bit 연결 과 배타적 논리합한다. 이것을 X'으로 한다. 즉,
X'=(x1^r, x2^r, …, xn^r)
(2b) X'의 모든 bit에 대하여 AND를 취한다. 이것을 x"로 한다. 즉,
x"=(x1^r)&(x2^r)&…&(xn^r)
(3b) x"와 r을 배타적 논리합한다. 이것을 y로 한다. 즉,
y=(x1^r)&(x2^r)&…&(xn^r)^r
(4b) y와 제어용 신호 en의 AND를 취해서 출력으로 한다. 이것을 z로 한다.
(1b) 내지 (4b)의 처리를 모두 단일의 연산 소자에서 실행하고, 이것을 기본 소자 A로서 Si를 구성한다. 즉
기본 소자 A(X):
z=((x1^r)&(x2^r)&…(xn^r)^r)&en
로 된다.
다음에, 선형 변환 Lj를 구성하는 기본 소자 B의 개략을 설명한다.
이하, 선형 변환을 구성하는 소자를 기본 소자 B라고 부른다. 선형 변환 Lj는 기본 소자 B에 의해 구성되어 있는 것으로 한다. 선형 변환 Lj의 각 선형 처리에 있어서, 예컨대, n 입력 XOR를 하기와 같은 처리를 행하는 소자로 실현한다.
(1c) n-bit의 입력 X(x1, x2, …, xn)의 모든 비트에 대해 XOR를 취한다. 이 것을 x'으로 한다. 즉,
x'=x1^x2^…^xn
(2c) x'과 1 bit의 난수 r을 배타적 논리합한다. 이것을 y로 한다. 즉,
y=(x1^x2^…^xn)^r
(3c) y와 제어용 신호 en의 AND를 취해서 출력으로 한다. 이것을 z로 한다.
(1c) 내지 (3c)의 처리를 모두 단일의 연산 소자에서 실행하고, 이것을 기본 소자 B로서 Lj를 구성한다. 즉,
기본 소자 B(X):
z=(x1^x2^…^xn^r)&en
으로 된다. 여기서, 입력 X가 이미 난수 성분을 배타적 논리합하고 있었는 경우, 예컨대, A(X)의 출력인 경우, X가 기수(寄數) 비트열이면 (2c)의 처리는 실행해지지 않는다.
기본 소자 A, 기본 소자 B의 입력으로서 이용하는 제어용 신호 en은 각 기본 소자의 그 외의 입력 신호로부터 충분히 늦게 변화시킨다. 즉, 상기한 기본 소자 A, 기본 소자 B의 경우, 제어용 신호 en이 논리 「1」일 때만,
「(암호 알고리즘의 중간값 또는 처리 결과)^ 난수값」
의 형태로 각 기본 소자는 결과를 출력하고, 그 이외의 경우는 항상 0을 출력한다. 이들 기본 소자 A, 기본 소자 B를 이용하여, 암호 알고리즘 F를 구성한다. 후술하는 도 2의 「최후의 변환층」의 경우와 같이, 기본 소자 A 또는 기본 소자 B의 처리 결과에 대하여, 직전의 처리에서 사용한 난수를 배타적 논리합함으로써 암호문 또는 평문을 얻을 수 있다.
다음에, 도 2에 의해, 기본 소자 A, 기본 소자 B를 이용하여 암호 알고리즘을 처리하는 회로에 대하여 설명한다. 도 2는 기본 소자 A, 기본 소자 B를 이용하여 암호 알고리즘 F의 처리를 행하는 회로(30)의 개략적인 구성을 나타내는 블럭도이다. 기본 소자 A, 기본 소자 B는, 암호 알고리즘의 최소 단위의 기본 연산에 대한 대항 조치이기 때문에, 적용 알고리즘은 한정되지 않는다.
회로(30)는 선택기(2), 난수 발생기(3), 배타적 논리합(4), 배타적 논리합(5), 비선형 변환 S1(6) 등, 선형 변환 L2(7) 등, 제어 회로(8), 타이밍 생성 회로 TG(9), 타이밍 제어 회로 TC(10), AND 게이트(11), 배타적 논리합(12), 레지스터(13), 레지스터(14)를 구비한다. 비선형 변환 S1(6), 선형 변환 L2(7) 등은 층을 형성하고 있다. 비선형 변환 Si는 기본 소자 A로 구성된다. 또한, 선형 변환 Lj는 기본 소자 B로 구성된다.
도 3은 도 2에 도시한 회로(30)의 동작을 나타내는 흐름도이다. 도 3을 참조하여, 회로(30)의 동작을 설명한다.
입력 데이터 X1(평문, 암호문, 키 등)은, 배타적 논리합(4)에서 난수 R1과 처리되어, X<XOR>R1로 되고, 비선형 변환 S1(6)에 입력된다(S101). 또, 도 2에서는, 비선형 변환 S1(6), 선형 변환 L2 등의 순서대로 층을 형성하고 있다. 이것은 일례이다. 비선형 변환층, 선형 변환층의 순서 및 층수는 알고리즘 F와 실장 방법에 의존한다. 배타적 논리합(5)의 위로부터의 입력은 0으로 하고, 난수 발생기(3)의 가장 위의 출력은 난수 R1이다. 또한, 비선형 변환 S1(6)로의 오른쪽으로부터의 입력은 난수 R1 및 난수 R2이다. 비선형 변환 S1(6)로의 왼쪽으로부터는 상기한 제어용 신호 en1을 입력받는다(S102). 제어용 신호 en1은 입력 신호인 X<XOR>R1, R1, 및 R2의 신호 변화보다 늦어 "1"로 변화된다. 이 제어는 제어 회로(8), 타이밍 생성 회로 TG(9), 타이밍 제어 회로 TC(10)에서 행한다. 비선형 변환 S1(6)은 X1<XOR>R2를 출력한다(S103). 마찬가지로, 선형 변환 L2(7)는 입력으로서 X1<XOR>R2, R2 및 이들의 신호 변화보다 늦은 제어용 신호 en2를 받는다. 이에 따라, 선형 변환 L2(7)는 X2<XOR>R2를 출력한다. 이 후, 마찬가지로, 비선형 변환, 선형 변환의 처리를 반복하여 행한다(S104).
또, 비선형 변환, 선형 변환의 회로를 동일한 회로에서 처리하는 경우는, 최후의 변환층 Sn(또는 Ln)에서 출력한 결과 Xi<XOR>Rj를 선택기(2)에서 선택하고, 다시 배타적 논리합(4)의 입력으로 한다. 이 때, 배타적 논리합(5)의 위로부터의 입력은 Rj이고, 난수 발생기(3)의 가장 위의 출력은 Rj +1이다. 이로부터, 배타적 논리합(4)의 오른쪽으로부터의 입력은 Rj<XOR>Rj+1로 되고, 배타적 논리합(4)의 출력은 Xi<XOR>Rj+1로 된다(S105).
암호 알고리즘 F의 처리에 필요한 비선형 변환, 선형 변환의 처리가 종료한 단계에서, 제어 회로(8)는 AND 게이트(11)에 대하여 "1"을 입력한다. 이에 따라, 최후의 변환층 Sn(또는 Ln)에서 출력한 결과 Xn<XOR>Rm은 Rm과 배타적 논리합(12)에서 처리되어, 데이터 Xn이 출력된다(S106).
도 4는, 도 2에 도시한 회로(30)에 대하여, 난수를 1 bit로 간략화한 회로(31)의 구성을 나타내는 도면이다. 예컨대, 회로(31)의 비선형 변환 S1은, 전술한, 난수를 1 bit만 이용하는 기본 소자 A에 의해 구성되어 있다. 회로(31)는, 회로(30)와 비교하여, 회로 상에서 이용하는 난수의 수를 삭감하고 있기 때문에, 회로(30)보다도 적은 회로 면적으로 실장할 수 있다.
도 5는 도 2의 회로(30), 도 4의 회로(31)에 있어서의 각 층에서 이용하는 제어 신호의 타이밍을 나타낸 도면이다. 암호 알고리즘의 처리를 개시하는 start 신호가 유효로 되고 나서, 입력 데이터 X1에 대하여, 선택기(2), 배타적 논리합(4)의 처리가 종료하고, 또한 비선형 변환 S1을 구성하는 기본 소자 A에 그 처리 결과가 충분히 전파되고 나서, 최초의 층 S1의 제어 신호 en(S1)이 논리 1로 변화된다. 그 후 S1은 연산 결과를 출력하여, L2를 구성하는 기본 소자 B에 데이터가 전파한다. 모든 데이터가 전파된 단계에서, L의 제어 신호(L2)가 논리 1로 변화된다. 동일한 동작을 그 후의 층에 대하여 실행하여, 최종적으로 최후의 층인 S2i-1의 제어 신호 en(S2i-1)이 논리 1로 변화된다.
상기 제어 신호에 대해서는, 다음 연산을 행하기 위해서, 각 제어 신호를 논리 0으로 하는 초기화 처리가 필요하게 된다. 초기화 방식은 모든 연산이 종료한 단계에서 행하는 방법이 있다. 또한, 다른 방법으로서, 도 5와 같이, 상위층으로부터 순차적으로 초기화하는 방법도 있다. 상위층으로부터 순차적으로 초기화하는 방법은, 다음 연산 개시까지의 대기 시간을 단축 가능하기 때문에, 고속 처리를 실현할 수 있다. 그러나, 초기화의 대상으로 되는 층과 다음 층과의 층 사이에, 초기화의 대상으로 되는 층의 출력을 저장하는 레지스터가 필요하게 된다. 이 때문에, 회로 비용은 증가한다.
도 6은 전술한 기본 소자 A의 실시예로서, 트랜지스터로 구체적으로 구성한 기본 소자 A(100)를 도시하는 도면이다. 도 6의 기본 소자 A(100)는 x1(x1=xi^r), x2(x2=xj^r), 및 난수 r, 제어 신호 en(지령 신호의 일례)을 입력받는다. 그리고,
z=((x1^r)&(x2^r)^r)&en
을 출력한다. z의 식에 있어서 x1 및 x2와 배타적 논리합되어 있는 난수 r은 제 1 난수이다. 3번째 난수 r은 제 2 난수이다.
도 6을 이용하여, 기본 소자 A(100)의 구성을 설명한다.
(1) 기본 소자 A(100)는 상부(115)와 하부(116)의 직렬 접속에 의해 구성된 다. 상부(115)와 하부(116) 사이로부터 출력 신호 z가 출력된다.
(2) 도 6에 있어서, 기호 「!」는 신호의 반전을 의미한다. 또한, 상부(115)를 구성하는 각 트랜지스터에 부여되어 있는 오른쪽 방향의 화살표 「→」는 신호가 「0」일 때에 트랜지스터가 도통하는 것을 나타낸다. 또한, 하부(116)를 구성하는 각 트랜지스터에 부여되어 있는 왼쪽 방향의 화살표 「←」는 신호가 「1」일 때에 트랜지스터가 도통하는 것을 나타낸다. 따라서, 상부(115)는 신호가 「0」일 때 도통하는 트랜지스터의 집합이다. 또한, 하부(116)는 신호가 「1」일 때 도통하는 트랜지스터의 집합이다. 인가부(113)에는 논리 「1」에 상당하는 전압이 인가된다.
(3) 인가부(113)에 논리 「1」에 상당하는 전압이 인가된 경우, 각 트랜지스터의 스위칭에 의해
z=((x1^r)&(x2^r)^r)&en
이 출력된다.
(4) 기본 소자 A(100)의 트랜지스터의 구성을 설명한다. 상부(115)는 트랜지스터(101)와, 트랜지스터(102)와 트랜지스터(103)의 병렬 회로와, 트랜지스터(104)와 트랜지스터(105)의 직렬 접속과 트랜지스터(106)가 병렬 접속된 병렬 회로가 직렬 접속되어 구성된다.
(5) 하부(116)는 트랜지스터(107)와, 트랜지스터(108)와 트랜지스터(109)의 직렬 접속과, 트랜지스터(110)와 트랜지스터(111)의 병렬 회로와 트랜지스터(112) 의 직렬 접속이 병렬 접속되어 구성된다. 그리고, 트랜지스터(107), 트랜지스터(109), 및 트랜지스터(112)의 일단(一端)은 접지(114)에 접속되어 있다.
(6) 다음에 입력 신호에 대하여 설명한다. 입력 신호는 모두 반전하여 트랜지스터에 입력된다.
입력 신호 x1은 반전되어, 트랜지스터(102), 트랜지스터(104), 트랜지스터(108) 및 트랜지스터(110)에 입력된다.
(7) 입력 신호 x2는 반전되어, 트랜지스터(103), 트랜지스터(105), 트랜지스터(109), 및 트랜지스터(111)에 입력된다.
(8) 입력 신호 r은 반전되어, 트랜지스터(106) 및 트랜지스터(112)에 입력된다.
(9) 입력 신호 en은 반전되어, 트랜지스터(101) 및 트랜지스터(107)에 입력된다.
전술한 바와 같이, 기본 소자 A(100)는 xi, xj의 각각에 난수 r을 배타적 논리합한 데이터인 x1, x2를 입력받아, xi, xj에 대한 소정의 논리 연산의 결과에 난수 r을 배타적 논리합한 상태로 출력한다. 그리고, 출력하는 경우는, 모든 입력 신호가 확정된 후에 단숨에 출력한다. 즉, 출력 신호는 입력 신호의 과도 천이의 영향을 받지 않는다. 또한, 입력으로부터 출력에 이르는 도중의 데이터를 생성하는 일 없이 단숨에 출력한다. 이에 따라, 소비 전력으로부터 비밀 정보를 특정하고자 하는 공격에 대항할 수 있다.
도 6의 기본 소자 A(100)는 2 입력 AND형이며, 전술한 바와 같이, 다음 z를 출력한다.
A(x1, x2):z=((x1^r)&(x2^r)^r)&en
여기서, x1=xi^r, x2=xj^r이다.
도 4의 비선형 변환 S1을 기본 소자 A(100)로 구성한 경우는, 다음과 같이 된다. 비선형 변환 S1의 입력인, X<XOR>{r, r, r, …, r}, r, 및 제어 신호 en에 대해, 기본 소자 A(100)는 임의의 2 bit에 대해서 A(xi^r, xj^r)의 처리를 행하여, z를 출력한다.
즉,
z=(((xi^r)^r)&((xj^r)^r))&en
으로 된다. 그리고, en=1일 경우,
z=xi&xj^r
을 출력한다.
도 7은 기본 소자 A(100)의 진리값표를 나타내고 있다.
x1=0의 경우에 있어서, 출력 z의 신호가 「0으로부터 1」 혹은 「1로부터 0」으로 천이하는 신호 천이율 α(xi=0)은,
α(x1=0)=P0×P1(x1=0)+P1×P0(x=0)=1/2
로 된다.
여기서, P0은 z가 「0」이 될 확률이다. P1은 z가「1」이 될 확률이다. 진리값표로부터,
P0=4/8,
P1=4/8
이다.
또한, P1(x1=0)은 x1=0의 조건 하에서, z가 「1」이 될 확률이다. P0(x1=0)은 x1=0의 조건 하에서, z가 「0」이 될 확률이다. 진리값표로부터,
P0(x1=0)=3/4,
P1(x1=0)=1/4
이다. 따라서,
α(x1=0)=P0×P1(x1=0)+P1×PO(x1=0)=4/8×1/4+4/8×3/4=1/2
로 된다.
x1=1의 경우도 마찬가지로 계산하면, 진리값표로부터,
P0(x1=1)=1/4,
P1(x1=1)=3/4
이다. 따라서,
α(x1=1)=P0×P1(x1=1)+P1×PO(x1=1)=4/8×3/4+4/8×1/4=1/2
로 된다. 따라서, 신호 천이율 α는 입력 x1(또는 x2)이 0과 1인 경우에 동일하게 된다. 또한, 출력 z에 대해서는, 제어 신호 en에 의해, 입력 신호가 확정된 후에 단숨에 출력한다. 즉, 출력 신호는 입력 신호의 과도 천이의 영향을 받지 않는다. 또한, 입력으로부터 출력에 이르는 도중의 데이터를 생성하는 일 없이 단숨에 출력한다. 이 때문에, 기본 소자 A에서는 소비 전력으로부터 비밀 정보를 예측하는 것은 불가능하다.
도 8a~도 8c는 기본 소자 A(100)에 있어서의 난수 r과 제어 신호 en의 역할을 설명하는 도면이다. 전술한 기본 소자 A(100)에 있어서의 xi&xj의 처리를, 난수 r과 제어 신호 en을 사용하지 않은 상태로 처리한 경우는, 도 8a에 나타내는 2 입력 AND 게이트와 마찬가지로 된다. 그 경우의 진리값표는 도 8b로 된다. 이 경우, 출력에 있어서의 신호 천이율 α는 도 8b의 진리값표로부터,
xi=0일 때, α(xi=0)=1/4,
xi=1일 때, α(xi=1)=1/2
로 된다. 즉, 신호 천이율 α이 다르다.
도 8c을 이용하여, 상세히 설명한다. 먼저, xi=0인 경우에 있어서, 출력 z의 신호가 「0으로부터 1」 또는 「1로부터 0」으로 천이하는 신호 천이율 α(xi=0)은,
α(xi=0)=P0×P1(xi=0)+P1×P0(xi=0)=1/4
이다.
여기서, P0은 z가 「0」이 될 확률이다. P1은 z가 「1」이 될 확률이다. 도 8b의 진리표로부터, P0=3/4, P1=1/4이다. 또한, P1(xi=0)은 xi=0의 조건 하에서, z가 「1」이 될 확률이다. P0(xi=0)은 xi=0의 조건 하에서 z가 「0」이 될 확률이다. 진리값표로부터,
P0(xi=0)=1,
P1(xi=0)=0
이다. 따라서,
α(xi=0)=P0×P1(xi=0)+P1×P0(xi=0)=3/4×0+1/4×1=1/4
로 된다.
xi=1의 경우도 마찬가지로 계산하면, 진리값표로부터,
P0(xi=1)=1/2,
P1(xi=1)=1/2
이다. 따라서,
α(xi=1)=P0×P1(xi=1)+P1×P0(xi=1)=3/4×1/2+1/4×1/2=1/2
로 된다.
따라서, 상기한 바와 같이,
xi=0일 때, α(xi=0)=1/4,
xi=1일 때, α(xi=1)=1/2
로 된다. 이와 같이 신호 천이율 α에 바이어싱이 발생한다.
따라서, 도 8a에 나타내는 2 입력 AND는 한 쪽의 입력 xi(또는 xj)이 0과 1인 경우에 전력차가 발생하게 된다. 이 때문에, 소비 전력으로부터 AND 게이트의 입력을 예측하는 것이 가능해진다. 이에 따라, 처리에 이용되고 있는 비밀 정보를 특정하는 것이 가능하게 된다.
다음에, 도 9a~도 9c를 이용하여, 제어 신호 en에 대하여 설명한다. 도 9a에 나타내는 제어 신호 en을 이용하지 않는 기본 소자 A'는, 입력 신호의 변화에 시간차가 있는 경우, 과도 천이에서 난수에 의존하지 않는 신호 변화가 발생하여, 신호 천이율 α에 바이어싱이 발생한다. 이 때문에, 비밀 정보의 특정이 가능해진다. 도 9b는, 도 9a의 기본 소자 A'의 진리값표를 나타낸다. 또한, 도 9c는 기본 소자 A'의 신호 천이율 α을 나타낸다. 도 9b의 진리값표로부터는, 출력 z에 관한 신호 천이율 α(xi=0), 신호 천이율 α(xi=1)의 모두 1/2로 된다. 그러나, 입력 신호의 변화에 시간차가 있는 경우, 다음과 같이 된다. 예컨대, 기본 소자 A'에 있어서, 도 9c에 나타내는 바와 같이 xi, xj, r의 순으로 신호가 변화되는 경우, xj가 변화되는 시간에 있어서, 신호 천이율 α에 도 8c과 마찬가지의 바이어싱이 발생한다. 따라서, 소비 전력으로부터 AND 게이트의 입력을 예측하는 것이 가능해진다. xi, xj, r가 변화되는 순서가 다르더라도 바이어싱이 발생하는 시간이 어긋날 뿐이다. 또, 입력 신호의 변화에 시간차가 없는 경우는, 문제는 없다.
도 10a~도 10c은 기본 소자 A(100)의 처리를 도시하는 도면이다.
도 10a는 기본 소자 A(100)의 입출력을 도시하는 도면이다.
도 10b는 기본 소자 A(100)의 진리값표를 도시하는 도면이다.
도 10c는 입력 신호의 변화와 출력 신호 z와의 관계를 도시하는 도면이다.
도 10c에서는, 도 10b의 진리값표로부터, 신호 천이율 α는 xi, xj의 0, 1에 의존하지 않고서 1/2로 된다. 또한, 도 10c에 도시하는 바와 같이, 제어 신호 en이 0 동안에는 기본 소자 A(100)의 출력 z가 항상 0이다. 따라서, xi, xj, r의 신호 변화보다 지연하여 제어 신호 en을 1로 하는 것에 의해, 출력 z에 과도 천이는 발생하지 않고, 신호 천이율 α이 균등한 천이밖에 발생하지 않는다. 따라서, 소비 전력으로부터 비밀 정보를 특정하는 것은 불가능하다.
이와 같이, 입출력값에 대하여, 종래의 처리의 대상이었던 값인 xi, xj 등에 대하여 난수를 배타적 논리합하고, 또한, 그 출력은 제어 신호 en에 의해 연산한 결과를 출력하는 경우와 임의의 값을 출력하는 처리 방식을, 3 입력 이상의 AND 처리나, 그 외의 OR, NOR, NAND, XOR 등에도 적용하여, 비선형 변환층, 선형 변환층을 구성한다.
상기한 수법으로 기본 소자를 구성할 때에, 단지, 종래의 기본 게이트를 조합시켜, 상기와 동일한 연산을 행하더라도 대항 조치로서 기능하지 않는다. 예컨 대, 도 11은 도 6의 등가 회로이다. 도 11의 AND 게이트(40)는 xi&xj의 처리를 행하기 때문에, 도 8a와 동일한 동작을 하는 것을 의미한다. 따라서, 신호 천이율 α에 바이어싱이 발생하기 때문에, AND 게이트(40)의 입력을 예측하는 것이 가능해진다. 도 11의 「등가 회로」는 도 1의 소자(20)와 동일하다. 소자(20)의 출력점(25)에 있어서, AND 게이트(40)와 마찬가지로 신호 천이율 α에 바이어싱이 발생한다. 이 때문에, 소자(20)는 기본 소자 A를 설명하기 위한 편의적인 구성이다. 전력 소비로부터의 비밀 정보 누설을 방지하기 위해서, 입출력값에 대하여 종래의 값에 대해 난수값을 배타적 논리합하고, 또한, 그 출력은 제어 신호 en에 의해서 단숨에 출력하는 처리를 행하기 위해서는, 도 6의 기본 소자 A(100)와 같이, 단숨에 출력 z를 출력하는 단일의 연산 소자로 처리를 실현해야 한다.
일본 특허 공표 제 2003-526134 호 공보나 일본 특허 공개 제 2002-311826 호 공보의 게이트 쌍이나 회로 쌍 등의, 상보적인 회로를 실장함으로써 신호 천이율 α을 균등화하는 방식은, 상보적인 동작을 행하는 회로가 동일한 타이밍으로 동작하지 않은 한, 대항 조치로서 기능하지 않는다. 한편, 본 실시예 1의 기본 소자 A(100)에서는, 단체의 연산 소자로 신호 천이율 α이 균등하게 되고, 또한, 출력 z에 과도 천이가 발생하지 않는다. 이 때문에, 「상보적인 동작을 행하는 회로가 동일한 타이밍으로 동작하는 것이 필요하다」라는 상기한 바와 같은 조건을 필요로 하지 않는다. 따라서, 효율적으로 대항 조치를 실현할 수 있다. 또한, 도 6의 기본 소자 A(100)는 출력선이 1개밖에 존재하지 않는다. 따라서, 게이트 쌍이나 회 로 쌍과 같이 「출력선의 부하의 균등화」에 대해 고려할 필요가 없다.
실시예 1의 기본 소자 A는, n-bit의 데이터와 난수 Ra의 배타적 논리합의 데이터 X를 입력받아 소정의 논리 연산을 실행하고, 논리 연산의 결과와 난수 rb의 배타적 논리합을 출력 신호로서 출력하기 때문에, 출력 신호의 신호 천이율을 균등하게 할 수 있다. 이 때문에, 소비 전력의 바이어스를 없애는 것에 의해, 소비 전력으로부터 비밀 정보를 특정하고자 하는 공격에 대항할 수 있다.
실시예 1의 기본 소자 A는, 1종류의 난수 r을 이용하여 처리를 행하는 것에 의해 난수의 종류를 삭감하기 때문에, 다종류의 난수를 이용하는 경우에 비해서, 실장 면적을 작게 할 수 있다.
실시예 1의 기본 소자 A는, 입력 신호의 상태 천이가 완료된 경우에, 처리를 실행하여 출력 신호를 출력하기 때문에, 출력의 신호 천이를 균등하게 할 수 있다.
실시예 1의 기본 소자 A는, 출력을 지령하는 제어 신호 en(지령 신호)에 의해 출력 z를 출력하기 때문에, 신호 천이율을 균등하게 할 수 있다.
실시예 1의 기본 소자 A(100)에 의해 소비 전력으로부터 비밀 정보를 특정하고자 하는 공격에 대항할 수 있다. 또한, 기본 소자 A(100)는, 트랜지스터의 회로구성에 의한 하드웨어의 대항이기 때문에, 소프트웨어의 대항책에 비해서 고속 처리가 가능하다.
실시예 1의 기본 소자 A(100)는, 1종류의 난수 r을 이용하여 처리를 행하는 것에 의해 난수의 종류를 삭감하기 때문에, 다종류의 난수를 이용하는 경우에 비해 서, 실장 면적을 작게 할 수 있다.
실시예 1의 기본 소자 A(100)는, 출력을 지령하는 제어 신호 en(지령 신호)에 의해 출력 z를 출력하기 때문에, 신호 천이율을 균등하게 할 수 있다.
(실시예 2)
다음에, 도 12a~도 16을 이용하여 실시예 2를 설명한다. 실시예 2는 메모리 소자를 이용하는 것에 의해, 도 6에 나타낸 실시예 1의 기본 소자 A(100)와 등가인 기능을 실현하는 LUT(200)(후술하는 도 15)를 설명한다.
우선, 비선형층의 예로서, DES의 S-box의 구성 방법에 대하여 설명한다. 그 후, S-box에 LUT(200)를 적용하는 경우를 설명한다.
「S-box」란, 임의의 입력에 대하여 결정된 출력을 행하는 변환 테이블이다. DES에서는, 6 bit 입력, 4 bit 출력의 테이블이 8종류 정의되어 있다. 이러한 변환 테이블은 모두 AND-XOR 회로로 실장할 수 있다.
도 12a는 DES 알고리즘으로 정의되는 S1 테이블의 입출력을 나타내는 도면이다. 도 12a에 도시하는 바와 같이, S1 테이블은 6bit의 데이터 {X5, X4, X3, X2, X1, X0}를 입력받아, 4 bit의 데이터 {y3, y2, y1, y0}으로 변환하여 출력한다.
도 12b는 S1 테이블의 내용을 나타내는 도면이다. 도 12b의 S1 테이블에 있어서, 입력 데이터 {X5, X4, X3, X2, X1, X0}의 {X5, X0}으로부터 행이 결정된다. 또한, {X4, X3, X2, X1}로부터 열이 결정된다.
도 12c는 입력값과 출력값의 일례를 도시하는 도면이다.
{X5, X4, X3, X2, X1, X0}={O11011}
로부터,
{X5, X0}={O1}=1
이다. 따라서, S1 테이블의 2행째로 결정된다. 다음에,
{X4, X3, X2, X1}={1101}=13
이다. 따라서, S1 테이블의 14열째로 결정된다. 따라서, {011011}은 2행 14열의 「5」(0101)로 변환된다.
도 12b에 나타내는 S1 테이블 1째줄의 「14, 4, 13, … 0, 7」은 도 13에 나타내는 y0'으로부터 y3'의 식으로 등가 변형할 수 있다. 마찬가지로, 2행째 이후도 변환 가능하다. 도 13의 식은, 도 4의 회로(31)의 경우와 마찬가지로, 도 14에 나타내는 바와 같은, 각각 1층의 비선형층과 1층의 선형층으로 구성할 수 있다. 도 14에서는, 도 4의 경우와 마찬가지로, 입력 데이터는 미리 난수 r에 의해 배타적 논리합되어 비선형층에 입력된다. 다음에, 제 1 층의 비선형층에서 AND 처리가 행하여지고, 2층째의 선형층에서 XOR의 처리가 행하여진다.
지금까지 설명한 대항 조치는, 도 6의 기본 소자 A(100)와 같이, MOSFET(Metal Oxide Semiconductor Field Effect Transistor)로 구성하는 것을 상정하고 있었다. 그러나, 암호 알고리즘의 회로를 MOSFET 레벨의 설계로 행하지 못하는 경우도 생각할 수 있다. 예컨대, FPGA(Field Programmable Gate Array)로 대표되는 개서 가능한 반도체 디바이스로서 설계하는 경우도 생각할 수 있다. 이 경우는, 미리 칩 상에 실장되어 있는 SRAM(Static Random Access Memory)를 기본으로 구성된 메모리 소자(이하 이것을 LUT라고 약기함)나, 플립플롭으로 대표되는 기억 소자의 내부 상태와, 그 배선만을 설계자가 자유롭게 변경할 수 있는 사양으로 되어 있다. 이러한 디바이스에 있어서의 실시예를 도 15에 나타낸다.
도 15는 도 6의 기본 소자 A(100)와 등가인 기능을 4 입력 1 출력의 LUT(200)를 이용하여 실현한 구성을 도시하는 도면이다.
LUT(200)는, 기본 소자 A(100)와 등가이며, 입력으로서 x1, x2, r, en을 입력받는다. 출력 z는,
z=((x1^r)&(x2^r)^r)&en
이다.
LUT(200)는 입력부(250), 복수의 SRAM(260) 등(저장부), 및 복수의 패스 트랜지스터(280) 등을 구비한다. SRAM은 논리 함수를 실현하는 값을 저장하는 기능을 가진다. 데이터 열(270)(논리 데이터)은 각 SRAM이 저장하는 데이터로 구성된다. 패스 트랜지스터는 좌우의 결선(結線)에 대한 스위칭 기능을 가진다.
도 15의 LUT(200)의 구성을 설명한다. 각 패스 트랜지스터는 트리 구조의 각 브랜치에 배치된다. 후술하는 바와 같이, 각 패스 트랜지스터는 브랜치(201)~브랜치(230)의 30 브랜치의 각각에 배치된다. 입력 신호선은 각 브랜치에 배치된 패스 트랜지스터를 ON/OFF의 스위칭을 행한다. 스위치 기능으로서의 패스 트랜지 스터는 「0」이 입력되면 개방된다.
(1) 다음에, LUT(200)의 구성을 설명한다. LUT(200)는 출력 Z로부터 브랜치(201), 브랜치(202) 2개로 분기된다. 브랜치(202)는 브랜치(205), 브랜치(206) 2개로 분기된다. 브랜치(205)는 브랜치(211), 브랜치(212) 2개로 분기된다. 브랜치(206)는 브랜치(213), 브랜치(214) 2개로 분기된다. 브랜치(211)는 브랜치(223), 브랜치(224) 2개로 분기된다. 브랜치(212)는 브랜치(225), 브랜치(226) 2개로 분기된다. 브랜치(213)는 브랜치(227), 브랜치(228) 2개로 분기된다. 브랜치(214)는 브랜치(229), 브랜치(230) 2개로 분기된다. 「브랜치(223), 브랜치(224), … 브랜치(230)」의 각각은 SRAM이 접속하고 있다.
(2) 브랜치(201)는 브랜치(202)와 마찬가지로 분기해 간다. 브랜치(201)는 브랜치(203), 브랜치(204) 2개로 분기된다. 브랜치(203)는 브랜치(207), 브랜치(208) 2개로 분기된다. 브랜치(204)는 브랜치(209), 브랜치(210) 2개로 분기된다. 브랜치(207)는 브랜치(215), 브랜치(216) 2개로 분기된다. 브랜치(208)는 브랜치(217), 브랜치(218) 2개로 분기된다. 브랜치(209)는 브랜치(219), 브랜치(220) 2개로 분기된다. 브랜치(210)는 브랜치(221), 브랜치(222) 2개로 분기된다. 「브랜치(215), 브랜치(216), … 브랜치(222)」의 각각은 SRAM이 접속하고 있다. 도 15에서는, 브랜치(216), 브랜치(218), 브랜치(220)에 접속하고 있는 SRAM에는 「1」이 저장되어 있다. 그 외의 SRAM에는 「0」이 저장되어 있다.
(3) 입력 신호에 대하여 설명한다. 입력 신호 x2의 반전 신호는 브랜 치(201)에 배치된 패스 트랜지스터에 입력된다. 입력 신호 x2는 브랜치(202)에 배치된 패스 트랜지스터에 입력된다. 입력 신호 x1의 반전 신호는 브랜치(203), 브랜치(205)에 배치된 패스 트랜지스터에 입력된다. 입력 신호 x1은 브랜치(204), 브랜치(206)에 배치된 패스 트랜지스터에 입력된다. 입력 신호 r의 반전 신호는 브랜치(207), 브랜치(209), 브랜치(211), 브랜치(213)에 배치된 패스 트랜지스터에 입력된다. 입력 신호 r은 브랜치(208), 브랜치(210), 브랜치(212), 브랜치(214)에 배치된 패스 트랜지스터에 입력된다. 입력 신호 en의 반전 신호는 브랜치(215), 브랜치(217), 브랜치(219), 브랜치(221), 브랜치(223), 브랜치(225), 브랜치(227), 브랜치(229)에 배치된 패스 트랜지스터에 입력된다. 입력 신호 en은 브랜치(216), 브랜치(218), 브랜치(220), 브랜치(222), 브랜치(224), 브랜치(226), 브랜치(228), 브랜치(230)에 배치된 패스 트랜지스터에 입력된다.
제어 신호 en의 유의를 「0」이라고 하면, 전술한 z=((x1^r)&(x2^r)^r)&en에 있어서의 「&en」의 처리는 「|en」(제어 신호 en과의 OR)로 변경하여, 동일한 사고 방식으로 LUT에 의해 기본 소자 A의 등가인 기능을 실현할 수 있다.
또, 입력 신호 x1, x2, r이 동시에 입력하는 것이면 제어 신호 en은 불필요하다. 이 경우, 각각의 해당하는 트랜지스터는 동시에 스위칭된다.
그 외, 2 입력 OR, NOR, NAND, XOR 등에도 마찬가지의 처리 방식을 적용함으로써, 비밀 정보를 소비 전력으로부터 특정하는 공격에 대해 대항할 수 있다.
3 입력 이상의 기본 소자에서는, 일반적으로, LUT의 크기는 고정되어 있는 경우가 많다. 이 때문에, 도 16에 도시하는 바와 같이, 2 입력의 기본 소자를 조합시켜서 구성하는 것이 현실적이다. 이 경우, 2개의 다른 제어 신호를 이용할 필요가 있다. 이것은, 도 16에 도시하는 바와 같이, LUT(292)의 입력으로 되는 LUT(291)의 출력과, LUT(292)에 있어서의 LUT(291)로부터의 입력 이외의 입력에 대하여, 신호 변화의 시간차가 있으므로, 제어 신호를 공유한 경우는, 전술한 이유(입력 신호의 과도 천이)로부터, 난수성이 기능하지 않게 되기 때문이다.
실시예 2의 LUT(200)에 의해, 소비 전력으로부터 비밀 정보를 특정하고자 하는 공격에 대항할 수 있다.
실시예 2의 LUT(200)는, 1종류의 난수 r을 이용하여 처리를 행하는 것에 의해 난수의 종류를 삭감하기 때문에, 다종류의 난수를 이용하는 경우에 비해서, 실장 면적을 작게 할 수 있다.
실시예 2의 LUT(200)는, 복수의 트랜지스터가 스위칭을 동시에 행하기 때문에, 입력으로부터 출력에 이르는 도중 경과는 출현하지 않아, 신호 천이율을 균등하게 할 수 있다.
실시예 2의 LUT(200)는, 출력을 지령하는 제어 신호 en(지령 신호)에 의해 출력 z를 출력하기 때문에, 신호 천이율을 균등하게 할 수 있다.
(실시예 3)
다음에, 도 17~도 22를 이용하여 도 6의 기본 소자 A(100), 도 15의 LUT(200)와는 다른 기본 소자에 대하여 설명한다. 도 17~도 22에 나타내는 일련의 기본 소자는, 기본 소자 A(100), LUT(200) 등과 마찬가지로, 소비 전력으로부터 비밀 정보를 특정하는 공격에 대항할 수 있다.
도 17은 실시예 3에 따른 기본 소자 A(300)를 도시하는 도면이다. 기본 소자 A(300)는, 도 6의 기본 소자 A(100)에 대하여, 제어 신호 en을 입력하는 트랜지스터(101)와 트랜지스터(107)를 삭제한 구성이다. 즉, 기본 소자 A(300)의 입력 신호는 x1, x2, r이다. 또한, 출력 z는,
z=((x1^r)&(x2^r)^r)
로 된다. 제어 신호 en은 존재하지 않는다. 기본 소자 A(300)는 입력 신호 x1, x2, r이 각 트랜지스터에 동일한 타이밍으로 입력되는 경우를 상정한 소자이다.
즉, 입력 신호는 동시에 입력되기 때문에, 해당하는 복수의 트랜지스터의 스위칭은 동시에 행하여진다. 이 경우, 제어 신호 en은 불필요하기 때문이다.
실시예 3의 기본 소자 A(300)는 제어 신호 en의 입력을 필요로 하지 않기 때문에, 간이한 구성으로 실장할 수 있다.
도 18은 실시예 3에 따른 기본 소자 A(400)를 도시하는 도면이다. 도 6의 기본 소자 A(100)가 2 입력 AND형인데 반하여, 기본 소자 A(400)는 2 입력 OR형이다. 입력 신호는 x1, x2, r, en이다. 또한, 출력 z는,
z=((x1^r)|(x2^r)^r)&en
으로 된다. 기본 소자 A(100)의 경우와 마찬가지로, 입력 x1, x2는,
x1=xi^r, x2=xj^r
이다. 따라서, 입출력에 난수가 배타적 논리합되어 있다. 제어 신호 en에 근거하는 각 트랜지스터의 스위칭에 의해 단숨에 z가 출력된다. 이들에 의해, 기본 소자 A(100)와 마찬가지로, 소비 전력으로부터 비밀 정보를 특정하는 공격에 대항할 수 있다.
(1) 기본 소자 A(400)의 구성을 설명한다. 기본 소자 A(400)는 상부(415)와 하부(416)의 직렬 접속에 의해 구성되어 있다. 상부(415)와 하부(416) 사이로부터 출력 신호 z가 출력된다.
(2) 도 18에 있어서, 기호 「!」, 오른쪽 방향의 화살표 「→」, 왼쪽 방향의 화살표 「←」는 도 6의 경우와 마찬가지이다. 또, 이들의 의미는 후술하는 도 19~도 22에 관해서도 마찬가지이다. 인가부(413)에는 논리 「1」에 상당하는 전압이 인가된다.
(3) 인가부(413)에 논리 「1」에 상당하는 전압이 인가된 경우, 각 트랜지스터의 스위칭에 의해
z=((x1^r)|(x2^r)^r)&en
이 출력된다.
(4) 상부(415)는 트랜지스터(401)와 부분 회로(417)의 직렬 접속으로 구성된다. 트랜지스터(401)의 한쪽 단부는 인가부(413)와 접속되고, 다른쪽 단부는 부분 회로(417)에 접속된다. 부분 회로(417)는 트랜지스터(402)와 트랜지스터(403)의 직렬 접속과, 트랜지스터(404)와 트랜지스터(405)의 병렬 회로와 트랜지스터(406)와의 직렬 접속이 병렬 접속되어 있다.
(5) 하부(416)의 트랜지스터의 구성은 도 6의 기본 소자 A(100)의 하부(116)와 동일한 구성이다. 즉, 트랜지스터(407)~트랜지스터(412)의 배치는 트랜지스터(107)~트랜지스터(112)의 배치와 동일하다. 다만, 하부(116)의 트랜지스터(112)에는 입력 신호 r의 반전 신호가 입력되는데 반하여, 하부(416)의 트랜지스터(412)에는 입력 신호 r이 반전되지 않고, 그대로 입력된다.
(6) 다음에, 입력 신호에 대하여 설명한다. 입력 신호 x1의 반전 신호가 트랜지스터(402), 트랜지스터(404), 트랜지스터(408) 및 트랜지스터(410)에 입력된다.
(7) 입력 신호 x2의 반전 신호가 트랜지스터(403), 트랜지스터(405), 트랜지스터(409) 및 트랜지스터(411)에 입력된다.
(8) 입력 신호 r이 트랜지스터(406) 및 트랜지스터(412)에 입력된다.
(9) 입력 신호 en의 반전 신호가 트랜지스터(401) 및 트랜지스터(407)에 입력된다.
도 19는 실시예 3에 따른 기본 소자 A(500)를 도시하는 도면이다. 도 6의 기본 소자 A(100)가 2 입력 AND형인데 반하여, 기본 소자 A(500)는 2 입력 NAND형이다. 입력 신호는 x1, x2, r, en이다. 또한, 출력 z는,
z=(~((x1^r)&(x2^r))^r)&en
으로 된다. 기본 소자 A(100)의 경우와 마찬가지로, 입력 x1, x2는,
x1=xi^r, x2=xj^r
이다. 따라서, 입출력에 난수가 배타적 논리합되어 있다. 제어 신호 en에 근거하는 각 트랜지스터의 스위칭에 의해 단숨에 z가 출력된다. 이에 따라 기본 소자 A(100)와 마찬가지로, 소비 전력으로부터 비밀 정보를 특정하는 공격에 대항할 수 있다.
(1) 기본 소자 A(500)의 트랜지스터의 구성은, 도 19에 도시하는 바와 같이, 도 18의 기본 소자 A(400)와 동일하다. 다만, 각 트랜지스터에 입력하는 신호의 반전이 다르다.
(2) 입력 신호에 대하여 설명한다. 입력 신호 x1은 트랜지스터(502), 트랜지스터(504), 트랜지스터(508) 및 트랜지스터(510)에 입력된다.
(3) 입력 신호 x2는 트랜지스터(503), 트랜지스터(505), 트랜지스터(509) 및 트랜지스터(511)에 입력된다.
(4) 입력 신호 r은 트랜지스터(506) 및 트랜지스터(512)에 입력된다.
(5) 입력 신호 en의 반전 신호가 트랜지스터(501) 및 트랜지스터(507)에 입력된다.
도 20은 실시예 3에 따른 기본 소자 A(600)를 도시하는 도면이다. 도 6의 기본 소자 A(100)가 2 입력 AND형인데 반하여, 기본 소자 A(600)는 2 입력 NOR형이 다. 입력 신호는, x1, x2, r, en이다. 또한, 출력 z는,
「z=(~((x1^r)|(x2^r))^r)&en」으로 된다. 기본 소자 A(100)의 경우와 마찬가지로, 입력 x1, x2는
x1=xi^r, x2=xj^r
이다. 따라서, 입출력에 난수가 배타적 논리합되어 있다. 제어 신호 en에 근거하는 각 트랜지스터의 스위칭에 의해 단숨에 z가 출력된다. 이에 따라 기본 소자 A(100)와 마찬가지로, 소비 전력으로부터 비밀 정보를 특정하는 공격에 대항할 수 있다.
(1) 기본 소자 A(600)의 트랜지스터의 구성은, 도 20에 도시하는 바와 같이, 도 18의 기본 소자 A(400)와 동일하다. 다만, 각 트랜지스터에 입력하는 신호의 반전의 유무가 상이하다.
(2) 입력 신호에 대하여 설명한다. 입력 신호 x1은 트랜지스터(602), 트랜지스터(604), 트랜지스터(608) 및 트랜지스터(610)에 입력된다.
(3) 입력 신호 x2는 트랜지스터(603), 트랜지스터(605), 트랜지스터(609)에 입력된다. 또한, 입력 신호 x2의 반전 신호가 트랜지스터(611)에 입력된다.
(4) 입력 신호 r의 반전 신호가 트랜지스터(606) 및 트랜지스터(612)에 입력된다.
(5) 입력 신호 en의 반전 신호가 트랜지스터(601) 및 트랜지스터(607)에 입 력된다.
도 21은 실시예 3에 따른 기본 소자 B(700)를 도시하는 도면이다. 도 6의 기본 소자 A(100)가 2 입력 AND형인데 반하여, 기본 소자 B(700)는 2 입력 XOR형이다. 입력 신호는 x1, x2, r, en이다. 또한, 출력 z는,
z=((x1^r)^(x2^r)^r)&en
으로 된다. 기본 소자 A(100)의 경우와 마찬가지로, 입력 x1, x2는
x1=xi^r, x2=xj^r
이다. 따라서, 입출력에 난수가 배타적 논리합되어 있다. 제어 신호 en에 근거하는 각 트랜지스터의 스위칭에 의해 단숨에 z가 출력된다. 이에 따라, 기본 소자 A(100)와 마찬가지로, 소비 전력으로부터 비밀 정보를 특정하는 공격에 대항할 수 있다.
(1) 기본 소자 B(700)는 상부(721)와 하부(722)의 직렬 접속으로 구성된다. 상부(721)와 하부(722) 사이로부터 출력 신호 z가 출력된다.
(2) 인가부(719)에는 논리 「1」에 상당하는 전압이 인가된다.
(3) 인가부(719)에 논리 「1」에 상당하는 전압이 인가된 경우, 각 트랜지스터의 스위칭에 의해
z=((x1^r)^(x2^r)^r)&en
이 출력된다.
(4) 상부(721)는 트랜지스터(701)와 부분 회로(727)의 직렬 접속으로 구성된다. 트랜지스터(701)는, 한쪽 단부가 인가부(719)에 접속되고, 다른쪽 단부가 부분 회로(727)와 접속된다.
(5) 부분 회로(727)의 구성을 설명한다. 부분 회로(727)는, 트랜지스터(702)와 병렬 회로(723)의 직렬 접속과, 병렬 회로(724)와 트랜지스터(709)의 직렬 접속이 병렬로 접속되어 있다.
그리고, 병렬 회로(723)는, 트랜지스터(703)와 트랜지스터(704)의 직렬 접속과, 트랜지스터(705)와 트랜지스터(706)의 직렬 접속이 병렬로 접속되어, 병렬 회로를 구성하고 있다.
또한, 병렬 회로(724)는 트랜지스터(707)와 트랜지스터(708)가 병렬 회로를 구성하고 있다.
(6) 다음에, 하부(722)의 구성을 설명한다.
하부(722)는, 트랜지스터(710)와, 병렬 회로(725)와 트랜지스터(715)의 직렬 접속과, 병렬 회로(726)와 트랜지스터(718)의 직렬 접속이 병렬로 접속되어 있다. 그리고, 병렬 회로(725)는, 병렬 회로(723)와 마찬가지로, 트랜지스터(711)와 트랜지스터(712)의 직렬 접속과, 트랜지스터(713)와 트랜지스터(714)의 직렬 접속이 병렬로 접속되어 병렬 회로를 구성하고 있다. 병렬 회로(726)는, 병렬 회로(724)와 마찬가지로, 트랜지스터(716)와 트랜지스터(717)가 병렬 회로를 구성하고 있다.
(7) 다음에, 각 트랜지스터로의 입력 신호에 대하여 설명한다. 입력 신호 x1은 트랜지스터(703), 트랜지스터(707), 트랜지스터(711), 트랜지스터(716)에 입력된다. 또한, 입력 신호 x1의 반전 신호는 트랜지스터(705), 트랜지스터(713)에 입력된다. 입력 신호 x2는 트랜지스터(704), 트랜지스터(708), 트랜지스터(712), 트랜지스터(717)에 입력된다. 또한, 입력 신호 x2의 반전 신호는 트랜지스터(706), 트랜지스터(714)에 입력된다. 입력 신호 r은 트랜지스터(709), 트랜지스터(718)에 입력된다. 입력 신호 r의 반전 신호는 트랜지스터(702), 트랜지스터(715)에 입력된다. 입력 신호 en의 반전 신호는 트랜지스터(701), 트랜지스터(710)에 입력된다.
도 22는 실시예 3에 따른 기본 소자 A(800)를 도시하는 도면이다. 도 6의 기본 소자 A(100)가 2 입력 AND형인데 반하여, 기본 소자 A(800)는 3 입력 AND형이다. 입력 신호는 x1, x2, x3, r, en이다. 또한, 출력 z는
z=((x1^r)&(x2^r)&(x3^r)^r)&en
으로 된다. 기본 소자 A(100)의 경우와 마찬가지로, 입력 x1, x2, x3은
x1=xi^r, x2=xj^r, x3=xk^r
이다. 따라서, 입출력에 난수가 배타적 논리합되어 있다. 제어 신호 en에 근거하는 각 트랜지스터의 스위칭에 의해 단숨에 z가 출력된다. 이에 따라, 기본 소자 A(100)와 마찬가지로, 소비 전력으로부터 비밀 정보를 특정하는 공격에 대항할 수 있다.
(1) 기본 소자 A(800)는 상부(819)와 하부(820)의 직렬 접속에 의해 구성되어 있다. 상부(819)와 하부(820) 사이로부터 출력 신호 z가 출력된다.
(2) 인가부(817)에는 논리 「1」에 상당하는 전압이 인가된다.
(3) 인가부(817)에 논리 「1」에 상당하는 전압이 인가된 경우, 각 트랜지스터의 스위칭에 의해
「z=((x1^r)&(x2^r)&(x3^r)^r)&en」
이 출력된다.
(4) 상부(819)는, 트랜지스터(801)와, 트랜지스터(802)와 트랜지스터(803)와 트랜지스터(804)에 의한 병렬 회로와, 트랜지스터(805)와 트랜지스터(806)와 트랜지스터(807)와의 직렬 접속과 트랜지스터(808)에 의한 병렬 회로와의 직렬 접속으로 구성된다.
(5) 하부(820)는, 트랜지스터(809)와, 트랜지스터(810)와 트랜지스터(811)와 트랜지스터(812)에 의한 직렬 접속과, 트랜지스터(813)와 트랜지스터(814)와 트랜지스터(815)와의 병렬 회로와 트랜지스터(816)에 의한 직렬 접속가 병렬로 접속되어, 병렬 회로를 구성하고 있다.
(6) 다음에, 각 트랜지스터로의 입력 신호에 대하여 설명한다. 기본 소자 A(800)에서는, 입력 신호인 x1, x2, x3, r, en이 모두 반전되어, 각 트랜지스터에 입력된다. 입력 신호 x1의 반전 신호는 트랜지스터(802), 트랜지스터(805), 트랜지스터(810), 트랜지스터(813)에 입력된다. 입력 신호 x2의 반전 신호는 트랜지스 터(803), 트랜지스터(806), 트랜지스터(811), 트랜지스터(814)에 입력된다. 입력 신호 x3의 반전 신호는 트랜지스터(804), 트랜지스터(807), 트랜지스터(812), 트랜지스터(815)에 입력된다. 입력 신호 r의 반전 신호는 트랜지스터(808), 트랜지스터(816)에 입력된다. 입력 신호 en의 반전 신호는 트랜지스터(801), 트랜지스터(809)에 입력된다.
도 23은, 소비 전력으로부터 비밀 정보를 특정하는 공격을 행한 경우의, 소비 전력의 시간 변화를 나타내는 그래프이다. 도 23은 기본 소자 A, 기본 소자 B을 이용하고 있지 않는, AND 회로, XOR 회로로 구성되는 회로에 대하여, 대책 전의 상태를 나타내고 있다. 도면에 도시하는 바와 같이, AND 연산 및 XOR 연산이 실행될 때에, 소비 전량의 피크가 출현하고 있다. 이 피크의 출현에 의해, 비밀 정보의 특정이 가능해진다.
도 24는 도 23에 대하여, 기본 소자 A, 기본 소자 B를 이용하여 대책을 행한 경우를 나타내고 있다. 도 23의 경우에 출현하고 있었던 피크가 소멸되어 있다. 이 피크의 소멸에 의해, 비밀 정보의 특정을 행하는 것은 불가능하게 된다.