JP5700128B2 - 暗号化処理装置および認証方法 - Google Patents

暗号化処理装置および認証方法 Download PDF

Info

Publication number
JP5700128B2
JP5700128B2 JP2013525510A JP2013525510A JP5700128B2 JP 5700128 B2 JP5700128 B2 JP 5700128B2 JP 2013525510 A JP2013525510 A JP 2013525510A JP 2013525510 A JP2013525510 A JP 2013525510A JP 5700128 B2 JP5700128 B2 JP 5700128B2
Authority
JP
Japan
Prior art keywords
key
bit
random number
circuit
enc
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Fee Related
Application number
JP2013525510A
Other languages
English (en)
Other versions
JPWO2013014778A1 (ja
Inventor
隆夫 落合
隆夫 落合
伊藤 孝一
孝一 伊藤
大 山本
大 山本
和快 古川
和快 古川
武仲 正彦
正彦 武仲
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2013014778A1 publication Critical patent/JPWO2013014778A1/ja
Application granted granted Critical
Publication of JP5700128B2 publication Critical patent/JP5700128B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • 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/3271Cryptographic 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 challenge-response
    • 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/08Randomization, e.g. dummy operations or using noise
    • 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)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Description

本発明は、共通鍵暗号方式を用いる暗号化処理装置および認証方法に関する。
近年、様々なものに認証機能を有する暗号デバイスが組み込まれるようになった。たとえば、プリンタではカートリッジの認証を行うため、医療器具では使い捨てパーツの認証を行うために、そのような暗号デバイスが用いられる。暗号デバイスを用いることによって、正規品と偽造品を区別することができ、粗悪な偽造品により発生する被害から顧客を守ることができる。
認証機能で用いられる暗号方式の代表例としては、公開鍵暗号方式と共通鍵暗号方式が知られている。公開鍵暗号方式とは、暗号化と復号で異なる鍵を用いる方式であり、暗号化を行うための鍵(公開鍵)を一般に公開する代わりに、暗号文を復号するための鍵(秘密鍵)を受信者のみの秘密情報とすることで安全性を保つ方式である。これに対し、共通鍵暗号方式と呼ばれるものは、暗号化と復号で同一の鍵(秘密鍵)を用いる方式であり、この秘密鍵を送信者と受信者以外の第三者にわからない情報とすることで安全性を保つ方式である。いずれの暗号方式を用いた場合でも、秘密鍵が外部に漏洩しないことがセキュリティ上、最も重要な前提である。この前提が守られる限りは、公開鍵暗号、共通鍵暗号のいずれを用いた認証も安全となる。しかし、共通鍵暗号の方が公開鍵暗号より回路規模が小さく、低コスト化には適しているため、特に組み込み機器においては共通鍵暗号を用いた認証が広く普及している。
セキュリティ機能を備えた組み込み機器に求められる性質として、耐タンパ性と呼ばれるものがある。耐タンパとは、覗き見防止の意味であり、組み込み機器の外部から観察された情報により、組み込み機器内部に格納された重要情報が漏洩しない性質を指す。耐タンパ性を実現するためには、組み込み機器が備える正規の入出力端子からのアクセスによる情報漏洩防止はもちろんのこと、マイクロプローブを用いて内部回路を直接覗き込む非正規アクセスに対する情報漏洩防止も実現しなければならない。通常のICチップのハードウェア構成では、マイクロプローブを用いて内部回路を直接覗き込む攻撃に耐えることはできない。よって、耐タンパ性を実現するには、外部からの物理的・論理的な不正アクセスを防ぐための専用のハードウェア構成をもったICチップとして製造する必要がある。
安全な認証を実現するための一般的な方法としては、耐タンパ性をもつ認証機器に対して、機器製造時に認証に用いる秘密鍵を内部に書き込み、製造後は鍵を外部に取り出さない方法が用いられる。こうすることで、不正な第三者が秘密鍵を入手し、認証機器の偽造を防止することができると考えられていた。
特表2008−526078 特開2010−226707 特開平4−117038
Paul C. Kocher, "Timing Attacks on Implementations of Diffie-Hellman, RSA, DSS, and Other Systems," Advances in cryptology-CRYPTO 1996, Springer-Verlag, pp. 104-113 Thomas S. Messerges, Ezzy A. Dabbish and Robert H. Sloan, "Power Analysis Attacks of Modular Exponentitiation in Smartcards," Cryptographic Hardware and Embedded Systems (CHES’99), Springer-Verlag, pp. 144-157 Paul Kocher, Joshua Jaffe, and Benjamin Jun, "Differential Power Analysis," in proceedings of Advances in Cryptology-CRYPTO’99, Springer-Verlag, 1999, pp. 388-397 S. Chari, C. Jutla, J.R. Rao, P. Rohatgi, "An Cautionary Note Regarding Evaluation of AES Candidates on Smart-Cards," Second Advanced Encryption Standard Candidate Conference, March 1999 T. S. Messerge, Ezzy A. Dabbish and Robert H. Sloan, "Investigations of Power Attacks on Smartcards," Proceedings of USENIX Workshop on Smartcard Technology, March 1999 P. Kocher, J. Jaffe and B. Jun, "Differential power analysis", CRYPOT’99, LNCS 1666, pp. 388-397, 1999 Thomas S. Messerges, "Securing the AES Finalists Against Power Analysis Attacks," in proceedings of Fast Software Encryption Workshop 2000, Springer-Verlag, April 2000 岡田 壮一、鳥居直哉、長谷部高行, "スマートカード向け AES ハードウェアの試作 岡田 壮一", Technical report of IEICE. ISEC 101(214), pp.111-118, 2001-07-18
しかし、製造後は鍵を外部に取り出さない認証機器を含めた組み込み装置であっても、サイドチャネル攻撃と呼ばれる組み込み機器に対する物理破壊を伴わずに、外部から観察可能な情報を用いて秘密鍵を解読する攻撃に対して脆弱性を有することが知られている。つまり、製造後は鍵を外部に取り出さない機器であっても、秘密鍵が漏洩することが判明している。よって、回路規模を抑えつつ、サイドチャネル攻撃対策を施すことが耐タンパ上の課題の一つとなっている。
暗号化処理装置は、共有鍵を記憶するメモリと、整数である乱数を発生する乱数発生器と、前記共有鍵に対して、少なくとも前記乱数によって定まるビット転置を施し、第1のランダム化鍵を生成するビット転置器と、前記乱数を、別の暗号化処理装置に送信し、前記別の暗号化処理装置に記憶されている共有鍵と、前記乱数によって定まるビット転置を施して生成される第2のランダム化鍵を用いた暗号化によって得られるレスポンスを前記別の暗号化処理装置から受信する通信器と、前記レスポンスを前記第1のランダム化鍵を用いて復号して前記乱数と比較する、または前記乱数を前記第1のランダム化鍵を用いて暗号化して前記レスポンスと比較することによって前記別の暗号化処理装置を認証する認証器と、を含み、前記共有鍵は、ビット長がn×mビットであり、前記ビット転置器は、n×mビット長の鍵をn分割して得られるmビット長の部分鍵の各々に対して、少なくとも前記乱数によって定まるビット転置を施してmビット長のランダム化部分鍵をn個生成し、生成されたn個の前記ランダム化部分鍵を一つに圧縮してn×mビット長の鍵を生成する手順をm回繰り返すことによって、前記共有鍵から前記第1のランダム化鍵を生成する、ことを特徴とする。
また、共有鍵を有する第1の暗号化処理装置を含む第1のデバイスによる、前記共有鍵と同一の鍵を有する第2の暗号化処理装置を含む第2のデバイスの認証方法は:乱数を発生すること;前記共有鍵に対して、少なくとも前記乱数によって定まるビット転置を施し、第1のランダム化鍵を生成すること;前記乱数を、前記第2の暗号化処理装置に送信すること;前記第2の暗号化処理装置から、前記第2の暗号化処理装置に記憶されている前記鍵と前記乱数によって定まるビット転置を施して生成される第2のランダム化鍵を用いた暗号化によって得られるレスポンスを受信すること;前記レスポンスを前記第1のランダム化鍵を用いて復号して前記乱数と比較する、または前記乱数を前記第1のランダム化鍵を用いて暗号化して前記レスポンスと比較すること、を含み、前記共有鍵は、ビット長がn×mビットであり、前記ビット転置では、n×mビット長の鍵をn分割して得られるmビット長の部分鍵の各々に対して、少なくとも前記乱数によって定まるビット転置を施してmビット長のランダム化部分鍵をn個生成し、生成されたn個の前記ランダム化部分鍵を一つに圧縮してn×mビット長の鍵を生成する手順をm回繰り返すことによって、前記共有鍵から前記第1のランダム化鍵を生成する、ことを特徴とする。
秘密鍵をビット転置条件が乱数によって変化する回路を用いてビット転置を行いランダム化鍵を生成し、ランダム化されたランダム化鍵を、秘密鍵の代わりに使用することによって、サイドチャネル攻撃に対する安全性と、小規模・高速な暗号処理を両立する暗号化処理装置を得ることができる。
チャレンジアンドレスポンス認証プロトコルの概要を示す図である。 共通鍵暗号を用いた一般的なチャレンジアンドレスポンス認証プロトコル(片側認証、暗号化・復号)の処理を示す図である。 共通鍵暗号を用いた別の一般的なチャレンジアンドレスポンス認証プロトコル(両側認証、暗号化・復号)の処理を示す図である。 共通鍵暗号の一般的な処理(鍵XOR処理とテーブル変換の組み合わせ)を示す図である。 電力消費曲線の例を示す図である。 スパイクのある電力差分曲線の例を示す図である。 スパイクのない電力差分曲線の例を示す図である。 AESにおいてサイドチャンネル攻撃が成功する要因を説明する図である。 単純な鍵のランダム化による認証プロトコルの例(片側認証、暗号化・復号)の処理を示す図である。 本発明の各実施形態に適用されるランダム化鍵の生成の処理(手法1)を説明する図である。 本発明の各実施形態に適用されるシステムの概略図である。 本発明の各実施形態に適用されるシステムを実現可能なハードウェアシステムの一例の構成図である。 各実施形態に適用されるランダム化鍵の生成の別の処理(手法2)を説明する図である。 本発明の第1の実施形態にしたがうチャレンジアンドレスポンス認証プロトコル(片側認証、暗号化・復号)の処理を示す図である。 本発明の第2の実施形態したがうチャレンジアンドレスポンス認証プロトコル(両側認証、暗号化・復号)の処理を示す図である。 本発明の第3の実施形態したがうチャレンジアンドレスポンス認証プロトコル(両側認証、暗号化のみ)の処理を示す図である。 本発明の第4の実施形態したがうチャレンジアンドレスポンス認証プロトコル(片側認証、暗号化のみ)の処理を示す図である。 本発明の第5の実施形態したがうチャレンジアンドレスポンス認証プロトコル(両側認証、親機は暗号化のみ、子機は暗号化・復号)の処理を示す図である。 本発明の第6の実施形態したがうチャレンジアンドレスポンス認証プロトコル(両側認証、親機は暗号化・復号、子機は暗号化のみ)の処理を示す図である。 ランダム化鍵生成の処理の第1の実施例を示す図である。 回路規模の見積もり基準の表を示す図である。 2−1NANDゲートの回路の例を示す図である。 2−1NORゲートの回路の例を示す図である。 NOTゲートの回路の例を示す図である。 レジスタの回路の例を示す図である。 2−1XOR(排他論理和)ゲートの回路の例を示す図である。 2−1セレクタ(MUX)の回路の例を示す図である。 2−1セレクタ(DEMUX)の回路の例を示す図である。 シフト/巡回レジスタの回路の例である。 LSFR/剰余演算回路の例を示す図である。 第1の実施例の回路規模の見積もりの表を示す図である。 ランダム化鍵の生成の処理の第2の実施例を示す図である。 ランダム化鍵の生成の処理の第3の実施例を示す図である。 ランダム化鍵の生成の処理の第4の実施例を示す図である。 ランダム化鍵の生成の処理の第5の実施例を示す図である。 ランダム化鍵の生成の処理の第6の実施例を示す図である。 ランダム化鍵の生成の処理の第7の実施例を示す図である。 図36A中のビット転置回路を示す図である。 比較例と各実施形態に従うサイドチャンネル攻撃への対策のための回路規模の増分の比較を示す表を示すである。
以下、図面を参照しながら、共通鍵暗号方式を用いる暗号化処理装置および認証方法を説明する。最初に比較例を説明するが、その後、本発明の第1から第6の実施形態を、比較例に対する利点を含めて説明する。尚、以下の説明において、複数の図面にわたり類似の構成要素または類似の機能を有する構成要素には、類似の参照符号を付して初出時以外、詳細な説明を省略する。
認証チップは、複数の電子機器間で通信を行い、通信相手が正規の機器であることを確認するためのシステムにおいて利用される。例えば、プリンタとインクカートリッジ間でカートリッジがメーカの純正品であることを確認するようなシステムにおいては必須となる。
認証機能で用いられる暗号方式の代表例としては、公開鍵暗号方式と共通鍵暗号方式が知られている。公開鍵暗号方式とは、暗号化と復号で異なる鍵を用いる方式であり、暗号化を行うための鍵(公開鍵)を一般に公開する代わりに、暗号文を復号するための鍵(秘密鍵)を受信者のみの秘密情報とすることで安全性を保つ方式である。これに対し、共通鍵暗号方式と呼ばれるものは、暗号化と復号で同一の鍵(秘密鍵)を用いる方式であり、この秘密鍵を送信者と受信者以外の第三者にわからない情報とすることで安全性を保つ方式である。いずれの暗号方式を用いた場合でも、秘密鍵が外部に漏洩しないことがセキュリティ上、最も重要な前提である。この前提が守られる限りは、公開鍵暗号、共通鍵暗号のいずれを用いた認証も安全となる。しかし、共通鍵暗号の方が公開鍵暗号より回路規模が小さく、低コスト化には適しているため、特に組み込み機器においては共通鍵暗号を用いた認証が広く普及している。
セキュリティ機能を備えた組み込み機器に求められる性質として、耐タンパ性と呼ばれるものがある。耐タンパとは、覗き見防止の意味であり、組み込み機器の外部から観察された情報により、組み込み機器内部に格納された重要情報が漏洩しない性質を指す。耐タンパ性を実現するためには、組み込み機器が備える正規の入出力端子からのアクセスによる情報漏洩防止はもちろんのこと、マイクロプローブを用いて内部回路を直接覗き込む非正規アクセスに対する情報漏洩防止も実現しなければならない。通常のICチップのハードウェア構成では、マイクロプローブを用いて内部回路を直接覗き込む攻撃に耐えることはできない。よって、耐タンパ性を実現するには、外部からの物理的・論理的な不正アクセスを防ぐための専用のハードウェア構成をもったICチップとして製造する必要がある。
安全な認証を実現するための一般的な方法としては、耐タンパ性をもつ認証機器に対して、機器製造時に認証に用いる秘密鍵を内部に書き込み、製造後は鍵を外部に取り出さない方法が用いられる。こうすることで、不正な第三者が秘密鍵を入手し、認証機器の偽造を防止することができると考えられていた。
しかし、製造後は鍵を外部に取り出さない認証機器を含めた組み込み装置であっても、サイドチャネル攻撃と呼ばれる組み込み機器に対する物理破壊を伴わずに、外部から観察可能な情報を用いて秘密鍵を解読する攻撃に対して脆弱性を有することが知られている。つまり、製造後は鍵を外部に取り出さない機器であっても、秘密鍵が漏洩することが判明している。よって、コスト上昇を抑えつつ、サイドチャネル攻撃対策を施すことが耐タンパ上の課題の一つとなった。
サイドチャネル攻撃とは、組み込み機器に対する物理破壊を伴わずに、外部から観察可能な情報を用いて秘密鍵を解読する攻撃である。1996年には、処理時間を観察するタイミング攻撃が提案されたが、対策も容易であったため大きな脅威とならなかった。しかし1998年に、1998年に消費電力を観察する電力解析攻撃(Power Analysis)と呼ばれる手法が提案され、大きな脅威として現在でも注目されている。電力解析攻撃とは、組み込み機器に様々な入力データを与えた時の電力消費データを収集・解析することで、内部の鍵情報を推定する手法である。特に、組み込み機器がスマートカードチップや認証チップなどの単体のLSIチップである場合、消費電力の測定が容易であるため、PA対策は耐タンパ上の大きな課題である。電力解析攻撃を用いることで、公開鍵暗号、秘密鍵暗号共に暗号プロセッサから秘密鍵を推定できることが知られている。
電力解析攻撃には、単純電力解析(Single Power Analysis)と差分電力解析(Differential Power Analysis)の2種類が存在する。単純電力解析は暗号プロセッサにおける単一の電力消費データの特徴から秘密鍵の推定を行う方式、差分電力解析は多数の電力消費データの差分を解析することで秘密鍵の推定を行う方式である。共通鍵暗号方式に限定した場合、単純電力解析は対策が容易であるためほとんど有効ではないが、差分電力解析が有効な攻撃法として知られている。たとえば、RSAなどの公開鍵暗号に対する差分電力解析を用いた解読法については、非特許文献2などの文献にて述べられている。また、共通鍵暗号方式において、旧来の標準として利用されているDES(Data Encryption Standards)に対する差分電力解析を用いた解読法については、非特許文献3などで述べられている。DESの他に、現在標準的に利用されているAES(Advanced Encryption Standard)については、非特許文献4などの文献で差分電力解析を用いた解読の可能性が指摘されている。
電力解析攻撃を用いた解読技術は特に有効な方法として注目されており、様々な解読法が研究されている。また、解読技術のみならずPAによる解読を防ぐための対策技術も発展しており、解読技術と同様に重要な技術として注目されている。ただし、これらの対策技術を用いた場合、暗号処理を行う回路の回路規模が大きくなるという欠点が知られており、共通鍵暗号方式に対する専用の対策回路は、未対策の回路のおよそ2倍の回路規模が必要となる問題がある。認証チップやスマートカードなどの小型チップにおいては、暗号回路の占める回路規模の割合が非常に大きく、専用の対策回路を組み込むことはコスト増に直結するため、好ましくない。
以下の実施形態では、専用の対策回路を用いる代わりに、暗号を利用する上位レイヤの認証プロトコルの改良を行うことで、専用の対策回路によるコスト増を招くことなく、未対策の回路と同程度の回路規模による対策つき認証チップを実現するものである。
<チャレンジアンドレスポンス認証プロトコル>
認証に際しては、機器の正当性を確認するためにチャレンジアンドレスポンス認証プロトコルと呼ばれる通信プロトコルが利用される。
図1は、チャレンジアンドレスポンス認証プロトコルの概要を示す図である。チャレンジアンドレスポンス認証とは、デジタル情報を用いた合言葉であり、認証を行う側(親機101)から認証される側(子機102)に対し、「チャンレジ」と呼ばれる乱数を送信する。これに対し、子機102側では「チャンレンジ」に対して「レスポンス」と呼ばれる応答を生成し、親機101に返信する。親機101は、「チャレンジ」に対する「レスポンス」の値を判断し、もし正しいならば、子機102が正当な機器であると判断する。
「チャレンジ」として乱数を用いることで、対応する「レスポンス」が毎回変化する。これにより、再送攻撃(Replay attack)に対する防止措置である。再送攻撃とは、過去に外部から観察された応答を繰り返すことで、正当な機器の成りすましを行う攻撃である。つまり、乱数を用いない場合、チャンレジとレスポンスのペアが完全に固定値になるため、攻撃者がこのペアを観察することで、チャレンジに対応する適切なレスポンスを知ることができ、このレスポンスを返すチップを製造することでチップ偽造が容易となるからである。
図2は、共通鍵暗号方式を用いたチャレンジアンドレスポンス認証方法(プロトコル)を示す図である。「チャレンジ」に対する「レスポンス」の生成は、暗号関数を用いた方法が一般的である。どの暗号関数を用いるかによってメリットとデメリットがあるが、認証チップの場合には、公開鍵暗号よりも小規模な回路で実現可能な共通鍵暗号を用いる方法が広く用いられている。
図2に示すプロトコルは、親機101と子機102の認証チップ間で、秘密鍵Kを事前共有している。これは、親機101および子機102に搭載されるチップの製造時に秘密鍵(共有鍵)Kの値を書き込むことで実現できる。この秘密鍵Kの値が外部に漏洩しないことがセキュリティ上の最も重要な前提である。
S301で、認証を行う側の親機101は、乱数rを生成し、認証される側の子機102に送信する。S302では、まず、子機102は親機101から乱数rを受け取る。さらに、子機102は、親機101から受け取った乱数rに対し、秘密鍵Kを用いて暗号処理Enc(r,K)を実行し、暗号処理によって得られた値を応答a=Enc(r、K)として親機101に返信する。ただし、C=Enc(P,K)とは、共有鍵Kを用いて、平文Pを鍵Kにより暗号化した結果が暗号文Cであることを表す。S303で、応答aを受け取った親機101は、秘密鍵Kを用いて復号処理Dec(a,K)を実行し、復号処理によって得られる値を復号結果r’=Dec(a,K)とする。そして、復号結果r’と、S301で生成した乱数rを比較する。復号結果r’と乱数rが一致するならば、親機101は子機102を正当な機器と認定する。子機102が、乱数rに対応した正当な応答aを生成できるのは、親機101が有している秘密鍵Kと同じ鍵Kを有する場合に限られるからである。
図2に示されているプロトコルは、暗号化と復号の両方を利用したものであるが、暗号化のみを利用する方法もある。その場合は、親機101と子機102の双方で乱数rに対し秘密鍵Kによる暗号処理Enc(r,K)を実行し、親機101側で双方の暗号文が一致することを確認することでチャレンジアンドレスポンス認証を実現することも可能である。
図3は、共通鍵暗号方式を用いた別の一般的なチャレンジアンドレスポンス認証プロトコル(両側認証、暗号化・復号)の処理を示す図である。図2で示した方式は片側認証と呼ばれ、親機101が子機102の正当性を確認するための認証プロトコルである。これでは、子機102は親機101の正当性を確認することができないため、子機102は親機101の不正を防止できない。これを防ぐために、子機102も親機101の正当性を確認する手段が必要である。これを実現するのが両側認証と呼ばれる認証プロトコルである。両側認証プロトコルでは、子機102が親機101にチャレンジを送信し、親機101からの応答を確認する処理が行われる。図2の認証プロトコルを両側認証に拡張した認証プロトコルを図3に示す。
S401では、図2のS301と同様、親機101が乱数rを生成し、子機102に送信する。乱数rを受け取った子機102は、S403で秘密鍵Kを用いた暗号処理Enc(r,K)を実行する。また子機102は、S402で乱数sを生成する。S402とS403を処理する順番はどちらが先でも良いし、またはパラレルに処理がされても良い。そして、暗号処理によって得られた値を応答a=Enc(r、K)として、乱数sと共に親機101に返信する。S404で、応答aを受け取った親機101は、秘密鍵Kを用いた復号処理Dec(a,K)を実行し、復号処理によって得られる値を復号結果r’=Dec(a,K)とする。そして、復号結果r’と、S401で生成した乱数rを比較する。復号結果r’と乱数rが一致するならば、親機101は子機102を正当な機器と認定する。S404では、さらに、秘密鍵Kを用いた暗号処理Enc(s,K)を実行する、暗号処理によって得られた値b=Enc(s,K)は子機102に送信される。S405で、親機101から値bを受け取った子機102は、秘密鍵Kを用いて復号処理Dec(b,K)を実行し、復号処理によって得られる値を復号結果s’=Dec(b,K)とする。そして、復号結果s’と、S402で生成した乱数sを比較する。復号結果s’と乱数sが一致するならば、子機102は親機101を正当な機器と認定する。またこの場合も、片側認証の場合と同様に、暗号化のみを利用して認証を実行することが可能である。
<共通鍵暗号回路に対する差分電力解析による秘密鍵解読手法>
図4は、共通鍵暗号方式の一般的な処理(鍵XOR処理とテーブル変換の組み合わせ)を示す図である。Mは平文(もしくは暗号文)などの入力データ、Kは拡大鍵である。図4のKは、秘密鍵をもとに特定の処理を行うことでビット長を拡大することで生成される値である。MとKの排他的論理和(XOR)を取った結果を、特定のビット長データごとに分割し、それぞれの分割されたデータに対し、Sboxと呼ばれる変換テーブル演算を行う。MとKは共有鍵によって異なり、例えばData Encryption Standard(DES、データ暗号化標準)の場合は48ビット、Advanced Encryption Standard(AES、新暗号化標準)の場合は128ビットである。Sboxのビット長は暗号の種類に依存するが、例えばDESの場合、6ビット入力4ビット出力である。AESの場合、88ビット入力8ビット出力である。aビット入力bビット出力のSboxの回路規模は、1ビット入力1出力に比べて、a×b×2倍となるため、入出力のビット長が大きくなるにつれ、急速に増大する。そのため、Sbox入出力のビット長としては、8ビット入力8ビット出力が最も大きいものとして知られている。
図4に示されているSboxの一つのテーブル変換wに関連する平文M、拡大鍵K、Sboxの入力、およびSboxの出力の所定のビットをそれぞれ、m、k、x、およびzとする。外部から暗号を解読しようとする攻撃者にとって、これらのうち、平文と変換テーブルの所定のビット、mとwは測定可能量として既知であると仮定して、拡大鍵kの所定のビットを推測することを考える。
一般的に、暗号デバイスの消費電力は入出力データ値のハミングウェイトに比例すると考えられている。このことが正しいことを示す実験結果は、非特許文献5などの文献に示されている。差分電力解析では暗号デバイスの消費電力波形を多数取得し、それらを解析することで秘密鍵を推定する。たとえば、非特許文献6では、ノイズ除去のため少なくとも100以上の電力波形が必要であることが指摘されている。
以下では、差分電力解析による秘密鍵解読について説明する。
差分電力解析は、電力消費データの測定と、電力差分データの解析という2段階から構成される。電力消費データの測定は、攻撃者が既に知っている情報に依存して、図4のA、B、またはCで行うことができる。たとえば、入力Mが既知で制御可能、Sboxの変換テーブルwも既知、拡大鍵Kは未知であるが固定されている状況では、図4のA点で電力消費データを測定する。また、入力Mが既知で制御可能、拡大鍵Kは未知であるが固定されている状況では、図4のB点またはC点で電力消費データを測定する。攻撃者は、入力データ(平文)を秘密鍵Kによって暗号化される際の消費電力波形をオシロスコープなどで観測する。図5はそのようにして得られる電力消費曲線の例である。相違なる入力平文に対してそのような測定を統計的に十分な回数だけ行う。その測定で得られた複数の電力消費曲線の集合をGとする。
次に、電力消費曲線の解析について説明する。秘密鍵Kは未知であるが、平文と暗号アルゴリズムは既知としているため、秘密鍵をK’と仮定し、秘密鍵K’の今、問題にしているビットをk’とする。既知のmとwと、仮定されたk’からSboxの出力z’=w(mXOR k’)を演算して、k’に対する集合G(k’)を、次の部分集合G(k’)とG(k’)に分ける。
Figure 0005700128
Figure 0005700128
ここで、eは自然数であり、第e桁目のビット値とは、e番目の最下位ビット(LSB)を表す。
式(1)および(2)の二つの集合G(k’)およびG(k’)の差分DG(k’)を次のように定義する。
Figure 0005700128
図5は、集合G(k’)またはG(k’)に属する電力消費曲線を平均して得られる平均電力消費曲線の例である。このような平均電力消費曲線が二つの集合G(k’)およびG(k’)に対して得られる。差分DG(k’)は両者の差である。
差分DG(k’)がどのような曲線になるのか考える。k’=k、即ち、仮定された鍵の要素値k’と真の鍵の要素値kが一致している場合、集合G(k’)の部分集合G(k’)に属するSboxの出力zのハミングウェイトは0である。なぜなら、仮定されたz’=w(mXOR k’)は、これに対応する真のz=w(mXOR k)と全てのmに関して一致するからである。また、集合G(k’)の部分集合G(k’)に属するSboxの出力zのハミングウェイトは1となる。結局、k’=kの場合、
Figure 0005700128
となる。この結果は、図6に例が示されているように、差分電力消費曲線中のスパイクの出現をもたらす。
一方、k’≠k、即ち、仮定された鍵の要素値k’と真の鍵の要素値kが一致していない場合、仮定されたz’=w(mXOR k’)と、これに対応する真のz=w(mXOR k)とは無関係になる。よって、G(k’)においても、G(k’)においても、仮定されたz’と、これに対応する真のzは無関係になり、
Figure 0005700128
となる。図7は、k’≠kの場合の差分電力消費曲線の例である。k’≠kの場合の差分電力消費曲線は概ね平坦な曲線となる。
上述のように鍵の要素値k’を仮定した解析を各iについて行えば、最終的に秘密鍵Kの要素全てを解読することができる。
図8は、AESにおいてサイドチャンネル攻撃が成功する要因を説明する図である。一般的なAESにおける暗号処理においては、128ビットの拡大鍵Kは、128ビットの平文と排他的論理和(XOR)を取った後、8ビットごとに16分割され、16分割されたそれぞれのデータがSboxに入力される。攻撃者は、それぞれのSboxの消費電力データを利用することで、8ビットごとに分割された拡大鍵K=k15||k14||・・・||k0に対し、8ビット部分鍵kについて、それぞれの総当りを実行する。つまり、128ビットの鍵の総当りには本来2128の手間が必要であるのに対し、サイドチャネル攻撃を用いることで2の手間を16回、つまり2×16=212に減らすことができる。すなわち、サイドチャネル攻撃に必要な手間は、Sboxの入力に関連した部分鍵のビット長に依存する。このビット長は共通鍵暗号方式によって変動するが、既に述べたとおりAESの8ビットが最大である。
以上の説明では、図4に示されているような、共通鍵暗号回路としては最も単純なものに対するDPAに関して述べた。このような手法は、図4の鍵XOR処理の前もしくが後、または前後の両方に線形変換を挿入しても成立する。
<共通鍵暗号回路に対する差分電力解析対策手法としてのマスク法>
従来のDPA対策法としては、暗号処理に対策を施し消費電力をランダム化する手法が存在する。この手法の代表的なものとして、マスク法(masking method)と呼ばれている手法が知られている(たとえば、非特許文献7を参照。以下、「比較例1」と呼ぶ)。
電力解析攻撃対策なしの暗号処理において計算されるデータをMとすると、比較例1に記載されているDPA対策は、データMを計算する代わりに、
Figure 0005700128
で表されるデータM’、Rを計算することで暗号処理を行う方法である。ここで、Rは乱数であり、暗号処理を実行する度に発生させる値である。この方法により、暗号処理のデータをランダムな値でマスクされる。よって、データがランダム化されることで消費電力もランダム化されるため、DPAに安全な処理を実現することができる。この方法の問題点は、M’およびRの両方を計算する必要があるため、対策なしの回路の2倍の回路規模を必要とすることである。
上の方法をAESにおけるDPA対策に適用する際には、部分鍵kに関連する平文Mおよび乱数Rの部分をそれぞれ、MおよびRとして、(6)式の代わりに、
Figure 0005700128
で表されるデータM’、Rを計算することで暗号処理を行う。この場合も、暗号処理ごとに計算されるデータ値がランダムであるため、DPAに対して安全な処理を実現することができる。しかしながら、M’およびRの両方を計算する必要があるため、対策なしの回路の2倍の回路規模を必要とすることである。
比較例1に示されるような専用の対策つき暗号回路を用いると、消費電力のランダム化がなされる代わりに、回路規模が、対策なしの回路より大きくなる。比較例1では、ラインダールアルゴリズムを実行する回路を構成している。その回路規模は、17.6Kゲートであると評価されている。また、鍵長を128ビット専用にした場合には、回路規模は2.2Kゲートほど減少する。それでも、サイドチャンネル攻撃対策を施すことによって、10Kゲート以上の回路規模の増大が見込まれる。
そこで、暗号より上位層の認証プロトコルへの改良によりサイドチャネル攻撃に安全な処理を実現する方法への要望が存在する。この場合、暗号回路そのものは、対策なしの回路をそのまま用いるため、電力解析攻撃対策によって回路規模が極端に大きくなることを回避することができる。認証プロトコルは、乱数を伴う処理であるため、この乱数を適切に利用することで、サイドチャネル攻撃に対して安全となる方法が考えられる。すなわち、一般的なチャレンジアンドレスポンス認証では、図2〜3に示されるように、固定の秘密鍵Kに対する暗号化処理が行われるが、これはサイドチャネル攻撃に対して脆弱である。この欠点は、乱数を用いて秘密鍵をマスク化することで一見克服できそうである。
<単純な秘密鍵のランダム化による電力解析対策手法の比較例>
図9は、単純な鍵のランダム化による認証プロトコル(片側認証、暗号化・復号)の例の機能ブロック図である。図9に示されている方法では、図2に示した共通鍵暗号を用いたチャレンジアンドレスポンス認証方法において、マスク法を適用して鍵Kの代わりに、
Figure 0005700128
を用いる。
S451で、認証を行う側の親機101は、乱数rを生成し、認証される側の子機102に送信する。S452では、まず、子機102は親機101から乱数rを受け取る。さらに、子機102は、親機101から受け取った乱数rに対し、秘密鍵Kを用いて暗号処理Enc(r,K’)を実行し、暗号処理によって得られた値を応答a=Enc(r、K’)として親機101に返信する。この応答aの生成は、鍵Kを乱数rでマスクした上で生成する。S453で、応答aを受け取った親機101は、秘密鍵K’を用いて復号処理Dec(a,K’)を実行し、復号処理によって得られる値を復号結果r’=Dec(a,K’)とする。そして、復号結果r’と、S501で生成した乱数rを比較する。復号結果r’と乱数rが一致するならば、親機101は子機102を正当な機器と認定する。子機102が、乱数rに対応した正当な応答aを生成できるのは、秘密鍵Kを有する場合に限られるからである。
このような方法は、鍵Kをランダム化することで、サイドチャンネル攻撃に対して安全であるように見えるが、次のような理由で必ずしもそうではなく、脆弱であることが分かる。この方法において、乱数rは、親機101と子機102の間で送受信され、その結果、共有される。つまり、乱数rは、外部から容易に観測できると考えるべきである。もし、乱数rが攻撃者によって観測されれば、差分電力解析を用いて、鍵Kを解読することが可能である。
また、この方法には幾つかの変形例が考えられる。上の方法では、乱数rが親機101と子機102の間で送受信されることによって、外部から観測され得る。そこでたとえば、マスク化のために用いる変数を、乱数rではなく、さらに別の変数にすることが考えられる。たとえば、乱数rと式(8)のK’を用いて、m=Enc(r、K’)を生成し、このmを用いて秘密鍵Kをマスク化することが考えられる。しかしながら、この場合も、mを生成は、応答を生成する前であり、mを生成する処理の消費電力を測定することによって、上と同様の手法によって秘密鍵Kを解読することが可能である。
このように、乱数rを用いて秘密鍵Kをマスク化することで、一見、サイドチャンネル攻撃に対する脆弱性を克服できるように見えるが、必ずしもそうでないことが分かっている。
<全般的な説明>
図10〜18を参照しながら、全般的な説明を行う。
上述のように、チャンレンジアンドレスポンスプロトコルで用いる乱数をそのまま秘密鍵のマスク化に用いても、サイドチャンネル攻撃に対して安全な認証処理を実現することができない。この問題を克服するために、以下の実施形態では、以下のような手順(手法1と呼ぶ)を実行する。
(手順1−1)秘密鍵KMASTをビット転置条件が乱数によって変化する回路を用いてビット転置を行いランダム化鍵KENCを生成する。
(手順1−2)ランダム化されたランダム化鍵KENCを、秘密鍵KMASTの代わりに使用する。
基本アイデアは、秘密鍵を乱数を用いてランダム化し、ランダム化された秘密鍵を新たな秘密鍵として利用する点にある。このアイデアは、チャレンジアンドレスポンス認証で用いる乱数は外部から観察されることは不回避であるという前提に基づくものであり、乱数が観察されたとしても、サイドチャネル攻撃における攻撃者の手間を増やすことができる。以下で説明する各実施形態における鍵のランダム化は以下の条件を満たしている。
(条件1)親機および子機で共有する秘密鍵の値と乱数が分かれば、ランダム化鍵の値もわかる。
(条件2)親機および子機で共有する秘密鍵の値と乱数が分からない限り、ランダム化鍵の値はわからない。
このように、上記手法では、親機および子機で共有する秘密鍵の値と乱数を同時に知らない限りランダム化鍵の解読は不可能である。一般に、機器の製造時に埋め込まれた秘密鍵と、その時々で変化する乱数とを同時に知ろうとすれば、大変な手間が必要となり、チャレンジアンドレスポンス認証を破ることは非現実的となり得る。
図10は、各実施形態に適用されるランダム化鍵の生成の処理(手法1)を説明する図である。ここでは、秘密鍵は128ビットであるとしているが、必ずしも128ビットである必要はない。たとえば、秘密鍵は48ビットであっても良い。
メモリ1001中に記憶されている128ビットの秘密鍵KMASTと、乱数発生回路1003で生成された乱数rは、ビット転置回路1002に入力される。ビット転置回路1002では、入力された乱数rに依存するビット転置を用いて、128ビットの秘密鍵KMASTから128ビットのランダム化鍵KENCを生成する(手順1−1)。具体的なビット転置の方法については、後述する。
生成されたランダム化鍵KENCは、以下で図14〜19を参照しながら説明する、チャンレンジアンドレスポンス認証プロトコルにおいて使用される(手順1−2)。図14〜19に示されているチャンレンジアンドレスポンス認証プロトコルは主に、もともとの秘密鍵KMASTの代わりにランダム化鍵KENCを用いる点で、図2および3に示されているチャンレンジアンドレスポンス認証プロトコルと異なっている。このように単純なランダム化を実行する代わりに、上記手順(1−1)〜(1−2)に示されるようなランダムな鍵圧縮を実行することで、回路規模を抑えつつ、サイドチャネル攻撃対策を施すことができる。サイドチャネル攻撃に対する安全性と、小規模・高速な暗号処理を両立することが可能となる。
図11は、各実施形態に適用されるシステムの概略図である。図1と同様、システムは親機101と子機102を含む。親機101と子機102はそれぞれ、暗号化処理装置103、104、通信器111、112、比較器113、114を備えている。暗号化処理装置103、104はそれぞれ、通信器111、112と電気的に接続されている。そして、親機101の通信機111と子機102の通信機112は、通信線113を介して、互いに通信可能なように構成されている。
親機の暗号化処理装置103は、共有鍵として128ビットの秘密鍵KMASTを記憶するメモリ105、整数である乱数rを発生する乱数発生器107、および、乱数rを用いて秘密鍵KMASTのビットの転置を行うビット転置器109を含む。同様に、子機102も、共有鍵として128ビットの秘密鍵KMASTを記憶するメモリ106、整数である乱数rを発生する乱数発生器108、および、乱数rを用いて秘密鍵KMASTのビットの転置を行うビット転置器110を含む。
乱数発生器107で発生される乱数rは擬似乱数である。よって、乱数の発生に用いられる種が決まれば、出力される乱数は決定論的に画定される。
ビット転置器110については、後述の実施例において、ビット転置の方法と共に詳述する。
比較器113、114は、返信を共有鍵を用いて復号して乱数と比較する、または乱数を共有鍵を用いて暗号化して返信と比較する、ことによって別の暗号化処理装置を認証する。
図12は、本発明の各実施形態に適用されるシステムを実現可能なハードウェアシステムの一例200の構成図である。ハードウェアシステムは汎用コンピュータとして実現されても良いし、専用回路として実現されても良い。いずれの場合でも、ハードウェアシステム200はコンピュータとしての構成を有し、親機101に対しても子機102に対しても適用され得る。
図12に示されているコンピュータ200では、中央処理装置(CPU)201、メモリ202、外部記憶装置205、および通信インターフェース207が、バス208を介して互いに電気的に接続されている。オプションとして、入力装置203、出力装置204、可搬記録媒体209が着脱可能に装着される可搬記録媒体駆動装置206を含んでいても良い。メモリ202には、コンピュータ200を制御するためのプログラムおよび別のコンピュータの認証を行うために実行されるチャレンジアンドレスポンス認証プロトコルに用いられるプログラムおよび秘密鍵が格納されていても良い。別のコンピュータの認証を行うために実行されるチャレンジアンドレスポンス認証プロトコルに用いられるプログラムは、本明細書中の各実施形態の全てまたは一部ならびにそれらの組み合わせを実現するために必要なコードを含んでいる。
図12に示されている構成は、本発明の各実施形態を実現するはハードウェアシステムの一例であり、そのようなハードウェアシステムはこのような構成に限定されない。
CPU201は、たとえば、メモリ202に収納されたプログラムに含まれる命令に応答して、コンピュータ200の全体の制御を行う。メモリ202は、プログラムの実行、データの更新等の際に、外部記憶装置205または可搬記録媒体209に記憶されているプログラムまたはデータを格納するRAMを含んでいても良い。秘密鍵はリードオンリーメモリ(ROM)に収納されることが好ましい。プログラムもROMに格納されていても良い。
入力装置203は、必要に応じて、ユーザによるキーボード、マウス等による入力操作を検知し、その結果をCPU201に送る。出力装置204は、CPU201からの命令に応じて、CPU201の動作によって得られる結果、メモリ202に収納されているデータ等を表示装置、印刷装置等に出力する。
外部記憶装置205は、たとえば、ハードディスク記憶装置であっても良い。
可搬記録媒体駆動装置206は、光ディスク、SDRAM、コンパクトフラッシュ(登録商標)等の可搬記録媒体209が着脱可能に装着され、外部記憶装置205と同様の役割を果たす。
通信インターフェース207は、コンピュータ200を別のコンピュータに接続するための装置である。
バス208は、上述の構成要素を互いに電気的に接続する。
図12に示されている本発明の各実施形態に適用されるシステムを実現可能なハードウェアシステムの一例200は、ハードウェア構成としては汎用コンピュータに近いものである。しかしながら、本発明の各実施形態に適用されるシステムを実現可能なハードウェアシステムのそれぞれの少なくとも一部を、専用回路として構成しても良い。
図11に示されている親機101および子機102では、暗号化処理装置103、104は、少なくとも図12のCPU201、メモリ202、外部記憶装置205を含んでいる。通信機111、112は、通信インターフェース207を含んでいる。比較器113、114は、少なくとも図12のCPU201、メモリ202を含んでいる。
暗号化処理装置103、104の乱数発生器107、108およびビット転置器109、110は、少なくとも図12のCPU201、メモリ202を含んでいる。
本手法では、128ビットのランダム化鍵KENCは、元々の128ビットの秘密鍵KMASTをビット転置することによって生成される。
サイドチャネル攻撃においては、Sboxの入力する部分鍵のビット値が全て確定しないと攻撃を実施することはできない。部分鍵のビット値を確定するためには、乱数が外部に観察されたとしても、秘密鍵全てビット値がわからない限り不可能となる。つまり、サイドチャネル攻撃を成功させるためには、従来は一つの部分鍵に関する総当り、つまり2回の攻撃を実施すればよかったのに対し、本手法を用いることで、原理的に秘密鍵全ビットに関する総当り、つまり2128回の攻撃を実施する必要がある。
本手法は、128ビットの秘密鍵KMASTからランダムにビットを選択して128ビットのランダム化鍵KENCを生成する。8ビット部分鍵に着目した場合、128ビットからランダムに8ビットを選択することを100回以上繰り返すため、その鍵のエントロピーは、オーダーとしては、128×100=7.2×1018〜264=1.8×1019となる。これは対策の無い場合の2のエントロピーと比較すると十分大きい。
また、サイドチャネル攻撃を行う場合には100以上の波形を必要とすることを考慮すれば、秘密鍵をランダム化する本方式では現実的な時間でのサイドチャネル攻撃は不可能となる。
上記手順の変形例として、次のような手順(手法2と呼ぶ)も考えられる。
(手順2−1)秘密鍵KMASTを特定のmビット長毎にn分割する。
(手順2−2)n分割された秘密鍵を乱数を用いてビット転置しそれぞれランダム化して、n個のランダム化部分鍵を生成する。
(手順2−3)n個のランダム化部分鍵を、圧縮回路を用いて1つに圧縮し、ランダム化鍵KENCとする。
(手順2−4)上記(手順2−1)〜(手順2−3)をm回繰り返す。
(手順2−5)ランダム化鍵KENCを、従来の認証プロトコルで用いられる秘密鍵KMASTの代わりに使用する。
手順(2−1)〜(2−2)では、128ビットの秘密鍵KMASTを任意のビット長に分割し、分割したビット列それぞれをランダムにビット転置し、圧縮することを繰り返して128ビットのランダム化鍵KENCを生成する。圧縮関数としては、一般的なXOR回路、加算回路、減算回路などを利用すればよい。また、繰り返し回数iは秘密鍵を8ビット分割した場合にi=8となる。この場合の8ビット部分鍵のエントロピーは、(216=2128となり、128ビットの鍵総当たりに相当する。そのため、サイドチャネル攻撃に対して手法1と同様安全である。
図13は、各実施形態に適用されるランダム化鍵の生成の処理を説明する図である。ここでは、秘密鍵は128ビットであるとしているが、必ずしも128ビットである必要はない。たとえば、秘密鍵は48ビットであっても良い。
メモリ1001中に記憶されている128ビットの秘密鍵KMASTは、所定のビット長、たとえば8ビット毎に、n個の分割された秘密鍵kMAST,1、kMAST,2、…、kMAST,nに分割される。
n個の分割された秘密鍵kMAST,1、kMAST,2、…、kMAST,nのそれぞれは、それぞれに対して乱数発生回路1003で生成された乱数r1、r2、…、rnと共に、ビット転置回路1002に入力される。ビット転置回路1002では、n個の分割された秘密鍵の一つkMAST,jと乱数rjを用いて、ランダム化部分鍵kENC,jを生成する。その結果、n個のランダム化部分鍵kENC,1、kENC,2、…、kENC,nが生成される。それらn個のランダム化部分鍵kENC,1、kENC,2、…、kENC,nは、圧縮回路1006に入力され、圧縮される。こうして得られる128ビットの鍵KENCを再び、所定のビット長、たとえば8ビット毎に分割し、ビット転置を行い、圧縮する。この作業を8回繰り返す。最終的に、128ビットのランダム化鍵KENCが生成される。そして、このランダム化鍵KENCを、従来の認証プロトコルで用いられる秘密鍵KMASTの代わりに使用する。
本手法2も、上記手法1と同様に、図11および12に示されているシステムおよびハードウェアシステムによって実行することができる。
図14〜19をしながら、本発明の第1〜第6の実施形態に従うチャレンジアンドレスポンス認証プロトコルの処理を説明する。図14〜19において、親機101と子機102は、秘密鍵KMASTを事前に共有している。
<第1の実施形態>
図14を参照して本発明の第1の実施形態について説明する。本実施形態では、片側認証で、暗号化と復号の両方を利用するチャレンジアンドレスポンス認証方法(プロトコル)が開示される。
S501で、認証を行う側の親機101は、乱数rを生成し、認証される側の子機102に送信する。S502では、まず、子機102は親機101から乱数rを受け取る。さらに、子機102は、子機102に記憶されている秘密鍵KMASTと、親機101から受け取った乱数rを用いて、ランダム化鍵KENC=RAND(KMAST,r)を生成する。ここで、c=RAND(a,b)とは、鍵aに対して、乱数bを用いてランダム化する処理を施すことによって、ランダム化鍵cが得られることを表す。さらに、S503で、子機102は、親機101から受け取った乱数rに対し、ランダム化鍵KENCを用いて暗号処理Enc(r,KENC)を実行し、暗号処理によって得られた値を応答a=Enc(r,KENC)として親機101に返信する。ただし、Q=Enc(P,K)とは、共有鍵Kを用いて、平文Pを鍵Kにより暗号化した結果が暗号文Qであることを表す。S504で、応答aを受け取った親機101は、親機101自身に記憶されている秘密鍵KMASTと、S501で生成した乱数rとを用いてランダム化鍵KENC=RAND(KMAST,r)を生成する。この鍵は、S502で子機102が生成したランダム化鍵と同じである。このランダム化鍵KENCを用いて復号処理Dec(a,K)を実行し、復号処理によって得られる値を復号結果r’=Dec(a,KENC)とする。そして、復号結果r’と、S301で生成した乱数rを比較する。復号結果r’と乱数rが一致するならば、親機101は子機102を正当な機器と認定する。
このように、本発明の第1の実施形態は、図2に示されているチャレンジアンドレスポンス認証方法とは、親機で生成した乱数rと秘密鍵KMASTからランダム化した秘密鍵KENCを生成するS502およびS504を含む点で異なっている。秘密鍵のランダム化処理はKENC=RAND(KMAST,r)と表記しており、様々な方式が存在する。ランダム化処理の幾つかの具体例については、実施例として以下で詳述する。
<第2の実施形態>
図15を参照して、本発明の第2の実施形態について説明する。本実施形態では、両側認証で、暗号化と復号の両方を利用するチャレンジアンドレスポンス認証方法(プロトコル)が開示される。
上記認証方式では、親機101が生成した乱数を用いてランダム化鍵KENCの生成およびチャレンジアンドレスポンス認証を行っているが、親機101が生成した乱数を固定化する攻撃を実行された場合にはランダム化鍵KENCも固定値となってしまい、サイドチャネル攻撃対策が無効化されてしまうおそれがある。このような攻撃に対しては、子機102側でも乱数を生成して、親機101側で生成した乱数と組み合わせた値を使用してランダム化、およびチャレンジアンドレスポンス認証を行うことで乱数の固定化による攻撃を回避することができる。
S601では、図14のS501と同様、親機101が乱数rを生成し、子機102に送信する。S602では、まず、子機102は親機101から乱数rを受け取る。S603で子機102は、乱数sを生成する。また、S604で子機102は、子機102に記憶されている秘密鍵KMASTと、親機101から受け取った乱数rを用いて、ランダム化鍵KENC=RAND(KMAST,r)を生成する。さらに、S603で、子機102は、親機101から受け取った乱数rに対し、ランダム化鍵KENCを用いて暗号処理Enc(r,KENC)を実行し、応答a=Enc(r,KENC)を生成し、乱数sと共に親機101に返信する。S605で子機102から応答aを受け取った親機101は、親機101自身に記憶されている秘密鍵KMASTと、S601で生成した乱数rとを用いてランダム化鍵KENC=RAND(KMAST,r)を生成する。S606で、このランダム化鍵KENCを用いて復号処理Dec(a,KENC)を実行し、復号処理によって得られる値を復号結果r’=Dec(a,KENC)とする。そして、復号結果r’と、S601で生成した乱数rを比較する。復号結果r’と乱数rが一致するならば、親機101は子機102を正当な機器と認定する。もし、親機101が子機102を正当な機器と認定したら、次に、ランダム化鍵KENCを用いてsの暗号化処理Enc(s,KENC)を実行し、応答b=Enc(s,KENC)として子機102に送信する。S607で親機101から応答bを受け取った子機102は、ランダム化鍵KENCを用いて復号処理Dec(b,KENC)を実行し、復号処理によって得られる値を復号結果s’=Dec(b,KENC)とする。そして、復号結果s’と、S602で生成した乱数sを比較する。復号結果s’と乱数sが一致するならば、子機102は親機101を正当な機器と認定する。
<第3の実施形態>
図16を参照して、本発明の第3の実施形態を説明する。本実施形態は、片側認証で、復号処理のみを利用するチャレンジアンドレスポンス認証方法(プロトコル)が開示される。
S701で、S501と同様、認証を行う側の親機101は、乱数rを生成し、認証される側の子機102に送信する。S702では、まず、子機102は親機101から乱数rを受け取る。さらに、子機102は、子機102に記憶されている秘密鍵KMASTと、親機101から受け取った乱数rを用いて、ランダム化鍵KENC=RAND(KMAST,r)を生成する。さらに、S703で、子機102は、親機101から受け取った乱数rに対し、ランダム化鍵KENCを用いて暗号処理Enc(r,KENC)を実行し、暗号処理によって得られた値を応答a=Enc(r,KENC)として親機101に返信する。S704で、応答aを受け取った親機101は、親機101自身に記憶されている秘密鍵KMASTと、S701で生成した乱数rとを用いてランダム化鍵KENC=RAND(KMAST,r)を生成する。S705で、このランダム化鍵KENCを用いてrの暗号処理Enc(r,KENC)を実行し、結果をr’=Enc(r,KENC)とする。そして、暗号処理結果r’と、S701で生成した乱数rを比較する。暗号処理結果r’と乱数rが一致するならば、親機101は子機102を正当な機器と認定する。
<第4の実施形態>
図17を参照して、本発明の第4の実施形態を説明する。本実施形態は、両側認証で、復号処理のみを利用するチャレンジアンドレスポンス認証方法(プロトコル)が開示される。
S801では、親機101が乱数rを生成し、子機102に送信する。S802では、まず、子機102は親機101から乱数rを受け取る。S803で子機102は、乱数sを生成する。また、S804で子機102は、子機102に記憶されている秘密鍵KMASTと、親機101から受け取った乱数rを用いて、ランダム化鍵KENC=RAND(KMAST,r)を生成する。さらに、S803で、子機102は、親機101から受け取った乱数rに対し、ランダム化鍵KENCを用いて暗号処理Enc(r,KENC)を実行し、応答a=Enc(r,KENC)を生成し、乱数sと共に親機101に返信する。S805で子機102から応答aを受け取った親機101は、親機101自身に記憶されている秘密鍵KMASTと、S601で生成した乱数rとを用いてランダム化鍵KENC=RAND(KMAST,r)を生成する。S806で、このランダム化鍵KENCを用いてrの暗号処理Enc(r,KENC)を実行し、結果をr’=Enc(r,KENC)とする。そして、暗号処理結果r’と、S801で生成した乱数rを比較する。暗号処理結果r’と乱数rが一致するならば、子機102は親機101を正当な機器と認定する。もし、親機101が子機102を正当な機器と認定したら、次に、ランダム化鍵KENCを用いてsの暗号化処理Enc(s,KENC)を実行し、応答b=Enc(s,KENC)として子機102に送信する。S807で親機101から応答bを受け取った子機102は、子機102自身に記憶されている秘密鍵KMASTと、S802で生成した乱数sとを用いてランダム化鍵KENC=RAND(KMAST,s)を生成する。さらに、S807で、このランダム化鍵KENCを用いてsの暗号処理Enc(s,KENC)を実行し、結果をs’=Enc(s,KENC)とする。そして、暗号処理結果s’と、S801で生成した乱数sを比較する。暗号処理結果s’と乱数sが一致するならば、親機101は子機102を正当な機器と認定する。
<第5の実施形態>
図18を参照しながら、本発明の第5の実施形態を説明する。本実施形態は、両側認証で、子機が親機を認証する際には、暗号・復号処理を利用し、親機が子機を認証する際には、復号処理のみを利用するようなチャレンジアンドレスポンス認証方法(プロトコル)が開示される。
S901では、親機101が乱数rを生成し、子機102に送信する。S902では、まず、子機102は親機101から乱数rを受け取る。S903で子機102は、乱数sを生成する。また、S804で子機102は、子機102に記憶されている秘密鍵KMASTと、親機101から受け取った乱数rを用いて、ランダム化鍵KENC=RAND(KMAST,r)を生成する。さらに、S903で、子機102は、親機101から受け取った乱数rに対し、ランダム化鍵KENCを用いて暗号処理Enc(r,KENC)を実行し、応答a=Enc(r,KENC)を生成し、乱数sと共に親機101に返信する。S905で子機102から応答aを受け取った親機101は、親機101自身に記憶されている秘密鍵KMASTと、S901で生成した乱数rとを用いてランダム化鍵KENC=RAND(KMAST,r)を生成する。S906で、このランダム化鍵KENCを用いてrの暗号処理Enc(r,KENC)を実行し、結果をr’=Enc(r,KENC)とする。そして、暗号処理結果r’と、S801で生成した乱数rを比較する。暗号処理結果r’と乱数rが一致するならば、子機102は親機101を正当な機器と認定する。もし、親機101が子機102を正当な機器と認定したら、次に、ランダム化鍵KENCを用いてsの暗号化処理Enc(s,KENC)を実行し、応答b=Enc(s,KENC)として子機102に送信する。S907で、親機101から応答bを受け取った子機102は、ランダム化鍵KENCを用いて復号処理Dec(b,KENC)を実行し、復号処理によって得られる値を復号結果s’=Dec(b,KENC)とする。そして、復号結果s’と、S602で生成した乱数sを比較する。復号結果s’と乱数sが一致するならば、子機102は親機101を正当な機器と認定する。
<第6の実施形態>
図19を参照しながら、本発明の第6の実施形態を説明する。本実施形態は、両側認証で、親機が子機を認証する際には、暗号・復号処理を利用し、子機が親機を認証する際には、復号処理のみを利用するようなチャレンジアンドレスポンス認証方法(プロトコル)が開示される。
S1001では、親機101が乱数rを生成し、子機102に送信する。S1002では、まず、子機102は親機101から乱数rを受け取る。S1003で子機102は、乱数sを生成する。また、S1004で子機102は、子機102に記憶されている秘密鍵KMASTと、親機101から受け取った乱数rを用いて、ランダム化鍵KENC=RAND(KMAST,r)を生成する。さらに、S1003で、子機102は、親機101から受け取った乱数rに対し、ランダム化鍵KENCを用いて暗号処理Enc(r,KENC)を実行し、応答a=Enc(r,KENC)を生成し、乱数sと共に親機101に返信する。S1005で子機102から応答aを受け取った親機101は、親機101自身に記憶されている秘密鍵KMASTと、S1001で生成した乱数rとを用いてランダム化鍵KENC=RAND(KMAST,r)を生成する。S1006で、このランダム化鍵KENCを用いて復号処理Dec(a,KENC)を実行し、復号処理によって得られる値を復号結果r’=Dec(a,KENC)とする。そして、復号結果r’と、S1001で生成した乱数rを比較する。復号結果r’と乱数rが一致するならば、親機101は子機102を正当な機器と認定する。もし、親機101が子機102を正当な機器と認定したら、次に、ランダム化鍵KENCを用いてsの暗号化処理Enc(s,KENC)を実行し、応答b=Enc(s,KENC)として子機102に送信する。S1007で親機101から応答bを受け取った子機102は、子機102自身に記憶されている秘密鍵KMASTと、S1002で生成した乱数sとを用いてランダム化鍵KENC=RAND(KMAST,s)を生成する。さらに、S1007で、このランダム化鍵KENCを用いてsの暗号処理Enc(s,KENC)を実行し、結果をs’=Enc(s,KENC)とする。そして、暗号処理結果s’と、S1001で生成した乱数sを比較する。暗号処理結果s’と乱数sが一致するならば、親機101は子機102を正当な機器と認定する。
<ランダム化鍵生成方法>
上述の第1〜第6の実施形態において、秘密鍵KMASTからランダム化鍵KENCを生成する方法について、幾つかの実施例を説明する。また、各実施例に対して、回路規模の見積もりを示す。
サイドチャネル攻撃対策を施しながら、コスト上昇を抑えるためには、ランダム化鍵を生成する方法は、その方法を実現する回路の回路規模が大きくならない、という制約がある。本名発明では、上記手法1でも手法2でも、ビット転置を行うが、ビット転置を行う回路としては、次のようなものが考えられる。
(ビット転置回路1)セレクタ回路
(ビット転置回路2)線形帰還シフトレジスタ(LFSR)回路
(ビット転置回路3)結線回路
(ビット転置回路4)上記(1)〜(3)の少なくとも2つの組み合わせ
また、(手順2−3)では圧縮回路を用いる。圧縮回路としては、次のようなものが考えられる。
(圧縮回路1)セレクタ回路
(圧縮回路2)XOR回路
(圧縮回路3)加算または減算回路
上のビット転置回路のいずれか一つを用いることによって上記手法1を実行可能なハードウェアを構成することができる。また、上のビット転置回路のいずれか一つおよび圧縮回路のいずれか一つを用いることによって、上記手法2を実行可能なハードウェアを構成することができる。
<ランダム化鍵生成方法の第1の実施例>
図20にランダム化鍵生成のための処理の第1の実施例を示す。全ての実施例においては、128ビット共通鍵ブロック暗号において128ビット鍵を用いていると仮定する。すなわち、秘密鍵KMASTは128ビットであり、乱数rも最大128ビットであるとする。
128ビット秘密鍵KMASTは128入力セレクタ回路に入力され、乱数発生回路によって生成された7ビット乱数によって値が決まるセレクト信号を外部から入力して128ビットのいずれか1ビットをセレクトする。この処理を128サイクル実行することでランダム化された128ビットのランダム化鍵KENCを生成する。
図21は、回路規模の見積もり基準の表を示す図である。ここでは、回路規模を2入力NAND(NOR)ゲートの数に換算した回路規模を示している。図21中の表には、ビットあたりの回路規模の見積もりが示されている。たとえば、8ビットレジスタならば11×8=88ゲート、16ビットシフトレジスタならば13.5×16=216ゲートと見積もられる。さらに、図19中の表には、2入力1出力(2−1と記される)演算回路の規模が示されているが、m入力1出力(m−1と記される)演算回路は、2入力1出力の演算回路の(m−1)倍の回路規模となる。例えば、10ビット2−1XOR回路は3.5×10=35ゲートであるが、10ビット4−1XOR回路は回路規模が3倍となり105ゲートである。20ビット4−14加算回路の場合、(20×15)×3=900ゲートとなる。なお、対策回路規模増加分の見積もりに際しては、暗号回路および対策なしの場合と共通な回路(128ビット鍵レジスタ、および乱数生成回路)を除いて評価しており、対策に伴う回路規模の増加分を以降では回路規模と表記する。
図22は回路規模の算定基準となるNANDゲートの回路の例を示す図であり、図23はNORゲートの回路の例を示す図である。図22および図23のように、2入力NANDゲートおよび2入力NORゲートのいずれも、4つの電界効果トランジスタ(FET)、たとえば金属酸化物半導体電界効果トランジスタ(MOSFET)によって1ゲートが構成される。
図24はNOTゲートの回路の例を示す図である。NOTゲートは、2つのFETから構成される。よって、図19中の表に示されているように、回路規模としては、0.5ゲートとなる。
図25は、1入力Dフリップフロップによって構成されるレジスタの回路の例を示す図である。レジスタは図23に示されているように、4つのNANDゲートと、1つのNORゲートと、4つのNOTゲートと、それぞれ1ゲートからなる4つのゲート単位から構成される。よって、レジスタのゲート数は11ゲートとなる。
図26は、2入力1出力(2−1)XOR(排他論理和)ゲートの回路の例を示す図である。2−1XORゲート回路は、2つのNORゲートと1つのNANDゲートとから構成される。よって、2−1XORゲート回路の回路規模は3.5ゲートとなる。
図27Aおよび図27Bは、2−1セレクタの回路の例を示す図である。図27Aがマルチプレクサ、図27Bはデマルチプレクサの例を示す図である。図27Aに示されているように、2−1マルチプレクサは、3つのNANDゲートと、1つのNOTゲートから構成される。よって、2−1マルチプレクサの回路規模は、3.5ゲートとなる。また、図27Bに示されているように、デマルチプレクサは、2つのNANDゲートと3つのNOTゲートから構成され、回路規模は3.5ゲートとなる。
図28は、シフト/巡回レジスタの回路の例である。図28では、3段分のシフト/巡回レジスタが示されている。1段分のシフト/巡回レジスタは、1つのセレクタ(MUX)と1つのレジスタから構成される。よって、シフト/巡回レジスタの回路規模は14.5ゲートとなる。
図29は、線形帰還シフトレジスタ(LSFR)/剰余演算回路の例を示す図である。図28では、3段分のLSFR/剰余演算回路が示されている。図29に示されているように、1段分のLSFR/剰余演算回路は、1つのセレクタ(MUX)と、1つのレジスタと、ビット一に対応して0または1個のXORゲートから構成される。よって、LSFR/剰余演算回路の回路規模は、高々18ゲートとなる。
本実施例の回路規模の見積もりは次のようになる。本実施例の回路は、ランダム化鍵を保存するための128ビット鍵レジスタが1つと、128入力1出力(128−1)セレクタ回路が1つと、128入力1出力(128−1)マルチプレクサ1つとから構成される。よって、本実施例の回路規模は、2.3kゲートとなる。この結果は、図30にまとめられている。なお、対策回路規模増加分の見積もりに際しては、暗号回路および対策なしの場合と共通な回路(128ビット鍵レジスタ、および乱数生成回路)を除いて評価しており、対策に伴う回路規模の増加分を以降では回路規模と表記する。
このように、本実施例では、上述のランダム化鍵を生成方法を実施するための回路であって、回路規模が小さな回路が提供された。本実施例の回路を使ったランダム化鍵の生成方法を、上述の実施形態1〜6のいずれか一つに用いることによって、サイドチャネル攻撃に対する安全性と、小規模・高速な暗号処理を両立する暗号化処理装置を得ることができる。
<ランダム化鍵生成方法の第2の実施例>
図31を参照しながら、秘密鍵KMASTからランダム化鍵KENCを生成する方法の第2の実施例を説明する。
図31は、ランダム化鍵の生成の処理の第2の実施例を示す図である。
128ビット秘密鍵KMASTと、乱数発生回路によって生成された乱数rとが128入力LFSR回路に入力され、r回数だけビットシフトを繰り返して、ランダム化鍵KENCが生成される。乱数rの最大値は、LFSR回路の最大周期(2128−1)以下で構わない。
本実施例の回路規模の見積もりは次のようになる。本実施例の回路は、128ビット鍵レジスタが1つと、128ビットLSFR回路1つとから構成されている。よって、図21中の表を参照すれば、3.7kビットとなる。
<ランダム化鍵生成方法の第3の実施例>
図32は、ランダム化鍵の生成の処理の第3の実施例を示す図である。
128ビット秘密鍵KMASTの各ビットの値kMAST,1、kMAST,2、…、kMAST,127は、結線回路の接続先のあるビットに入力され、秘密鍵は最上位ビットから、k’MAST,1、k’MAST,2、…、k’MAST,127と値が再配列される。このような再配列は、乱数発生回路によって生成された乱数rの回数だけ繰り返され、ランダム化鍵KENCが生成される。繰り返しの回数はリソースに応じて設定すればよいが、十分大きな値が必要となる。
この実施例では結線回路は配線だけであるため回路規模に含める必要はなく、回路規模としては128ビットランダム化鍵レジスタのみの1.4kゲートとなる。
<ランダム化鍵生成方法の第4の実施例>
図33は、ランダム化鍵の生成の処理の第4の実施例を示す図である。
本実施例ではまず、128ビット秘密鍵KMASTの各ビットの値kMAST,1、kMAST,2、…、kMAST,127は、結線回路1および2の接続先のセレクタ回路に入力される。セレクタ回路には、乱数発生回路によって生成された1ビットの乱数がセレクタ信号として入力され、結線回路1または2のどちらを介して入力されたものをk'MAST,nとするか選択する。このようにして秘密鍵は最上位ビットから、k’MAST,1、k’MAST,2、…、k’MAST,127と値が再配列される。このような再配列は、乱数発生回路によって生成された乱数rの回数だけ繰り返され、ランダム化鍵KENCが生成される。結線回路のパターンは2通り以上としてもよく、繰り返し回数はリソースに応じて設定することができる。
本実施例の回路規模の見積もりは次のようになる。本実施例の回路は、128ビット鍵レジスタが1つと、128ビット2−1セレクタ回路1つとから構成されている。よって、図21中の表を参照すれば、1.8kビットとなる。
<ランダム化鍵生成方法の第5の実施例>
図34は、ランダム化鍵の生成の処理の第5の実施例を示す図である。
本実施例ではまず、128ビット秘密鍵KMASTを8ビットごとに16分割する。16分割された秘密鍵KMASTのそれぞれと、乱数発生回路によって生成された乱数とは、8ビットのLFSR回路に入力され、r回だけ帰還シフトを行う。シフトした16個の8ビット部分鍵をXOR回路に入力し、ランダム化された8ビット部分鍵とする。この処理を16回繰り返し、128ビットのランダム化鍵KENCが生成される。
本実施例の回路規模の見積もりは次のようになる。本実施例の回路は、128ビット鍵レジスタが2個と、8ビットLFSR回路16個と、8ビット16入力XOR回路1個と、8ビット16−1デマルチプレクサ回路2個から構成される。よって、図21中の表を参照すれば、4.5kビットとなる。
<ランダム化鍵生成方法の第6の実施例>
図35は、ランダム化鍵の生成の処理の第6の実施例を示す図である。
本実施例ではまず、128ビット秘密鍵KMASTを8ビットごとに16分割する。16分割された秘密鍵KMASTのi番目の部分鍵と、乱数発生回路で発生された4ビットの乱数rは、セレクタ回路に入力され、16個の部分鍵のうちの一つが選択される。次に、選択された8ビットの部分鍵の一つと、乱数発生回路で発生された4ビットの乱数rがLFSR回路に入力され、r回だけ帰還シフトを行う。その結果は、一旦、データレジスタに、k'MAST,iと保存される。これをi=1から16まで、16回繰り返し、16個のk'MAST,i(i=1〜16)を得る。次に、16個のk'MAST,iをXOR回路に入力し、ランダム化された8ビット部分鍵とする。この処理を16回繰り返し、128ビットのランダム化鍵KENCが生成される。
本実施例の回路規模の見積もりは次のようになる。本実施例の回路は、128ビット鍵レジスタが2個と、8ビット16入力1出力(16−1)セレクタ回路1個と、8ビットLFSR回路1個と、8ビット16入力1出力XOR回路1個と、8ビット16−1デマルチプレクサ回路2個から構成される。よって、図21中の表を参照すれば、4.6kビットとなる。
<ランダム化鍵生成方法の第7の実施例>
図36Aおよび図36Bは、ランダム化鍵の生成の処理の第7の実施例を示す図である。
本実施例ではまず、128ビット秘密鍵KMASTを8ビットごとに16分割する。16分割された秘密鍵KMASTのi番目の部分鍵kMAST,iは、i番目のビット転置回路であるビット転置回路(i)に入力される。
図36Bは、ビット転置回路(i)を示す図である。
秘密鍵KMASTのi番目の8ビット部分鍵kMAST,iと、乱数発生回路で発生された0〜2までの整数である乱数rと、が3入力1出力セレクタに入力される。残りの2つの入力は、前回のセレクタの出力k’MAST,iと、k’MAST,iをさらに結線回路に入力した結果得られる出力の2つである。このセレクタによる選択を、乱数発生回路で発生された乱数rの回数だけ繰り返し、出力k”MAST,iを得る。
ビット転置回路(1)〜(16)の出力、k”MAST,1〜k”MAST,16は、XOR回路に入力され圧縮され、8ビットランダム化鍵kENC,iを得る。これを16回繰り返し、16個の8ビットランダム化鍵kENC,i(i=1〜16)を結合することで、128ビットのランダム化鍵KENCを得る。
本実施例の回路規模の見積もりは次のようになる。本実施例の回路は、128ビット鍵レジスタが2個と、8ビット3入力1出力(3−1)セレクタ回路16個と、8ビット16入力1出力XOR回路1個と、8ビット16−1デマルチプレクサ回路1個から構成される。よって、図21中の表を参照すれば、4.5kビットとなる。
<作用効果>
図37は、比較例1のラインダールアルゴリズムを実行する回路の回路規模と、上記実施例1〜7の回路の回路規模を比較した表を示している。実施例1〜7の回路を用いることで、従来法1のように回路を肥大化することなく、小規模な回路構成によりサイドチャネル攻撃に対して安全な認証を実現することができる。
上記では、圧縮回路として、XOR回路またはセレクタ回路を用いたが、加算または減算回路を用いても良い。加算または減算回路の回路規模は約10ゲート/ビットである。

Claims (6)

  1. 暗号化処理装置であって、
    共有鍵を記憶するメモリと、
    整数である乱数を発生する乱数発生器と、
    前記共有鍵に対して、少なくとも前記乱数によって定まるビット転置を施し、第1のランダム化鍵を生成するビット転置器と、
    前記乱数を、別の暗号化処理装置に送信し、前記別の暗号化処理装置に記憶されている共有鍵と、前記乱数によって定まるビット転置を施して生成される第2のランダム化鍵を用いた暗号化によって得られるレスポンスを前記別の暗号化処理装置から受信する通信器と、
    前記レスポンスを前記第1のランダム化鍵を用いて復号して前記乱数と比較する、または前記乱数を前記第1のランダム化鍵を用いて暗号化して前記レスポンスと比較することによって前記別の暗号化処理装置を認証する認証器と、
    を含み、
    前記共有鍵は、ビット長がn×mビットであり、
    前記ビット転置器は、n×mビット長の鍵をn分割して得られるmビット長の部分鍵の各々に対して、少なくとも前記乱数によって定まるビット転置を施してmビット長のランダム化部分鍵をn個生成し、生成されたn個の前記ランダム化部分鍵を一つに圧縮してn×mビット長の鍵を生成する手順をm回繰り返すことによって、前記共有鍵から前記第1のランダム化鍵を生成する、
    暗号化処理装置。
  2. 前記ビット転置器は、セレクタ回路、線形帰還シフトレジスタ回路、および結線回路の少なくとも一つを含む、請求項1の暗号化処理装置。
  3. 前記別の暗号化処理装置の前記ビット転置器は、n×mビット長の鍵を分割して得られるmビット長の部分鍵の各々に対して、前記ビット転置の入力値として前記乱数によって定まるビット転置を施してmビット長のランダム化部分鍵をn個生成し、生成されたn個の前記ランダム化部分鍵を一つに圧縮してn×mビット長の鍵を生成する手順をm回繰り返すことによって前記共有鍵から前記第1のランダム化鍵を生成する、請求項1または2の暗号化処理装置。
  4. 前記ランダム化部分鍵の圧縮は、XOR回路、セレクタ回路、および加算または減算回路の少なくとも一つを用いて行われる、請求項の暗号化処理装置。
  5. 共有鍵を有する第1の暗号化処理装置を含む第1のデバイスによる、前記共有鍵と同一の鍵を有する第2の暗号化処理装置を含む第2のデバイスの認証方法であって、
    乱数を発生することと、
    前記共有鍵に対して、少なくとも前記乱数によって定まるビット転置を施し、第1のランダム化鍵を生成することと、
    前記乱数を、前記第2の暗号化処理装置に送信することと、
    前記第2の暗号化処理装置から、前記第2の暗号化処理装置に記憶されている前記鍵と前記乱数によって定まるビット転置を施して生成される第2のランダム化鍵を用いた暗号化によって得られるレスポンスを受信することと、
    前記レスポンスを前記第1のランダム化鍵を用いて復号して前記乱数と比較する、または前記乱数を前記第1のランダム化鍵を用いて暗号化して前記レスポンスと比較すること、
    を含み、
    前記共有鍵は、ビット長がn×mビットであり、
    前記ビット転置では、n×mビット長の鍵をn分割して得られるmビット長の部分鍵の各々に対して、少なくとも前記乱数によって定まるビット転置を施してmビット長のランダム化部分鍵をn個生成し、生成されたn個の前記ランダム化部分鍵を一つに圧縮してn×mビット長の鍵を生成する手順をm回繰り返すことによって、前記共有鍵から前記第1のランダム化鍵を生成する、
    認証方法。
  6. 共有鍵を記憶するメモリと、
    整数である乱数を発生する乱数発生器と、
    前記共有鍵に対して、少なくとも前記乱数によって定まるビット転置を施し、前記メモリに記憶された共有鍵の代わりに用いられる第1のランダム化鍵を生成するビット転置器と、
    を含み、
    前記共有鍵は、ビット長がn×mビットであり、
    前記ビット転置器は、n×mビット長の鍵をn分割して得られるmビット長の部分鍵の各々に対して、少なくとも前記乱数によって定まるビット転置を施してmビット長のランダム化部分鍵をn個生成し、生成されたn個の前記ランダム化部分鍵を一つに圧縮してn×mビット長の鍵を生成する手順をm回繰り返すことによって、前記共有鍵から前記第1のランダム化鍵を生成する、
    共有鍵暗号方式で用いられる鍵生成装置。
JP2013525510A 2011-07-27 2011-07-27 暗号化処理装置および認証方法 Expired - Fee Related JP5700128B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2011/067170 WO2013014778A1 (ja) 2011-07-27 2011-07-27 暗号化処理装置および認証方法

Publications (2)

Publication Number Publication Date
JPWO2013014778A1 JPWO2013014778A1 (ja) 2015-02-23
JP5700128B2 true JP5700128B2 (ja) 2015-04-15

Family

ID=47600667

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013525510A Expired - Fee Related JP5700128B2 (ja) 2011-07-27 2011-07-27 暗号化処理装置および認証方法

Country Status (3)

Country Link
US (1) US9330270B2 (ja)
JP (1) JP5700128B2 (ja)
WO (1) WO2013014778A1 (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9230137B2 (en) * 2013-05-30 2016-01-05 Dell Products, L.P. Secure original equipment manufacturer (OEM) identifier for OEM devices
US10181124B2 (en) * 2013-05-30 2019-01-15 Dell Products, L.P. Verifying OEM components within an information handling system using original equipment manufacturer (OEM) identifier
US9218235B2 (en) * 2013-09-25 2015-12-22 Lexmark International, Inc. Systems and methods of verifying operational information associated with an imaging device
CN106031121B (zh) * 2014-05-29 2020-09-08 华为技术有限公司 媒体内容的共享方法及装置
ES2619613T3 (es) * 2014-06-12 2017-06-26 Nagravision S.A. Método criptográfico para intercambiar mensajes de forma segura y dispositivo y sistema para implementar este método
ES2958716T3 (es) * 2014-06-27 2024-02-13 Fontem Ventures Bv Dispositivo electrónico para fumar y sistema de cápsula
KR101759133B1 (ko) * 2015-03-17 2017-07-18 현대자동차주식회사 비밀 정보 기반의 상호 인증 방법 및 장치
EP3104548B1 (en) * 2015-06-08 2019-01-30 Nxp B.V. Method and system for facilitating secure communication
US10554640B2 (en) 2016-06-13 2020-02-04 Nxp B.V. Method and system for facilitating secure communication
US10256973B2 (en) * 2016-09-30 2019-04-09 Intel Corporation Linear masking circuits for side-channel immunization of advanced encryption standard hardware
CN109831303B (zh) * 2018-12-24 2021-09-14 华升智建科技(深圳)有限公司 一种可用低端8位单片机实现的高强度随机加密方法
US11151275B2 (en) 2019-04-05 2021-10-19 International Business Machines Corporation Randomness detection in network data
CN113711533B (zh) * 2019-04-15 2024-10-08 瑞典爱立信有限公司 用于面积受限硬件的低深度AES SBox架构
US11507699B2 (en) * 2019-09-27 2022-11-22 Intel Corporation Processor with private pipeline
CN114902606A (zh) * 2020-01-08 2022-08-12 索尼集团公司 信息处理装置、信息处理方法、程序和信息处理系统
KR20220021186A (ko) * 2020-08-13 2022-02-22 에스케이하이닉스 주식회사 데이터 처리 시스템 내 데이터를 공유하는 장치 및 방법
US20220311620A1 (en) * 2021-03-23 2022-09-29 Sap Se Encrypted handshake for trust validation between two applications
US20230388280A1 (en) * 2022-05-25 2023-11-30 CybXSecurity LLC System, Method, and Computer Program Product for Generating Secure Messages for Messaging
CN115834258B (zh) * 2023-02-20 2023-05-02 成都九洲电子信息系统股份有限公司 一种跨平台信息识别方法、系统及存储介质
CN117200980B (zh) * 2023-09-08 2024-04-05 广州天力能科技有限公司 一种电数字数据传输芯片电路

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04117038A (ja) 1990-09-03 1992-04-17 Mitsubishi Electric Corp 暗号鍵生成装置
JP3536882B2 (ja) * 1996-08-01 2004-06-14 日本電信電話株式会社 Icカード認証システムおよび認証方法
US6182215B1 (en) * 1997-02-28 2001-01-30 Matsushita Electric Industrial Co., Ltd. Information devices which select and use one out of plurality of encryption utilization protocols for protecting copyrights of digital productions
US7607015B2 (en) * 2002-10-08 2009-10-20 Koolspan, Inc. Shared network access using different access keys
WO2006067739A2 (en) 2004-12-22 2006-06-29 Koninklijke Philips Electronics N.V. Method and device for key generation and proving authenticity
JP5203594B2 (ja) * 2006-11-07 2013-06-05 株式会社東芝 暗号処理回路及び暗号処理方法
JP2009288758A (ja) * 2008-05-30 2009-12-10 Hironori Wakayama 使い捨て変数を用い、処理過程における変数を情報理論的に不確定にすることよって暗号化と秘密鍵の秘匿に関し完全秘匿が成立するようにした暗号処理の装置および方法
JP5233473B2 (ja) * 2008-07-25 2013-07-10 大日本印刷株式会社 暗号処理装置
JP2010226707A (ja) 2009-02-27 2010-10-07 Hitachi Ltd 位置情報システム
DE102009024604B4 (de) 2009-06-10 2011-05-05 Infineon Technologies Ag Erzeugung eines Session-Schlüssels zur Authentisierung und sicheren Datenübertragung

Also Published As

Publication number Publication date
US9330270B2 (en) 2016-05-03
JPWO2013014778A1 (ja) 2015-02-23
US20140164785A1 (en) 2014-06-12
WO2013014778A1 (ja) 2013-01-31

Similar Documents

Publication Publication Date Title
JP5700128B2 (ja) 暗号化処理装置および認証方法
US8369516B2 (en) Encryption apparatus having common key encryption function and embedded apparatus
RU2449482C2 (ru) Устройство обработки шифрования, способ обработки шифрования и компьютерная программа
JP5954030B2 (ja) 暗号処理装置および方法
KR20230079509A (ko) 메시지 부호화 및 복호화를 위한 블록 암호화 방법 및 이 방법을 구현하기 위한 암호화 장치
JP2008252299A (ja) 暗号処理システム及び暗号処理方法
EP3477889B1 (en) Using white-box in a leakage-resilient primitive
JP2008524901A (ja) データ処理装置及びその動作方法
JP5136416B2 (ja) 擬似乱数生成装置、ストリーム暗号処理装置及びプログラム
Nara et al. A scan-based attack based on discriminators for AES cryptosystems
Kang et al. Fast image encryption algorithm based on (n, m, k)-PCMLCA
JP2004304800A (ja) データ処理装置におけるサイドチャネル攻撃防止
Bringer et al. Protecting AES against side-channel analysis using wire-tap codes
JP4386766B2 (ja) データ処理装置における誤り検出
Brier et al. Fast primitives for internal data scrambling in tamper resistant hardware
JP4470135B2 (ja) 擬似乱数生成システム
AbuJoodeh Exploring and Adapting AES Algorithm for Optimal Use as a Lightweight IoT Crypto Algorithm
Yang et al. A new cryptosystem based on chaotic map and operations algebraic
Ledda et al. Enhancing IDEA algorithm using circular shift and middle square method
Bai et al. Differential power analysis attack on SMS4 block cipher
CN107766725B (zh) 抗模板攻击的数据传输方法及系统
Chhabra et al. Towards the enhancement of AES IP security using hardware obfuscation technique: A practical approach for secure data transmission in IoT
JP5556955B2 (ja) 暗号処理装置、認証方法およびプログラム
Berti et al. Authenticity in the Presence of Leakage using a Forkcipher
Rivain On the physical security of cryptographic implementations

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150120

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150202

R150 Certificate of patent or registration of utility model

Ref document number: 5700128

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees