JP4937921B2 - A secure interface for generic key derivation function support - Google Patents
A secure interface for generic key derivation function support Download PDFInfo
- Publication number
- JP4937921B2 JP4937921B2 JP2007540747A JP2007540747A JP4937921B2 JP 4937921 B2 JP4937921 B2 JP 4937921B2 JP 2007540747 A JP2007540747 A JP 2007540747A JP 2007540747 A JP2007540747 A JP 2007540747A JP 4937921 B2 JP4937921 B2 JP 4937921B2
- Authority
- JP
- Japan
- Prior art keywords
- module
- application
- sha
- function
- hash function
- 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.)
- Active
Links
- 238000009795 derivation Methods 0.000 title claims description 32
- 230000006870 function Effects 0.000 claims description 144
- 238000000034 method Methods 0.000 claims description 24
- 238000004422 calculation algorithm Methods 0.000 claims description 12
- 238000012795 verification Methods 0.000 claims description 2
- 238000004891 communication Methods 0.000 description 7
- 230000003068 static effect Effects 0.000 description 7
- 230000006835 compression Effects 0.000 description 6
- 238000007906 compression Methods 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 4
- 101100217298 Mus musculus Aspm gene Proteins 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 230000002265 prevention Effects 0.000 description 2
- 201000009032 substance abuse Diseases 0.000 description 2
- 241000700605 Viruses Species 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- ZXQYGBMAQZUVMI-GCMPRSNUSA-N gamma-cyhalothrin Chemical compound CC1(C)[C@@H](\C=C(/Cl)C(F)(F)F)[C@H]1C(=O)O[C@H](C#N)C1=CC=CC(OC=2C=CC=CC=2)=C1 ZXQYGBMAQZUVMI-GCMPRSNUSA-N 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000001172 regenerating effect Effects 0.000 description 1
- 230000035945 sensitivity Effects 0.000 description 1
Images
Description
本発明は一般的には、暗号の分野に関する。特に、本発明は、多用途鍵導出関数サポートの提供に関する。 The present invention relates generally to the field of cryptography. In particular, the present invention relates to providing versatile key derivation function support.
ディフィ−ヘルマン(Diffie-Hellman:DH)鍵共有は、暗号における基本的な開発である。それは、公開鍵暗号の最初の機能する方法であり、それにより、前もって同意された秘密を設定せずに鍵配布を実現可能にする。 Diffie-Hellman (DH) key sharing is a fundamental development in cryptography. It is the first working method of public key cryptography, which makes it possible to implement key distribution without setting a secret agreed upon in advance.
DH鍵共有の最も簡単な形態では、当事者はそれぞれ私有鍵x、yを有し、そこから公開鍵αx、αyがそれぞれ導出できる。公開鍵を交換することにより、当事者それぞれは、私有鍵と公開鍵を組み合わせることにより共有秘密鍵αxyを算出できる。私有鍵から公開鍵を導出するために使用される関数は、一方向性関数であり、一方向性関数では、公開鍵の計算は比較的簡単であるが、公開鍵から私有鍵を抽出するのは実行不可能である。そのような関数は、2つの大きな素数の積である大きな数の素因数分解の困難性、または有限体上における離散対数問題に基づいている。 In the simplest form of DH key sharing, the parties have private keys x and y, respectively, from which public keys α x and α y can be derived, respectively. By exchanging the public key, each party can calculate the shared secret key α xy by combining the private key and the public key. The function used to derive the public key from the private key is a one-way function, and in the one-way function, the calculation of the public key is relatively simple, but the private key is extracted from the public key. Is infeasible. Such a function is based on the difficulty of factoring a large number that is the product of two large prime numbers, or a discrete logarithm problem over a finite field.
ディフィ−ヘルマン(Diffie-Hellman:DH)鍵共有は、今日では広く使用されている。IPSecプロトコルはDH鍵共有を使用し、IPSecは、ほとんどの企業において、従業員が公開インターネット上で離れたオフィスへ接続するのと共に、遠隔地から会社のネットワークに接続するのを可能にするために使用されている仮想プライベートネットワーク(VPN)のほとんどで使用されている。 Diffie-Hellman (DH) key sharing is widely used today. The IPSec protocol uses DH key agreement, which in most businesses allows employees to connect to remote offices on the public Internet and to connect to corporate networks from remote locations. Used in most of the virtual private networks (VPNs) used.
ディフィ−ヘルマン(Diffie-Hellman)鍵共有はまた、トランスポート層セキュリティ(TLS)プロトコルにおけるNIST推奨オプションでもある。TLSプロトコルは、SSLプロトコルの後継プロトコルである。これらのプロトコルは今日では、オンラインバンキングのような、取扱いに慎重さを要するウェブ上の通信データの流れを安全にするために広く使用されている。 Diffie-Hellman key agreement is also a NIST recommended option in the Transport Layer Security (TLS) protocol. The TLS protocol is a successor protocol of the SSL protocol. These protocols are now widely used to secure the flow of communication data on the web that requires careful handling, such as online banking.
静的DH鍵共有は、私有鍵の1つが静的であるDH鍵共有の変形であり、それは、複数回使用される長期間鍵であることを意味している。 Static DH key sharing is a variant of DH key sharing where one of the private keys is static, meaning that it is a long-term key that is used multiple times.
私有鍵の鋭敏性のため、特に複数回使用される場合は、それは私有鍵操作を含む実践である私有鍵モジュールに通常位置している。一般的には、そのようなモジュールは私有鍵の抽出を防止する手段を含んでおり、もっと制限された範囲で、私有鍵操作の悪用を防止している。例えば、これらのモジュールは、ウイルスや、ワーム、およびトロイの木馬のような悪意のあるソフトウェアのロードを認めない特殊化されたハードウェアにおいて実践できる。一般的には、そのような改竄防止手段の実践は高価となる。従って、コストを下げるために、モジュールは一般的には、最低限の機能を有するように設計される。このように、最低限の機能には、改竄防止による保護が必要である。 Because of the sensitivity of private keys, it is usually located in a private key module, which is a practice involving private key operations, especially when used multiple times. In general, such modules contain means to prevent private key extraction and, to a more limited extent, prevent misuse of private key operations. For example, these modules can be implemented in specialized hardware that does not allow the loading of malicious software such as viruses, worms, and Trojan horses. In general, the practice of such tamper prevention measures is expensive. Therefore, modules are typically designed to have minimal functionality in order to reduce costs. As described above, the minimum function requires protection by preventing falsification.
簡単な例では、モジュールはスマートカードであってよい。スマートカードはユーザーにより所持される。ユーザーがある遠隔コンピュータから、ホームコンピュータのような接続先へ安全に接続したいと所望していると仮定する。ユーザーはスマートカードを、リモートコンピュータに取り付けられたスマートカードリーダーに入れる。その後、ホームコンピュータへの接続が行われる。ホームコンピュータは、問いかけを送ることでユーザーを認証する。リモートコンピュータはその問いかけをスマートカードに転送する。スマートカードは問いかけに署名し、それはホームコンピュータに転送されて戻される。ホームコンピュータは、その問いかけを検証して、リモートコンピュータを介しての、必要なアクセスをユーザーに提供する。これにより、ユーザーは異なるリモートコンピュータ間を動き回ることができる。しかし、リモートコンピュータはスマートカードからユーザーの私有鍵を抽出できてはならない。つまり、リモートコンピュータはユーザーがスマートカードをリーダー内に入れている間だけホームコンピュータに接続できるだけである。(これを達成するために、簡単な問いかけと応答より、より高度な方法が必要となる。そして、スマートカードはトラフィックの正規の認証、またはすべてのトラフィックの暗号化と暗号解読さえも行うことが必要となることもある。) In a simple example, the module may be a smart card. The smart card is carried by the user. Suppose a user wants to connect securely from a remote computer to a destination such as a home computer. The user places the smart card in a smart card reader attached to the remote computer. Thereafter, connection to the home computer is performed. The home computer authenticates the user by sending a question. The remote computer forwards the question to the smart card. The smart card signs the inquiry, which is transferred back to the home computer. The home computer verifies the question and provides the user with the necessary access via the remote computer. This allows the user to move around between different remote computers. However, the remote computer must not be able to extract the user's private key from the smart card. That is, the remote computer can only connect to the home computer while the user has the smart card in the reader. (To achieve this, more sophisticated methods are needed than simple questions and responses, and smart cards can authenticate traffic or even encrypt and decrypt all traffic. It may be necessary.)
安全性を更に高めるために、未処理のDH共有秘密に適用された一方向性関数である鍵導出関数(KDF)がしばしば指定される。ある規格では、KDFをDH鍵共有と共に使用するよう指定している。しかし、規格が異なれば、推奨されるKDFも異なる。例えば、ANSIは、IEEEや、SSLおよびTLSのように、いくつかの異なるKDFを指定しており、IPSecも更にまた異なっている。 To further enhance security, a key derivation function (KDF) is often specified, which is a one-way function applied to the raw DH shared secret. Certain standards specify that KDF be used with DH key sharing. However, the recommended KDF differs for different standards. For example, ANSI specifies several different KDFs, such as IEEE, SSL and TLS, and IPSec is also different.
下記に、2つの規格化鍵導出関数の詳細を簡単に記述する。これらはANSI X9.63鍵導出およびTLS鍵導出関数である。 The details of the two standardized key derivation functions are briefly described below. These are ANSI X9.63 key derivation and TLS key derivation functions.
ANSI X9.63鍵導出は下記のように計算される。入力は3つの成分を有している。第1入力成分はZであり、これは私有鍵モジュールと接続先、例えば、上記の簡単な例におけるホームコンピュータとの間で共有される秘密値である。この共有秘密値Zは、上記の例におけるリモートコンピュータのような、いかなるゲートウェイにも明かされてはならない。第2の入力成分は整数鍵datalenであり、これは生成されるべきキーイングデータのオクテットでの長さである。オプションである第3の入力成分は、オクテットストリングSharedInfoであり、共有秘密値Zを共有するエンティティにより共有されるいくつかのデータから構成されている。更に、SharedInfoにはまた、随意に抽象構文記法1(ASN.1)の符号化が与えられ、これは5つのフィールド、つまり、アルゴリズム識別子、2つのエンティティそれぞれに対する随意の識別子、随意の公開共有情報、および随意の私有共有情報を含む。この入力についてのKDFの評価はその後、下記のように進行する。 ANSI X9.63 key derivation is calculated as follows: The input has three components. The first input component is Z, which is a secret value shared between the private key module and the connection destination, for example, the home computer in the simple example above. This shared secret value Z should not be revealed to any gateway, such as the remote computer in the above example. The second input component is the integer key datalen, which is the length in octets of the keying data to be generated. An optional third input component is an octet string SharedInfo, which is composed of some data shared by entities sharing the shared secret value Z. In addition, SharedInfo is also optionally given an Abstract Syntax Notation 1 (ASN.1) encoding, which includes five fields: an algorithm identifier, an optional identifier for each of the two entities, and optional public shared information. , And optional private sharing information. KDF evaluation for this input then proceeds as follows.
ANSI X9.63鍵導出関数の第1ステップは、ある一貫性チェックであり、入力の長さと、所望の出力長keydatalenに対して行われる。その後、4オクテット整数カウンタjが値1で初期化される。一連のハッシュ値Kjは、次のように計算される。Kj=SHA−1(Z‖j‖[SharedInfo])、ここで‖は、連接を示し、[ ]はカッコで囲まれた入力はオプションであることを示している。これらの出力の数tは、keydatalenに依存する。ハッシュ値は連接されてオクテットストリングK’=K1‖K2‖...‖Ktを形成する。オクテットストリングは、最左端のkeydatalenオクテットを取ることにより短オクテットストリングKに切り詰められる。ANSI X9.63KDFの出力はKである。
The first step of the ANSI X9.63 key derivation function is a consistency check, which is performed on the input length and the desired output length keydatalen. Thereafter, the 4-octet integer counter j is initialized with the
TLS規格では、鍵導出関数は擬似乱数関数(PRF)と称せられる。TLS PRFの構成はANSI X9.63KDFとはまったく異なり、次のように与えられる。この構成は、最初に記述される補助構成HMACを利用する。 In the TLS standard, the key derivation function is referred to as a pseudorandom function (PRF). The structure of the TLS PRF is completely different from ANSI X9.63 KDF and is given as follows. This configuration uses the auxiliary configuration HMAC described first.
HMAC構成は、任意のハッシュ関数上に構築できる。HMAC構成が、MD5およびSHA−1のようなハッシュ関数と共に使用されると、その結果としての関数は、HMAC−Hashと命名され、ここでHashはハッシュ関数の名前である。TLS PRFはHMAC−SHA−1とHMAC−MD5を使用する。HMACの一般的な形式、つまりHMAC−Hashは下記のように作動する。 The HMAC configuration can be built on any hash function. When the HMAC configuration is used with hash functions such as MD5 and SHA-1, the resulting function is named HMAC-Hash, where Hash is the name of the hash function. TLS PRF uses HMAC-SHA-1 and HMAC-MD5. The general form of HMAC, namely HMAC-Hash, operates as follows.
HMACへの入力は、秘密鍵KとメッセージMである。出力はタグTである。HMACタグは、T=Hash(C+K‖Hash((D+K)‖M))として計算され、ここで‖は、連接を表わし、+は、よく知られたビット単位の排他的論理和(XOR)演算を表わし、CとDは、HMACアルゴリズムで決定された一定のビットストリングである。より正確には、鍵Kは、その長さがCとDの長さになるまでゼロビットを埋め込まれるが、KがCとDより長いときは除外され、その場合は、Kは鍵のハッシュと置換される。これは次のように記述される。
T=HAMC−Hash(K,M)
The input to the HMAC is a secret key K and a message M. The output is a tag T. The HMAC tag is calculated as T = Hash (C + K‖Hash ((D + K) ‖M)), where ‖ represents a concatenation and + is the well-known bitwise exclusive OR (XOR) operation. C and D are constant bit strings determined by the HMAC algorithm. More precisely, the key K is padded with zero bits until its length is C and D, but it is excluded when K is longer than C and D, in which case K is a hash of the key and Replaced. This is described as follows.
T = HAMC-Hash (K, M)
関数HMAC−Hashは、P_Hashと呼ばれる、TLS PRFにおける別の補助ハッシュ一般構成に使用される。P_Hashの構成は下記の通りである。
P_Hash(Z,シード)=HAMC−Hash(Z,A(1)‖シード)‖HMAC−Hash(Z,A(2)‖シード)‖HMAC−Hash(Z,A(3)‖シード)...
ここで‖は、連接を表わし、A()は下記のように定義される。
A(0)=シード;A(j)=HMAC_Hash(Z,A(j−1))
The function HMAC-Hash is used for another auxiliary hash general configuration in the TLS PRF called P_Hash. The configuration of P_Hash is as follows.
P_Hash (Z, seed) = HAMC-Hash (Z, A (1) ‖ seed) ‖ HMAC-Hash (Z, A (2) ‖ seed) ‖ HMAC-Hash (Z, A (3) ‖ seed). . .
Here, ‖ represents concatenation, and A () is defined as follows.
A (0) = seed; A (j) = HMAC_Hash (Z, A (j−1))
P_Hashは、必要な回数繰り返して、必要な量のデータを生成できる。ANSI X9.63と同様に、HMACタグの結果としての連接が、必要なデータ量よりも長い場合は、最終(最右端)バイトが切断される。 P_Hash can generate the required amount of data by repeating the required number of times. Similar to ANSI X9.63, if the resulting concatenation of the HMAC tag is longer than the required amount of data, the last (rightmost) byte is cut off.
TLS PRFは下記のように定義される。
PRF(Z,ラベル,シード)=P_MD5(S1,ラベル‖シード)+P_SHA−1(S2,ラベル‖シード)
ここで、通常のように、+は、排他的論理和を表わし、‖は、連接を表わす。値S1とS2はオクテットストリング秘密Zを半々に分割することで得られ、左半分は、S1であり右半分は、S2であり、左半分が大きく、秘密は奇数個のオクテットを有する。
The TLS PRF is defined as follows:
PRF (Z, label, seed) = P_MD5 (S1, label ‖ seed) + P_SHA-1 (S2, label シ ー ド seed)
Here, as usual, + represents exclusive OR, and ‖ represents concatenation. The values S1 and S2 are obtained by splitting the octet string secret Z in half, the left half is S1, the right half is S2, the left half is large, and the secret has an odd number of octets.
アルゴリズムで指定されるように、MD5の出力は、16オクテットであり、一方、SHA−1の出力は20オクテットであり、関数P_MD5は、一般的にはP_SHA−1よりも多くの繰り返しを使用する。 As specified by the algorithm, the output of MD5 is 16 octets, while the output of SHA-1 is 20 octets, and the function P_MD5 typically uses more iterations than P_SHA-1. .
TLS PRFはTLSプロトコルにおいては、幅広く使用される。例えば、プレマスター秘密からマスター秘密を導出するのに使用され、またマスター鍵から暗号鍵を導出などに使用される。 TLS PRF is widely used in the TLS protocol. For example, it is used to derive a master secret from a pre-master secret, and is used to derive an encryption key from a master key.
KDFに関する規格の不一致が、KDFなしのDH鍵共有をサポートするか、単に限定された数のKDFをサポートするかのどちらかに対する、モジュールの実践者への大きなインセンティブを作り出している。 The discrepancy in standards for KDF has created a great incentive for module practitioners to either support DH key sharing without KDF or simply support a limited number of KDFs.
標準公開鍵暗号規格(PKCS)#11:暗号トークンインタフェース(cryptoki)は、私有鍵モジュールのクラスである、スマートカードのようなトークンのインタフェースをアドレスする。この規格においては、2、3のKDFがサポートされるが、提供されるインタフェースは一般的には、KDFとの順応性がない。規格FIPS 140−2もまた私有鍵モジュールに対する条件を指定する。それは明示的に、未処理DH共有秘密値のような暗号値は、私有鍵モジュールの安全境界を離れてはならないことを要求するが、鍵導出に対する正確な機構は提供しない。 Standard Public Key Cryptography Standard (PKCS) # 11: Cryptographic token interface (cryptoki) addresses a token interface, such as a smart card, which is a class of private key modules. In this standard, a few KDFs are supported, but the provided interface is generally not adaptable to KDF. Standard FIPS 140-2 also specifies conditions for private key modules. It explicitly requires that cryptographic values, such as raw DH shared secret values, must not leave the private key module's secure boundary, but does not provide an accurate mechanism for key derivation.
本発明の発明者は、静的DH私有鍵の不適切な再使用は、最終的には敵対者による私有鍵の再生という結果になり得ることを発見した。より正確にいえば、静的DH鍵共有を介して確立された共有秘密が、鍵導出関数(KDF)の適用なしに使用された場合、敵対者は、複数の異なる共有鍵が確立されて使用される攻撃を仕掛けることができ、それにより静的DH私有鍵を再生できる。 The inventors of the present invention have discovered that improper reuse of static DH private keys can ultimately result in replay of private keys by adversaries. More precisely, if a shared secret established via static DH key sharing is used without applying a key derivation function (KDF), the adversary can use several different shared keys established and used. Attack can be launched, thereby regenerating the static DH private key.
本発明の発明者の最近の発見は、KDFなしにDHを実践できるという選択の余地があることは、安全性のリスクであり得ることを意味している。減少された数のKDFをサポートすることはあまりにも限定的すぎる。例えば、新しいアプリケーション規格を使用するためだけにハードウェアのアップグレードが必要になることもある。 The recent discovery of the inventor of the present invention means that there is a choice of being able to practice DH without KDF can be a safety risk. Supporting a reduced number of KDFs is too restrictive. For example, a hardware upgrade may be required only to use a new application standard.
規格が鍵導出関数について一致しないため、DH私有鍵操作を実行するモジュールは、ある程度は、複数の異なるKDF規格をサポートしなければならない。1つのアプローチは、モジュールがすべてのKDFアルゴリズムを実践することであるが、それは、モジュールが複数の異なるKDFをサポートしなければならないので高価であり、モジュールは、新しいKDFが登場したときにそれらをサポートできないので限定的である。反対のアプローチは、モジュールが保護されていないアクセスを未処理DH私有鍵操作に提供し、そのモジュールを使用するアプリケーションにKDFを適用させることである。しかし、これは私有鍵を、最近発見された攻撃に対して脆弱にさせる。 Since the standards do not match for the key derivation function, the module that performs DH private key operations must support some different KDF standards to some extent. One approach is that the module implements all KDF algorithms, but it is expensive because the module must support multiple different KDFs, and the module will replace them when a new KDF appears. Limited because it cannot be supported. The opposite approach is to provide unprotected access to the raw DH private key operations and allow the application using the module to apply KDF. However, this makes private keys vulnerable to recently discovered attacks.
本発明の目的は、上記の不都合な点を削除し、または緩和することである。 The object of the present invention is to eliminate or mitigate the above disadvantages.
一般的に言えば、モジュールを使用するアプリケーションにより示されるように、本発明によりモジュールがKDFアルゴリズムの一部を実行することを可能にする。これにより、モジュールが各必要なKDFに対してKDF全体を実践する必要はなくなる。その代わり、ほとんどのKDFに共通の再使用可能部分のみが実践される。更に、新しいKDFが必要となったときに、それらがモジュールが実践したKDFの部分上に構築されれば、それらをサポートできる。 Generally speaking, the present invention allows a module to execute part of the KDF algorithm, as shown by the application that uses the module. This eliminates the need for the module to practice the entire KDF for each required KDF. Instead, only the reusable part common to most KDFs is practiced. Furthermore, when new KDFs are needed, they can be supported if they are built on the part of the KDF that the module has implemented.
このように、静的DH私有鍵操作への未処理アクセスは、一般的に安全性のリスクがあまりにも高すぎる傾向があるので、モジュール上では許可されない。その代わり、モジュールは、すべての予見可能なKDFと同様に、すべての既存の関心対象であるKDFをサポートするのに十分なほど順応性のあるインタフェースを提供する。これは、安全私有鍵モジュール上の既存および予見可能なKDFの共通部分を実践することによりなされる。今日のほとんどのKDFは、ハッシュ関数上に構築されている。従来は、ほとんどの私有鍵モジュールは、少なくともハッシュ関数を実践する必要があった。これは、ハッシュ関数が、デジタル署名のような、多くのアルゴリズムの安全性に対して非常に重要であるので、改竄防止を考慮するためにも重要である。 Thus, raw access to static DH private key operations is generally disallowed on modules because security risks tend to be too high. Instead, the module provides an interface that is flexible enough to support all existing interesting KDFs, as well as all foreseeable KDFs. This is done by practicing the intersection of existing and foreseeable KDFs on the secure private key module. Most KDFs today are built on a hash function. Previously, most private key modules had to implement at least a hash function. This is also important for considering falsification prevention, as hash functions are very important for the security of many algorithms, such as digital signatures.
これに対する代替として、モジュールはまた、SHA−1の圧縮関数へのアクセスを簡単に提供することもできる。アプリケーションは、この圧縮関数を使用して、いくつかの必要な埋め込み(Padding)をし、ある適切なチェインニング(Chaining)を行うだけで、SHA−1を計算できる。これは更に、実践モジュールを単純化し、その順応性を高める。例えば、ある追加的順応性は、あるANSI決定的乱数生成子は、関数SHA−1全体の代わりに、SHA−1圧縮関数を使用するということである。より一般的には、鍵導出のような乱数生成は、一般的に秘密および秘密でない入力の混合に対するハッシュ関数値計算法の組み合わせを含む。従って、本発明は、複数のKDFをサポートすることに限定されないだけでなく、複数の決定的乱数生成子もサポートできる。 As an alternative to this, the module can also easily provide access to the SHA-1 compression function. An application can use this compression function to calculate SHA-1 simply by doing some necessary padding and doing some appropriate chaining. This further simplifies the practice module and increases its adaptability. For example, some additional flexibility is that some ANSI deterministic random number generators use the SHA-1 compression function instead of the entire function SHA-1. More generally, random number generation, such as key derivation, typically involves a combination of hash function value computation methods for a mixture of secret and non-secret inputs. Thus, the present invention is not limited to supporting multiple KDFs, but can also support multiple deterministic random number generators.
更に高い順応性のために、モジュールは、SHA−1圧縮関数のサブ演算のいくつかのような、より微小な演算をサポートできる。しかし、これらのサブ演算がSHA−1圧縮関数以外のある目的で再使用されるとは思われない。また、これら個々のサブ演算は、SHA−1の完全な安全性は提供せず、従って、モジュール上の秘密をアプリケーションに明らかにする可能性もあり、それは避けなければならない。しかし、この原理に対する例外は、新しいハッシュ関数の2つの対である。これはSHA−384とSHA−512の対と、SHA−224とSHA−256の対である。これらの対のそれぞれは、多くの共通部分を有しており、本質的に単一共通関数で実践できる。アプリケーションは、入力と出力を共通関数に対してのみ処理して、所望のハッシュ関数を得る。 For even greater flexibility, the module can support smaller operations, such as some of the sub-operations of the SHA-1 compression function. However, these sub-operations are not expected to be reused for some purpose other than the SHA-1 compression function. Also, these individual sub-operations do not provide the full security of SHA-1, and thus may reveal the secret on the module to the application, which must be avoided. However, the exception to this principle is two pairs of new hash functions. This is a pair of SHA-384 and SHA-512 and a pair of SHA-224 and SHA-256. Each of these pairs has many common parts and can essentially be implemented with a single common function. The application processes the input and output only for the common function to obtain the desired hash function.
TLSの用語においては擬似乱数関数(PRF)として知られているTLS鍵導出の場合、2つのハッシュ関数が使用される。その1つはSHA−1で他の1つはMD5である。PRF−TLSを秘密Zに適用するために、秘密は2つの部分S1とS2に半々にされる。そして、MD5に基づくPRFがS1に適用されて、SHA1に基づく関数がS2に適用される。モジュールが、高価となる可能性のあるMD5とSHA1両者の実践をしなくていいように、モジュールはアプリケーションにS1を明らかにする機構を提供し、S2をモジュール内に保持する。モジュールはS2についてのSHA1の計算を行い、アプリケーションはS1に対してMD5の計算を行うことができる。 In TLS terminology, two hash functions are used in the case of TLS key derivation known as a pseudo-random function (PRF). One is SHA-1 and the other is MD5. In order to apply PRF-TLS to secret Z, the secret is halved into two parts S1 and S2. Then, a PRF based on MD5 is applied to S1, and a function based on SHA1 is applied to S2. The module provides a mechanism for revealing S1 to the application and keeps S2 in the module so that the module does not have to do both MD5 and SHA1, which can be expensive. The module calculates SHA1 for S2, and the application can calculate MD5 for S1.
TLS内の1つ以外の他のKDFはそのような方法で秘密を分割することは予想されないが、規格が今後どのような方向に進むかを予測することは困難になる傾向がある。従って、モジュールが秘密を分割する一般的方法をサポートすることは有効である。従って、モジュールに対するインタフェースは、アプリケーションが秘密のその部分が公開されるように要求できる機構を含む。十分な秘密が、秘密のまま残り、アプリケーションが秘密の異なる部分に対する複数の要求ができないような方法でモジュールは実践される。 Other KDFs other than one in the TLS are not expected to divide the secret in that way, but tend to be difficult to predict in which direction the standard will go in the future. Therefore, it is useful for the module to support a general way of splitting secrets. Thus, the interface to the module includes a mechanism that allows the application to request that part of the secret be published. The module is practiced in such a way that enough secrets remain secret and the application cannot make multiple requests for different parts of the secret.
新しい規格は出現し続けているので、また、規格はKDFと乱数生成子を再設計し続けているので、ハードウェアモジュールへの順応性があり、安全なインタフェースは、モジュールの使用可能性の拡大に重要な価値を提供する。そうでなければ、モジュールはあまりにも早くに廃れてしまう危険性がある。 As new standards continue to emerge, and as standards continue to redesign KDF and random number generators, they are adaptable to hardware modules, and a secure interface increases module availability. To provide important value. Otherwise, there is a risk that the module will be discarded too quickly.
下記の説明と、そこで説明される実施形態は、本発明の原理の特別な実施形態の例を示すことにより提供される。これらの例は、本発明のそれらの原理を説明する目的のため提供されるのであって、限定的ではない。下記の説明では、類似の部分には、本明細書と図を通してそれぞれ、同一の参照番号が記される。 The following description and the embodiments described therein are provided by way of illustration of specific embodiments of the principles of the invention. These examples are provided for purposes of illustrating those principles of the invention and are not limiting. In the following description, like parts are denoted by like reference numerals throughout the specification and the drawings.
図1を参照すると、私有鍵モジュール装置50で保護された、ユーザー装置40と接続先100の間の接続が示されている。ユーザー装置40と接続先100の間の接続は、一般的には安全ではなく、オープンである。例えば、接続は、インターネットなどの公衆ネットワーク80へのリンク70と、公衆ネットワークから接続先100へのリンク90から構成されている。それぞれのリンクは、有線リンクであっても、ワイヤレスリンクであっても、その両者の組み合わせであってもよい。一般的には、私有鍵モジュール装置50は、スマートカードやトークンのような、現地の装置に挿入できる自己完結型装置であるか、またはアプリケーションが起動されるユーザー装置40である。モジュール装置50は、アプリケーションにより起動されると、ユーザー装置40と協働して、リンク70上の通信を保護する。
Referring to FIG. 1, a connection between a
この作動モードにおいて、私有鍵モジュール装置50は、ユーザー装置40と接続先装置100の間の接続を保護するための私有鍵機能を提供する。しかし、私有鍵モジュール装置50は、カスタム私有鍵モジュールなので、ユーザー装置40のような典型的なユーザーコンピュータの保護とは別のある追加的な保護を必要とする。鍵導出関数(KDF)を、ユーザー装置40で起動しているアプリケーションで部分的に、私有鍵モジュール装置50上で実行されているモジュール内で部分的に実践することにより、安全性が強化される。ユーザー装置40と私有鍵モジュール装置50がここでは別個の装置として記述されているが、それらは単一の物理的装置に統合できるということは理解されよう。例えば、私有鍵モジュール装置50は、特別埋め込みチップセットとしてユーザー装置40上に常駐できる。
In this operation mode, the private
ユーザー装置40は典型的に複数のアプリケーションを起動し、CPU42とメモリ装置44を利用して異なる機能を実行する。ユーザー装置40は、CPU42上で起動している通信アプリケーションの指令のもとで、リンク70を管理するための通信モジュール45を含む。安全な通信を確立するために、通信アプリケーションは、KDFのような私有鍵機能を要求する、上記に検討したプロトコルの1つのような、確立された保護プロトコルを実践する。順応性を維持しながら、選択されたKDFの計算を促進するために、KDFの導出は、離散したサブルーチンに分離され、私有鍵上での作動を要求するサブルーチンが私有鍵モジュール50により実行される。ユーザー装置40によりバランスが取られ、それにより未処理私有鍵データは、ユーザー装置40を通してアクセスされない。
The
図2を参照すると、ユーザー装置40上で起動しているアプリケーション10で部分的に実践され、私有鍵モジュール50上で起動しているアプリケーション20で部分的に実践される鍵導出関数(KDF)を有する保護システムの実践例が示されている。KDFは2つの部分に分割される。私有鍵モジュール50は、KDFの構成要素24を生成し、アプリケーション10はこれらの構成要素を使用してKDFのバランス22を計算する。私有鍵モジュール20は、データを交換し、アプリケーション10と通信するモジュールインタフェース26を有している。モジュールインタフェース26は更に2つのインタフェース関数、第1インタフェース関数28と、第2インタフェース関数30を有している。
Referring to FIG. 2, a key derivation function (KDF) that is partially practiced in the
有利なことであるが、ディフィ−ヘルマン(Diffie-Hellman)共有秘密値Zのような、ある秘密値は、私有鍵モジュール20内で判定される。Zの長さはアプリケーション10に知られているが、Zの値は知られていない。アプリケーション10は、ハンドルを有しており、それにより、秘密Zを参照することができ、このように私有鍵モジュール20にZから値を導出することを依頼できる。
Advantageously, certain secret values, such as the Diffie-Hellman shared secret value Z, are determined within the private
第1インタフェース関数28は、整数と、秘密Zのハンドルから構成される入力を有している。この整数は、アプリケーション10に開示されるZのオクテット数を定義する。これはTLS PRF内のS1値である。この機能を実行するときは、私有鍵モジュール20は、秘密の最小数のオクテットをS2として保持させることができ、それにより、アプリケーション10は、全体の秘密を知ることはない。この最小数は、アプリケーションの意図された保護レベルに対して適切に選択される。80ビットの保護レベルに対しては10オクテットであってもよい。第1インタフェース関数28がいったん呼び出されると、秘密は永久的にS2に切断され、私有鍵モジュール20は、S2の更なる切断を許可しない。S2を参照するためのハンドルまたはポインタがアプリケーション10に設けられる。好ましくは、Zが更なる計算では使用されないので、Zを参照するハンドルまたはポインタは再使用される。この後、私有鍵モジュール20は、第1インタフェース関数28が呼び出された後に、秘密Z=S2を設定する。随意に、私有鍵モジュール20は、単にS2を指し示している新しいハンドルを作成して、この新しいハンドルをアプリケーション10に出力して、アプリケーション10が後でS2を参照できるようにすることができる。値S1は常に第1インタフェース関数28の出力の一部であり、それにより、アプリケーション10、つまり、アプリケーション10に含まれるKDFの第1部分22は、TLS PRF内で使用されるMD5計算のような、必要ないかなる計算もS1に対して実行できる。
The
第2インタフェース関数30は、2つの値XとYと秘密Zのハンドルから構成される入力を有する。第1値は、秘密Zと同一の長さのオクテットストリングである。第2インタフェース関数30の出力は下記の通りである。
SHA−1(X+Z‖Y)
The
SHA-1 (X + Z‖Y)
第2インタフェース関数30は、ANSI X9.63 KDFとTLS PRFの両者が構築できる基本的暗号動作である。第1インタフェース関数28の出力S1と、第2インタフェース関数30の出力、つまり、SHA−1のハッシュ値から、アプリケーション10は、KDF計算を完結でき、鍵を導出できる。
The
ユーザー装置40は一般的に、CPU42と、CPU42にアクセス可能なメモリ装置44と、これもまたCPU20にアクセス可能な格納媒体46と、ある入力および出力装置(図示せず)を有する。理解されるであろうが、ユーザー装置40は、他のプログラム可能な計算装置であってもよい。アプリケーション10は、CPU42上で実行される。アプリケーション10は、格納媒体46上に格納でき、ユーザー装置40に永久的に設置してもよく、あるいはユーザー装置40から取外しできてもよく、あるいは、ユーザー装置40にリモートアクセスできてもよい。アプリケーション10はまた、CPU42に直接搭載することもできる。KDFの出力は、ユーザー装置40から接続先100への接続を保護するために必要である。
The
私有鍵モジュール50は一般的に、CPUまたはマイクロプロセッサ52と、CPU52にアクセス可能なメモリ装置54と、これもまたCPU52にアクセス可能な格納媒体56を有する。私有鍵モジュール20はCPU52上で実行される。私有鍵モジュール50は、格納媒体56上に格納してもよく、またはメモリ装置52に直接搭載してもよい。私有鍵モジュール50は秘密私有鍵を、そのメモリ装置54またはその格納媒体56内に格納できる。理解されるであろうが、私有鍵モジュール50は、私有鍵モジュール50がキーボード付きのスマートカードである場合のキーボードのような、ユーザーが秘密私有鍵を入力する入力手段を有してもよい。
The private
より揮発性の高いデータを格納するために使用される傾向にあるメモリ装置54と、より永続的なデータを格納するために使用される傾向にある格納媒体56を、ここでは区別してきたが、私有鍵モジュール50は、揮発性データおよび永続性データの両者を格納するための単一のデータ格納装置のみを有してもよい。同様に、ユーザー装置40は、揮発性データおよび永続性データの両者を格納するための単一のデータ格納装置のみを有してもよい。
Although a distinction has been made here between
データリンク60は、必要なときに、アプリケーション10と私有鍵モジュール50の間の通信チャネルを提供する。データリンク60は、有線でも、ワイヤレスでもよい。それはユーザー装置40と私有鍵モジュール50間の直接接続であってもよい。データリンク60は永続的であってもよく、より好ましくは、要求により確立される接続である。一般的に、データリンク60は、オープンリンクではなく、保護されているリンクである。
上記したように、私有鍵モジュール20は全体のKDFを実践しない。私有鍵モジュール50内で生成されたKDFの構成要素24は、再使用可能な部分のみと、安全性に基本的な暗号操作を行う部分しか実践しない。これにより、安全性を損ねることなく順応性を促進できる。例えば、DHプロトコルを実践するときは、静的DH私有鍵操作への未処理アクセスはモジュール上では許可されない。その代わりモジュールは、すべての予見可能なKDFと同様に、すべての関心対象の既存KDFをサポートするのに十分順応性のあるインタフェースを提供する。これを最も効率的に行う1つの方法は、既存および予見可能なKDFの共通部分を実践することである。今日のほとんどのKDFは、将来はそのいくつかはブロック暗号から構築されるであろうことは予見されるが、ハッシュ関数上で構築されている。ほとんどの私有鍵モジュールは、少なくともハッシュ関数をサポートすべきであり、これはデジタル署名のような、多くのアルゴリズムの安全性に対してハッシュ関数が非常に重要であることによる。幸いなことに、規格化されているハッシュ関数の数は、KDFよりも少ない。例えば、ハッシュ関数SHA−1は、別個のANSI、IPSec、およびTLS鍵導出関数のような、いくつかの異なるKDFをサポートするために再使用できる。TLS鍵導出はまた、別のハッシュ関数であるMD5を使用するが、これは、下記に更に説明するように、モジュール50の外部で扱うことができる。
As described above, the private
図3を参照すると、SHA−1操作を使用して生成されたKDFに対して、アプリケーション10は、私有鍵モジュール50に、ハッシュ関数への入力としてどの入力を供給すべきかを指令する。入力のいくつかは、秘密であり、アプリケーションには知らされない。これを指定するために、アプリケーション10は、ハンドルまたはポインタ57を介してそのような秘密入力を参照する。公開入力がアプリケーション10により直接提供されてもよい。各KDF独自の入力のフォーマットは、モジュールにより提供される一般的フォーマットインタフェースにより指定される。私有鍵モジュール50がアプリケーション10に提供するハッシュ出力は、より多くのハッシュ関数の呼び出しへの更なる入力としてアプリケーション10により再使用することもできる。これは、多くのKDFが、1つのハッシュ呼び出しの出力が、別のハッシュ呼び出しの入力に供給されるチェーニング機構に基づいているからである。
Referring to FIG. 3, for the KDF generated using the SHA-1 operation, the
1つの実施形態において、私有鍵モジュール50は、SHA−1の実践と単純インタフェースを含む。代替実施形態においては、私有鍵モジュール20は、汎用目的の実行環境を含む。
In one embodiment, private
または、インタフェースが実践されて、それにより、モジュールがTLS PRFとANSI X9.63 KDFの両者を、過度に未処理私有鍵操作を開示することなく(それにより本発明の発明者により発見された攻撃を回避する)サポートできる。 Or, the interface is implemented so that the module will allow both TLS PRF and ANSI X9.63 KDFs to be disclosed without unduly disclosing private key operations (the attacks discovered by the inventors of the present invention). Can be supported).
ANSI X9.63 KDFとTLS PRFのサポートにおける操作において、ANSI X9.63 KDFは、ハッシュ関数SHA−1から、共有秘密値に基づいて計算された一連のハッシュ値を計算し、ハッシュ値の連接から形成されるオクテットストリングを切断することにより、共有秘密値から鍵を導出し、一方、TLS PRFは、ハッシュ関数MD5とハッシュ関数SHA−1の両者の計算を含む、はるかに複雑な構造を有している。 In operation in support of ANSI X9.63 KDF and TLS PRF, ANSI X9.63 KDF calculates a series of hash values calculated based on the shared secret value from hash function SHA-1, and from the concatenation of hash values. The key is derived from the shared secret value by cutting the octet string that is formed, while the TLS PRF has a much more complex structure that includes the computation of both the hash function MD5 and the hash function SHA-1. ing.
モジュールインタフェース26の目的は、ハッシュ関数MD5を実践しないことである。ハッシュ関数SHA−1のみが私有鍵モジュール20上で、つまり、KDFの第2部分24上で実践される。従って、私有鍵モジュール20を使用するアプリケーション10は、KDFのその第1部分22においてMD5を実践することに責任がある。安全性の観点からは、これは重大な欠点とはならない。これは、MD5ハッシュ関数は、十分な安全性を提供するとは普遍的には考えられていないからであり、一方では、SHA−1ハッシュ関数は、最高の安全性レベル(これらの高いレベルはSHA−256またはSHA−1の別の後継プロトコルを必要とする)以外のすべてのレベルに対して、鍵導出の目的のために、十分な安全性を提供することが普遍的に受け入れられる傾向にあるからである。
The purpose of the
ANSI X9.63 KDFのサポートにおける操作の概要は、図4に示されている。そのような操作においては、アプリケーション10はX=0とY=j‖[SharedInfo]を選択し、ここでjは、アプリケーションが維持する4オクテットカウンタである。アプリケーション10は、その後、X、Yと、Zに対するハンドルで機能30を呼び出す。私有鍵モジュール50のアプリケーション20は、その後、アプリケーション10により供給されたXとYに対する値と、Zに対するハンドルを使用して、上述され、図4に示された式に従ってSHA−1を計算する。アプリケーション10は、これにより計算されたSHA−1値を得ることができ、これを使用して、ANSI X9.63 KDFを構築して鍵を導出する。
An overview of operations in support of ANSI X9.63 KDF is shown in FIG. In such an operation,
TLS PRFのサポートにおけるアプリケーション10と20の操作は、図5に示されている。アプリケーション10は、関数28に関して上述したように、共有秘密ZをS1とS2に半々にする(図5のパート1)ために、第1インタフェース関数28を呼び出す。アプリケーション10はこの後、第2インタフェース関数30を呼び出して、S2に基づいてハッシュ値を計算し(図5のパート2)、この上述の構成を使用して、第1および第2インタフェース関数28、30の出力からP_SHA−1を計算する(図5のパート3)。パート2と3は下記に説明する。
The operation of
図5に示されたTLS−PRFの操作のパート2で使用された関数HMAC−SHA−1を構築するために、アプリケーション10はまず、X=DとY=Mと、鍵Kに対するハンドルで第2インタフェース関数30を呼び出し、それによりT1=SHA−1((D+K)‖M)が与えられる(Dの値は、一定であると一般に知られており、従って、アプリケーション10に利用できる)。そして、アプリケーション10は、Kに対する同一ハンドルでX=CとY=Tを設定して、T=SHA−1(C+K)‖T1)=HMAC−SHA(K,M)を得る(Cの値は、Dのように公開である)。
To construct the function HMAC-SHA-1 used in
鍵Kをゼロビットで埋める必要がある場合は、アプリケーション10が、第2入力Yに、定数CとDの適切なオクテットとの排他的論理和が演算された必要なゼロビットを提供することでこれを行う。鍵Kが最初に圧縮が必要なほど長い場合は、アプリケーション10は、これをX=0とY=0と設定してハッシュ鍵を得ることで行うことができる。この場合、アプリケーション10は、必要な情報をすべて有しているので、随意的にそれ自身上で計算の残りを実行することができ、または更に第3インタフェース機能を使用して、上記のハッシュ出力を、新しいハンドルの別の秘密として指定できる。
If the key K needs to be padded with zero bits, the
図3に示されたTLS−PRFをサポートする操作のパート3において関数P_SHA−1を構築するために、アプリケーション10は、今度はパート1での出力として提供されたS1と、上記の構成を使用して、秘密鍵が私有鍵モジュール20に閉じ込められている、HMAC_SHA−1を計算する。これは、HMAC_SHA−1を繰り返し適用することでA(0)、A(1)、A(2)を計算することを含み、それらはその結果、HMAC_SHA−1を更に適用することでP_SHA−1の出力を形成する。
To build the function P_SHA-1 in
出力P_SHA−1は、KDFを構築して、鍵を導出するのに使用される。 The output P_SHA-1 is used to construct a KDF and derive a key.
上記の例は、私有鍵モジュール20内で導出された鍵はアプリケーション10への出力として導出されると仮定している。これに対する代替例では、導出された鍵は、私有鍵モジュール20内に留まり、出力はその鍵への単なるハンドルまたはポインタである。この優位点は、すべての鍵が私有鍵モジュール20上に保持できることであり、それによりモジュールの所有者に、アプリケーションが、長期私有鍵は言うまでもなく、導出されたセッション鍵さえも乱用できないことを更に確信させる。
The above example assumes that the keys derived within the private
代替実施形態において、私有鍵モジュール20は、更に高いレベルの順応性を有している。私有鍵モジュール20は、ジャバスクリプト(javascript)またはジャバ(java)のような、ある単純な実行言語をサポートしてもよく、それにより、カード上で実行される操作に広大な普遍性を与える。つまり、アプリケーション10はプログラムを私有鍵モジュール20に供給して、それを私有鍵モジュール20が実行する。プログラムは、モジュールにあるときは、秘密に自由にアクセスできる。安全のために、私有鍵モジュール20は、モジュールからのすべての出力が、SHA−1のようなハッシュアルゴリズムや、AESのような対称暗号操作の一部のような、認可されている安全性アルゴリズムを経ることを確実にする。これにより、悪意あるプログラムが試みることができるほとんどの悪用を防止できる。
In an alternative embodiment, private
安全性を更に高めるために、私有鍵モジュール20は、プログラムが、その公開検証鍵が既に安全に私有鍵モジュール20にロードされている署名者によるデジタル署名を要求する。これは、私有鍵モジュール20にロードされたプログラムを認証する1つの方法である。プログラムの認証により、プログラムが、モジュールの秘密を危険に晒すという目的の悪意ある実行プログラムでないことが保証される。プログラムの認証により、プログラムそれ自身が任意のアルゴリズムを実行するのに十分なほど信頼できるので、モジュール入力をあるハッシュ、または他のアルゴリズムに制限する必要がなくなる。
To further increase security, the private
この代替実施形態の、第1実施形態に対する優位点は、それが、既存または新しい多様なハッシュをモジュール上で実行することを可能にするように、より高い順応性を提供することである。不都合な点は、モジュールが、一般実行言語と、場合によっては公開鍵インフラの一部、をサポートする必要があるということである。 The advantage of this alternative embodiment over the first embodiment is that it provides greater flexibility to allow a variety of existing or new hashes to be performed on the module. The disadvantage is that the module needs to support a general execution language and possibly a part of the public key infrastructure.
本発明の種々の実施形態が詳細に記述された。当業者は、本発明の範囲から逸脱することなく、実施形態に対して、多くの修正、適合、および変形が可能であることを理解するであろう。上述した最も好適な実施形態における、またはそれに付け加える変更は、本発明の本質、精神、および範囲から逸脱することなく可能であるので、本発明はそれらの詳細には限定されず、付随する請求項にのみ限定される。 Various embodiments of the invention have been described in detail. Those skilled in the art will appreciate that many modifications, adaptations, and variations may be made to the embodiments without departing from the scope of the present invention. Since changes in or in addition to the most preferred embodiments described above are possible without departing from the spirit, spirit and scope of the invention, the invention is not limited to those details and the appended claims Limited to only.
10 アプリケーション
20 アプリケーション
40 ユーザー装置
50 私有鍵モジュール装置
60 データリンク
70 リンク
80 公衆ネットワーク
90 リンク
100 接続
10
Claims (20)
i)アプリケーションが前記計算装置上で実行され、前記モジュールによって提供された前記秘密値に対するポインタを用いて前記秘密値を参照することによって、前記モジュールに、前記秘密値を含む前記暗号化動作の少なくとも1つのサブルーチンを実行するように要求するステップと、 i) An application is executed on the computing device and refers to the secret value using a pointer to the secret value provided by the module, thereby causing the module to include at least the encryption operation including the secret value. Requesting to execute a subroutine;
ii)前記モジュールが、前記ポインタによって参照された前記秘密値を利用して前記少なくとも1つのサブルーチンを実行して、1つ以上の暗号構成要素を得るステップと、 ii) the module executes the at least one subroutine using the secret value referenced by the pointer to obtain one or more cryptographic components;
iii)前記モジュールが、前記1つ以上の暗号構成要素を前記アプリケーションに提供するステップと、 iii) the module providing the one or more cryptographic components to the application;
iv)前記アプリケーションが、前記1つ以上の暗号構成要素を利用して前記暗号化動作を完結するステップと iv) the application completing the encryption operation using the one or more cryptographic components;
を含む、方法。 Including a method.
前記アプリケーションが、前記ポインタを用いて前記秘密値に対して前記SHA−1ハッシュ関数を計算するように前記モジュールに指示することによって、前記モジュールに、前記少なくとも1つのサブルーチンを実行するように要求することと、 The application requests the module to execute the at least one subroutine by instructing the module to calculate the SHA-1 hash function for the secret value using the pointer. And
前記モジュールが、前記秘密値に対して前記SHA−1ハッシュ関数を実行してハッシュ出力を生成することと、 The module performs the SHA-1 hash function on the secret value to generate a hash output;
前記モジュールが、前記1つ以上の暗号構成要素として前記ハッシュ出力を提供することと、 The module provides the hash output as the one or more cryptographic components;
前記アプリケーションが、さらなる入力として前記ハッシュ出力を得て、前記暗号化動作を完結して、前記暗号化動作から鍵を導出することと The application obtains the hash output as a further input, completes the encryption operation, and derives a key from the encryption operation;
をさらに含む、請求項3に記載の方法。 The method of claim 3, further comprising:
前記アプリケーションが、共有秘密を第1の半分と第2の半分とに分割するように前記モジュールに指示することによって、前記モジュールに、前記少なくとも1つのサブルーチンを実行するように要求することと、 Requesting the module to execute the at least one subroutine by instructing the module to split a shared secret into a first half and a second half;
前記モジュールが、前記第1の半分に対応する第1の半分ポインタと前記第2の半分に対応する第2の半分ポインタとを、第1の出力として提供することと、 The module providing, as a first output, a first half pointer corresponding to the first half and a second half pointer corresponding to the second half;
前記アプリケーションが、前記第1の半分ポインタと前記第2の半分ポインタとのうちの1つのポインタを参照することによって、前記第1の半分と前記第2の半分とのうちの1つの半分に対してSHA−1ハッシュ関数を実行するように前記モジュールに指示することと、 The application references one pointer of the first half pointer and the second half pointer to one half of the first half and the second half. Instructing the module to execute the SHA-1 hash function;
前記モジュールが、前記アプリケーションによって参照された前記第1の半分と前記第2の半分とのうちの前記1つの半分に対して前記SHA−1ハッシュ関数を実行して前記SHA−1ハッシュ関数の結果を生成して、前記SHA−1ハッシュ関数の結果に対応するSHA−1ハッシュ関数の結果ポインタを前記アプリケーションに戻すことと The module performs the SHA-1 hash function on the one half of the first half and the second half referenced by the application to result in the SHA-1 hash function And returning a result pointer of the SHA-1 hash function corresponding to the result of the SHA-1 hash function to the application.
をさらに含む、請求項2に記載の方法。 The method of claim 2 further comprising:
前記モジュールが、前記指示と、前記第2のセットの入力と、前記SHA−1ハッシュ関数の結果ポインタとを受けて、前記SHA−1ハッシュ関数の結果ポインタによって参照された前記SHA−1ハッシュ関数の前記結果を利用して、前記SHA−1ハッシュ関数の前記1回以上の繰り返しを実行して、前記SHA−1ハッシュ関数の前記1回以上の繰り返しの結果を第2の出力として戻すことと The SHA-1 hash function referenced by the result pointer of the SHA-1 hash function in response to the instruction, the input of the second set, and the result pointer of the SHA-1 hash function. Performing the one or more iterations of the SHA-1 hash function using the result of, and returning the result of the one or more iterations of the SHA-1 hash function as a second output;
をさらに含む、請求項5に記載の方法。 The method of claim 5, further comprising:
前記暗号化装置は、 The encryption device is:
暗号化動作を計算するためのアプリケーションを実行するデバイスであって、前記暗号化動作の少なくとも1つのサブルーチンは秘密値を利用する、デバイスと、 A device executing an application for calculating an encryption operation, wherein at least one subroutine of the encryption operation utilizes a secret value;
前記秘密値を格納し、プロセッサを含むモジュールであって、前記プロセッサは、前記少なくとも1つのサブルーチンを実行して、前記秘密値を用いて暗号構成要素を生成して、前記暗号構成要素から結果を生成するように動作し、前記モジュールは、第1のインターフェース機能と第2のインターフェース機能とを提供するインターフェースを含み、前記第1のインターフェース機能は、前記秘密値を参照されるようにするが明らかにはされないようにすることができ、前記第2のインターフェース機能は、前記プロセッサに前記第1のインターフェース機能によって参照された秘密を利用して前記少なくとも1つのサブルーチンを実行するように指示する、モジュールと、 A module that stores the secret value and includes a processor, wherein the processor executes the at least one subroutine to generate a cryptographic component using the secret value and to obtain a result from the cryptographic component Obviously, the module includes an interface that provides a first interface function and a second interface function, the first interface function allowing the secret value to be referenced. The second interface function directs the processor to execute the at least one subroutine using a secret referenced by the first interface function. When,
前記アプリケーションから前記モジュールへの指示を可能にして、前記モジュールから前記アプリケーションへの前記結果の転送を可能にする、第1のモジュールと前記アプリケーションとの間のデータ接続と、 A data connection between the first module and the application, which allows instructions from the application to the module and enables transfer of the results from the module to the application;
を含み、前記アプリケーションは前記結果を用いて前記暗号化動作の計算を完結するようにさらに動作可能である、装置。 And the application is further operable to complete the computation of the encryption operation using the result.
前記アプリケーションであって、前記第1のインターフェース機能を用いて前記秘密値に対して前記ハッシュ関数を計算するように前記モジュールに指示することによって、前記モジュールに前記少なくとも1つのサブルーチンを実行するように要求するように動作する、アプリケーションと、 The application executes the at least one subroutine to the module by instructing the module to calculate the hash function for the secret value using the first interface function. An application that works as required, and
前記モジュールであって、前記秘密値に対して前記ハッシュ関数を実行してハッシュ出力を生成する、モジュールと、 A module that executes the hash function on the secret value to generate a hash output; and
前記モジュールであって、前記ハッシュ出力を前記1つ以上の暗号構成要素として提供する、モジュールと、 Said module, said module providing said hash output as said one or more cryptographic components;
前記アプリケーションであって、前記ハッシュ出力をさらなる入力として得て前記暗号化動作を完結させて前記暗号化動作から鍵を導出する、アプリケーションと An application that obtains the hash output as a further input to complete the encryption operation and derive a key from the encryption operation; and
をさらに含む、請求項14に記載の装置。 15. The apparatus of claim 14, further comprising:
前記アプリケーションであって、共有秘密を第1の半分と第2の半分とに分割するように前記モジュールに指示することによって、前記モジュールに前記少なくとも1つのサブルーチンを実行するように要求するように動作する、アプリケーションと、 The application is operable to request the module to execute the at least one subroutine by instructing the module to split a shared secret into a first half and a second half With the application,
前記モジュールであって、前記第1のインターフェース機能として、前記第1の半分に対応する第1の半分ポインタと前記第2の半分に対応する第2の半分ポインタとを、第1の出力として提供するように動作する、モジュールと、 The module, as the first interface function, provides a first half pointer corresponding to the first half and a second half pointer corresponding to the second half as a first output. A module that works to
前記アプリケーションであって、前記第1の半分ポインタと前記第2の半分ポインタとのうちの1つのポインタを参照することによって、前記第1の半分と前記第2の半分とのうちの1つの半分に対してSHA−1ハッシュ関数を実行するように前記モジュールに指示するように動作する、アプリケーションと、 The application, wherein one half of the first half and the second half is referenced by referring to one of the first half pointer and the second half pointer An application that operates to instruct the module to perform a SHA-1 hash function on
前記モジュールであって、前記アプリケーションによって参照された前記第1の半分と前記第2の半分とのうちの前記1つの半分に対して前記SHA−1ハッシュ関数を実行して前記SHA−1ハッシュ関数の結果を生成して、前記SHA−1ハッシュ関数の結果に対応するSHA−1ハッシュ関数の結果ポインタを、前記アプリケーションに戻すように動作する、モジュールと The SHA-1 hash function by executing the SHA-1 hash function on the one half of the first half and the second half referenced by the application; A module that operates to return a result pointer of the SHA-1 hash function corresponding to the result of the SHA-1 hash function to the application
をさらに含む、請求項9に記載の装置。 10. The apparatus of claim 9, further comprising:
前記モジュールであって、前記指示と、前記第2のセットの入力と、前記SHA−1ハッシュ関数の結果ポインタとを受けて、前記SHA−1ハッシュ関数の結果ポインタによって参照された前記SHA−1ハッシュ関数の前記結果を利用して、前記SHA−1ハッシュ関数の前記1回以上の繰り返しを実行して、前記SHA−1ハッシュ関数の前記1回以上の繰り返しの結果を第2の出力として戻すように動作する、モジュールと The SHA-1 which is the module and receives the indication, the input of the second set, and the result pointer of the SHA-1 hash function, and is referenced by the result pointer of the SHA-1 hash function Performing the one or more iterations of the SHA-1 hash function using the result of the hash function and returning the result of the one or more iterations of the SHA-1 hash function as a second output. Works like a module and
をさらに含む、請求項16に記載の装置。 The apparatus of claim 16, further comprising:
前記アプリケーションが、前記秘密値を利用して前記少なくとも1つのサブルーチンから結果を得るように前記モジュールに要求するステップであって、前記秘密値は、前記ポインタを用いて前記第1のインターフェース機能を通して前記アプリケーションによって参照され、前記少なくとも1つのサブルーチンは、前記第2のインターフェース機能を通して参照される、ステップと、 Said application requesting said module to obtain a result from said at least one subroutine using said secret value, said secret value being said through said first interface function using said pointer. Being referenced by an application, and wherein the at least one subroutine is referenced through the second interface function;
前記アプリケーションが、前記インターフェースを通して前記モジュールから前記結果を受け取るステップであって、前記結果は、前記ポインタによって参照された前記秘密を利用して前記暗号化動作の前記少なくとも1つのサブルーチンを実行することによって前記モジュールによって生成される、ステップと、 The application receiving the result from the module through the interface, wherein the result is executed by executing the at least one subroutine of the encryption operation utilizing the secret referenced by the pointer; Generated by the module; and
前記アプリケーションが、前記モジュールによって生成された前記結果を利用して前記暗号化動作の計算を完結するステップと The application using the result generated by the module to complete the computation of the encryption operation;
を含む、方法。 Including a method.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IB2004003705 | 2004-11-11 | ||
IBPCT/IB2004/3705 | 2004-11-11 | ||
PCT/IB2005/003385 WO2006051404A2 (en) | 2004-11-11 | 2005-11-11 | Secure interface for versatile key derivation function support |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2008520145A JP2008520145A (en) | 2008-06-12 |
JP4937921B2 true JP4937921B2 (en) | 2012-05-23 |
Family
ID=39012133
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007540747A Active JP4937921B2 (en) | 2004-11-11 | 2005-11-11 | A secure interface for generic key derivation function support |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP4937921B2 (en) |
CN (1) | CN101099327B (en) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102012219205A1 (en) * | 2012-10-22 | 2014-05-08 | Robert Bosch Gmbh | Apparatus and method for carrying out a cryptographic method |
CN105515775B (en) * | 2015-08-31 | 2021-03-09 | 上海扈民区块链科技有限公司 | Efficient privacy protection signcryption method |
CN107770195B (en) * | 2017-11-27 | 2024-01-09 | 中电万维信息技术有限责任公司 | Cross-domain identity authentication system based on cloud environment and application method thereof |
EP4095834B1 (en) * | 2020-01-20 | 2024-12-18 | Nippon Telegraph And Telephone Corporation | Secure selective product computation system, secure selective product computation method, secure computation apparatus, and program |
WO2024095451A1 (en) * | 2022-11-04 | 2024-05-10 | 日本電信電話株式会社 | Communication system, communication device, method, and program |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0372737A (en) * | 1989-05-31 | 1991-03-27 | Toshiba Corp | Request calculation system |
JPH0619393A (en) * | 1992-03-31 | 1994-01-28 | Toshiba Corp | Request calculating device |
DE10000503A1 (en) * | 2000-01-08 | 2001-07-12 | Philips Corp Intellectual Pty | Data processing device and method for its operation |
CN1365214A (en) * | 2001-01-09 | 2002-08-21 | 深圳市中兴集成电路设计有限责任公司 | Cipher key managing method based on public cipher key system |
JP2004297578A (en) * | 2003-03-27 | 2004-10-21 | Matsushita Electric Ind Co Ltd | Public key generator, shared key generator, key exchange device, and key exchange method |
-
2005
- 2005-11-11 CN CN2005800464274A patent/CN101099327B/en active Active
- 2005-11-11 JP JP2007540747A patent/JP4937921B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2008520145A (en) | 2008-06-12 |
CN101099327B (en) | 2011-08-24 |
CN101099327A (en) | 2008-01-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101999188B1 (en) | Secure personal devices using elliptic curve cryptography for secret sharing | |
US8634562B2 (en) | Secure interface for versatile key derivation function support | |
RU2718689C2 (en) | Confidential communication control | |
US11153074B1 (en) | Trust framework against systematic cryptographic | |
CN108292402B (en) | Determination of a common secret and hierarchical deterministic keys for the secure exchange of information | |
US7516321B2 (en) | Method, system and device for enabling delegation of authority and access control methods based on delegated authority | |
US5164988A (en) | Method to establish and enforce a network cryptographic security policy in a public key cryptosystem | |
CN110401615B (en) | Identity authentication method, device, equipment, system and readable storage medium | |
US20120131331A1 (en) | System And Method For End To End Encryption | |
US20080037793A1 (en) | System and Method for Distributed Security | |
CN109951276B (en) | Embedded equipment remote identity authentication method based on TPM | |
CN102724041A (en) | Steganography-based key transmission and key updating method | |
JP4874007B2 (en) | Authentication system, server computer, program, and recording medium | |
US9800410B1 (en) | Data encryption system and method | |
JP4937921B2 (en) | A secure interface for generic key derivation function support | |
CN118249996A (en) | Data confidentiality method for deriving multiple encryption keys from single password and resisting back door attack | |
CN114765531B (en) | Authentication method, quantum key calling method, device and quantum password network | |
CN114329522A (en) | A kind of private key protection method, device, system and storage medium | |
JP5101535B2 (en) | Authentication method, authentication system, program, and shared key generation method | |
CN112925535A (en) | Method and device for installing embedded application of password chip | |
CN114124366A (en) | Key generation method of trusted chip and related equipment | |
Jain | Enhancing security in Tokenization using NGE for storage as a service | |
Åkesson | Hermod: A file transfer protocol using noise protocol framework | |
US20220083666A1 (en) | Key authentication | |
Ruan et al. | Building blocks of the security and management engine |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20081027 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20100120 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20100128 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110629 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20110928 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20111005 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20111028 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20111107 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20111128 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20111205 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20111229 |
|
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: 20120126 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20120222 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150302 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4937921 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |