JP5954030B2 - 暗号処理装置および方法 - Google Patents

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

Info

Publication number
JP5954030B2
JP5954030B2 JP2012172410A JP2012172410A JP5954030B2 JP 5954030 B2 JP5954030 B2 JP 5954030B2 JP 2012172410 A JP2012172410 A JP 2012172410A JP 2012172410 A JP2012172410 A JP 2012172410A JP 5954030 B2 JP5954030 B2 JP 5954030B2
Authority
JP
Japan
Prior art keywords
value
secret key
agitation
key
challenge
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
JP2012172410A
Other languages
English (en)
Other versions
JP2014033324A (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
Priority to JP2012172410A priority Critical patent/JP5954030B2/ja
Priority to US13/919,299 priority patent/US20140037089A1/en
Priority to EP13173773.6A priority patent/EP2698780A3/en
Publication of JP2014033324A publication Critical patent/JP2014033324A/ja
Application granted granted Critical
Publication of JP5954030B2 publication Critical patent/JP5954030B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • 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/004Countermeasures against attacks on cryptographic mechanisms for fault attacks
    • 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/04Masking or blinding
    • 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/04Masking or blinding
    • H04L2209/046Masking or blinding of operations, operands or results of the operations
    • 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)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)
  • Measuring Volume Flow (AREA)

Description

本発明は、プローブ攻撃へ耐性を有する暗号処理装置および方法に関する。
プリンタカートリッジや医療機器の分野で、正規品と偽造品を区別するために、認証機能を持つ組み込み機器を用いることが行なわれる。認証プロトコルとしてはチャレンジアンドレスポンス方式が用いられる。認証チップを用いる認証方式では、回路規模の小ささを優先できるメリットがある共通鍵暗号を用いる方法が広く用いられている。
プリンタカートリッジの偽造は二つの系列に分かれる。回路のデザインコピーと鍵の盗聴である。この二つが揃わないと攻撃できない。
認証機能を備えたデバイス(以下、認証デバイスと呼ぶ)において鍵の盗聴を防ぎ偽造を防ぐための対策としては、共通鍵による暗号化通信プロトコルを用いた方法が一般的である。共通鍵暗号を用いることで、小さな回路規模で暗号方式を実装できる。このとき、秘密鍵が認証チップ等の認証デバイスの外部に漏洩しないことが偽造防止の大きな前提となる。この前提を満たすために、製造時に秘密鍵をデバイス内部のメモリに書き込んだ上で、製造後は外部からどのような操作を行ったとしても、秘密鍵の値を外部から読み取らせないようにする方法が一般的である。
しかし、このような方法は、プローブ攻撃と呼ばれる手法を用いることで無効化できることが知られている。プローブ攻撃は、暗号鍵を格納する認証チップの内部の回路を保護するパッケージを剥離し、内部の回路に対してマイクロプローブと呼ばれる小さな針を挿入する方法である。秘密鍵の値を格納する内部の回路に対してマイクロプローブを挿入することで、鍵の値を直接読むことが出来る。
プローブ攻撃に対処するため、認証チップの最上層にシールド線またはシールド回路を設ける方法がある。シールド線またはシールド回路を設ける方法では、回路の物理的な層を多段にしたうえで、マイクロプローブが挿入される入口である最上位の層に対し、シールド回路と呼ばれる防御回路を設置することで下位層の回路に「蓋」をする方法である。この「蓋」により、攻撃者のマイクロプローブ挿入が阻害されるため、秘密鍵をプローブ攻撃から守ることが出来る。たとえば、認証チップは、シールド線が断線されたことを検知すると、鍵を消去するなどの処理を行い、盗聴を防ぐ。
Mihir Bellare and Phillip Rogaway "Optimal Asymmetric Encryption : How to Encrypt with RSA.", EUROCRYPT ‘94, LNCS vol. 950, pp. 341-358, Springer, 1995 PKCS #1: RSA Cryptography Standard ftp://ftp.rsa.com/pub/pkcs/pkcs-1/pkcs-1v2-1d2.pdf
シールド線またはシールド回路を設ける方法では、攻撃者が切断する対象となるシールド線に電位を代替的に印加しつつ、その一部を切断すると、認証チップはシールド線の切断を検知できないため、盗聴を防ぐことができないという問題がある。
また、攻撃者がシールド回路に対して物理的な修正を行うことで「蓋」に穴を開けることができたとしても、認証チップの一部のみが開封可能となるため、一つの認証チップから鍵データを取得することができないので安全であろうという期待があるかも知れない。しかし、攻撃者が複数の認証チップに対して認証チップ内の別々の領域から情報を取得し、それらをまとめることによって鍵データの全体が再構成されると、認証チップはプローブ攻撃に対して脆弱になるという問題がある。
プローブ攻撃に対してシールド回路を用いる間接的な防御ではなく、秘密鍵を格納する回路自体を直接的に防御することにより、プローブ攻撃に対する耐性が高められた安全な暗号処理装置および方法が望まれている。
チャレンジアンドレスポンス認証プロトコル用の暗号処理装装置は、入力として整数の乱数であるチャレンジGを受ける受信部と、整数である秘密鍵Kを格納する不揮発性メモリである第1のメモリと、整数である攪拌値Cを格納する第2のメモリと、秘密鍵Kと攪拌値Cに攪拌関数F(K、C)を作用させて整数である攪拌された秘密鍵K’=F(K、C)を生成する鍵攪拌部と、攪拌された秘密鍵K’とチャレンジGに暗号化関数Enc(G、K’を作用させてレスポンスA=Enc(G、K’)を生成するレスポンス生成部と、第2のメモリに格納されている攪拌値Cを更新する攪拌値更新部と、攪拌値CとレスポンスAを出力する送信部と、を含むことを特徴とする。
認証チップごとに異なる攪拌値を用いて鍵を攪拌するチャレンジアンドレスポンス認証プロトコルを採用することによって、認証チップの鍵データの一部ずつをプローブ攻撃で入手されても、全体の鍵データを復元することができないので、高いプローブ攻撃耐性を有する安全な暗号処理装置および方法を得ることができる。
チャレンジアンドレスポンス認証プロトコルの概要を示す図である。 共通鍵暗号を用いた一般的なチャレンジアンドレスポンス認証(片側認証、暗号化・復号化)の原理を示す図である。 共通鍵暗号を用いた一般的なチャレンジアンドレスポンス認証(片側認証、暗号化のみ)の原理を示す図である。 共通鍵暗号を用いた一般的なチャレンジアンドレスポンス認証(両側認証、暗号化・復号化)の原理を示す図である。 共通鍵暗号を用いた一般的なチャレンジアンドレスポンス認証(両側認証、暗号化のみ)の原理を示す図である。 プローブ攻撃の概要を示す図である。 プローブ攻撃対策であるシールド回路の概要を示す図である。 プローブ攻撃対策であるシールド回路の概要を示す図である。 プローブ攻撃対策であるシールド回路の概要を示す図である。 プローブ攻撃対策であるシールド回路の概要を示す図である。 プローブ攻撃対策であるシールド回路の概要を示す図である。 鍵に対する動的な攪拌処理を用いる方法の概略を示す図である。 鍵に対する動的な攪拌処理を用いる方法を用いる共通鍵暗号を用いたチャレンジアンドレスポンス認証(片側認証、暗号化・復号化)の原理を示す図である。 鍵に対する動的な攪拌処理を用いる方法を用いる共通鍵暗号を用いたチャレンジアンドレスポンス認証(片側認証、暗号化のみ)の原理を示す図である。 鍵に対する動的な攪拌処理を用いる方法を用いる共通鍵暗号を用いたチャレンジアンドレスポンス認証(両側認証、暗号化・復号化)の原理を示す図である。 鍵に対する動的な攪拌処理を用いる方法を用いる共通鍵暗号を用いたチャレンジアンドレスポンス認証(両側認証、暗号化のみ)の原理を示す図である。 攪拌関数F(K、C)を用いて鍵に対する動的な攪拌処理を行う鍵攪拌処理部の機能ブロック図である。 鍵に対する動的な攪拌処理を行う鍵攪拌処理部の攪拌関数F(K、C)の第1の構成を示す図である。 最適非対称暗号符号化処理部の構成の例を示す図である。 最適非対称暗号符号化処理部を用いて構成される鍵攪拌処理部の例を示す図である。 鍵に対する動的な攪拌処理を行う鍵攪拌処理部の攪拌関数F(K、C)の第2の構成を示す図である。 鍵に対する動的な攪拌処理を行う鍵攪拌処理部の機能ブロック図の第2の例を示す図である。 マスク生成関数MGFを用いるMGF事前複雑化処理部を含む、鍵に対する動的な攪拌処理を行う鍵攪拌処理部の機能ブロック図である。 マスク生成関数MGFを用いるMGF事前複雑化処理部を含む、鍵に対する動的な攪拌処理を行う鍵攪拌処理部の第1の構成を示す図である。 マスク生成関数MGFを用いるMGF事前複雑化処理部を含む、鍵に対する動的な攪拌処理を行う鍵攪拌処理部の第2の構成を示す図である。 マスク生成関数MGFを用いるMGF事前複雑化処理を含む、鍵に対する動的な攪拌処理を行う鍵攪拌処理部に対するプローブ攻撃の概略を示す図である。 マスク生成関数MGFを用いるMGF事前複雑化処理を含む、鍵に対する動的な攪拌処理を行う鍵攪拌処理部に対するプローブ攻撃の概略を示す図である。 マスク生成関数MGFを用いるMGF事前複雑化処理を含む、鍵に対する動的な攪拌処理の原理を説明する図である。 マスク生成関数MGFを用いるMGF事前複雑化処理を含む、鍵に対する動的な攪拌処理の原理を説明する図である。 スワッピングボックスの性質を示す図である。 1ビットスワッピングボックスの構成の例を示す図である。 1ビットスワッピングボックスの動作の例を示す図である。 1ビットスワッピングボックスの動作の例を示す図である。 多段1ビットスワッピングボックスの動作の例を示す図である。 多段1ビットスワッピングボックスの動作の例を示す図である。 2ビットスワッピングボックスの構成の例を示す図である。 多段Tビットスワッピングボックスの構成の例を示す図である。 多段Tビットスワッピングボックスの性質を示す図(その1)である。 多段Tビットスワッピングボックスの性質を示す図(その2)である。 加算スワッピングボックスの性質を示す図である。 Tビットスワッピングボックスの性質を示す図である。 第1、第2の実施例の全体の構成の例を示す図(その1)である。 第1、第2の実施例の全体の構成の例を示す図(その2)である。 第1、第5の実施例におけるMGF事前複雑化処理部の構成の例を示す図である。 第1、第2の実施例におけるマスク処理部、アンマスク処理部の構成の例を示す図である。 第2の実施例におけるMGF事前複雑化処理部の構成の例を示す図である。 第3の実施例の全体の構成の例を示す図(その1)である。 第3の実施例の全体の構成の例を示す図(その2)である。 第3の実施例におけるMGF事前複雑化処理部の構成の例を示す図である。 第3の実施例におけるマスク処理部の構成の例を示す図である。 第3の実施例におけるアンマスク処理部の構成の例を示す図である。 第4の実施例の全体の構成の例を示す図(その1)である。 第4の実施例の全体の構成の例を示す図(その2)である。 第4の実施例におけるMGF事前複雑化処理部の構成の例を示す図である。 第4の実施例におけるマスク処理部、アンマスク処理部の構成の例を示す図である。 第5の実施例の全体の構成の例を示す図(その1)である。 第5の実施例の全体の構成の例を示す図(その2)である。 実施形態の装置を実現可能なハードウェア構成図の例である。
以下、本発明の実施形態について、図面を参照しながら説明をする。尚、図中で類似の部分または類似の機能を果たす部分については、同一または類似の参照符号を付与して重複した説明を省略する。
<チャレンジアンドレスポンス認証プロトコルの概要>
暗号方式は、公開鍵暗号方式と共通鍵暗号方式に大別される。公開鍵暗号方式とは、暗号化と復号で異なる鍵を用いる方式であり、暗号化を行うための鍵(公開鍵)を一般に公開する代わりに、暗号文を復号するための鍵(秘密鍵)を受信者のみの秘密情報とすることで安全性を保つ方式である。これに対し、共通鍵暗号方式と呼ばれるものは、暗号化と復号で同一の鍵(秘密鍵)を用いる方式であり、この秘密鍵を送信者と受信者以外の第三者にわからない情報とすることで安全性を保つ方式である。
図1は、チャレンジアンドレスポンス認証プロトコルの概要を示す図である。
図1では、認証を行う側(親機)101および認証される側(子機)102は共に、認証チップ103を含んでいる。
認証チップ103においては、機器の正当性を確認するために、チャレンジアンドレスポンス認証プロトコルと呼ばれる通信プロトコルが利用される。チャレンジアンドレスポンス認証とは、デジタル情報を用いた合言葉であり、認証を行う側(親機)101から認証される側(子機)102に対し、「チャンレジ」と呼ばれる乱数を送信する。これに対し、子機側では「チャンレンジ」に対して「レスポンス」と呼ばれる応答を生成し、親機に返信する。親機は、「チャレンジ」に対する「レスポンス」の値を判断し、もし正しいならば、子機が正当な機器であると判断する。
「チャレンジ」として乱数を用いることで、対応する「レスポンス」が毎回変化する。これにより、再送攻撃(Replay attack)に対する防止措置である。再送攻撃とは、過去に外部から観察された応答を繰り返すことで、正当な機器の成りすましを行う攻撃である。つまり、乱数を用いない場合、チャンレジとレスポンスのペアが完全に固定値になるため、攻撃者がこのペアを観察することで、チャレンジに対応する適切なレスポンスを知ることができ、このレスポンスを返すチップを製造することでチップ偽造が容易となるからである。例えるならば、「山」に対する「川」という合言葉しか用いないシステムであることを、悪意のある第三者が知ることができれば、常に「川」と応答することで成りすましが可能となる。
図2は、共通鍵暗号を用いた一般的なチャレンジアンドレスポンス認証(片側認証、暗号化・復号化)の原理を示す図である。
「チャレンジ」に対する「レスポンス」の生成は、暗号関数を用いた方法が一般的である。どの暗号関数を用いるかによってメリットとデメリットがあるが、認証チップの場合、回路規模の小ささを優先できるメリットがある共通鍵暗号を用いる方法が広く用いられている。
図2に示すプロトコルは、親機101の認証チップ103と子機102の認証チップ103の間で、秘密鍵Kを事前共有している。これは、チップの製造時に秘密鍵Kの値を書き込むことで実現できる。この秘密鍵Kの値が外部に漏洩しないことがセキュリティ上の重要な前提である。
ステップS102で、認証を行なう側の親機101は、まず、チャレンジと呼ばれる整数Gを生成し、認証される側の子機102に送信する。整数Gは乱数であり得る。
ステップS104で、子機102は、整数Gに対し、認証チップ103に格納されている秘密鍵Kによる暗号化処理Enc(G、K)を実行し、応答A=Enc(G、K)を生成する。そして、子機102は、応答Aを親機101に返信する。ここで、A=Enc(P、K)とは、共通鍵暗号を用いて、平文Pを秘密鍵Kにより暗号化した結果が暗号文Aであることを表す。
ステップS106で、親機101は、子機102から応答Aを受け取り、秘密鍵Kによる復号処理Dec(A、K)を実行し、復号結果Gc=Dec(A、K)を得る。復号結果Gcが、ステップS102で生成した整数Gと一致するならば、親機101は子機102を正当な機器と認定する。
チャレンジGに対応した正当なレスポンスAを生成できるのは、秘密鍵Kを有する場合に限られるので、親機101は子機102の正当性を確認することができる。
図3は共通鍵暗号を用いた一般的なチャレンジアンドレスポンス認証(片側認証、暗号化のみ)の原理を示す図である。
図3に示されているチャンレジアンドレスポンス認証では暗号化のみを行う点が、図2に示されている暗号化と復号の両方を利用するチャンレジアンドレスポンス認証との違いである。
図3では、親機101の認証チップ103と子機102の認証チップ103の間で、秘密鍵Kを事前共有している。
ステップS202で、認証を行なう側の親機101は、チャレンジと呼ばれる整数Gを生成し、認証される側の子機102に送信する。
ステップS204で、子機102は、整数Gに対し、秘密鍵Kによる暗号化処理Enc(G、K)を実行し、応答A=Enc(G、K)を生成する。そして、子機102は、応答Aを親機101に返信する。ここまでは図2と同じである。
ステップS206では、親機101が子機102の正当性を確認するために、応答Aを復号する代わりにチャレンジGの暗号化処理Enc(G、K)を行う。そして、その処理結果A’=Enc(G、K)が子機102からの応答Aと一致するか判定し、一致するならば子機102が正当であると判断する。
図4は、共通鍵暗号を用いた一般的なチャレンジアンドレスポンス認証(両側認証、暗号化・復号化)の原理を示す図である。
図2、3に示されている認証は、片側認証と呼ばれる、親機101が子機102の正当性を確認するための認証プロトコルである。片側認証では、子機102は親機101の正当性を確認することができないため、子機102は親機101の不正を防止できない。これを防ぐために、子機102も親機101の正当性を確認する手段が必要である。これを実現するのが両側認証と呼ばれる認証プロトコルであり、子機102が親機101にチャレンジを送信し、親機101からのレスポンスを確認する処理が行われる。
ステップS302で、図2と同様、親機101がチャレンジGを子機102に送信する。
ステップS304で、子機102がチャレンジGを認証チップ103に格納されている秘密鍵Kで暗号化した結果である応答Aを計算する。
また次のステップS306で、子機102は、チャレンジHを生成する。チャレンジHは整数であり、また乱数であっても良い。ステップS306では子機102は、応答AとチャレンジHを親機101に送信する。
ステップS308で、親機101は応答Aを認証チップ103に格納されている秘密鍵Kで復号し、ステップS302で生成したチャレンジGと一致するなら子機102が正当であると判断する。さらに秘密鍵Kを用いてチャレンジHを暗号化した整数Bを応答として生成する。そして親機101は、この応答Bを子機102に送る。
次のステップS310で子機102は、親機101からの応答Bを秘密鍵Kにより復号し、その結果がステップS304で生成されたチャレンジHと一致するならば親機101が正当であると判断する。
図5は共通鍵暗号を用いた一般的なチャレンジアンドレスポンス認証(両側認証、暗号化のみ)の原理を示す図である。
図4に示されている認証は暗号化・復号を用いた両側認証であるが、暗号化のみの認証も可能である。
ステップS402で親機101は、チャレンジとしての整数Gを生成し、子機102に送信する。
ステップS404で子機102は、親機101から受け取った整数Gを秘密鍵Kで暗号化処理Enc(G、K)を行い、結果A=Enc(G、K)を生成する。
また、ステップS406で子機102は、チャレンジとしての整数Hを生成する。ステップS406では子機102は、応答AとチャレンジHを親機101に送信する。チャレンジHは乱数であり得る。
ステップS408で親機101は、秘密鍵Kで暗号化処理Enc(G、K)を行い、結果Acを生成する。そしてこの結果Acが子機102からの応答Aと一致するならば、子機102が正当であると判断する。そして、子機102からのチャレンジHを秘密鍵Kにより暗号化処理Enc(H、K)を行い、結果B=Enc(H、K)を生成する。そして、結果Bを子機102に送信する。
ステップS410で子機102は、乱数Hを秘密鍵Kにより暗号化処理Enc(H、K)を行い、結果Bc=Enc(H、K)を生成する。この結果BcがステップS406で生成し、親機101から子機102に送られた結果Bと一致するなら、親機101が正当であると判断する。
<プローブ攻撃>
図6〜8を参照して、プローブ攻撃の概略と、シールド回路を用いたプローブ攻撃対策の概略を説明する。
図6は、プローブ攻撃の概要を示す図である。
認証チップ103中の回路を保護するチップパッケージをはがし、内部配線にマイクロプローバー105と呼ばれる小型の電極を挿入することで、センサ104を用いて鍵の値を直接的に読み取る。プローブ攻撃は強力な方法であるが、マイクロプローバーを用いた読み取り機器が備えているプローバーの最大本数や、多くのプローバーを備えていてもマイクロプーバー同士の物理的な干渉により、同時に使用可能なマイクロプローバーの本数には限界があることが知られている。すなわち、プロービング攻撃により、同時に盗聴可能なビット数には限界がある。以下、qビット同時に盗聴するプローブ攻撃を、qビットプローブ攻撃と呼ぶ。
この本数は、攻撃者の環境に応じて変化するが、例えば、2〜4ビットの同時盗聴は容易であるが、6ビット以上の同時盗聴は難しくなり、10ビット以上の同時盗聴は困難となる。この性質を考慮すると、プローブ攻撃の対策を行うための第1の条件は次のようになる。
(条件1)攻撃者が同時盗聴可能な最大ビット数をQとした場合、Qビットプローブ攻撃に対して、秘密鍵の全ビットを盗聴出来ないこと。
図7a〜7dは、プローブ攻撃対策であるシールド回路の概要を示す図である。
図7a、7cに示されているように、認証チップ103は、認証チップ103の底面の上に、下から内部回路B106c、内部回路A106b、シールド回路106a(これらをまとめて内部回路106として参照することがある)の順に積層されている。図7b、7dに示されているように、認証チップ103を上から見たときに、シールド回路106aが内部回路B106cおよび内部回路A106bを覆うように配置される。
多数の層からなる内部回路106のうち、最上位層にシールド線と呼ばれる配線を複数設置する。プローブの侵入に対し、このシールド線は「蓋」の役割を果たすので、プローブの侵入を阻害する。それぞれのシールド線には、一定の電圧がかかっており、シールド線を切断した場合、開放されたシールド線の先の電位は0となるため、切断を検知できるので、単純な物理修正を防ぐことが出来る。
ただし、図7bに示すように、切断する対象のシールド線に対して、一定の電位Vccを持つ電線につないだ状態を攻撃者が作り出すことが出来るならば、切断を検知できない。すなわち、最上位層のシールドが形成する「蓋」に対して「穴」をあけることが出来るので、攻撃者はこの「穴」を通じて、プローブ攻撃を行うことが出来る。
シールド回路106aを用いた場合でも、シールド線に対する攻撃者の物理修正により、部分的にプローブ攻撃を行うことが出来る。一方、一般的な共通鍵暗号では、128ビットの鍵が用いられる。つまり、同時にプローブ可能なビット数をQとした場合、Qの最大数が10程度ならば、128ビットの鍵を全て盗聴するのは困難であるので、安全なように見える。しかし、128ビットの鍵を用いた場合でも、1ビットプローブ攻撃を128個のチップ固体に対して用いれば、128ビット全ての鍵を盗聴し得る。
図8は、プローブ攻撃対策であるシールド回路の概要を示す図である。
秘密鍵は、フラッシュROMなどの不揮発性メモリに書かれている状態では、全てのビットは狭い領域に集中しているが、暗号機能を動作させるために、不揮発性メモリから読み出しレジスタに転送した場合、128ビット鍵の各ビット値がチップ中のあらゆる場所に散在することになる。このような状態のチップを128個集めた場合、一つの認証チップから1ビットずつプローブ攻撃を行い、この情報を128ビット分集めることで、全てのチップに共通する値である128ビット鍵を盗聴可能である。
図8では、認証チップ#1〜#128までの128個の認証チップ103_1、103_2、…、103_128から互いに異なる1ビットずつを、マイクロプローブ105を用いて盗聴する。例えば、1番目の認証チップ(認証チップ#1)103_1から1番目の鍵ビット(鍵ビット#1)の値1を盗聴する。2番目の認証チップ(認証チップ#2)103_2から2番目の鍵ビット(鍵ビット#2)の値0を、3番目の認証チップ(認証チップ#3)103_3から3番目の鍵ビット(鍵ビット#3)の値1を盗聴し、以下、128番目の認証チップ(認証チップ#128)103_108から128番目の鍵ビット(鍵ビット#128)の値1まで128個の鍵ビットを盗聴する。これらをまとめて128ビットの共通鍵を再構築することが可能である。この性質を考慮すると、プローブ攻撃の対策を行うための第1の条件は次のようになる。
(条件2)多数の認証チップから、Qビット以下のプローブ攻撃を繰り返す攻撃に対しても、秘密鍵の全ビットを盗聴できないこと。
<鍵に対する攪拌処理>
図9は鍵に対する動的な攪拌処理を用いる方法の概略を示す図である。
以下の方法では、子機は親機と同一の鍵を保持するとともに、電源onの間に変化する攪拌値(例えば乱数値)とを保持する(攪拌値は、子機間で別の値を有する)。認証時に、親機からチャレンジを受け取ると、鍵と攪拌値をもとに生成した攪拌鍵によってチャレンジを暗号化し、攪拌値と共に親機に送る。親機は保持している鍵と受け取った攪拌値とをもとに、受け取った暗号化されたチャレンジを復号して認証するか、親機は送ったチャレンジを、攪拌値と鍵をもとに生成した攪拌鍵によって暗号化し、子機から受け取った暗号化されたチャレンジと比較することで認証する。
図9では、認証チップ#1〜#128までの128個の認証チップ1003_1、1003_2、…、1003_128(これらをまとめて認証チップ1003と呼ぶことがある)の各々に格納されている鍵に対して、互いに異なる攪拌処理を行う。攪拌処理によって、各認証チップは、固定の秘密鍵を保持せずに、電源が入っている間は常に鍵の値は変化する。攪拌処理は、認証チップ1003に格納されている秘密鍵の値と攪拌値に基づいて行われる。攪拌値は、認証チップ1003の間で異なる値を持つ必要がある。すなわち、攪拌値は、電源が入っている間に常に生成する乱数であっても良いし、認証チップ1003ごとに個別の初期値から開始し電源が入っている間は認証チップで常に1ずつ増加する値であっても良い。認証チップ1003の間で共通の秘密鍵に対し、認証チップ1003の間で異なる攪拌値を用いて攪拌した値を認証チップ1003の内部で保持する。したがって、各認証チップ1003で鍵の値が異なる値として観察されるため、多数の認証チップ1003からのプローブ攻撃を防ぐことが出来る。
ただし、図9に示されるような、認証チップごとに異なる攪拌値を用いて鍵を攪拌する方法を用いて、認証プロトコルをそのまま実行する場合、親機と子機の間で攪拌結果が異なるため、鍵の値の同期がとれず、正当な機器であっても認証が失敗するおそれがある。よって、本発明で用いる認証プロトコルにおいては、親機と子機の間で攪拌値を共有する必要がある。
図10は、鍵に対する動的な攪拌処理を用いる方法を用いる共通鍵暗号を用いたチャレンジアンドレスポンス認証(片側認証、暗号化・復号化)の原理を示す図である。
図10に示されているように、親機1001は認証チップ103を含み、子機1002は認証チップ1003を含んでいる。認証チップ103は秘密鍵Kを格納しており、認証チップ1003は秘密鍵Kと攪拌値Cを格納している。
ステップS502で、認証を行なう側の親機1001は、まず、チャレンジと呼ばれる整数Gを生成し、認証される側の子機1002に送信する。整数Gは乱数であり得る。
ステップS504で子機1002は、認証チップ1003に格納され、常に更新される攪拌値Cと秘密鍵Kを攪拌関数F(K,C)に用いて攪拌された鍵K’=F(K,C)を生成する。
次のステップS506で子機1002は、攪拌された鍵K’を用いて親機102から受け取ったチャレンジGの暗号化処理Enc(G、K’)を実行し、応答A=Enc(G、K’)を生成する。そして、子機1002は、応答Aと攪拌値Cを親機1001に返信する。
ステップS508で親機1001は、子機102から受け取った攪拌値Cと秘密鍵Kを攪拌関数F(K、C)に用いて攪拌された鍵K’=F(K、C)を生成する。
ステップS510で親機1001は、ステップS508で生成された攪拌された鍵K’を用いて、子機1002から受け取った応答Aの復号処理Dec(A、K’)を実行し、復号結果Gc=Dec(A、K’)を得る。復号結果Gcが、ステップS502で生成した整数Gと一致するならば、親機1001は子機1002を正当な機器と認定する。
したがって、図10に示した方法を処理する子機1002は、入力として整数の乱数であるチャレンジGを受ける受信部と、整数である秘密鍵Kを格納する不揮発性メモリである第1のメモリと、整数である攪拌値Cを格納する第2のメモリと、秘密鍵Kと攪拌値Cに攪拌関数F(K、C)を作用させて整数である攪拌された秘密鍵K’を生成する鍵攪拌部と、攪拌された秘密鍵K’とチャレンジGに暗号化関数Enc(G、K’)を作用させてレスポンスA=Enc(G、K’)を生成するレスポンス生成部と、第2のメモリに格納されている攪拌値Cを更新する攪拌値更新部と、攪拌値CとレスポンスAを出力する送信部と、を含む。
また、図10に示した方法を処理する親機1001は、子機1002によって出力された攪拌値CとレスポンスAを受け取り、受け取った前記攪拌値Cと、予め自身の不揮発性メモリに格納してある前記秘密鍵Kと同じ値である第2の秘密鍵Kとに攪拌関数F(K、C)を作用させて整数である秘密鍵比較値K’=F(K、C)を生成し、秘密鍵比較値K’とレスポンスAを前記暗号化関数の逆関数である復号関数Dec(A、K’に作用させてチャレンジ比較値Gc=Dec(A、K’)を生成し、チャレンジGとチャレンジ比較値Gc=Dec(A、K’)を比較し、前記チャレンジGと前記チャレンジ比較値Gc=Dec(A、K’)との比較の結果に基づいて、子機1002を認証する。
上記の構成を有する親機1001と子機1002の組において、親機1001と子機1002の役割は、互いに交換可能である。
図11は、鍵に対する動的な攪拌処理を用いる方法を用いる共通鍵暗号を用いたチャレンジアンドレスポンス認証(片側認証、暗号化のみ)の原理を示す図である。
ステップS602で、認証を行なう側の親機1001は、まず、チャレンジと呼ばれる整数Gを生成し、認証される側の子機1002に送信する。整数Gは乱数であり得る。
ステップS604で子機1002は、認証チップ1003に格納され、常に更新される攪拌値Cと秘密鍵Kを攪拌関数F(K,C)に用いて攪拌された鍵K’=F(K,C)を生成する。
次のステップS606で子機1002は、攪拌された鍵K’を用いて親機102から受け取ったチャレンジGの暗号化処理Enc(G、K’)を実行し、応答A=Enc(G、K’)を生成する。そして、子機102は、応答Aと攪拌値Cを親機101に返信する。
ステップS608で親機1001は、子機1002から受け取った攪拌値Cと秘密鍵Kを攪拌関数F(K,C)に用いて攪拌された鍵K’=F(K、C)を生成する。
ステップS610で親機101は、ステップS508で生成された攪拌された鍵K’を用いて、ステップS602で生成したチャレンジGの暗号化処理Enc(G、K’)を実行し、結果Ac=Enc(G、K’)を生成する。結果Acが、子機1002から受け取ったレスポンスAと一致するならば、親機101は子機102を正当な機器と認定する。
したがって、図11に示した方法を処理する子機1002は、入力として整数の乱数であるチャレンジGを受ける受信部と、整数である秘密鍵Kを格納する不揮発性メモリである第1のメモリと、整数である攪拌値Cを格納する第2のメモリと、秘密鍵Kと攪拌値Cに攪拌関数F(K、C)を作用させて整数である攪拌された秘密鍵K’を生成する鍵攪拌部と、攪拌された秘密鍵K’とチャレンジGに暗号化関数Enc(G、K’)を作用させてレスポンスA=Enc(G、K’)を生成するレスポンス生成部と、第2のメモリに格納されている攪拌値Cを更新する攪拌値更新部と、攪拌値CとレスポンスAを出力する送信部と、を含む。
また、図11に示した方法を処理する親機1001は、子機1002によって出力された攪拌値CとレスポンスAを受け取り、受け取った前記攪拌値Cと、予め自身の不揮発性メモリに格納してある前記秘密鍵Kと同じ値である第2の秘密鍵Kに攪拌関数F(K、C)を作用させて整数である秘密鍵比較値K’を生成し、秘密鍵比較値K’とレスポンスAに暗号化関数Enc(A、K’)を作用させてチャレンジ比較値Gc=Enc(A、K’)を生成し、チャレンジGとチャレンジ比較値Gcを比較し、チャレンジGとチャレンジ比較値Gcとの比較の結果に基づいて、子機1002を認証する。
上記の構成を有する親機1001と子機1002の組において、親機1001と子機1002の役割は、互いに交換可能である。
図12は、鍵に対する動的な攪拌処理を用いる方法を用いる共通鍵暗号を用いたチャレンジアンドレスポンス認証(両側認証、暗号化・復号化)の原理を示す図である。
ステップS702で認証を行なう側の親機1001は、まず、チャレンジと呼ばれる整数Gを生成し、認証される側の子機1002に送信する。整数Gは乱数であり得る。
ステップS704で子機1002は、チャレンジHを生成する。チャレンジHは整数であり、また乱数であっても良い。
ステップS706で子機1002は、認証チップ1003に格納され、常に更新される攪拌値Cと秘密鍵Kを攪拌関数F(K、C)に用いて攪拌された鍵K’=F(K、C)を生成する。
次のステップS708で子機1002は、攪拌された鍵K’を用いて親機102から受け取ったチャレンジGの暗号化処理Enc(G、K’)を実行し、応答A=Enc(G、K’)を生成する。そして、子機1002は、応答Aと攪拌値CとチャレンジHを親機1001に返信する。
ステップS710で親機1001は、子機1002から受け取った攪拌値Cと秘密鍵Kを攪拌関数F(K,C)に用いて攪拌された鍵K’=F(K、C)を生成する。
次のステップS712で親機1001は、攪拌された鍵K’を用いて子機1002から受け取った応答Aの復号処理Dec(A、K’)を実行し、復号結果Gc=Dec(A、K’)を得る。
ステップS714で親機1001は、認証チップ1003に格納され、常に更新される攪拌値Dと秘密鍵Kを攪拌関数F(K、D)に用いて攪拌された鍵K”=F(K、D)を生成する。
ステップS716で親機1001は、復号結果Gcが、ステップS702で生成した整数Gと一致するならば、親機1001は子機1002を正当な機器と認証する。そして、攪拌された鍵K”を用いて子機1002から受け取ったチャレンジHの暗号化処理Enc(H、K”)を実行し、応答B=Enc(H、K”)を生成する。そして親機1001は、応答Bと攪拌値Dを子機1002に送信する。
ステップS718で子機1002は、親機1001から受け取った攪拌値Dと秘密鍵Kを用いて、攪拌された鍵K”=F(K、D)を生成する。
次にステップS720で子機1002は、攪拌された鍵K”を用いて親機1001から受け取った応答Bの復号処理Dec(B、K”)を実行し、復号結果Hc=Dec(B、K”)を得る。復号結果Hcが、ステップS704で生成した整数Hと一致するならば、子機1002は親機1001を正当な機器と認証する。
したがって、図12に示した方法を処理する子機1002は、入力として整数の乱数であるチャレンジGを受ける受信部と、整数の乱数である第2のチャレンジHを生成するチャレンジ生成部と、整数である秘密鍵Kを格納する不揮発性メモリである第1のメモリと、整数である攪拌値Cを格納する第2のメモリと、秘密鍵Kと攪拌値Cに攪拌関数F(K、C)を作用させて整数である攪拌された秘密鍵K’を生成する鍵攪拌部と、攪拌された秘密鍵K’とチャレンジGに暗号化関数Enc(G、K’)を作用させてレスポンスA=Enc(G、K’)を生成するレスポンス生成部と、第2のメモリに格納されている攪拌値Cを更新する攪拌値更新部と、攪拌値CとレスポンスAと第2のチャレンジHを出力する送信部と、を含む。
また、図12に示した方法を処理する親機1001は、子機1002によって出力された攪拌値CとレスポンスAと第2チャレンジHを受け取り、受け取った攪拌値Cと、予め自身の不揮発性メモリに格納してある秘密鍵Kと同じ値である第2の秘密鍵Kとに攪拌関数F(K、C)を作用させて整数である秘密鍵比較値K’を生成し、秘密鍵比較値K’とレスポンスAを暗号化関数の逆関数である復号関数Dec(A、K’)に作用させて整数であるチャレンジ比較値Gcを生成し、自身のメモリに格納してある整数である第2の攪拌値Dと秘密鍵Kに攪拌関数F(K、D)を作用させて整数である第2の秘密鍵比較値K''を生成し、チャレンジGとチャレンジ比較値Gcとの比較をし、チャレンジGと前記チャレンジ比較値Gcとの比較の結果に基づいて子機1002が認証された場合に、第2の秘密鍵比較値K''と第2のチャレンジHに暗号化関数Enc(H、K'')を作用させて整数である第2のレスポンスB=Enc(H、K'')を生成し、第2の攪拌値Dと第2のレスポンスBを出力する。
また、図12に示した方法を処理する子機1002はの鍵攪拌部は、秘密鍵Kと第2の攪拌値Dに攪拌関数F(K、D)を作用させて整数である第2の攪拌された秘密鍵K''を生成し、さらに、第2の攪拌された秘密鍵K''と第2のレスポンスHを復号関数Dec(H、K'')に作用させて第2のチャレンジ比較値Hcを生成する復号部と、第2のチャレンジ比較値Hcと第2チャレンジHとの比較に基づいて、親機1001を認証する認証部と、を含む。
上記の構成を有する親機1001と子機1002の組において、親機1001と子機1002の役割は、互いに交換可能である。
図13は、鍵に対する動的な攪拌処理を用いる方法を用いる共通鍵暗号を用いたチャレンジアンドレスポンス認証(両側認証、暗号化のみ)の原理を示す図である。
ステップS802で認証を行なう側の親機1001は、まず、チャレンジと呼ばれる整数Gを生成し、認証される側の子機1002に送信する。整数Gは乱数であり得る。
ステップS804で子機1002は、チャレンジHを生成する。チャレンジHは整数であり、また乱数であっても良い。
ステップS806で子機1002は、認証チップ1003に格納され、常に更新される攪拌値Cと秘密鍵Kを攪拌関数F(K、C)に用いて攪拌された鍵K’=F(K、C)を生成する。
次のステップS808で子機1002は、攪拌された鍵K’を用いて親機102から受け取ったチャレンジGの暗号化処理Enc(G、K’)を実行し、応答A=Enc(G、K’)を生成する。そして、子機1002は、応答Aと攪拌値CとチャレンジHを親機1001に返信する。
ステップS810で親機1001は、子機1002から受け取った攪拌値Cと秘密鍵Kを攪拌関数F(K,C)に用いて攪拌された鍵K’=F(K、C)を生成する。
次のステップS812で親機1001は、攪拌された鍵K’を用いてステップS802で生成したチャレンジGの暗号化処理Enc(G、K’)を実行し、結果Ac=Enc(G、K’)を生成する。
ステップS814で親機1001は、認証チップ1003に格納され、常に更新される攪拌値Dと秘密鍵Kを攪拌関数F(K、D)に用いて攪拌された鍵K”=F(K、D)を生成する。
ステップS816で親機1001は、結果Acが、子機1002から受け取った応答Aと一致するならば、親機1001は子機1002を正当な機器と認証する。そして、攪拌された鍵K”を用いて子機1002から受け取ったチャレンジHの暗号化処理Enc(H、K”)を実行し、応答B=Enc(H、K”)を生成する。そして親機1001は、応答Bと攪拌値Dを子機1002に送信する。
ステップS818で子機1002は、親機1001から受け取った攪拌値Dと秘密鍵Kを用いて、攪拌された鍵K”=F(K、D)を生成する。
次にステップS820で子機1002は、攪拌された鍵K”を用いてステップS804で生成したチャレンジHの暗号化処理Enc(H、K”)を実行し、結果Bc=Enc(H、K”)を生成する。結果Bcが、親機1001から受け取った応答Bと一致するならば、子機1002は親機1001を正当な機器と認証する。
したがって、図13に示した方法を処理する子機1002は、入力として整数の乱数であるチャレンジGを受ける受信部と、整数の乱数である第2のチャレンジHを生成するチャレンジ生成部と、整数である秘密鍵Kを格納する不揮発性メモリである第1のメモリと、整数である攪拌値Cを格納する第2のメモリと、秘密鍵Kと攪拌値Cに攪拌関数F(K、C)を作用させて整数である攪拌された秘密鍵K’を生成する鍵攪拌部と、攪拌された秘密鍵K’とチャレンジGに暗号化関数Enc(G、K’)を作用させてレスポンスA=Enc(G、K’)を生成するレスポンス生成部と、第2のメモリに格納されている攪拌値Cを更新する攪拌値更新部と、攪拌値CとレスポンスAと第2のチャレンジHを出力する送信部と、を含む。
また、図13に示した方法を処理する親機1001は、子機1002によって出力された攪拌値CとレスポンスAと第2チャレンジHを受け取り、受け取った攪拌値Cと、予め自身の不揮発性メモリに格納してある秘密鍵Kと同じ値でる第2の秘密鍵Kに攪拌関数F(K、D)を作用させて整数である秘密鍵比較値K’を生成し、秘密鍵比較値K’とチャレンジGに暗号化関数Enc(G、K’を作用させて整数であるレスポンス比較値Acを生成し、さらに自身のメモリに格納してある整数である第2の攪拌値Dと秘密鍵Kに攪拌関数F(K、D)を作用させて第2の攪拌された秘密鍵K''を生成し、レスポンスAと前記レスポンス比較値Acとを比較し、レスポンスAとレスポンス比較値Acとの比較の結果に基づいて子機(1002)が認証された場合に、第2の秘密鍵比較値K''と第2のチャレンジHに暗号化関数Enc(H、K'')を作用させて整数である第2のレスポンスB=Enc(H、K'')を生成し、第2のレスポンスBと第2の攪拌値Dを出力する。
また、図13に示した方法を処理する子機1002はの鍵攪拌部は、秘密鍵Kと第2の攪拌値Dに攪拌関数F(K、D)を作用させて整数である第2の攪拌された秘密鍵(K'')を生成し、さらに、第2の攪拌値Dと秘密鍵Kを暗号化関数Enc(K、D)に作用させて第2のレスポンス比較値Bcを生成する暗号化部と、第2のレスポンスBと第2のレスポンス比較値Bcとの比較に基づいて、親機1001を認証する認証部と、を含む。
上記の構成を有する親機1001と子機1002の組において、親機1001と子機1002の役割は、互いに交換可能である。
<(i)不揮発性回路へのプローブ攻撃対策>
以下では、(i)不揮発性回路に対するプローブ攻撃対策の種別と、(ii)揮発性回路に対するプローブ攻撃対策の種別、(iii)秘密鍵へのマスク演算の種別について説明する。
一般に回路は以下の2種類に分類される。
(1)不揮発性回路:読み込み、書き込みの両方が可能であり、電源が切れた状態やリセット後も値を記憶している回路。フラッシュROM、Electrically Erasable Programmable Read−Only Memory(EEPROM)、強誘電体メモリ(FRAM(登録商標))、不揮発性フリップフロップが該当する。
(2)揮発性回路:電源が切れた状態やリセット後は値を記憶しない回路。レジスタや論理回路が該当する。
以下ではまず、図14〜18を参照しながら、不揮発性回路へのプローブ攻撃対策について説明する。
図14は、攪拌関数F(K、C)を用いて鍵に対する動的な攪拌処理を行う鍵攪拌処理部の機能ブロック図である。
鍵攪拌処理部は、ラッピング処理部2000、鍵記憶部2100、アンラッピング処理部2200、ビット短縮処理部2300を含む。
ラッピング処理部2000は、秘密鍵Kを格納するメモリ2002、攪拌関数Fを用いて攪拌処理を行う攪拌関数作用部F(K、C)2004、攪拌値Cを格納するメモリ2008とメモリ2008に接続され、メモリ2008に格納される攪拌値Cを更新する攪拌値更新部2006と、認証チップ1003の外部からの入力とメモリ2008に格納されている攪拌値のいずれを攪拌関数作用部F(K、C)2004に入力するかを切り替える切り替え器2010を含む。攪拌関数作用部F(K、C)2004は、秘密鍵Kを格納するメモリ2002および切り替え器2010から入力された秘密鍵Kおよび攪拌値Cに攪拌関数F(K、C)を作用させ、結果の値を鍵記憶部2100に出力する。このように、ラッピング処理部2000では、秘密鍵Kと攪拌値Cを攪拌関数Fに作用させることによって、F(K、C)により表される鍵攪拌結果が生成される。
鍵記憶部2100は不揮発性回路で構成され、攪拌鍵格納部2102を含む。鍵記憶部2100を不揮発性回路2100として参照することがある。攪拌鍵格納部2102はラッピング処理部2000の攪拌関数作用部F(K、C)2004で生成された値を格納する。
攪拌鍵格納部2102はビット短縮処理部2300に接続されており、必要に応じて、攪拌鍵格納部2102に格納されている値のビット数を短縮して、攪拌鍵として出力する。
アンラッピング処理部2200は逆関数作用部2202を含む。逆関数作用部2202は、攪拌関数F(K、C)の逆攪拌関数F−1(K、C)を用いて、攪拌鍵格納部2102に格納されている値から、秘密鍵Kおよび攪拌値Cを得る。逆関数作用部2202の出力である秘密鍵Kは、ラッピング処理部2000のメモリ2002に入力され、格納される。
このように、図14では、秘密鍵Kと攪拌値CからF(K、C)により表される攪拌された鍵K’=F(K、C)が生成され、不揮発性回路で構成される鍵記憶部2100の攪拌鍵格納部2102に格納される。この攪拌値Cは、図10〜13に示される認証プロトコルにおいて、親機1001と子機1002の同期を取るために認証チップの外部に出力される。また、これらの認証プロトコルにおいて、親機1001または子機1002は、攪拌値Cを外部から受け取ることもある。その認証チップ内部の攪拌値を使用するか、外部の攪拌値を使用するかは、切り替え器2010によって変更される。攪拌値Cは、チップの電源が入っている間は常に変更される値である。攪拌値の更新処理の内容に特に制約はなく、ハードウェア乱数のような予測がつかない更新であっても、値を1増加させるといった予測がつく更新のいずれであっても良い。
セキュリティの観点からは、攪拌関数F(K、C)は、以下の(性質1)(性質2)(性質3)を有することが要求される。
(性質1)入力値KまたはCが1ビットでも変化した場合、出力値K’=F(K、C)の全てのビットが変化する。
(性質2)F(K、C)の逆関数F−1(K、C)が存在する。
(性質3)F(K、C)の全てのビット値が分からない限り、F(K、C)から入力値K、Cの組(K、C)を求めることは出来ない。
しかしながら、上記(性質1)は次の(性質1’)に置き換えても良い。
(性質1’)入力値KまたはCが1ビットでも変化した場合、出力値K’=F(K、C)の複数のビットが変化する。
しかしながら、上記(性質3)は次の(性質3’)に置き換えても良い。
(性質3’)F(K、C)のQ+1ビット以上のビット値が分からない限り、F(K、C)から入力値K、Cの組(K、C)を求めることは出来ない。 上記の(性質1)により、攪拌値Cが1ビットでも変化した場合、不揮発性回路で構成される攪拌鍵格納部2102の全ビットが変化するので、攻撃者は攪拌鍵格納部2102に対してプローブ攻撃を用いても、認証チップごとに得られる値が異なるため、複数の認証チップから取り出した結果を用いても、秘密鍵Kを再構成することができない。また、上記(性質1’)により、攪拌値Cが変化した場合、不揮発性回路で構成される攪拌鍵格納部2102の複数のビットが変化するので、攻撃者が攪拌鍵格納部2102に対してプローブ攻撃を用いて秘密鍵Kを再構成しようとしても、時間と手間が必要である。
よって、不揮発性回路2100は、前述の(条件2)「多数の認証チップから、Qビット以下のプローブ攻撃を繰り返す攻撃に対しても、秘密鍵の全ビットを盗聴できないこと」を満足することが出来る。
上記の(性質2)により、攪拌鍵格納部2102に格納された攪拌鍵K’から、K、Cの組(K、C)を得ることが出来る。このとき、攪拌鍵K’からK、Cの組(K、C)を得る処理は、論理回路やレジスタなどの揮発性回路によって行われる。すなわち、揮発性回路は秘密鍵Kの値を保持するため、複数の認証チップからの1ビットプローブ攻撃に脆弱な可能性がある。この問題は、後の<揮発性回路へのプローブ攻撃対策>にて述べられる手段を用いることによって解決される。
(性質3)(性質3’)は、不揮発性回路2100に対するプローブ攻撃の難しさを保障するための性質である。例えば、F(K、C)が256ビットである場合、攻撃者は攪拌値Cに応じて動的に更新されるこの256ビット値を同時にプローブ攻撃しない限り、F(K、C)からK、Cの組(K、C)を得ることが出来ない。すなわち不揮発性回路2100に関して、前述の(条件1)「攻撃者が同時盗聴可能な最大ビット数をQとした場合、Qビットプローブ攻撃に対して、秘密鍵の全ビットを盗聴出来ないこと」を満足することができる。
上記(性質3)は、不揮発性回路2100のビット値の互いの依存性が高いことを意味している。よって、256ビット書き込み処理は、1サイクルのうちに全て完結することが望ましい。また、(性質3)を完全に保障するためには、256ビットの全ビット値が認証チップ上に分散して配置されるのが望ましい。例えば1バイト単位で読み出し/書き込みを行うEEPROM上に256ビットの攪拌された鍵K’=F(K、C)を書き込む場合には、メモリの読み書きを行う8ビットインターフェイス(I/F)上の配線にプロービングを行うことで、256ビットの攪拌された鍵K’=F(K、C)を8ビット単位で読み取ることが出来るため、安全性が保障されない。すなわち、(性質3)を保障するためには、不揮発性回路2100は、不揮発性フリップフロップ等の回路を用いて、256ビットを1サイクルで読み書きできることが望ましい。
このように、図14に示す構成において、関数Fが(性質1)(性質2)(性質3)を満たすならば、不揮発性回路2100は、前述の(条件1)(条件2)を満足することが出来る。不揮発性回路2100に格納された値はそのまま攪拌鍵として用いられても良いし、ビット短縮処理部2300でビット短縮処理を行った後に攪拌鍵として用いられても良い。
(性質1)(性質2)(性質3)を満たす鍵攪拌処理部2004の構成は複数存在する。
図15は、鍵に対する動的な攪拌処理を行う鍵攪拌処理部の攪拌関数F(K、C)の第1の構成を示す図である。
図15に開示の方法は、最適非対称暗号符号化(OAEP)と呼ばれる公開鍵のメッセージパディング方式をベースとしている。
図16は最適非対称暗号符号化処理部の構成の例を示す図である。図17は、最適非対称暗号符号化処理部を用いて構成される鍵攪拌処理部の例を示す図である。
先に、図16の最適非対称暗号符号化処理部について説明し、次に、図17の最適非対称暗号符号化処理部を用いて構成される鍵攪拌処理部の例を説明する。その次に、図15の攪拌関数F(K、C)の第1の構成の説明に戻る。
図16の最適非対称暗号符号化処理部は、記憶部2800、マスク生成関数(MGF)作用部2702、2704、2902、2906、XORゲート2704、2708、2904、2908を含んでいる。鍵記憶部2800は不揮発性回路で構成され、さらに攪拌鍵1を記憶する第1のメモリ2802と攪拌鍵2を記憶する第2のメモリ2804を含む。
マスク生成関数(MGF)作用部2702、2704、2902、2906は、入力に対してマスク生成関数MGFを作用させる。
マスク生成関数MGFはメッセージ生成関数とも呼ばれ、次のような性質を持つ。
(MGF1)入力が1ビットでも変化した場合、出力値の全ビットが変化する。
(MGF2)出力から入力値を求めることが出来ない。
(MGF3)入力と出力のビット長を、パラメータにより調整することができる。
マスク生成関数MGFは基本的には、入出力のビット長を調整することができるハッシュ関数である。
図16に示されているように、種値seedはマスク生成関数(MGF)作用部2702に入力され出力MGF(seed)を得る。出力MGF(seed)はXORゲート2704に入力され、データ値DBとの排他的論理和(XOR)が演算され、出力DB☆MGF(seed)を得る。
本明細書中では、記号「☆」を排他的論理和
の意味で用いる。
マスク生成関数(MGF)作用部2702では、上記性質(MGF1)より、種値seedが1ビットでも変化すると、出力MGF(seed)は全ビットが変化する。
XORゲート2704の出力DB☆MGF(seed)は、記憶部2800の第2のメモリ2804に格納されると同時に、マスク生成関数(MGF)作用部2706に入力される。その結果MGF(DB☆MGF(seed))は、XORゲート2708に入力され、種値seedとの排他的論理和(XOR)が演算され、出力seed☆MGF(DB☆MGF(seed))を得る。出力seed☆MGF(DB☆MGF(seed))は記憶部2800の第1のメモリ2802に格納される。
ここまでがデータ値DBを、種値seedを用いて暗号化する処理に対応する。
次に、復号する処理を説明する。
記憶部2800の第1のメモリ2802にはseed☆MGF(DB☆MGF(seed))が、第2のメモリ2804にはDB☆MGF(seed)が格納されている。
まず、次の論理式に注目する。
[seed☆MGF(DB☆MGF(seed))]☆[MGF(DB☆MGF(seed))]
=seed
上式の左辺第1項は第1のメモリ2802に格納されている値であり、左辺第2項は第2のメモリ2804に格納されている値にマスク生成関数(MGF)を作用させることによって得ることができる値である。
よって、第2のメモリ2804に格納されている値をマスク生成関数(MGF)作用部2902に入力し、出力MGF(DB☆MGF(seed)を得て、さらにこの出力MGF(DB☆MGF(seed)と第1のメモリ2802に格納されている値seed☆MGF(DB☆MGF(seed))との排他的論理和(XOR)を、XORゲート2904で演算することにより種値seedを得ることができる。
また、次の論理式にも注目する。
MGF(seed)☆[DB☆MGF(seed)]=DB
上式の左辺第1項はXORゲート2904の出力にマスク生成関数(MGF)を作用させることによって得ることができる値である。左辺第2項は第2のメモリ2804に格納されている値である。よって、データ値DBを得るためには、まず、XORゲート2904の出力を、マスク生成関数(MGF)作用部2906に入力し、出力MGF(seed)を得る。次に、マスク生成関数(MGF)作用部2906の出力MGF(seed)と、第2のメモリ2804に格納されている値DB☆MGF(seed)との排他的論理和(XOR)を、XORゲート2908で演算すればよい。
図17は、最適非対称暗号符号化処理部を用いて構成される鍵攪拌処理部の例を示す図である。図17で、seedは、図14の攪拌値Cに相当し、DBは秘密鍵Kに相当する。
図17の鍵攪拌処理部は、ラッピング処理部3000、鍵記憶部3100、アンラッピング処理部3200を含む。
ラッピング処理部3000は、マスク生成関数(MGF)作用部3002、3006、XORゲート3004、3008を含む。
鍵記憶部3100は第1のメモリ3102と第2のメモリ3104を含む。
アンラッピング処理部3200は、マスク生成関数(MGF)作用部3202、3206、XORゲート3204、3208を含む。
ラッピング処理部3000に入力される攪拌値Cは、常に更新されている。
攪拌値Cはマスク生成関数(MGF)作用部3002に入力され出力MGF(C)を得る。出力MGF(C)はXORゲート3004に入力され、秘密鍵Kとの排他的論理和(XOR)が演算され、出力K☆MGF(C)を得る。
XORゲート3004の出力K☆MGF(C)は、鍵記憶部3100の第2のメモリ3104に格納されると同時に、マスク生成関数(MGF)作用部3006に入力される。その結果MGF(K☆MGF(C))は、XORゲート3008に入力され、攪拌値Cとの排他的論理和(XOR)が演算され、出力C☆MGF(K☆MGF(C))を得る。出力C☆MGF(K☆MGF(C))は鍵記憶部3100の第1のメモリ3102に格納される。
鍵記憶部3100は不揮発性回路で構成される。不揮発性回路の第1のメモリ3102にはC☆MGF(K☆MGF(C))で示される値が、第2のメモリ3104にはK☆MGF(C)で示される値が格納される。
図14に示されるチャレンジアンドレスポンス認証のアルゴリズムでは、攪拌値Cの値は認証チップ外部から観察可能である。しかし、C☆MGF(K☆MGF(C))で示される値に対してプローブ攻撃を行っても、秘密鍵Kを得ることが出来ない。なぜなら、MGF(K☆MGF(C))の値は秘密鍵Kの全ビットをプローブ攻撃しない限り攻撃者に分からない値であるからである。このようにして、本実施形態暗号処理装置の安全性が保証される。しかし、値K☆MGF(C)が格納される不揮発性回路へのプローブ攻撃に対しては脆弱である。なぜなら、攪拌値Cは認証チップ外部から観察可能であるため、攻撃者はMGF(C)の値を計算可能であるので、値K☆MGF(C)が格納されている第2のメモリ3104へのプローブ攻撃は攪拌されていない秘密鍵Kへのプローブ攻撃と同じである。これは、条件1、条件2を満たすことができないことを意味する。すなわち、図16に示される方法をそのまま図14に適用しても、プローブ攻撃に対する十分な耐性が得られないことがあり得る。
そこで、秘密鍵Kの上位半分のビットをK、秘密鍵Kの下位半分のビットをK、攪拌値Cの上位半分のビットをC、秘密鍵Kの下位半分のビットをCとする。また以下では、ビット結合を記号「||」で表すことにする。
そして、上位半分同士を結合した値K||Cを最適非対称暗号符号化処理部の種値seedとして、下半分同士を結合した値K||Cを最適非対称暗号符号化処理部のデータ値DBとして入力することによって、上の問題を回避する。秘密鍵Kと攪拌値Cを分割、再結合して入力することで、記憶部には、K||C☆MGF(K||C)☆MGF(K||C)と、K||C☆MGF(K||C)が格納される。これらの値は、KH、KLにマスク生成関数MGFが作用されて得られる値であり、裸の秘密鍵Kの値はマスクされている。よって、記憶部を構成する不揮発性回路の値を全ビット同時にプロービングしない限り、攻撃者は秘密鍵Kの値を得ることが出来ない。
図15に示されているように、鍵攪拌処理部は、ラッピング処理部2300、鍵記憶部2400、アンラッピング処理部2500を含む。
秘密鍵Kの上位半分のビットをK、秘密鍵Kの下位半分のビットをK、攪拌値Cの上位半分のビットをC、秘密鍵Kの下位半分のビットをCとする。また以下では、ビット結合を記号「||」で表すことにする。
メモリ2602には、秘密鍵Kの上位半分のビットKと攪拌値Cの上位半分のビットCをビット結合した値K||Cが格納される。メモリ2602には更新処理部2604が接続され、メモリ2602に格納されている攪拌値Cの上位半分のビットCを更新する。
またメモリ2606には、秘密鍵Kの下位半分のビットKと攪拌値Cの下位半分のビットCをビット結合した値K||Cが格納される。メモリ2606には更新処理部2608が接続され、メモリ2606に格納されている攪拌値Cの下位半分のビットCを更新する。
メモリ2602およびメモリ2606は、ラッピング処理部2300の入力端子に接続されている。
メモリ2602からラッピング処理部2300に入力された値K||Cは、マスク生成関数(MGF)作用部2302でマスク処理が施され、結果MGF(K|C)が生成される。その結果は、XORゲート2304に入力され、メモリ2606からラッピング処理部2300に入力された値K||Cとの排他的論理和(XOR)、すなわちKL||CL☆MGF(K||C)が演算される。さらに、XORゲート2304の出力は、鍵記憶部2400に入力されると共に、マスク生成関数(MGF)作用部2306でマスク処理が施され、結果MGF(K||C☆MGF(K||C)が生成される。この結果は、XORゲート2308でメモリ2602からラッピング処理部2300に入力された値KH||CHとの排他的論理和K||C☆MGF(K||C☆MGF(K||C)が演算される。XORゲート2308の出力は鍵記憶部2400に入力される。
鍵記憶部2400は第1の攪拌鍵格納部2402と第2の攪拌鍵格納部2404を含む。第1の攪拌鍵格納部2402には、XORゲート2308の出力K||C☆MGF(K||C☆MGF(K||C)が格納される。第2の攪拌鍵格納部2404には、XORゲート2304の出力K||C☆MGF(K||C)が格納される。
アンラッピング処理部2500では、鍵記憶部2400の第1の攪拌鍵格納部2402に格納されている値K||C☆MGF(K||C)がマスク生成関数(MGF)作用部2502でマスク処理が施され、その結果MGF(K||C☆MGF(K||C))が生成される。この結果MGF(K||C☆MGF(K||C))はXORゲート2504で、第1の攪拌鍵格納部2402に格納されている値KH||CH☆MGF(K||C☆MGF(K||C)との排他的論理和(XOR)が演算され、出力K||Cを得る。さらに、このXORゲート2504の出力K||Cは、マスク生成関数(MGF)作用部2506でマスク処理が施され、その結果MGF(K||C)が生成される。XORゲート2508でマスク生成関数(MGF)作用部2506の出力MGF(K||C)と第2の攪拌鍵格納部2404に格納されている値K||C☆MGF(K||C)との排他的論理和(XOR)が演算され、出力K||Cを得る。
これらの出力K||C、K||Cはそれぞれ、再びメモリ2602およびメモリ2606に格納されても良い。
このように、図15に示されている鍵攪拌処理部の攪拌関数F(K、C)の第1の構成は、ラッピング処理部2300およびアンラッピング処理部2500はそれぞれ2段のマスク生成関数(MGF)作用部を含み、不揮発性回路に対する(条件1)および(条件2)を満足することができる。
図18は、鍵に対する動的な攪拌処理を行う鍵攪拌処理部の攪拌関数F(K、C)の第2の構成を示す図である。
図18に示されている構成は、ラッピング処理部3400およびアンラッピング処理部3600はそれぞれ3段のマスク生成関数(MGF)作用部を含む。また、図15に示されている構成と異なり、図18に示されている構成は、秘密鍵K、攪拌値Cの分割、再結合処理を行わない。秘密鍵K、攪拌値Cの分割、再結合処理を行わない理由は、マスク生成関数(MGF)を3回適用した結果の不揮発性回路の値は、左半分、右半分共に秘密鍵Kを入力としたマスク生成関数(MGF)値によるマスクがかかっているため、不揮発性回路の全ビットを同時にプロービングしない限り攻撃者は鍵Kの値を得ることが出来ないからである。
図18に示されているように、鍵攪拌処理部は、ラッピング処理部3400、鍵記憶部3500、アンラッピング処理部3600を含む。
ラッピング処理部3400は、マスク生成関数(MGF)作用部3402、3406、3410、XORゲート3404、3408、3412を含む。
鍵記憶部3100は第1のメモリ3502と第2のメモリ3504を含む。
アンラッピング処理部3200は、マスク生成関数(MGF)作用部3602、3606、3610、XORゲート3204、3208、3612を含む。
メモリ3702には、攪拌値Cが格納される。メモリ3702には更新処理部3704が接続され、メモリ3702に格納されている攪拌値Cを更新する。
またメモリ3706には、秘密鍵Kが格納される。
メモリ3702およびメモリ3706は、ラッピング処理部3400の入力端子に接続されている。
メモリ3702からラッピング処理部3400に入力された攪拌値Cは、マスク生成関数(MGF)作用部3402でマスク処理が施され、結果MGF(C)が生成される。その結果は、XORゲート3404に入力され、メモリ3706からラッピング処理部3400に入力された値秘密鍵Kとの排他的論理和(XOR)、すなわちK☆MGF(C)が演算される。さらに、XORゲート3404の出力は、XORゲート3412に入力されると共に、マスク生成関数(MGF)作用部3406でマスク処理が施され、結果MGF(K☆MGF(C))が生成される。この結果は、XORゲート3408でメモリ3702からラッピング処理部3400に入力された攪拌値Cとの排他的論理和C☆MGF(K☆MGF(C))が演算される。XORゲート3408の出力は、鍵記憶部3100は第1のメモリ3502に格納されると共に、マスク生成関数(MGF)作用部3410でマスク処理が施され、結果MGF(C☆MGF(K☆MGF(C)))が生成される。その結果は、XORゲート2712に入力され、XORゲート3404の出力K☆MGF(C)との排他的論理和(XOR)、すなわちK☆MGF(C)☆MGF(C☆MGF(K☆MGF(C)))が演算される。XORゲート2712の出力は、鍵記憶部3100の第2のメモリ3504に格納される。
鍵記憶部3100は不揮発性メモリで構成される。鍵記憶部3100は第1のメモリ3502には、値C☆MGF(K☆MGF(C))が格納される。鍵記憶部3100の第2のメモリ3504には、値K☆MGF(C)☆MGF(C☆MGF(K☆MGF(C)))が格納される。
アンラッピング処理部3600では、第1のメモリ3502に格納されている値C☆MGF(K☆MGF(C))がマスク生成関数(MGF)作用部3602でマスク処理が施され、その結果MGF(値C☆MGF(K☆MGF(C)))が生成される。この結果MGF(値C☆MGF(K☆MGF(C)))はXORゲート3604で、第1のメモリ3502に格納されている値K☆MGF(C)☆MGF(C☆MGF(K☆MGF(C)))との排他的論理和(XOR)が演算され、出力K☆MGF(C)を得る。さらに、このXORゲート3604の出力K☆MGF(C)は、マスク生成関数(MGF)作用部3606でマスク処理が施され、その結果MGF(K☆MGF(C))が生成される。XORゲート3608でマスク生成関数(MGF)作用部3606の出力K☆MGF(C)と第1のメモリ3502に格納されている値C☆MGF(K☆MGF(C))との排他的論理和(XOR)が演算され、出力Cを得る。XORゲート3608の出力Cは、マスク生成関数(MGF)作用部3610でマスク処理が施され、その結果MGF(C)が生成される。この結果MGF(C)はXORゲート3612で、XORゲート3604の出力K☆MGF(C)との排他的論理和(XOR)が演算され、出力Kを得る。
上記に示した構成のほかにも、マスク生成関数(MGF)作用部をさらに多段化するなど、様々な関数Fの構成を用いることで、不揮発性回路に対するプロービング攻撃を防ぐことが出来る。
<(ii)揮発性回路へのプローブ攻撃対策>
図19〜33を参照して、揮発性回路へのプローブ攻撃対策について説明する。
図15や図18に示す本発明の構成を用いることで、不揮発性回路に対しては、(条件1)と(条件2)を満足することが出来る。しかし、いずれの構成においても、揮発性回路に関しては秘密鍵Kの値をそのまま保持するため、(条件1)と(条件2)を満足することが出来ない。
図19は、鍵に対する動的な攪拌処理を行う鍵攪拌処理部の機能ブロック図の第2の例を示す図である。
秘密鍵K(共通鍵K)は、マスク値と呼ばれる値によりマスク化される。マスク値はV個の値M、M、…、MV−1が用いられ、秘密鍵KはこれらV個の値に対して、M=M☆M☆…☆MV−1を満たすマスク値Mを用いてマスク化された値K☆Mとして論理回路上に保存されている。マスク値Mは、攪拌値Cと同様に、認証チップごとに異なり、電源が入っている間は常に更新されている値であるが、攪拌値のように認証チップの外部に見せる値ではなく、認証チップの内部のみで使用される値である。揮発性回路に対しプローブ攻撃を行った場合でも、秘密鍵Kは動的に変化するマスク値Mでマスク化されているため、攻撃者は秘密鍵Kの値を知ることが出来ない。また、回路上ではマスク値Mの値を直接的に格納されていないので、マスク値Mを知るためには、V個のマスク値M、M、…、MV−1を同じタイミングで観察しなければならない。このVの値が(条件1)と(条件2)のQを超えるならば、攻撃者はプローブ攻撃を行うことが出来ないので、(条件1)と(条件2)を揮発性回路についても満足することが出来る。
図19に示されているように、鍵攪拌処理部は、ラッピング処理部3800、鍵記憶部3900、アンラッピング処理部4000を含む。
ラッピング処理部3800は、値K☆MとV個のマスク値M、M、…、MV−1を記憶するメモリ3802、V個のマスク値M、M、…、MV−1を更新する第1の更新処理部(マスク値更新処理部)3804、攪拌値Cを格納するメモリ3806、攪拌値を更新する第2の更新処理部(攪拌値更新処理部)3808、切り替え器3810、攪拌関数作用部F(K、C、M、M、…、MV−1)3812を含む。
メモリ3802に格納されている値K☆MとV個のマスク値M、M、…、MV−1と、メモリ3806に記憶されているまたは認証チップの外部から入力される攪拌値Cを用いて、攪拌された秘密鍵F’(K、M、M、…、MV−1)が攪拌関数作用部F(K、C、M、M、…、MV−1)3812の出力として得られる。
鍵記憶部3900は不揮発性回路で構成され、攪拌鍵格納部3902を含む。攪拌された秘密鍵F’(K、M、M、…、MV−1)は鍵記憶部3900の攪拌鍵格納部3902に格納される。
アンラッピング処理部4000は、逆関数作用部4002を含む。逆関数作用部4002は、攪拌関数F’(K、M、M、…、MV−1)の逆関数攪拌関数F’−1(K、M、M、…、MV−1)を用いて、攪拌鍵格納部3902に格納されている値から、値K☆Mおよび攪拌値Cを得る。
逆関数作用部4002の出力K☆Mは、メモリ3802に格納されても良い。
マスク値は、チップ外部から観察することができない値である。すなわち、図10〜13に示すプロトコルでは、親機と子機でマスク値の同期をとることができない。同期が取れないマスク値を基準に認証を行うことは出来ない。すなわち、図10〜13に示す認証プロトコルにおいて、鍵攪拌処理の結果は、マスク値の影響を受けてはならない。
よって、次の条件が要請される。
(条件3)鍵攪拌処理の結果は、マスク値の影響を受ない。
しかし、もしマスク生成関数MGFを含む鍵攪拌処理を行う場合、マスクされた鍵の値へのマスク生成関数(MGF)の作用は、マスク値の全ビットの影響をうけて、予測のつかない変化をもたらす。鍵攪拌関数はF’(K、M、M、…、MV−1)と表され、この演算結果がマスク値の全ビットの影響をうけて予測のつかない変化をする場合、この演算結果からマスク値の除去は困難である。従って、F’(K、M、M、…、MV−1)で示される鍵攪拌結果は、マスク値の影響を受けず、秘密鍵K、攪拌値Cの影響のみを受けて変化する。鍵攪拌関数F’の逆関数は、F’−1(K、M、M、…、MV−1)で表される。更新されたマスク値M、M、…、MV−1の影響を受けて、マスクされた秘密鍵K☆Mが出力される。
そこで、鍵攪拌処理内部で用いられるマスク生成関数(MGF)を作用する処理の前段に「MGF事前複雑化」という処理を追加する。MGF事前複雑化処理は、秘密鍵K、攪拌値Cで決まるビット転置処理である。
図20は、マスク生成関数MGFを用いるMGF事前複雑化処理部を含む、鍵に対する動的な攪拌処理を行う鍵攪拌処理部の機能ブロック図である。
入力セット4100がMGF事前複雑化処理部4102に入力され、MGF事前複雑化処理結果P(K、C)4104が出力される。そして、MGF事前複雑化処理結果P(K、C)4104がマスク生成関数(MGF)作用部4106に入力される。
MGF事前複雑化処理への入出力は、次のようである。
入力:マスクされた秘密鍵K☆M、V個のマスク値M、M、…、MV−1、攪拌値C
出力:MGF事前複雑化処理結果P(K、C)
MGF事前複雑化処理に対して要求される条件は次のような条件である。
(複雑化1)マスク値M、M、…、MV−1の個数Vが(条件1)と(条件2)に現れるQより大きい
(複雑化2)P(K、C)の値から、攪拌値Cを知っていても入力の値Kを求めることができない
上記の(複雑化1)と(複雑化2)の条件を満たすとき、MGF事前複雑化処理結果P(K、C)はマスク値の影響を受けず、攪拌値Cを知っていても、P(K、C)から秘密鍵Kを求めるのは困難となる。
揮発性回路へのプローブ攻撃としては、入力側へのプローブ攻撃と、出力側へのプローブ攻撃が考えられる。入力側に対しては、秘密鍵KはV個のマスク値M、M、…、MV−1でマスクされているため、Vが(条件1)と(条件2)のQを超えるように設定することで安全となる。出力側へのプローブ攻撃は、P(K、C)の値から、攪拌値Cを知っていても入力の値Kを求めることができない性質を有することで、安全となる。
図21は、マスク生成関数MGFを用いるMGF事前複雑化処理部を含む、鍵に対する動的な攪拌処理を行う鍵攪拌処理部の第1の構成を示す図である。
図21に示されている構成では、入力セット4200がMGF事前複雑化処理部4202に入力され、MGF事前複雑化処理結果P(K、C)4204が出力される。そして、MGF事前複雑化処理結果P(K、C)4204がマスク生成関数(MGF)作用部4206に入力される。
MGF事前複雑化処理部4202では、最初に、マスクされた秘密鍵K☆Mと攪拌値Cの排他的論理和(XOR)を演算する。その後、マスク値M=M☆M☆…☆MV−1の影響を除去するために、M、M、…、MV−1の順に排他的論理和(XOR)の演算を繰り返す。最終的に出力K☆Cを得る。
しかし、攪拌値Cを知っていれば、P(K、C)=K☆Cの値か秘密鍵Kを算出することは可能である。よって、図21に示されている構造は、上記の(複雑化2)の条件を満たさない。
図22は、マスク生成関数MGFを用いるMGF事前複雑化処理部を含む、鍵に対する動的な攪拌処理を行う鍵攪拌処理部の第2の構成を示す図である。図22に示されている鍵攪拌処理部では、図21に示されている鍵攪拌処理部の構成に、さらに行列演算による改良が加えられている。
図22に示されている構成では、入力セット4300がMGF事前複雑化処理部4302に入力され、MGF事前複雑化処理結果P(K、C)4304が出力される。そして、MGF事前複雑化処理結果P(K、C)4304がマスク生成関数(MGF)作用部4306に入力される。
MGF事前複雑化処理部4302では、最初に、マスクされた秘密鍵K☆Mと攪拌値Cの排他的論理和(XOR)を演算する。その後、マスク値M=M☆M☆…☆MV−1の影響を除去するために、M、M、…、MV−1の順に排他的論理和(XOR)の演算を繰り返す。ただし、全てのXOR演算の前に、行列Bを作用させてからXOR演算を実行することで、複雑度を高める。例えば、図21のMGF事前複雑化処理部4202ではK☆M☆Mと演算するステージで、MGF事前複雑化処理部4302では、B(K☆M)☆B(M)を演算する。MGF事前複雑化処理部4302の最終的な演算結果はP(K、C)=B(K☆C)となる。
しかし、この行列演算はXOR演算に関する線形性を有する。すなわち、
P(K、C)=B(K☆C)=B(K)☆B(C)
が成立する。
攪拌値Cから値B(C)を求めることは容易であるので、攻撃者はP(K、C)にプローブ攻撃を行うことで、B(K)の値を求めることが出来る。
また、行列Bを求めることは攻撃者にとって難しくないので、行列Bの逆行列を用いることでB(K)から秘密鍵Kを計算することも可能である。よって、図22に示されている構造は、上記の(複雑化2)の条件を満たさない。したがって、図22に示されている構造は、前述の(条件1)(条件2)を満足しない。
図23、24を参照して、(条件1)(条件2)(条件3)を同時に満足することの困難さを説明する。
図23は、マスク生成関数MGFを用いるMGF事前複雑化処理を含む、鍵に対する動的な攪拌処理を行う鍵攪拌処理部に対するプローブ攻撃の概略を示す図である。図24は、マスク生成関数MGFを用いるMGF事前複雑化処理を含む、鍵に対する動的な攪拌処理を行う鍵攪拌処理部に対するプローブ攻撃の概略を示す図である。
図23、24に示されるとおり、図21や図22に示したXOR演算や行列を用いた、定式化が容易な演算を用いた構成では、演算結果の線形性などの関係を利用することができるため、マスク値の影響を容易に除去することができ、(条件3)を満足することができる。しかし、MGF事前複雑化処理の入力と出力の関係は、攻撃者により簡単に定式化することができるため出力から入力を求めることが容易であり、(条件1)(条件2)を満足することができない。つまり、図23に示されているMGF事前複雑化処理では、図24に示されているように、入力と出力の関係式が確定的であり、攻撃されやすい。
一方、ハッシュ関数等の定式化が難しい処理をMGF事前複雑化処理として用いた場合、出力から入力を求めることが難しいため、(条件1)(条件2)を満足することは可能であるが、マスク値の影響の除去が困難となり、(条件3)を満足することができない。
従って、マスク値の影響を除去することと、出力から入力を求めることができない性質の、両立することが難しい性質を同時に満たすことが、MGF事前複雑化処理に求められる。
図25a〜25bは、マスク生成関数MGFを用いるMGF事前複雑化処理を含む、鍵に対する動的な攪拌処理の原理を説明する図である。
図25a〜25bに示されている原理では、秘密鍵Kや攪拌値Cの値に応じたビット転置処理を実行する。入力に対する出力の関係は、秘密鍵Kや攪拌値Cのビット値のとりうる指数的なパターン数に応じて変化するため、攻撃者は秘密鍵Kの全ビット値を知らない限り、入力に対する出力の関係を特定できないため、安全となる。また、ビット転置は、定式が難しく、攻撃を抑制できるという利点がある。
図25a〜25bに示した基本アイデアを実現するためには、ビット転置処理の結果を、秘密鍵Kや攪拌値Cの値に応じさせる必要があるが、マスク値に応じさせてはいけないという制約がある。
そこで、MGF事前複雑化処理において、以下で説明する「スワッピングボックス(Swapping Box)」という回路を用いる。
図26〜29は、スワッピングボックスの構成と性質を説明する図である。
図26は、スワッピングボックスの性質を示す図である。図27は、1ビットスワッピングボックス4600の構成の例を示す図である。図28aは、1ビットスワッピングボックス4700の動作の例を示す図である。図28bは、1ビットスワッピングボックス4702の動作の例を示す図である。図28cは、1ビットスワッピングボックス4706、4708から構成される多段1ビットスワッピングボックスの動作の例を示す図である。図28dは、1ビットスワッピングボックス4710、4712から構成される多段1ビットスワッピングボックスの動作の例を示す図である。図29は、2ビットスワッピングボックス4800の構成の例を示す図である。
スワッピングボックスは、セレクタ信号に応じてビット転置を行う回路である。そして、次のような性質を有する。
(スワッピングボックス1)多数のスワッピングボックスを直列に繋いだ場合のビット転置の結果と、1個のスワッピングボックスのセレクタ信号に対して前述のスワッピングボックスの各セレクタ信号の全ての値をXOR演算した値を入力した結果が同じ。
例えば、図26に示すように、(V+1)個のスワッピングボックスを直列につなぎ、それぞれに対してK☆M、M、M、…、MV−1をセレクト信号として与えた場合のビット転置の結果は、1個のスワッピングボックスに対してK☆M☆M☆ …☆MV−1をセレクト信号として与えた場合と同じである。さらに、M☆M☆ …☆MV−1=0を考慮すると、1個のスワッピングボックスに対してKをセレクト信号として与えた場合と同じである。すなわち、秘密鍵Kに関するマスクを消去しつつ、秘密鍵Kに応じたビット転置を実現することができる。
スワッピングボックスに入力するセレクト信号のビット長がTビットであるとき、スワッピングボックスは、「Tビットスワッピングボックス」と呼ばれる。
図27は、1ビットスワッピングボックス4600の構成の例を示す図である。
図28aは、1ビットスワッピングボックスの動作の例を示す図であり、図28bは、1ビットスワッピングボックス4700、4702の動作の例を示す図である。
1ビットスワッピングボックスは、2つの入力a、bを受け取り、出力としてX,Yを返す。1ビットセレクト信号が0ならビット転置を行わず、出力として、X=a、Y=bを出力し、1ビットセレクト信号が1ならばビット転置を行った結果であるX=b、Y=aを出力する。つまり、1ビットスワッピングボックスは次のような動作を行う。
セレクト信号が「0」の場合:ビット転置を実行しない。
セレクト信号が「1」の場合:ビット転置を実行する。
これは、x☆yで示される1ビット値x、yのXOR演算、すなわち
y=0の場合:xの値をビット反転させない
y=1の場合:xの値をビット反転する
と類似している。
すなわち、セレクト信号がXOR演算と同等の性質を有しているため、図30に示されているように、多段スワッピングボックスのビット転置結果は、セレクト信号をXOR演算した1個のスワッピングボックスの転置結果と等価となる。
図29は、2ビットスワッピングボックスの構成の例を示す図である。
2つの入力a、b、c、dを受け取り、出力としてX、Y、Z、Wを返す。2ビットセレクト信号sel[1]、sel[0]のうち、sel[1]が「1」ならば、1段目のセレクト回路にてa、bとc、dのビット転置を行い、sel[1]が「0」なら行わない。sel[1]=0ならば、この1段目のセレクト回路の処理結果のうち、a、bのペアを2段目のセレクト回路の上位側に、c、dのペアを2段目のセレクト回路の下位側に入力する。sel[1]=1ならば、c、dのペアを2段目のセレクト回路の上位側に、a、bのペアを2段目のセレクト回路の下位側に入力する。sel[0]が「1」ならば、a、bとc、dのそれぞれのペアのビット位置を入れ替えるビット転置を行い、sel[0]が「0」ならば何もしない。このような構成を用いることで、セレクト信号が2ビットである場合でも、多段スワッピングボックスのビット転置結果は、セレクト信号をXOR演算した1個のスワッピングボックスの転置結果と等価となる。
同様の拡張を行うことで、任意のTビットスワッピングボックスは容易に構成することができ、多段スワッピングボックスのビット転置結果は、セレクト信号をXOR演算した1個のスワッピングボックスの転置結果と等価となる。すなわち、鍵の値に応じたビット転置を行いつつ、鍵マスクの消去を行うことができるので、(条件1)(条件2)(条件3)を同時に満足することができる。
しかしながら、図29に示されているように、Tビットスワッピングボックスの回路規模は、T×2(T−1)に比例するため、セレクト信号のビット長を大きくすることは容易でないことがある。
図30は、多段Tビットスワッピングボックスの構成の例を示す図である。
図30に示した構成を用いて、秘密鍵Kの部分的なTビットの値に応じたビット転置を複数回繰り返すことで、秘密鍵Kの全ビット値に応じたビット転置を実現する。
すなわち、秘密鍵Kをn個のTビット部分鍵K=k[nT−1:nT−T]||…||k[2T−1:T]||…||[T−1:0]に分割し、Tビット部分鍵k[T×i+T−1:T×i]を用いた多段スワッピングボックスのビット転置処理をn回繰り返すことで、秘密鍵Kの全ビットの影響を受けるスワッピングボックスの処理を実現する。n回繰り返えされる多段スワッピングボックスの後処理として、図30に示される通り、線形フィードバック処理が行われる。この処理がないと、多スワッピングボックスをn回繰り返した結果が、Tビット部分鍵のXOR演算結果k[nT−1:nT−T] ☆…☆k[2T−1:T]☆k[T−1:0]に応じたビット転置処理を行うので、ビット転置結果の取りうるパターン数が2Tに限定される。例えばT=4の場合、高々24=16パターンでしかないので、攻撃が容易となる。よって、ビット転置結果をKの取りうる値に応じて指数的に増加させるためには、多段スワッピングボックスの後処理には線形フィードバック処理を行う必要がある。
図26〜30に示したスワッピングボックスへの入力(たとえばa、b、c、d)は、定数であっても、攪拌値であっても、マスクされた秘密鍵K☆Mであってもよい。マスクされた秘密鍵の場合、マスクの影響を消去する必要があるが、このマスクの消去は容易である。
図31は、多段Tビットスワッピングボックスの性質を示す図である。
数個の入力をスワッピングボックスに与え全ての出力をXOR演算した結果は、これら複数個の入力全てをXOR演算した値をスワッピングボックスに与えた場合の出力と同一となるからである。ただし、このときスワッピングボックスに与えるセレクト信号は、複数個の入力で同一である必要がある。
つまり、マスクされた秘密鍵K☆Mをスワッピングボックスに入力した場合のスワッピングボックス処理結果と、M、M、…、MV−1を入力した場合のそれぞれのスワッピングボックス処理結果をXOR演算した結果は、秘密鍵Kをスワッピングボックスに与えた場合の出力と同一となる。
図26〜29に示したスワッピングボックスのほかにも、スワッピングボックスに構成例は存在する。構成例を図32〜33に示す。
図32は、加算スワッピングボックスの性質を示す図である。図33は、Tビットスワッピングボックスの性質を示す図である。
図32〜33に示されているスワッピングボックスは、次のような性質を有する。
(スワッピングボックス2)多数のスワッピングボックスを直列に繋いだ場合のビット転置の結果と、1個のスワッピングボックスのセレクタ信号に対して前述のスワッピングボックスの各セレクタ信号の全ての値を加算した値を入力した結果が同じとなる。
例えば、図32に示すように、(V+1)個のスワッピングボックスを直列につなぎ、それぞれに対してK☆M、M、M、…、MV−1をセレクト信号として与えた場合のビット転置の結果は、1個のスワッピングボックスに対してK☆M☆M☆M☆…☆MV−1をセレクト信号として与えた場合と同じである。さらに、M=M☆M☆…☆MV−1となるようマスク値の関係を調整することで、1個のスワッピングボックスに対してKをセレクト信号として与えた場合と同じである。すなわち、鍵Kに関するマスクを消去しつつ、鍵Kに応じたビット転置を実現することができる。このような性質を持つスワッピングボックスは、図33に示すように、セレクト信号の値をシフトビット数として用いる巡回シフト回路によって実現することができる。データzをxビット巡回シフトさせた結果に対しさらにyビット巡回シフトさせた結果と、データzをx+yビット巡回シフトさせた結果は明らかに同一であるので、多段スワッピングボックスのビット転置結果は、多段スワッピングボックスへの全てのセレクト信号を加算させた1回のスワッピングボックスのビット転置結果と同一となる。
<第1実施例>
実施例は、(i)不揮発性回路に対するプローブ攻撃対策の種別と、(ii)揮発性回路に対するプローブ攻撃対策の種別、(iii)秘密鍵へのマスク演算の種別、の3つの組み合わせから構成される。以下では、この組み合わせに応じた5つの実施例を述べる。しかしながら(i)不揮発性回路に対するプローブ攻撃対策の種別と、(ii)揮発性回路に対するプローブ攻撃対策の種別、(iii)秘密鍵へのマスク演算の種別の組み合わせは、以下の実施例に限定されない。
実施例1は、以下の組み合わせによる実施例である。
(i)不揮発性回路に対するプローブ攻撃対策:図15の構成を利用
(ii)揮発性回路に対するプローブ攻撃対策:図30のスワッピングボックスを利用
(iii)秘密鍵へのマスク演算の種別:XOR演算
図34は、第1の実施例の全体の構成の例を示す図である。
図34において、128ビット秘密鍵Kは上位の64ビットであるKHと下位64ビットであるKに分割されており、それぞれ16ビットマスク値Mによってマスク化されたデータK☆(M||M||M||M)、K☆(M||M||M||M)として64ビットレジスタ7001、7004に格納される。また、128ビット攪拌値Cは上位の64ビットであるCと下位64ビットであるCに分割され、それぞれ64ビットレジスタ7002、7005に格納されている。
マスク値Mは直接レジスタに格納されないが、M☆M☆…☆M15=Mを満たすMi(iは0から15までの整数)がそれぞれ16ビットレジスタ7009〜7024に格納される。16ビットレジスタ7009〜7024は更新部7009〜7024としても機能する。これらの値から、鍵攪拌関数F(K、C)を作用させる処理が行われた結果が、2つの128ビット不揮発性レジスタ7201、7202に格納され、これら2つの値を入力としてXOR演算をした結果を128ビット攪拌鍵として利用する。
鍵攪拌関数F(K、C)の値を計算するまでには、MGF事前複雑化処理部7101、7104、MGF作用部7102、7105、XORゲート7103、7106で処理が行われる。MGF事前複雑化処理部7101には、K☆(M||M||M||M)と128ビット攪拌値Cの下位64ビットであるCのビット結合値と、Mi(iは0から15までの整数)が入力され、前述のMGF事前複雑化処理が行われる。その結果は、MGF作用部7102に入力される。MGF事前複雑化処理部7101、7104では、処理の結果がMi(iは0から15までの整数)の値の影響を受けないように処理される。ただし、XORゲート7103、7106の出力は、レジスタ7002、7005の影響を受けるので、マスク値Mの影響を受けている。この影響を取り除くために、XORゲート7103、7106の出力は、アンマスク処理部7107に入力され、アンマスク処理が施される。アンマスク処理は、M、…、M15を受け取り、順次XOR演算を行うことで、マスク値Mの影響を取り除く。この結果、不揮発性フリップフロップ7201、7202に格納される値は、マスク値Mの影響を受けない。
鍵攪拌関数F(K、C)計算が完了すると、次の鍵攪拌処理を実行するために、攪拌値Cとマスク値Mi(iは0から15までの整数)の更新処理が行われる。攪拌値Cの上位の64ビットCの更新は更新部7003で、下位64ビットCの更新は更新部7006で実行される。また、マスク値Mi(iは0から15までの整数)の更新は、更新部7009〜7024で実行される。
攪拌値Cとマスク値Mi(iは0から15までの整数)が更新されたら、レジスタ7001、7004に格納されているマスク化されたデータK☆(M||M||M||M)、K☆(M||M||M||M)を更新するために、攪拌関数F(K、C)の逆関数である逆攪拌関数F−1(K、C)の演算を行う。
まず、マスク化処理部7301で、更新されたマスク値Mi(iは0から15までの整数)を用いて、不揮発性フリップフロップ7201、7202に格納される値のマスク化を行う。この処理は、不揮発性フリップフロップ7201、7202に格納される値K||C☆MGF(K||C☆MGF(K||C))、K||C☆MGF(K||C)に、更新されたマスク値Miを順次、XOR演算を作用させることで実行される。
逆攪拌関数F−1(K、C)の演算のためには、MGF事前複雑化処理部7303、7306、MGF事前複雑化処理部7302、7305、XORゲート7304、7307で処理が行われる。
MGF事前複雑化処理部7302には、不揮発性フリップフロップ7202の出力K||C☆MGF(KL||CL☆MGF(KH||CH))と更新されたマスク値Miが入力される。MGF事前複雑化処理部7302の出力は、MGF作用部7303に入力される。
XORゲート7304では、不揮発性フリップフロップ7201の出力KH||C☆MGF(KL||CL☆MGF(K||C))とMGF作用部7303の出力が入力され、XOR演算を実行する。XORゲート7304の128ビット出力の上位64ビットは、64ビットレジスタ7001に新しい値として格納される。
MGF事前複雑化処理部7305には、不揮発性フリップフロップ7201の出力K||C☆MGF(KL||CL☆MGF(K||C))と更新されたマスク値Miが入力される。MGF事前複雑化処理部7305の出力は、MGF作用部7306に入力される。MGF作用部7306の出力はXORゲート7307で、KL||CL☆MGF(K||C)をマスク化処理部7301に入力して得られる128ビット出力値と、MGF作用部7306の128ビット出力値のXOR演算を行う。XORゲート7307の128ビット出力の上位64ビットは、64ビットレジスタ7005に新しい値として格納される。
以上の処理により、F−1(K、C)の演算処理が完了する。
逆攪拌関数F−1(K、C)の演算処理によるトレジスタ7001、7005に格納される値の更新が終わると、再び鍵攪拌関数F(K、C)を計算し、不揮発性フリップフロップ7201、7202に格納される値の更新を行う。そして、F−1(K、C)の演算処理によってレジスタ7001、7004に格納される値の更新を、認証チップの電源が入っている間、繰り返す。
切り替え器7007、7008は、攪拌値を内部レジスタと外部入力から切り替える処理を行う。
図35は、第1の実施例におけるMGF事前複雑化処理部7400の構成の例を示す図である。図35に示されている構成は、図34のMGF事前複雑化処理部7101、7104、7302、7305に適用され得る。
MGF事前複雑化処理部7400の端子7402には、マスク化された128ビットデータX☆Mと16個の16ビットマスク値Mi(iは0から15までの整数)が入力される。端子7401には、例えば、128ビットの定数Cが入力される。端子7401は補助入力端子である。
MGF事前複雑化処理部7400では、これらの入力からMGF事前複雑化処理を実行し、128ビット出力を生成する。この出力は、出力端子7480から取り出すことができる。
入力端子7402に入力された128ビットのデータXは上位64ビットXHと下位64ビットXLに分割され、XORゲート7419でこれらのXOR演算が実行される。得られた64ビット値はさらに16個の4ビット値に分割されて切り替え器7420に入力される。切り替え器7420の出力は、4ビットスワッピングボックス7439、7461に入力される。4ビットスワッピングボックス7439は直列に繋がれた16個の4ビットスワッピングボックス7439〜7455と16ビット線形帰還シフトレジスタ(LFSR)7456から構成されるビット転置処理部の端のものである。各スワッピングボックス7439〜7455では、ビット転置処理が行われる。切り替え器7420はスワッピングボックスを選択するための適切なセレクト信号を与え、16回の繰り返しのビット転置処理が首尾よく実行されるようにする。
端子7403〜7418に入力される16個の16ビットマスク値Mi(iは0から15までの整数)の各々も、4ビット値に分割されて16個の切り替え器7422〜7437に入力される。これらの切り替え器は直列に繋がれた4ビットスワッピングボックス7439〜7455と16ビット線形帰還シフトレジスタ(LFSR)7456を用いてビット転置処理を16回繰り返す処理において、16回の繰り返しのビット転置処理が首尾よく実行されるようにスワッピングボックスを選択するためのセレクト信号を出力する。
4ビットスワッピングボックス7439〜7455では、ビット転置処理を16回繰り返す処理が実行される。
端子7401に入力された128ビット定数Cは、16ビットごとに8分割され、切り替え器7438、7460を含む8つの切り替え器に入力される。つまり定数Cは、C=C0||C1||…||C7と書くことができる。これら8個の16ビットの値C0、C1、…、C7は、8系列実行される、ビット転置処理の初期値として入力される。
切り替え器7420に接続されている8個の4ビットスワッピングボックス(たとえば、4ビットスワッピングボックス7439、7461)では、切り替え器7420の出力をセレクト信号としたビット転置が行われる。切り替え器7420のセレクト信号は、マスク値の影響を受けているため、切り替え器7420に接続されている8個の4ビットスワッピングボックスの出力もマスク値Mの影響を受ける。4ビットスワッピングボックス7439〜7455、7461〜7476を含む8系列の16段4ビットスワッピングボックスは、16個の16ビットマスク値Mi(iは0から15までの整数)から生成された信号をセレクト信号とするので、マスク値Mの影響を消去することができる。
これら8系列の16段4ビットスワッピングボックスと16ビット線形帰還シフトレジスタ(LFSR)を含むビット転置処理部の処理を16回繰り返し、8系列の各16ビットを結合した出力値として、端子7403に入力された128ビットデータXの影響を受け、かつマスク値Mの影響を受けない値を得ることができる。
図36は第1の実施例におけるマスク処理部、アンマスク処理部の構成の例を示す図である。
本例では、マスク処理部、アンマスク処理部の構成は共通化されている。
マスク処理部/アンマスク処理部は、入力端子7501〜7516、7551、7552に入力される16個の16ビットマスク値M、M、…、M15と、2つの128ビット値入力値x、yを用いて、出力端子7561、7562から出力される2つの128ビット値出力値X、Yを生成する。
16個の16ビットマスク値M、M、…、M15は、ビット結合によってMi||Mi||Mi||Mi(iは0から15までの整数)で表される64ビット値に変換される。そして、2つの128ビット値入力値x、yの上位64ビットに対し、M0、M1、…、M15の順にXOR演算を作用される。このXOR演算の結果と、128ビット値入力値x、yの下位64ビットを結合し、128ビット出力X、Yを得る。
<第2実施例>
第2実施例は、以下の組み合わせによる実施例である。
(i)不揮発性回路に対するプローブ攻撃対策:図15の構成を利用
(ii)揮発性回路に対するプローブ攻撃対策:図31のスワッピングボックスを利用
(iii)秘密鍵へのマスク演算の種別:XOR演算
第2実施例が第1実施例と異なる点は、スワッピングボックスの構成が図30の構成ではなく図31に示されている構成であることである。これにより、図35に示したMGF事前複雑化の処理構成が変化する。
第2実施例の全体の構成は図34に、マスク処理部、アンマスク処理部の構成は図36に示されており、第1実施例と同一である。
図37は、第2の実施例におけるMGF事前複雑化処理部の構成の例を示す図である。
図37に示されているMGF事前複雑化処理全体7600に対して、マスク化された128ビットデータが入力端子7602から、16個の16ビットマスク値M0、M1、…、M15が入力端子7603、7604を含む16個の端子から入力される。端子7601は補助入力端子である。
乱数発生器7605は128ビット乱数を生成する。
端子7601には、128ビット定数が入力される。これらの入力から、128ビットの出力値が生成され、出力値は出力端子7608から取り出すことができる。
MGF事前複雑化処理全体7600は、2つのモジュール7700、7800を含む。モジュール7700は入力端子7701〜7718を、モジュール7800は入力端子7801〜7818を含む。モジュール7700の入力端子7701およびモジュール7800の入力端子7802には、乱数発生器7605の出力が入力される。モジュール7700の入力端子7702およびモジュール7800の入力端子7802には入力端子780には入力端子7602に入力されたマスク化された128ビットデータが入力される。モジュール7700の16個の入力端子7703〜7718およびモジュール7800の16個の入力端子7803〜7818には、16個の16ビットマスク値M、M、…、M15が入力される。
また、乱数発生器7605で発生した乱数と、入力端子7602に入力されたマスク化された128ビットデータはXORゲート7606でXOR演算が施され、XORゲート7606の128ビット出力値はモジュール7800の入力端子7801に入力される。
モジュール7700とモジュール7800の出力は、XORゲート7608に入力され、XORゲート7608ではXOR演算が実行される。XORゲート7608の出力は、出力端子7608から取り出すことができる。
図37は、論理的には図35と等価であるが、乱数発生器7605で発生した乱数の効果により、モジュール7700、7800の内部におけるスワッピングボックスへの入力値がランダム化されるので、プローブ攻撃への耐性を高めることができる。
<第3の実施例>
第3の実施例は、以下の組み合わせによる実施例である。
(i)不揮発性回路に対するプローブ攻撃対策:図15の構成を利用
(ii)揮発性回路に対するプローブ攻撃対策:図30のスワッピングボックスを利用
(iii)秘密鍵へのマスク演算の種別:加算
実施例1との違いは、秘密鍵のマスク演算をXOR演算から加算に置き換えたことである。これにより、図34に示した全体構造、図35に示したMGF事前複雑化の処理構成、図36に示したマスク処理部、アンマスク処理部の構成が変化する。基本的な構造は同一であるが、一部の演算はXOR演算から加算または減算に置き換えられる。
図38は、第3の実施例の全体の構成の例を示す図である。
図38は、基本的な構造は図34と同一であるが、秘密鍵のマスク処理がXOR演算を用いるものから加算を用いるものに置き換わっている。そのため、一部のXOR演算が加算および減算に置き換わっている。また、秘密鍵のマスク値Mを4ビットを単位に扱うため、16分割されたマスク値Mi(iは0から15までの整数)の各々も4ビットである。
図38において、128ビット秘密鍵Kは上位の64ビットであるKと下位64ビットであるKに分割され、上位の64ビットであるKと下位64ビットであるKはさらにそれぞれ、4ビットごとに16個のKH、0、KH、1、…、KH、15およびKL、0、KL、1、…、KL、15に分割される。64ビットレジスタ7901、7904にはそれぞれ、4ビットマスク値Mに対して加算マスク化されたデータ(KH、15☆M)||(KH、14☆M)||…||(KH、0☆M)、(KL、15☆M)||(KL、14☆M)||…||(KL、0☆M)が格納される。
128ビット攪拌値Cは、上位64ビットCHと下位64ビットCLに分割され、それぞれ64ビットレジスタ7902、7905に格納される。
マスク値Mは直接レジスタに格納されないが、M☆M☆…☆M15=Mを満たすMi(iは0から15までの整数)がそれぞれ16ビットレジスタ7909〜7924に格納される。16ビットレジスタ7909〜7924は更新部7909〜7924としても機能する。これらの値から、鍵攪拌関数F(K、C)を作用させる処理が行われた結果が、2つの128ビット不揮発性レジスタ8101、8102に格納され、これら2つの値を入力としてXOR演算をした結果を128ビット攪拌鍵として利用する。
鍵攪拌関数F(K、C)の値を計算するまでには、MGF事前複雑化処理部8001、8004、MGF作用部8002、8005、加算ゲート8003、8006で処理が行われる。MGF事前複雑化処理部8001には、64ビットレジスタ7901に格納されている(KH、15☆M)||…||(KH、0☆M)と64ビットレジスタ7902に格納されている128ビット攪拌値Cの上位64ビットであるCHのビット結合値と、Mi(iは0から15までの整数)が入力され、前述のMGF事前複雑化処理が行われる。その結果は、MGF作用部8002に入力される。MGF事前複雑化処理部8001、8004では、処理の結果がMi(iは0から15までの整数)の値の影響を受けないように処理される。加算ゲート8003では、MGF作用部8002の出力と、64ビットレジスタ7904に格納されている(KL、15☆M)||…||(KL、0☆M)と64ビットレジスタ7902に格納されている128ビット攪拌値Cの下位64ビットであるCLのビット結合値との加算演算が行われる。加算ゲート8003の出力は、アンマスク処理部8007に入力される。
また、加算ゲート8003の出力は、MGF事前複雑化処理部8004でMGF事前複雑化処理が行われ、MGF作用部8005でMGFが作用される。MGF作用部8005の出力は加算ゲート8006で、64ビットレジスタ7901に格納されている(KH、15☆M)||…||(KH、0☆M)と64ビットレジスタ7902に格納されている128ビット攪拌値Cの上位64ビットであるCHのビット結合値と、加算される。加算ゲート8003、8006の出力はそれぞれ、アンマスク処理部8007への128ビット入力となる。アンマスク処理部8007では、入力に対するアンマスク処理が行われ、マスク化された鍵の値の影響を、減算によって取り除く処理を行う。この結果、不揮発性フリップフロップ8101、8102に格納される値は、マスク値Mの影響を受けない。以上により鍵攪拌関数F(K、C)の値の計算が完了する。
鍵攪拌関数F(K、C)の値の計算が完了した後は、次の鍵攪拌処理を実行するために、攪拌値Cとマスク値KH、0、KH、1、…、KH、15、KL、0、KL、1、…、KL、15の更新処理が行われる。攪拌値Cの上位の64ビットCHの更新は更新部7903で、下位64ビットCLの更新は更新部7906で実行される。また、マスク値KH、0、KH、1、…、KH、15、KL、0、KL、1、…、KL、15の更新は、更新部7909〜7924で実行される。
攪拌値Cとマスク値KH、0、KH、1、…、KH、15、KL、0、KL、1、…、KL、15が更新されたら、(KH、15☆M)||…||(KH、0☆M)および(KL、15☆M)||…||(KL、0☆M)を計算し、レジスタ7901、7904に格納するために、攪拌関数F(K、C)の逆関数である逆攪拌関数F−1(K、C)の演算を行う。
まず、マスク化処理部8201で、更新されたマスク値Mi(iは0から15までの整数)を用いて、不揮発性フリップフロップ8101、8102に格納される値のマスク化を行う。この処理は、不揮発性フリップフロップ8101、8102に格納される値K||C☆MGF(KL||CL☆MGF(K||C))、KL||CL☆MGF(K||C)に、更新されたマスク値Miを順次、加算演算を作用させることで実行される。
逆攪拌関数F−1(K、C)の演算のためには、MGF事前複雑化処理部8203、8206、MGF事前複雑化処理部8202、8205、加算ゲート8204、8207で処理が行われる。
MGF事前複雑化処理部8202には、不揮発性フリップフロップ8102の出力K||C☆MGF(KL||CL☆MGF(K||C))と更新されたマスク値Miが入力される。MGF事前複雑化処理部8202の出力は、MGF作用部8203に入力される。
加算ゲート8204では、不揮発性フリップフロップ8101の出力K||C☆MGF(KL||CL ☆MGF(K||C))とMGF作用部8203の出力が入力され、加算演算を実行する。加算ゲート8204の128ビット出力の上位64ビットは、64ビットレジス7901に新しい値として格納される。
MGF事前複雑化処理部8205には、不揮発性フリップフロップ8101の出力K||C☆MGF(KL||CL ☆MGF(K||C))と更新されたマスク値Miが入力される。MGF事前複雑化処理部8205の出力は、MGF作用部8206に入力される。MGF作用部8206の出力は加算ゲート8207で、KL||CL ☆MGF(K||C)をマスク化処理部8201に入力して得られる128ビット出力値と、MGF作用部8206の128ビット出力値の加算演算を行う。XORゲート8207の128ビット出力の上位64ビットは、64ビットレジスタ7905に新しい値として格納される。
以上の処理により、逆攪拌関数F−1(K、C)の演算処理が完了する。
逆攪拌関数F−1(K、C)の演算処理によるトレジスタ7901、7905に格納される値の更新が終わると、再び鍵攪拌関数F(K、C)を計算し、不揮発性フリップフロップ8101、8102に格納される値の更新を行う。そして、F−1(K、C)の演算処理によってレジスタ7901、7904に格納される値の更新を、認証チップの電源が入っている間、繰り返す。
切り替え器7907、7908は、攪拌値を内部レジスタと外部入力から切り替える処理を行う。
図39は、第3の実施例におけるMGF事前複雑化処理部の構成の例を示す図である。
MGF事前複雑化処理部8300の端子8302には、マスク化された128ビットデータX☆Mと16個の16ビットマスク値Mi(iは0から15までの整数)が入力される。端子8301には、例えば、128ビットの定数Cが入力される。端子8301は補助入力端子である。
MGF事前複雑化処理部8300では、これらの入力からMGF事前複雑化処理を実行し、128ビット出力を生成する。この出力は、出力端子8360から取り出すことができる。
入力端子8302に入力された128ビットのデータXは上位64ビットXHと下位64ビットXLに分割され、加算ゲート8319でこれらの加算演算が実行される。得られた64ビット値はさらに16個の4ビット値に分割されて切り替え器8320に入力される。切り替え器8320の出力は、4ビットスワッピングボックス8322、8341に入力される。4ビットスワッピングボックス8322は直列に繋がれた16個の4ビットスワッピングボックス8322〜8338と16ビット線形帰還シフトレジスタ(LFSR)8339から構成されるビット転置処理部の端のものである。4ビットスワッピングボックス8322〜8338では、ビット転置処理を16回繰り返す処理が実行される。
各スワッピングボックス8322〜8338では、ビット転置処理が行われる。各スワッピングボックス8322〜8338は、秘密鍵Kの加算マスクに関するスワッピングボックスであるので、4ビットセレクト信号の値だけシフトを行う16ビット巡回シフト回路として実装される。切り替え器8320はスワッピングボックスを選択するための適切なセレクト信号を与え、16回の繰り返しのビット転置処理が首尾よく実行されるようにする。
端子8303〜8318に入力される16個の16ビットマスク値Mi(iは0から15までの整数)の各々も、4ビット値に分割されて16個の切り替え8322〜8338に入力される。これらの切り替え器は直列に繋がれた4ビットスワッピングボックス8322〜8338と16ビット線形帰還シフトレジスタ(LFSR)8339を用いてビット転置処理を16回繰り返す処理において、16回の繰り返しのビット転置処理が首尾よく実行されるようにスワッピングボックスを選択するためのセレクト信号を出力する。
端子8301に入力された128ビット定数Cは、16ビットごとに8分割され、切り替え器8321、8340を含む8つの切り替え器に入力される。つまり定数Cは、C=C||C||…||Cと書くことができる。これら8個の16ビットの値C、C、…、Cは、8系列実行される、ビット転置処理の初期値として入力される。
切り替え器8320に接続されている8個の4ビットスワッピングボックス(たとえば、4ビットスワッピングボックス8322、8341)では、切り替え器8320の出力をセレクト信号としたビット転置が行われる。切り替え器8320のセレクト信号は、マスク値の影響を受けているため、切り替え器8320に接続されている8個の4ビットスワッピングボックスの出力もマスク値Mの影響を受ける。4ビットスワッピングボックス8322〜8338、8341〜8357を含む8系列の16段4ビットスワッピングボックスは、16個の16ビットマスク値Mi(iは0から15までの整数)から生成された信号をセレクト信号とするので、マスク値Mの影響を消去することができる。
これら8系列の16段4ビットスワッピングボックスと16ビット線形帰還シフトレジスタ(LFSR)を含むビット転置処理部の処理を16回繰り返し、8系列の各16ビットを結合した出力値として、端子8302に入力された128ビットデータXの影響を受け、かつマスク値Mの影響を受けない値を得ることができる。
図40は第3の実施例におけるマスク処理部の構成の例を示す図、図41は第3の実施例におけるアンマスク処理部の構成の例を示す図である。
アンマスク処理部8400は、入力端子8401〜8416に入力された16個の4ビットマスク値M、M、…、M15と、入力端子8417、8450に入力される64ビット入力値x、y(xとyのビット結合値x||yを128ビット入力値とも呼ぶ)を受け取り、出力端子8480、8481から128ビット出力値X、Yを出力する。減算器8418〜8449では、入力端子8417に入力される64ビット入力値x、yを4ビットごとに分割した16個の4ビット値x、…x15、y、…y15から4ビットマスク値M、M、…、M15を順次減算する処理を行う。4ビット値x、…x15から4ビットマスク値M、M、…、M15を減算した結果をビット結合して64ビット値としたものと、入力端子8417入力された64ビット入力値xは結合され、出力端子8480から出力される。4ビット値y、…y15から4ビットマスク値M、M、…、M15を減算して得た結果をビット結合して64ビット値としたものと、入力端子8450入力された64ビット入力値yは結合され、出力端子8481から出力される。
図41は、第3の実施例におけるアンマスク処理部の構成の例を示す図である。
マスク処理部8500は、入力端子8501〜8516に入力された16個の4ビットマスク値M、M、…、M15と、入力端子8517、8550に入力される64ビット入力値x、y(xとyのビット結合値x||yを128ビット入力値とも呼ぶ)を受け取り、出力端子8580、8581から128ビット出力値X、Yを出力する。加算器8518〜8549では、入力端子8417に入力される64ビット入力値x、yを4ビットごとに分割した16個の4ビット値x、…x15、y、…y15から4ビットマスク値M、M、…、M15を順次加算する処理を行う。4ビット値x、…x15に4ビットマスク値M、M、…、M15を加算した結果をビット結合して64ビット値としたものと、入力端子8517入力された64ビット入力値xは結合され、出力端子8580から出力される。4ビット値y、…y15に4ビットマスク値M、M、…、M15を加算した結果をビット結合して64ビット値としたものと、入力端子8450入力された64ビット入力値yは結合され、出力端子8581から出力される。
<第4実施例>
実施例4は、以下の組み合わせによる実施例である。
(i)不揮発性回路に対するプローブ攻撃対策:図18の構成を利用
(ii)揮発性回路に対するプローブ攻撃対策:図30のスワッピングボックスを利用
(iii)秘密鍵へのマスク演算の種別:XOR演算
第1実施例との相違点は、不揮発性回路に対するプローブ攻撃対策として、図18の構成を用いていることである。
図42は、第4の実施例の全体の構成の例を示す図である。
図42において、128ビットレジスタ8601に攪拌値Cが格納される。128ビットレジスタ8601には攪拌値Cが格納されている。8603には、マスク化された秘密鍵が格納されている。マスク化された秘密鍵は、128ビットレジスタ16ビットマスク値をMとすると、128ビット秘密鍵Kに対して、16ビットマスク値Mを8個、ビット結合した値K☆(M||…||M)で表される。マスク値Mは直接レジスタに格納されないが、M☆M☆…☆M15=Mを満たすMi(iは0から15までの整数)がそれぞれ16ビットレジスタ8604〜8619に格納される。16ビットレジスタ8604〜8619は更新部8604〜8619としても機能する。これらの値から、鍵攪拌関数F(K、C)を作用させる処理が行われた結果が、2つの128ビット不揮発性レジスタ8901、8902に格納される。
鍵攪拌関数F(K、C)の値を計算するまでには、MGF事前複雑化処理部8704、MGF作用部8701、8703、8706、XORゲート8702、8705、8707で処理が行われる。
128ビットレジスタ8601に格納される攪拌値Cは、MGF作用部8701に入力される。攪拌値Cはマスクの影響を受けないため、MGF事前複雑化処理は不要である。MGF作用部8701の出力と128ビットレジスタ8603からの出力K☆(M||…||M)は、加算器8702で加算処理が行われる。加算器8702の出力は、MGF事前複雑化処理部8704に入力される。MGF事前複雑化処理部8704では、加算器8702の出力から、マスク値Mi(iは0から15までの整数)の値の影響を受けない128ビット値を生成する。この値は秘密鍵Kと攪拌値Cのみに影響をうけ、マスク値Mの影響を受けない。MGF事前複雑化処理部8704の出力はMGF作用部7303に入力され、マスク生成関数MGFが作用される。MGF作用部7303の128ビット出力は、XORゲート8705において、攪拌値CとのXOR演算が実施され、アンマスク処理部8800に入力される。同時に、XORゲート8705の128ビット出力は、MGF作用部730に入力され、その結果はXORゲート8707において、XORゲート8702からの出力とXOR演算が施される。XORゲート8707の128ビット出力は、アンマスク処理部8800に入力される。
アンマスク処理部8800では、2つの128ビット入力値および16個の分割されたマスク値Mi(iは0から15までの整数)を入力とし、XOR演算を用いて2つの128ビット入力値からマスク値Mi(iは0から15までの整数)の影響を取り除いた2つの値を生成する。それら2つの値はそれぞれ、不揮発性レジスタ8901、8902に格納される。不揮発性レジスタ8901、8902に格納された値C☆MGF(K☆MGF(C))、K☆MGF(C)☆MGF(C☆MGF(K☆MGF(C)))は秘密鍵Kおよび攪拌値Cの影響のみを受け、マスク値M(または16ビットマスク値Mi(iは0から15までの整数))の影響を受けない。
以上によりF(K、C)の演算が完了するので、攪拌値Cとマスク値Mの更新処理を行う。攪拌値Cの更新は、更新部8602で、マスク値の更新は更新部8621、8622で行われる。その結果、128ビットレジスタ8601に格納される攪拌値Cと、16個の16ビットレジスタ8604〜8619に格納される16個の16ビットマスク値Mi(iは0から15までの整数)が更新される。
攪拌値Cとマスク値Mの更新処理が終了したら、逆攪拌関数F−1(K、C)の計算処理を行う。まず、マスク処理部9001でマスク処理が行われる。不揮発性レジスタ8901、8902に格納された値C☆MGF(K☆MGF(C))、K☆MGF(C)☆MGF(C☆MGF(K☆MGF(C)))のマスク化処理を、16個の16ビットレジスタ8604〜8619に格納される16個の16ビットマスク値Mi(iは0から15までの整数)を用いて行う。
マスク処理部9001では、不揮発性レジスタ8901に格納された値C☆MGF(K☆MGF(C))はそのまま出力される。また、マスク処理部9001では、不揮発性レジスタ8902に格納された値K☆MGF(C)☆MGF(C☆MGF(K☆MGF(C)))は、16個の16ビットレジスタ8604〜8619に格納される16個の16ビットマスク値Mi(iは0から15までの整数)とのXOR演算が施され、マスク化された値が生成される。
マスク処理部9001の出力の一つである、不揮発性レジスタ8901に格納された値C☆MGF(K☆MGF(C))は、MGF作用部9002に入力される。MGF作用部9002の入力はマスク値の影響を受けていない。MGF作用部9002の出力は、XORゲート9003に入力され、不揮発性レジスタ8902に格納された値K☆MGF(C)☆MGF(C☆MGF(K☆MGF(C)))をマスク化した値とのXOR演算が実行される。XORゲート9003の出力は、MGF事前複雑化処理部9004に入力される。MGF事前複雑化処理部9004の入力は、マスク値の影響を受けているが、出力はマスク値の影響を受けない。MGF事前複雑化処理部9004の出力は、MGF作用部9005に入力され、MGFが作用され、出力される。MGF作用部9005の出力もマスク値の影響を受けない。MGF作用部9005の出力は、XORゲート9006で、マスク処理部9001の出力の一つである、不揮発性レジスタ8901に格納された値C☆MGF(K☆MGF(C))とのXOR演算が実行され、MGF作用部9007に入力され、MGFが作用される。MGF作用部9007の出力は、XORゲート9008で、XORゲート9003の出力とのXOR演算を実行され、その結果は、128ビットレジスタ8603に格納される。
以上の処理により、逆攪拌関数F−1(K、C)の演算処理が完了する。
逆攪拌関数F−1(K、C)の演算処理によるトレジスタ8603に格納される値の更新が終わると、再び鍵攪拌関数F(K、C)を計算し、不揮発性フリップフロップ8901、8902に格納される値の更新を行う。そして、逆攪拌関数F−1(K、C)の演算処理によってレジスタ8603に格納される値の更新を、認証チップの電源が入っている間、繰り返す。
切り替え器8623は、攪拌値を内部レジスタと外部入力から切り替える処理を行う。
図43は、第4の実施例におけるMGF事前複雑化処理部の構成の例を示す図である。
MGF事前複雑化処理部9100の端子9102〜9118には、マスク化された128ビットデータX☆Mと16個の16ビットマスク値Mi(iは0から15までの整数)が入力される。端子9101には、例えば、128ビットの定数Cが入力される。端子9101は補助入力端子である。
MGF事前複雑化処理部9100では、これらの入力からMGF事前複雑化処理を実行し、128ビット出力を生成する。この出力は、出力端子9190から取り出すことができる。
入力端子9102に入力された128ビットのデータXは32個の4ビット値X0、…、X31に分割され、切り替え器9119に入力される。切り替え器9119の出力は、4ビットスワッピングボックス9137から9161を含む16個の4ビットスワッピングボックスに入力される。4ビットスワッピングボックス9137は直列に繋がれた16個の4ビットスワッピングボックス9137〜9153と16ビット線形帰還シフトレジスタ(LFSR)9154から構成されるビット転置処理部の端のものである。16個の4ビットスワッピングボックス9137〜9153ではビット転置処理を32回繰り返す処理が行われる。
4ビットスワッピングボックス9161〜9187を含む8×16個の4ビットスワッピングボックスでは、ビット転置処理が行われる。各スワッピングボックスは、秘密鍵Kのマスクに関するスワッピングボックスであるので、4ビットセレクト信号の値だけシフトを行う16ビット巡回シフト回路として実装される。切り替え器9119はスワッピングボックスを選択するための適切なセレクト信号を与え、32回の繰り返しのビット転置処理が首尾よく実行されるようにする。
端子9102〜9118に入力される16個の16ビットマスク値Mi(iは0から15までの整数)の各々も4ビットごとに分割され、16個の切り替え器9120〜9135に入力される。これらの切り替え器9120〜9135は、4ビットスワッピングボックス9137〜9153、9161〜9187を含む8×16個の4ビットスワッピングボックスおよび16ビット線形帰還シフトレジスタ(LFSR)9154、9188を含む8個の16ビット線形帰還シフトレジスタ(LFSR)を用いて処理されるビット転置処理を32回繰り返す処理が首尾よく実行されるように、8×16個の4ビットスワッピングボックスに対してセレクト信号を送る。
4ビットスワッピングボックス9137〜9153、9161〜9187を含む8×16個の4ビットスワッピングボックスおよび16ビット線形帰還シフトレジスタ(LFSR)9154、9188を含む8個の16ビット線形帰還シフトレジスタ(LFSR)を用いて、ビット転置処理を32回繰り返す処理が行われる。端子9101に入力された128ビット定数Cは、16ビットごとに8分割され、切り替え器7438、7460を含む8つの切り替え器に入力される。つまり定数Cは、C=C||C||…||Cと書くことができる。これら8個の16ビットの値C、C、…、Cは、8個の切り替え器9136〜9160に入力される。
8個の16ビットの値C、C、…、Cが入力される8個の切り替え器9136〜9160の各々接続されている8個の4ビットスワッピングボックス(たとえば、4ビットスワッピングボックス9137、9161)では、切り替え器9119の出力をセレクト信号としたビット転置が行われる。切り替え器9136のセレクト信号は、マスク値の影響を受けているため、切り替え器9136に接続されている8個の4ビットスワッピングボックス9137〜9153の出力もマスク値Mの影響を受ける。4ビットスワッピングボックス9137〜9153、9161〜9187を含む8系列の16段4ビットスワッピングボックスは、16個の16ビットマスク値Mi(iは0から15までの整数)から生成された信号をセレクト信号とするので、マスク値Mの影響を消去することができる。
これら8系列の16段4ビットスワッピングボックスと16ビット線形帰還シフトレジスタ(LFSR)を含むビット転置処理部の処理を32回繰り返し、8系列の各16ビットを結合した出力値として、端子9190に入力された128ビットデータXの影響を受け、かつマスク値Mの影響を受けない値を得ることができる。
図44は、第4の実施例におけるマスク処理部、アンマスク処理部の構成の例を示す図である。
本例では、マスク処理部、アンマスク処理部の構成は共通化されている。
マスク処理部/アンマスク処理部は、入力端子9203〜9219、9201、9202に入力される16個の16ビットマスク値M、M、…、M15と、2つの128ビット値入力値x、yを用いて、出力端子9220、9221から出力される2つの128ビット値出力値X、Yを生成する。
16個の16ビットマスク値M、M、…、M15は、ビット結合によってMi||Mi||Mi||Mi(iは0から15までの整数)で表される128ビット値に変換される。そして、2つの128ビット値に対し、M、M、…、M15の順にXOR演算を作用される。このXOR演算の結果が128ビット出力Yとして出力端子9221から出力される。出力端子9220からは、入力端子9201に入力された128ビット値xが出力Xとして出力される。
<第5の実施例>
実施例5は、以下の組み合わせによる実施例である。
(i)不揮発性回路に対するプローブ攻撃対策:図15の構成を利用
(ii)揮発性回路に対するプローブ攻撃対策:図30のスワッピングボックスを利用
(iii)秘密鍵へのマスク演算の種別:XOR演算
すなわち、基本的な組み合わせは、第1実施例1と同一である。第1実施例と異なる点は、不揮発性レジスタに格納する値もマスク化することである。2つの不揮発性レジスタに格納されている値は、同一の値でマスクされている。これら2つの値をXOR演算を作用して得られる値を攪拌鍵として認証プロトコルに用いることで、マスクの値がキャンセルされ、攪拌鍵はマスク値の影響をうけなくなる。全ての値が常にマスク化されているので、プローブ攻撃に対する耐性をさらに向上させることができる。
ただし、不揮発性レジスタの値をマスク化するため、ただし、不揮発性レジスタの値をマスク化するため、マスク値Mを16分割したM、M、…、M15の保存先を揮発性レジスタから不揮発性レジスタに変更する必要がある。なぜなら、突然の電源断が発生した場合、不揮発性レジスタの値はマスク値の影響を受けたままの値を保持することになる。不揮発性レジスタの値は電源を切った後もマスク値の影響を受けたままであるが、このとき分散されたマスク値M、M、…、M15の保存先を揮発性のレジスタとすると、電源を切った後にこれらのマスク値が消えてしまい、再び電源を入れた後にマスク値が消去されてしまう。
本実施例のように、不揮発性レジスタがマスク値の影響を受ける場合、対応するマスク値も正しい値を保存しておかないと正しい鍵の値を保持できないので、本実施例では、分散されたマスク値M、M、…、M15の保存先を不揮発性レジスタとする。
図45は、第5の実施例の全体の構成の例を示す図である。
図45において、128ビット秘密鍵Kは上位の64ビットであるKと下位64ビットであるKに分割されており、それぞれ16ビットマスク値Mによってマスク化されたデータK☆(M||M||M||M)、K☆(M||M||M||M)として64ビットレジスタ9301、9304に格納される。また、128ビット攪拌値Cは上位の64ビットであるCと下位64ビットであるCに分割され、それぞれ64ビットレジスタ9302、9305に格納されている。
マスク値Mは直接レジスタに格納されないが、M☆M☆…☆M15=Mを満たすMi(iは0から15までの整数)がそれぞれ16ビットレジスタ9401〜9416に格納される。本例で16ビットレジスタ9401〜9416は不揮発性フリップフロップで構成される。16ビットレジスタ9401〜9416は更新部9401〜9416としても機能する。これらの値から、鍵攪拌関数F(K、C)を作用させる処理が行われた結果が、2つの128ビット不揮発性レジスタ9601、9602に格納され、これら2つの値を入力としてXOR演算をした結果を128ビット攪拌鍵として利用する。
鍵攪拌関数F(K、C)の値を計算するまでには、MGF事前複雑化処理部9501、9504、MGF作用部9502、9505、XORゲート9503、9506で処理が行われる。MGF事前複雑化処理部9501には、K☆(M||M||M||M)と128ビット攪拌値Cの下位64ビットであるCLのビット結合値と、Mi(iは0から15までの整数)が入力され、前述のMGF事前複雑化処理が行われる。その結果は、MGF作用部7102に入力される。MGF事前複雑化処理部9501、9504では、処理の結果がMi(iは0から15までの整数)の値の影響を受けないように処理される。ただし、XORゲート9503、9506の出力は、レジスタ9302、9305の影響を受けるので、マスク値Mの影響を受けている。この影響を取り除くために、XORゲート9503、9506の出力は、第1実施例の場合とは異なりアンマスク処理を行わずに、不揮発性フリップフロップ9601、9602に格納される。
不揮発性フリップフロップ9601、9602に格納される値はともに、M||M||M||M||0…0で示される値、すなわち鍵64ビット値がM||M||M||MによるXORマスクの影響をうけ、64ビット攪拌値Cではその影響を受けない。不揮発性フリップフロップ9601、9602の上位64ビットが共に同一の値M||M||M||MのXORマスクの影響を受けるため、不揮発性フリップフロップ9601、9602に格納される値をXOR演算し攪拌鍵を生成することで、これらのマスク値が互いに相殺され、攪拌鍵の値はマスク値の影響をうけなくなる。
鍵攪拌関数F(K、C)計算が完了すると、次の鍵攪拌処理を実行するために、攪拌値Cとマスク値Mi(iは0から15までの整数)の更新処理が行われる。攪拌値Cの上位の64ビットCの更新は更新部9303で、下位64ビットCの更新は更新部9306で実行される。また、マスク値Mi(iは0から15までの整数)の更新は、更新部9401〜9416で実行される。
攪拌値Cとマスク値Mi(iは0から15までの整数)が更新されたら、レジスタ9301、9304に格納されているマスク化されたデータK☆(M||M||M||M)、K☆(M||M||M||M)を更新するために、攪拌関数F(K、C)の逆関数である逆攪拌関数F−1(K、C)の演算を行う。
本例では、不揮発性フリップフロップ9601、9602に格納される値のマスク化は行わない。
逆攪拌関数F−1(K、C)の演算のためには、MGF事前複雑化処理部9701、9704、MGF作用部9702、9705、XORゲート9703、9706で処理が行われる。
MGF事前複雑化処理部9701には、不揮発性フリップフロップ9702の出力K||C☆MGF(KL||CL☆MGF(K||C))と更新部9417、9418を含む8個の更新部で更新された更新されたマスク値Miが入力される。MGF事前複雑化処理部9701の出力は、MGF作用部9702に入力される。MGF作用部9702では、入力に対してMGFが作用され、出力される。
XORゲート9703では、不揮発性フリップフロップ9601の出力(K☆(M||M||M||M))||C☆MGF(KL||CL ☆MGF(K||C))とMGF作用部7302の出力が入力され、XOR演算を実行する。XORゲート9703の128ビット出力の上位64ビットは、64ビットレジスタ9301に新しい値として格納される。
MGF事前複雑化処理部9704には、XORゲート9703の出力と更新部9417、9418を含む8個の更新部で更新されたマスク値Miが入力される。MGF事前複雑化処理部9704の出力は、MGF作用部9705に入力される。MGF作用部9705の出力はXORゲート9706で、(KL☆(M||M||M||M))||CL☆MGF(K||C)と、MGF作用部9705の128ビット出力値のXOR演算を行う。XORゲート9706の128ビット出力の上位64ビットは、64ビットレジスタ9304に新しい値として格納される。
以上の処理により、F−1(K、C)の演算処理が完了する。
−1(K、C)の演算処理によるトレジスタ9301、9305に格納される値の更新が終わると、再び鍵攪拌関数F(K、C)を計算し、不揮発性フリップフロップ9601、9602に格納される値の更新を行う。そして、F−1(K、C)の演算処理によってレジスタ9301、9304に格納される値の更新を、認証チップの電源が入っている間、繰り返す。
切り替え器9307、9308は、攪拌値を内部レジスタと外部入力から切り替える処理を行う。
図46は上記の実施形態の装置を実現可能なハードウェア構成図の例である。
なお、各機能ブロックを、標準的なハードウェア構成のコンピュータを用いて構成することができる。
ここで図46について説明する。図46は、上記実施形態の暗号処理装置に使用可能なコンピュータの一例の構成図である。
このコンピュータ9800は、MPU9801、ROM9802、RAM9803、ハードディスク装置9804、レジスタ9805、不揮発性回路9806、インタフェース装置9807を備えている。なお、これらの構成要素はバスライン9810を介して接続されており、MPU9801の管理の下で各種のデータを相互に授受することができる。
MPU(Micro Processing Unit)9801は、このコンピュータ200全体の動作を制御する演算処理装置であり、コンピュータ9800の制御処理部として機能する。
ROM(Read Only Memory)9802は、所定の基本制御プログラムが予め記録されている読み出し専用半導体メモリである。MPU9801は、この基本制御プログラムをコンピュータ9800の起動時に読み出して実行することにより、このコンピュータ9800の各構成要素の動作制御が可能になる。
RAM(Random Access Memory)9803は、MPU9801が各種の制御プログラムを実行する際に、必要に応じて作業用記憶領域として使用する、随時書き込み読み出し可能な半導体メモリである。
ハードディスク装置9804は、MPU9801によって実行される各種の制御プログラムや各種のデータを記憶しておく記憶装置である。MPU9801、ROM9802、RAM9803、ハードディスク装置9804、レジスタ9805、不揮発性回路9806は制御部を構成し得る。
レジスタ9805、不揮発性回路9806には、秘密鍵K、攪拌値C、マスク値Mなどが格納され得る。例えば、不揮発性回路9806は秘密鍵を格納し、レジスタ9805は攪拌値を格納しても良い。
制御部は、ハードディスク装置9804に記憶されている所定の制御プログラムを読み出してMPU9801で実行することにより、図10〜45を参照しながら説明した前述の各種処理部での各種の処理を行えるようになる。
レジスタ9805、不揮発性回路9806には、秘密鍵K、攪拌値C、マスク値Mなどが格納され得る。例えば、不揮発性回路9806は秘密鍵を格納し、レジスタ9805は攪拌値を格納しても良い。
インタフェース装置9807は、このコンピュータ9800に接続される各種機器との間での各種情報の授受の管理を行う。例えば、本コンピュータ9800が親機である場合には、子機との通信の管理を行う。また本コンピュータ9800が子機である場合には、親機との通信の管理を行う。
インタフェース装置9807は、入力としてチャレンジとしての乱数を受ける受信部、攪拌値とレスポンスを送信する送信部として機能する。
記録媒体駆動装置9808は、可搬型記録媒体9809に記録されている各種の制御プログラムやデータの読み出しを行う装置である。MPU9801は、可搬型記録媒体9809に記録されている所定の制御プログラムを、記録媒体駆動装置9808を介して読み出して実行することによって、後述する各種の制御処理を行うようにすることもできる。なお、可搬型記録媒体9809としては、例えばUSB(Universal Serial Bus)規格のコネクタが備えられているフラッシュメモリ、CD−ROM(Compact Disc Read Only Memory)、DVD−ROM(Digital Versatile Disc Read Only Memory)などがある。
MPU9801、ROM9802、RAM9803、レジスタ9805、不揮発性回路9806は組み合わされて、秘密鍵と攪拌値に攪拌関数を作用させて攪拌された秘密鍵を生成する鍵攪拌部、攪拌された秘密鍵を用いて乱数に暗号化関数を作用させてレスポンスを生成するレスポンス生成部、攪拌値を、更新する攪拌値更新部として機能する。
このようなコンピュータ9800を用いて暗号処理装置を構成するには、例えば、暗号処理装置を構成する各機能ブロックをMPU9801に行わせるための制御プログラムを作成する。作成された制御プログラムはハードディスク装置9804若しくは可搬型記録媒体9809に予め格納しておく。そして、MPU9801に所定の指示を与えてこの制御プログラムを読み出させて実行させる。こうすることで、暗号処理装置が備えている機能がMPU9801により提供される。従って、このコンピュータ9800が暗号処理装置として機能するようになる。
以上の実施形態に関し、さらに以下の付記を開示する。
(付記1)
入力として整数の乱数であるチャレンジを受ける受信部と、
整数である秘密鍵を格納する不揮発性メモリである第1のメモリと、
整数である攪拌値を格納する第2のメモリと、
前記秘密鍵と前記攪拌値に攪拌関数を作用させて整数である攪拌された秘密鍵を生成する鍵攪拌部と、
前記攪拌された秘密鍵と前記チャレンジに暗号化関数を作用させてレスポンスを生成するレスポンス生成部と、
前記第2のメモリに格納されている前記攪拌値を更新する攪拌値更新部と、
前記攪拌値と前記レスポンスを出力する送信部と、
を含む暗号処理装置。
(付記2)
暗号処理装置に接続された外部装置であって、前記送信部から出力された前記攪拌値と前記レスポンスを受け取り、受け取った前記攪拌値と、予め自身の不揮発性メモリに格納してある前記秘密鍵と同じ値である第2の秘密鍵とに攪拌関数を作用させて整数である秘密鍵比較値を生成し、前記秘密鍵比較値と前記レスポンスを前記暗号化関数の逆関数である復号関数に作用させてチャレンジ比較値を生成し、前記チャレンジと前記チャレンジ比較値前記チャレンジと前記チャレンジ比較値との比較の結果に基づいて、前記攪拌値と前記レスポンスを出力した前記暗号処理装置を認証する外部装置によって認証を受ける、付記1に記載の暗号処理装置。
(付記3)
前記送信部から出力された前記攪拌値と前記レスポンスを受け取り、受け取った前記攪拌値と、予め自身の不揮発性メモリに格納してある前記秘密鍵と同じ値である第2の秘密鍵に攪拌関数を作用させて整数である秘密鍵比較値を生成し、前記秘密鍵比較値と前記レスポンスに暗号化関数を作用させてチャレンジ比較値を生成し、前記チャレンジと前記チャレンジ比較値を比較し、前記チャレンジと前記チャレンジ比較値との比較の結果に基づいて、前記攪拌値と前記レスポンスを出力した前記暗号処理装置を認証する外部装置によって認証を受ける、付記1に記載の暗号処理装置。
(付記4)
さらに、整数の乱数である第2のチャレンジを生成するチャレンジ生成部を含む暗号処理装置であって、
前記送信部は、前記攪拌値と前記レスポンスと前記第2チャレンジを出力し、
前記受信部は、暗号処理装置に接続された外部装置であって、前記送信部から出力された前記攪拌値と前記レスポンスと前記第2チャレンジを受け取り、受け取った前記攪拌値と、予め自身の不揮発性メモリに格納してある前記秘密鍵と同じ値である第2の秘密鍵とに攪拌関数を作用させて整数である秘密鍵比較値を生成し、前記秘密鍵比較値と前記レスポンスを前記暗号化関数の逆関数である復号関数に作用させて整数であるチャレンジ比較値を生成し、自身のメモリに格納してある整数である第2の攪拌値と前記秘密鍵に攪拌関数を作用させて整数である第2の秘密鍵比較値を生成し、前記チャレンジと前記チャレンジ比較値との比較をし、前記前記チャレンジと前記チャレンジ比較値との比較の結果に基づいて前記攪拌値と前記レスポンスと前記第2チャレンジを出力した前記暗号処理装置が認証された場合に、前記第2の秘密鍵比較値と前記第2のチャレンジに暗号化関数を作用させて整数である第2のレスポンスを生成し、前記第2の攪拌値と前記第2のレスポンスを出力する外部装置から、前記第2の攪拌値と前記第2のレスポンスを受け、
前記鍵攪拌部は、前記秘密鍵と前記第2の攪拌値に攪拌関数を作用させて整数である第2の攪拌された秘密鍵を生成する暗号処理装置であって、
さらに、
前記第2の攪拌された秘密鍵と前記第2のレスポンスを前記暗号化関数の逆関数である復号関数に作用させて第2のチャレンジ比較値を生成する復号部と、
前記第2のチャレンジ比較値と前記第2チャレンジとの比較に基づいて、前記第2の攪拌値と前記第2のレスポンスを出力した外部装置を認証する認証部と、
を含む付記2に記載の暗号処理装置。
(付記5)
さらに、
整数の乱数である第2のチャレンジを生成するチャレンジ生成部を含む暗号処理装置であって、
前記送信部は、前記攪拌値と前記レスポンスと前記第2チャレンジを出力し、
前記受信部は、暗号処理装置に接続された外部装置であって、前記送信部から出力された前記攪拌値と前記レスポンスと前記第2チャレンジを受け取り、受け取った前記攪拌値と、予め自身の不揮発性メモリに格納してある前記秘密鍵と同じ値でる第2の秘密鍵に攪拌関数を作用させて整数である秘密鍵比較値を生成し、前記秘密鍵比較値と前記チャレンジに前記暗号化関数を作用させて整数であるレスポンス比較値を生成し、さらに自身のメモリに格納してある整数である第2の攪拌値と前記秘密鍵に攪拌関数を作用させて第2の攪拌された秘密鍵を生成し、前記レスポンスと前記レスポンス比較値とを比較し、前記レスポンスと前記レスポンス比較値との比較の結果に基づいて前記攪拌値と前記レスポンスと前記第2チャレンジを出力した前記暗号処理装置が認証された場合に、前記第2の秘密鍵比較値と前記第2のチャレンジに暗号化関数を作用させて整数である第2のレスポンスを生成し、前記第2のレスポンスと前記第2の攪拌値を出力する外部装置から、前記第2のレスポンスと前記第2の攪拌値を受け、
前記鍵攪拌部は、前記秘密鍵と前記第2の攪拌値に攪拌関数を作用させて整数である第2の攪拌された秘密鍵を生成する暗号処理装置であって、
さらに、
前記第2の攪拌値と前記秘密鍵を前記暗号化に作用させて第2のレスポンス比較値を生成する暗号化部と、
前記第2のレスポンス前記第2のレスポンス比較値との比較に基づいて、前記第2のレスポンスと前記第2の攪拌値を出力した外部装置を認証する認証部と、
を含む付記3に記載の暗号処理装置。
(付記6)
前記鍵攪拌部は、不揮発性回路から構成される攪拌鍵格納部を含み、前記秘密鍵と前記攪拌値に前記攪拌関数を作用させて前記攪拌された秘密鍵を生成し、前記攪拌鍵格納部に格納し、前記秘密鍵の更新の際には保持されている前記攪拌された秘密鍵に前記攪拌関数の逆関数である逆攪拌関数を作用させる、付記2乃至5のいずれか一項に記載の暗号処理装置。
(付記7)
前記鍵攪拌部は、不揮発性回路から構成される攪拌鍵格納部を含み、前記不揮発性回路に格納された前記攪拌された秘密鍵の読み出し処理は、前記攪拌された秘密鍵の全ビットを1サイクルで読み出しをする、付記2乃至6のいずれか一項に記載の暗号処理装置。
(付記8)
前記鍵攪拌部は、不揮発性回路から構成される攪拌鍵格納部を含み、前記攪拌鍵格納部への前記攪拌された秘密鍵の書き込み処理は、前記攪拌された秘密鍵の全ビットを1サイクルで読み出しをする、付記2乃至7のいずれか一項に記載の暗号処理装置。
(付記9)
前記鍵攪拌部は、前記不揮発性回路への書き込み処理および/または前記不揮発性回路から読み出し処理は、不揮発性フリップフロップを用いて行う、付記7または8に記載の暗号処理装置。
(付記10)
前記鍵攪拌部において、前記秘密鍵と前記攪拌値に前記攪拌関数を作用させて前記攪拌された秘密鍵を生成することは、入力値と出力値が以下のような性質:
(MGF1)前記入力値が1ビットでも変化した場合、前記出力値の少なくとも複数のビットが変化する、
(MGF2)前記出力値から前記入力値を求めることが出来ない、
(MGF3)前記入力値と前記出力値のビット長を、任意に調整することができる、
を有するマスク生成関数(MGF)を作用することを含む、付記6に記載の暗号処理装置。
(付記11)
前記鍵攪拌部は、前記秘密鍵と前記攪拌値に前記攪拌関数を作用させて前記攪拌された秘密鍵を生成することは、前記秘密鍵と前記攪拌値の上位半分ビットと下位半分ビットのビット結合に対して、入力値と出力値が以下のような性質:
(MGF1)前記入力値が1ビットでも変化した場合、前記出力値の少なくとも複数のビットが変化する、
(MGF2)前記出力値から前記入力値を求めることが出来ない、
(MGF3)前記入力値と前記出力値のビット長を、任意に調整することができる、
を有するマスク生成関数(MGF)を作用する、および排他的論理和(XOR)演算を実行するマスク生成関数(MGF)作用部を含む、付記6に記載の暗号装置。
(付記12)
前記鍵攪拌部において、前記秘密鍵をマスク値によってマスク化するマスク処理部を含む、付記2乃至11のいずれか一項に記載の暗号処理装置。
(付記13)
前記鍵攪拌部において、前記マスク生成関数(MGF)を作用することの前に、入力値と出力値が以下のような性質:
(事前複雑化1)前記入力値は、マスク化処理に用いられるマスク値、前記秘密鍵に対して前記マスク化処理を実行して得られるマスク化された秘密鍵、前記攪拌値である、
(事前複雑化2)前記入力値に対して、前記秘密鍵および前記攪拌値によって定まるビット転置処理を行う、
(事前複雑化3)前記出力値は、前記秘密鍵および前記攪拌値にのみ依存する、
を有する事前複雑化処理を行うMGF事前複雑化処理部を含む、付記12に記載の暗号処理装置。
(付記14)
前記MGF事前複雑化処理部において、前記事前複雑化処理は、以下の性質:
(スワッピングボックス1)多数のスワッピングボックスを直列に繋いだ場合のビット転置の結果と、1個のスワッピングボックスのセレクタ信号に対して前述のスワッピングボックスの各セレクタ信号の全ての値排他的論理和(XOR)演算した値を入力した結果が同じ、
を有するXOR型スワッピングボックスを用いて行う、付記13に記載の暗号処理装置。
(付記15)
前記MGF事前複雑化処理部において、前記事前複雑化処理を行う前記XOR型スワッピングボックスと、線形シフトフィードバック処理を行う線形帰還シフトレジスタを含み、前記事前複雑化処理の後に線形シフトフィードバック処理を行う、付記13に記載の暗号処理装置。
(付記16)
前記MGF事前複雑化処理部において、前記事前複雑化処理を行う前記XOR型スワッピングボックスと、線形シフトフィードバック処理を行う線形帰還シフトレジスタを含み、前記事前複雑化処理の後に線形シフトフィードバック処理を行う複数の構成とXORゲートを含み、前記複数の構成の出力に対して排他的論理和(XOR)演算を行う、付記13に記載の暗号処理装置。
(付記17)
前記MGF事前複雑化処理部において、前記事前複雑化処理は、以下の性質:
(スワッピングボックス2)多数のスワッピングボックスを直列に繋いだ場合のビット転置の結果と、1個のスワッピングボックスのセレクタ信号に対して前述のスワッピングボックスの各セレクタ信号の全ての値を加算した値を入力した結果が同じとなる、
を有する加算型スワッピングボックスを用いて行うMGF事前複雑化処理部を含む、付記13に記載の暗号処理装置。
(付記18)
攪拌値更新部前記攪拌値を更新することは、前記暗号処理装置が稼動している間は、常に行われる、付記1乃至18のいずれか一項に記載の暗号処理装置。
(付記19)
入力として整数の乱数であるチャレンジを受けることと、
整数である秘密鍵と整数である攪拌値に攪拌関数を作用させて整数である攪拌された秘密鍵を生成することと、
前記攪拌された秘密鍵を用いて前記チャレンジに暗号化関数を作用させて整数であるレスポンスを生成することと、
前記攪拌値を更新することと、
前記攪拌値と前記レスポンスを出力することと、
を含む暗号処理方法。
(付記20)
前記攪拌値と前記レスポンスが受け取られ、受け取られた前記攪拌値と前記秘密鍵と同じ値である第2の秘密鍵に攪拌関数を作用させて整数である秘密鍵比較値が生成され、前記秘密鍵比較値と前記レスポンスを前記暗号化関数の逆関数である復号関数に作用させてチャレンジ比較値が生成され、前記チャレンジと前記チャレンジ比較値が比較され、前記チャレンジと前記チャレンジ比較値の比較の結果に基づいて認証を受けること、
を含む、付記19に記載の暗号処理方法。(付記21)
前記攪拌値と前記レスポンスを受け取られ、受け取られた前記攪拌値と前記秘密鍵と同じ値である第2の秘密鍵に攪拌関数を作用させて整数である秘密鍵比較値が生成され、前記秘密鍵比較値と前記レスポンスに暗号化関数を作用させてチャレンジ比較値が生成され、前記チャレンジと前記チャレンジ比較値が比較され、前記チャレンジと前記チャレンジ比較値との比較の結果に基づいて認証を受けること、
を含む、付記19に記載の暗号処理方法。
(付記22)
さらに、整数の乱数である第2のチャレンジを生成することを含み、
前記攪拌値と前記レスポンスを出力すること前記攪拌値と前記レスポンスに加え、前記第2チャレンジを出力しする暗号処理方法であって、
さらに、
前記攪拌値と前記レスポンスと前記第2チャレンジが受け取られ、受け取られた前記攪拌値と前記秘密鍵と同じ値である第2の秘密鍵とに攪拌関数を作用させて整数である秘密鍵比較値が生成され、前記秘密鍵比較値と前記レスポンスを前記暗号化関数の逆関数である復号関数に作用させてチャレンジ比較値が生成され、さらに整数である第2の攪拌値と前記秘密鍵に攪拌関数を作用させて第2の秘密鍵比較値が生成され、前記チャレンジと前記チャレンジ比較値が比較され、前記前記チャレンジと前記チャレンジ比較値との比較の結果に基づいて認証を受けた場合に、前記第2の秘密鍵比較値と前記第2のチャレンジに暗号化関数を作用させて整数である第2のレスポンスが生成され、前記第2の攪拌値と前記第2のレスポンスが出力されたことに応答して、前記第2の攪拌値と前記第2のレスポンスを受けることと、
前記秘密鍵と前記第2の攪拌値に攪拌関数を作用させて整数である第2の攪拌された秘密鍵を生成することと、
前記第2の攪拌された秘密鍵と前記第2のレスポンスを前記暗号化関数の逆関数である復号関数に作用させて第2のチャレンジ比較値を生成することと、
前記第2のチャレンジ比較値と前記第2チャレンジとを比較することと、
前記第2のチャレンジ比較値と前記第2チャレンジとの比較に基づいて、認証を行うことと、
を含む付記20に記載の暗号処理方法。
(付記23)
さらに、乱数である第2のチャレンジを生成することを含み、
前記攪拌値と前記レスポンスを出力することは、さらに前記攪拌値と前記レスポンスに加え、前記第2チャレンジを出力しする暗号処理方法であって、
前記攪拌値と前記レスポンスと前記第2チャレンジが受け取られ、受け取られた前記攪拌値と、前記秘密鍵と同じ値である第2の秘密鍵に攪拌関数を作用させて整数である秘密鍵比較値が生成され、前記秘密鍵比較値と前記チャレンジに前記暗号化関数を作用させてレスポンス比較値が生成され、さらに整数である第2の攪拌値と前記秘密鍵に攪拌関数を作用させて整数である第2の攪拌された秘密鍵が生成され、前記レスポンスと前記レスポンス比較値とが比較され、前記レスポンスと前記レスポンス比較値との比較の結果に基づいて認証を受けた場合に、前記第2の秘密鍵比較値と前記第2のチャレンジに暗号化関数を作用させて整数である第2のレスポンスが生成され、前記第2のレスポンスと前記第2の攪拌値が出力されることに応答して、前記第2のレスポンスと前記第2の攪拌値を受けることと、
前記秘密鍵と前記第2の攪拌値に攪拌関数を作用させて整数である第2の攪拌された秘密鍵を生成することと、
前記第2の攪拌値と前記秘密鍵を前記暗号化に作用させて第2のレスポンス比較値値を生成することと、
前記第2のレスポンス前記第2のレスポンス比較値とを比較することと、
前記第2のレスポンス前記第2のレスポンス比較値との比較の結果に基づいて認証を行うことと、
を含む付記21に記載の暗号処理方法。
(付記24)
整数である秘密鍵と整数である攪拌値に攪拌関数を作用させて整数である攪拌された秘密鍵を生成すること
前記秘密鍵と前記攪拌値に前記攪拌関数を作用させて前記攪拌された秘密鍵を生成することと、
前記攪拌された秘密鍵を格納することと、
前記秘密鍵の更新の際には前記攪拌された秘密鍵に前記攪拌関数の逆関数である逆攪拌関数を作用させること、
を含む付記20乃至23のいずれか一項に記載の暗号処理方法。
(付記25)
攪拌された秘密鍵を生成すること前記攪拌された秘密鍵の読み出し処理は、前記攪拌された秘密鍵の全ビットを1サイクルで読み出しをすることを含む、付記19乃至23のいずれか一項に記載の暗号処理方法。
(付記26)
攪拌された秘密鍵を生成すること前記攪拌された秘密鍵の書き込み処理は、前記攪拌された秘密鍵の全ビットを1サイクルで読み出しをすることを含む、付記19乃至24のいずれか一項に記載の暗号処理方法。
(付記27)
前記攪拌された秘密鍵を生成することは、入力値と出力値が以下のような性質:
(MGF1)前記入力値が1ビットでも変化した場合、前記出力値の少なくとも複数のビットが変化する、
(MGF2)前記出力値から前記入力値を求めることが出来ない、
(MGF3)前記入力値と前記出力値のビット長を、任意に調整することができる、
を有するマスク生成関数(MGF)を作用することを含む、付記24に記載の暗号処理方法。
(付記28)
前記攪拌された秘密鍵を生成することは、前記秘密鍵と前記攪拌値のビット結合の上位半分ビットと下位半分ビットに対して、入力値と出力値が以下のような性質:
(MGF1)前記入力値が1ビットでも変化した場合、前記出力値の少なくとも複数のビットが変化する、
(MGF2)前記出力値から前記入力値を求めることが出来ない、
(MGF3)前記入力値と前記出力値のビット長を、任意に調整することができる、
を有するマスク生成関数(MGF)を作用すること、および排他的論理和(XOR)演算を実行することを含む、付記24に記載の暗号処理方法。
(付記29)
さらに、前記秘密鍵をマスク値を用いてマスク化することを含む、付記20乃至28のいずれか一項に記載の暗号処理方法。
(付記30)
前記マスク生成関数(MGF)を作用することの前に、入力値と出力値が以下のような性質:
(事前複雑化1)前記入力値は、マスク化処理に用いられるマスク値、前記秘密鍵に対して前記マスク化処理を実行して得られるマスク化された秘密鍵、前記攪拌値である、
(事前複雑化2)前記入力値に対して、前記秘密鍵および前記攪拌値によって定まるビット転置処理を行う、
(事前複雑化3)前記出力値は、前記秘密鍵および前記攪拌値にのみ依存する、
を有する事前複雑化処理を行うことを含む、付記28に記載の暗号処理方法。
(付記31)
前記事前複雑化処理の後、線形シフトフィードバック処理を行うことを含む、付記30に記載の暗号処理方法。
(付記32)
ビット転置を行うことを繰り返し行うことによって前記事前複雑化処理を行うことと、線形シフトフィードバック処理を行うこと、を並列に行い複数の出力を得ることと、
前記複数の出力に対して排他的論理和(XOR)演算を行うことと、
を含む付記31に記載の暗号処理方法。
(付記33)
さらに、
攪拌値更新部前記攪拌値を更新することは、前記暗号処理装置が稼動している間、常に行うこと
を含む、付記20乃至32のいずれか一項に記載の暗号処理装置。
101、1001 親機
102、1002 子機
103 不揮発性メモリ
104 センサ
105 マイクロプローバー
106(106a、106b、106c)、106’(106a’、106b、106c) 内部回路
2000、2300、3400、3800、7100、8000、8700、9500 ラッピング部
2002 メモリ
2004 攪拌関数作用部
2100、2400、3500、3900、7200、8100、8900、9600 鍵記憶部(不揮発性回路)
2200、2500、3600、4000、7300、8200、9000、9700 アンラッピング部
4100、4200、4300、4400 入力セット
4102、4202、4302、4402,7400、7600、8300、9100 MGF事前複雑化処理部
4104、4204、4304、4404 MGF事前複雑化処理結果
4106、4206、4306 マスク生成関数(MGF)作用部
4500、4502、4504 スワッピングボックス
4600、4700、4702、4704、4706、4708、4710、4712、4802、4804、4806 1ビットスワッピングボックス
4800 2ビットスワッピングボックス
4900 切り替え器
5002、5004、5006、5200、5402、5404、5406、5702、5704、5706、6102、6104、6106、6500 Tビットスワッピングボックス
5500、5800、6200 線形シフトフィードバック
6302、6304、6306、6400 加算スワッピングボックス
7500、8400、9200 マスク処理部
7500、8500、9200 アンマスク処理部

Claims (13)

  1. 入力として整数の乱数であるチャレンジを受ける受信部と、
    整数である秘密鍵を格納する不揮発性メモリである第1のメモリと、
    整数である攪拌値を格納する第2のメモリと、
    前記秘密鍵と前記攪拌値に攪拌関数を作用させて整数である攪拌された秘密鍵を生成する鍵攪拌部と、
    前記攪拌された秘密鍵と前記チャレンジに暗号化関数を作用させてレスポンスを生成するレスポンス生成部と、
    前記第2のメモリに格納されている前記攪拌値を更新する攪拌値更新部と、
    前記攪拌値と前記レスポンスを出力する送信部と、を備え、
    外部装置であって、前記送信部から出力された前記攪拌値と前記レスポンスを受け取り、受け取った前記攪拌値と、予め自身の不揮発性メモリに格納してある前記秘密鍵と同じ値である第2の秘密鍵とに攪拌関数を作用させて整数である秘密鍵比較値を生成し、前記秘密鍵比較値と前記レスポンスを前記暗号化関数の逆関数である復号関数に作用させてチャレンジ比較値を生成し、前記チャレンジと前記チャレンジ比較値との比較の結果に基づいて、前記攪拌値と前記レスポンスを出力した前記暗号処理装置を認証する外部装置によって認証を受け、
    前記鍵攪拌部は、不揮発性回路から構成される攪拌鍵格納部を含み、前記秘密鍵と前記攪拌値に前記攪拌関数を作用させて前記攪拌された秘密鍵を生成し、前記攪拌鍵格納部に格納し、前記秘密鍵の更新の際には保持されている前記攪拌された秘密鍵に前記攪拌関数の逆関数である逆攪拌関数を作用させる、
    暗号処理装置。
  2. 前記送信部から送信された前記攪拌値と前記レスポンスを受け取り、受け取った前記攪拌値と、予め自身の不揮発性メモリに格納してある前記秘密鍵と同じ値である第2の秘密鍵に攪拌関数を作用させて整数である秘密鍵比較値を生成し、前記秘密鍵比較値と前記レスポンスに暗号化関数を作用させてチャレンジ比較値を生成し、前記チャレンジと前記チャレンジ比較値を比較し、前記チャレンジと前記チャレンジ比較値との比較の結果に基づいて、前記攪拌値と前記レスポンスを出力した前記暗号処理装置を認証する外部装置によって認証を受ける、請求項1に記載の暗号処理装置。
  3. さらに、整数の乱数である第2のチャレンジを生成するチャレンジ生成部を含む暗号処理装置であって、
    前記送信部は、前記攪拌値と前記レスポンスと前記第2チャレンジを出力し、
    前記受信部は、外部装置であって、前記送信部から出力された前記攪拌値と前記レスポンスと前記第2チャレンジを受け取り、受け取った前記攪拌値と、予め自身の不揮発性メモリに格納してある前記秘密鍵と同じ値である第2の秘密鍵とに攪拌関数を作用させて整数である秘密鍵比較値を生成し、前記秘密鍵比較値と前記レスポンスを前記暗号化関数の逆関数である復号関数に作用させて整数であるチャレンジ比較値を生成し、自身のメモリに格納してある整数である第2の攪拌値と前記秘密鍵に攪拌関数を作用させて整数である第2の秘密鍵比較値を生成し、前記チャレンジと前記チャレンジ比較値との比較をし、前記前記チャレンジと前記チャレンジ比較値との比較の結果に基づいて前記攪拌値と前記レスポンスと前記第2チャレンジを出力した前記暗号処理装置が認証された場合に、前記第2の秘密鍵比較値と前記第2のチャレンジに暗号化関数を作用させて整数である第2のレスポンスを生成し、前記第2の攪拌値と前記第2のレスポンスを出力する外部装置から、前記第2の攪拌値と前記第2のレスポンスを受け、
    前記鍵攪拌部は、前記秘密鍵と前記第2の攪拌値に攪拌関数を作用させて整数である第2の攪拌された秘密鍵を生成する暗号処理装置であって、
    さらに、
    前記第2の攪拌された秘密鍵と前記第2のレスポンスを前記暗号化関数の逆関数である復号関数に作用させて第2のチャレンジ比較値を生成する復号部と、
    前記第2のチャレンジ比較値と前記第2チャレンジとの比較に基づいて、前記第2の攪拌値と前記第2のレスポンスを出力した外部装置を認証する認証部と、
    を含む請求項に記載の暗号処理装置。
  4. さらに、
    整数の乱数である第2のチャレンジを生成するチャレンジ生成部を含む暗号処理装置であって、
    前記送信部は、前記攪拌値と前記レスポンスと前記第2チャレンジを出力し、
    前記受信部は、外部装置であって、前記送信部から出力された前記攪拌値と前記レスポンスと前記第2チャレンジを受け取り、受け取った前記攪拌値と、予め自身の不揮発性メモリに格納してある前記秘密鍵と同じ値でる第2の秘密鍵に攪拌関数を作用させて整数である秘密鍵比較値を生成し、前記秘密鍵比較値と前記チャレンジに前記暗号化関数を作用させて整数であるレスポンス比較値を生成し、さらに自身のメモリに格納してある整数である第2の攪拌値と前記秘密鍵に攪拌関数を作用させて第2の攪拌された秘密鍵を生成し、前記レスポンスと前記レスポンス比較値とを比較し、前記レスポンスと前記レスポンス比較値との比較の結果に基づいて前記攪拌値と前記レスポンスと前記第2チャレンジを出力した前記暗号処理装置が認証された場合に、前記第2の攪拌された秘密鍵と前記第2のチャレンジに暗号化関数を作用させて整数である第2のレスポンスを生成し、前記第2のレスポンスと前記第2の攪拌値を出力する外部装置から、前記第2のレスポンスと前記第2の攪拌値を受け、
    前記鍵攪拌部は、前記秘密鍵と前記第2の攪拌値に攪拌関数を作用させて整数である第2の攪拌された秘密鍵を生成する暗号処理装置であって、
    さらに、
    前記第2の攪拌値と前記秘密鍵を前記暗号化に作用させて第2のレスポンス比較値を生成する暗号化部と、
    前記第2のレスポンス前記第2のレスポンス比較値との比較に基づいて、前記第2のレスポンスと前記第2の攪拌値を出力した外部装置を認証する認証部と、
    を含む請求項に記載の暗号処理装置。
  5. 前記鍵攪拌部は、不揮発性回路から構成される攪拌鍵格納部を含み、前記不揮発性回路に格納された前記攪拌された秘密鍵の読み出し処理は、前記攪拌された秘密鍵の全ビットを1サイクルで読み出しをする、請求項乃至のいずれか一項に記載の暗号処理装置。
  6. 前記鍵攪拌部は、不揮発性回路から構成される攪拌鍵格納部を含み、前記攪拌鍵格納部への前記攪拌された秘密鍵の書き込み処理は、前記攪拌された秘密鍵の全ビットを1サイクルで書き込みを行う、請求項乃至のいずれか一項に記載の暗号処理装置。
  7. 前記鍵攪拌部は、前記不揮発性回路への書き込み処理および/または前記不揮発性回路から読み出し処理は、不揮発性フリップフロップを用いて行う、請求項またはに記載の暗号処理装置。
  8. 前記鍵攪拌部において、前記秘密鍵と前記攪拌値に前記攪拌関数を作用させて前記攪拌された秘密鍵を生成することは、入力値と出力値が以下のような性質:
    (MGF1)前記入力値が1ビットでも変化した場合、前記出力値の少なくとも複数のビットが変化する、
    (MGF2)前記出力値から前記入力値を求めることが出来ない、
    (MGF3)前記入力値と前記出力値のビット長を、任意に調整することができる、
    を有するマスク生成関数(MGF)を作用することを含む、請求項に記載の暗号処理装置。
  9. 前記鍵攪拌部は、前記秘密鍵と前記攪拌値に前記攪拌関数を作用させて前記攪拌された秘密鍵を生成することは、前記秘密鍵と前記攪拌値の上位半分ビットと下位半分ビットのビット結合に対して、入力値と出力値が以下のような性質:
    (MGF1)前記入力値が1ビットでも変化した場合、前記出力値の少なくとも複数のビットが変化する、
    (MGF2)前記出力値から前記入力値を求めることが出来ない、
    (MGF3)前記入力値と前記出力値のビット長を、任意に調整することができる、
    を有するマスク生成関数(MGF)を作用する、および排他的論理和(XOR)演算を実行するマスク生成関数(MGF)作用部を含む、請求項に記載の暗号装置。
  10. 前記鍵攪拌部において、前記秘密鍵をマスク値によってマスク化するマスク処理部を含む、請求項乃至のいずれか一項に記載の暗号処理装置。
  11. 前記鍵攪拌部において、前記マスク生成関数(MGF)を作用することの前に、入力値と出力値が以下のような性質:
    (事前複雑化1)前記入力値は、マスク化処理に用いられるマスク値、前記秘密鍵に対して前記マスク化処理を実行して得られるマスク化された秘密鍵、前記攪拌値である、
    (事前複雑化2)前記入力値に対して、前記秘密鍵および前記攪拌値によって定まるビット転置処理を行う、
    (事前複雑化3)前記出力値は、前記秘密鍵および前記攪拌値にのみ依存する、
    を有する事前複雑化処理を行うMGF事前複雑化処理部を含む、請求項10に記載の暗号処理装置。
  12. 前記MGF事前複雑化処理部において、前記事前複雑化処理を行う前記XOR型スワッピングボックスと、線形シフトフィードバック処理を行う線形帰還シフトレジスタを含み、前記事前複雑化処理の後に線形シフトフィードバック処理を行う複数の構成とXORゲートを含み、前記複数の構成の出力に対して排他的論理和(XOR)演算を行う、請求項11に記載の暗号処理装置。
  13. 暗号処理装置が実行する暗号処理方法であって、
    入力として整数の乱数であるチャレンジを受け、
    整数である秘密鍵と整数である攪拌値に攪拌関数を作用させて整数である攪拌された秘密鍵を生成し、
    前記攪拌された秘密鍵を用いて前記チャレンジに暗号化関数を作用させて整数であるレスポンスを生成し、
    前記攪拌値を更新し、
    前記攪拌値と前記レスポンスを出力し、
    外部装置であって、出力された前記攪拌値と前記レスポンスを受け取り、受け取った前記攪拌値と、予め自身の不揮発性メモリに格納してある前記秘密鍵と同じ値である第2の秘密鍵とに攪拌関数を作用させて整数である秘密鍵比較値を生成し、前記秘密鍵比較値と前記レスポンスを前記暗号化関数の逆関数である復号関数に作用させてチャレンジ比較値を生成し、前記チャレンジと前記チャレンジ比較値との比較の結果に基づいて、前記攪拌値と前記レスポンスを出力した前記暗号処理装置を認証する外部装置によって認証を受け、
    前記秘密鍵と前記攪拌値に前記攪拌関数を作用させて前記攪拌された秘密鍵を生成し、不揮発性回路に格納し、前記秘密鍵の更新の際には保持されている前記攪拌された秘密鍵に前記攪拌関数の逆関数である逆攪拌関数を作用させる、
    処理を実行する暗号処理方法。
JP2012172410A 2012-08-02 2012-08-02 暗号処理装置および方法 Expired - Fee Related JP5954030B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2012172410A JP5954030B2 (ja) 2012-08-02 2012-08-02 暗号処理装置および方法
US13/919,299 US20140037089A1 (en) 2012-08-02 2013-06-17 Encryption processing device and method
EP13173773.6A EP2698780A3 (en) 2012-08-02 2013-06-26 Encryption processing device and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012172410A JP5954030B2 (ja) 2012-08-02 2012-08-02 暗号処理装置および方法

Publications (2)

Publication Number Publication Date
JP2014033324A JP2014033324A (ja) 2014-02-20
JP5954030B2 true JP5954030B2 (ja) 2016-07-20

Family

ID=48747933

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012172410A Expired - Fee Related JP5954030B2 (ja) 2012-08-02 2012-08-02 暗号処理装置および方法

Country Status (3)

Country Link
US (1) US20140037089A1 (ja)
EP (1) EP2698780A3 (ja)
JP (1) JP5954030B2 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9787568B2 (en) * 2012-11-05 2017-10-10 Cercacor Laboratories, Inc. Physiological test credit method
EP3001401A4 (en) * 2013-07-18 2017-03-22 Nippon Telegraph And Telephone Corporation Decoding device, decoding ability providing device, method thereof, and program
US10367803B2 (en) * 2015-04-12 2019-07-30 Gropper Adrian Managed open source medical devices
CN105119900B (zh) * 2015-07-17 2019-02-26 北京奇虎科技有限公司 信息安全传输方法、联网接入方法及相应的终端
JP2017076854A (ja) * 2015-10-14 2017-04-20 富士通株式会社 電子装置、及びデータ検証方法
US10853523B2 (en) * 2016-03-22 2020-12-01 New York University In Abu Dhabi Corporation System, method and computer-accessible medium for satisfiability attack resistant logic locking
KR101934221B1 (ko) * 2016-10-27 2018-12-31 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. 교체가능 물품 인증
EP3373178A1 (en) 2017-03-08 2018-09-12 Secure-IC SAS Comparison of execution context data signatures with references
CN110891472B (zh) 2017-04-28 2023-04-04 迈心诺公司 抽查测量系统
US11296896B2 (en) * 2018-03-30 2022-04-05 Canon Kabushiki Kaisha Method of authenticating authentication-target apparatus using challenge and response
CN109257630B (zh) * 2018-11-14 2020-12-11 苏州科达科技股份有限公司 视频点播中的数据传输系统、方法、装置及存储介质
KR102025569B1 (ko) * 2019-01-31 2019-11-04 김동현 재생 카트리지에 설치되는 인증용 메모리 모듈
US11575521B2 (en) 2019-06-28 2023-02-07 Intel Corporation Fast XMSS signature verification and nonce sampling process without signature expansion
US11218320B2 (en) * 2019-06-28 2022-01-04 Intel Corporation Accelerators for post-quantum cryptography secure hash-based signing and verification

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH104403A (ja) * 1996-06-17 1998-01-06 N T T Data Tsushin Kk 暗号化装置、復号化装置およびその方法
US5828753A (en) * 1996-10-25 1998-10-27 Intel Corporation Circuit and method for ensuring interconnect security within a multi-chip integrated circuit package
WO1998051029A1 (en) * 1997-05-07 1998-11-12 Southwestern Bell Telephone Company Apparatus and method for customized secondary access authentication
JPH11252069A (ja) * 1998-03-06 1999-09-17 Fuji Electric Co Ltd 情報機器間の相互認証装置
JPH11305661A (ja) * 1998-04-23 1999-11-05 Toyo Commun Equip Co Ltd シフトレジスタ構成用回路およびシフトレジスタ
US6243811B1 (en) * 1998-07-31 2001-06-05 Lucent Technologies Inc. Method for updating secret shared data in a wireless communication system
JP2002015512A (ja) * 1999-07-15 2002-01-18 Matsushita Electric Ind Co Ltd デジタルデータ書込装置、デジタルデータ記録装置、デジタルデータ利用装置
FR2820577B1 (fr) * 2001-02-08 2003-06-13 St Microelectronics Sa Procede securise de calcul cryptographique a cle secrete et composant mettant en oeuvre un tel procede
US7034654B2 (en) * 2004-01-13 2006-04-25 General Motors Corporation Motor vehicle engine immobilizer security system and method
US9497022B2 (en) * 2005-05-24 2016-11-15 Broadcom Corporation Method and system for improved fault tolerance in distributed customization controls using non-volatile memory
DE102009024604B4 (de) * 2009-06-10 2011-05-05 Infineon Technologies Ag Erzeugung eines Session-Schlüssels zur Authentisierung und sicheren Datenübertragung
JP5446650B2 (ja) * 2009-09-17 2014-03-19 沖電気工業株式会社 通信データ新規性確認システム並びに送信端末及び受信端末
US8660005B2 (en) * 2010-11-30 2014-02-25 Marvell Israel (M.I.S.L) Ltd. Load balancing hash computation for network switches

Also Published As

Publication number Publication date
EP2698780A2 (en) 2014-02-19
US20140037089A1 (en) 2014-02-06
EP2698780A3 (en) 2017-07-05
JP2014033324A (ja) 2014-02-20

Similar Documents

Publication Publication Date Title
JP5954030B2 (ja) 暗号処理装置および方法
US9819657B2 (en) Protection of memory interface
JP5700128B2 (ja) 暗号化処理装置および認証方法
JP5621907B2 (ja) 共通鍵暗号を用いた認証システム
US20200244434A1 (en) Differential power analysis resistant encryption and decryption functions
CN111492616B (zh) 用于基于晶格的密码学的可配置设备
US20130051552A1 (en) Device and method for obtaining a cryptographic key
US9648026B2 (en) Cryptographic method for securely exchanging messages and device and system for implementing this method
JP2014509812A (ja) チップ製造中に一意の鍵を確立すること
WO2012120671A1 (ja) 共通鍵暗号を用いた認証システム
CN109039596B (zh) 利用加扰电路的白盒实施方案
KR100546375B1 (ko) 자체 오류 감지 기능을 강화한 상호 의존적 병렬 연산방식의 하드웨어 암호화 장치 및 그 하드웨어 암호화 방법
Arshad et al. New extension of data encryption standard over 128-bit key for digital images
Kelber et al. General design rules for chaos-based encryption systems
US11336425B1 (en) Cryptographic machines characterized by a Finite Lab-Transform (FLT)
US7415110B1 (en) Method and apparatus for the generation of cryptographic keys
JP2002217898A (ja) 擬似乱数生成システム
Mars et al. Digitally Mutating NV-FPGAs into Physically Clone-Resistant Units
KR101105384B1 (ko) 키 암호화 및 셔플링이 적용된 부채널 공격에 안전한 키 관리방법
Reddy et al. A new symmetric probabilistic encryption scheme based on random numbers
Hameed et al. SMX algorithm: A novel approach to avalanche effect on advanced encryption standard AES
Ratheesh et al. A Public Key Cryptography based Mechanism for the Secure Transmission of RGB Images using Elliptic Curve based Hill Cipher and Magic Square Concept
Gomathisankaran et al. Glitch resistant private circuits design using HORNS
US20220376922A1 (en) Authenticated encryption apparatus with initialization-vector misuse resistance and method therefor
US10897345B2 (en) Method for encrypting or decrypting a n-tuple of data with a n-tuple of predetermined secret keys

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150406

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160113

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160308

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160419

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: 20160517

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160530

R150 Certificate of patent or registration of utility model

Ref document number: 5954030

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees