[go: up one dir, main page]

JP4937921B2 - A secure interface for generic key derivation function support - Google Patents

A secure interface for generic key derivation function support Download PDF

Info

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
Application number
JP2007540747A
Other languages
Japanese (ja)
Other versions
JP2008520145A (en
Inventor
ダニエル アール. エル. ブラウン,
ロバート ピー. ギャラント,
スコット エー. ヴァンストーン,
Original Assignee
サーティコム コーポレーション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by サーティコム コーポレーション filed Critical サーティコム コーポレーション
Priority claimed from PCT/IB2005/003385 external-priority patent/WO2006051404A2/en
Publication of JP2008520145A publication Critical patent/JP2008520145A/en
Application granted granted Critical
Publication of JP4937921B2 publication Critical patent/JP4937921B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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を有し、そこから公開鍵α、αがそれぞれ導出できる。公開鍵を交換することにより、当事者それぞれは、私有鍵と公開鍵を組み合わせることにより共有秘密鍵α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 value 1. A series of hash values Kj is calculated as follows. Kj = SHA-1 (Z‖j‖ [SharedInfo]), where ‖ indicates concatenation, and [] indicates that the input enclosed in parentheses is optional. The number t of these outputs depends on keydatalen. The hash values are concatenated into an octet string K ′ = K1‖K2‖. . . ‖Kt is formed. The octet string is truncated to the short octet string K by taking the leftmost keydatalen octet. The output of ANSI X9.63 KDF is K.

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 user device 40 and a connection destination 100 protected by a private key module device 50 is shown. The connection between the user device 40 and the connection destination 100 is generally not secure and is open. For example, the connection includes a link 70 to a public network 80 such as the Internet and a link 90 from the public network to the connection destination 100. Each link may be a wired link, a wireless link, or a combination of both. Typically, the private key module device 50 is a self-contained device that can be inserted into a local device, such as a smart card or token, or a user device 40 on which an application is launched. When the module device 50 is activated by an application, it cooperates with the user device 40 to protect communications on the link 70.

この作動モードにおいて、私有鍵モジュール装置50は、ユーザー装置40と接続先装置100の間の接続を保護するための私有鍵機能を提供する。しかし、私有鍵モジュール装置50は、カスタム私有鍵モジュールなので、ユーザー装置40のような典型的なユーザーコンピュータの保護とは別のある追加的な保護を必要とする。鍵導出関数(KDF)を、ユーザー装置40で起動しているアプリケーションで部分的に、私有鍵モジュール装置50上で実行されているモジュール内で部分的に実践することにより、安全性が強化される。ユーザー装置40と私有鍵モジュール装置50がここでは別個の装置として記述されているが、それらは単一の物理的装置に統合できるということは理解されよう。例えば、私有鍵モジュール装置50は、特別埋め込みチップセットとしてユーザー装置40上に常駐できる。   In this operation mode, the private key module device 50 provides a private key function for protecting the connection between the user device 40 and the connection destination device 100. However, since the private key module device 50 is a custom private key module, it requires some additional protection that is separate from the protection of a typical user computer such as the user device 40. Security is enhanced by practicing the key derivation function (KDF) partly in an application running on the user device 40 and partly in a module running on the private key module device 50. . Although user device 40 and private key module device 50 are described herein as separate devices, it will be understood that they can be integrated into a single physical device. For example, the private key module device 50 can reside on the user device 40 as a special embedded chipset.

ユーザー装置40は典型的に複数のアプリケーションを起動し、CPU42とメモリ装置44を利用して異なる機能を実行する。ユーザー装置40は、CPU42上で起動している通信アプリケーションの指令のもとで、リンク70を管理するための通信モジュール45を含む。安全な通信を確立するために、通信アプリケーションは、KDFのような私有鍵機能を要求する、上記に検討したプロトコルの1つのような、確立された保護プロトコルを実践する。順応性を維持しながら、選択されたKDFの計算を促進するために、KDFの導出は、離散したサブルーチンに分離され、私有鍵上での作動を要求するサブルーチンが私有鍵モジュール50により実行される。ユーザー装置40によりバランスが取られ、それにより未処理私有鍵データは、ユーザー装置40を通してアクセスされない。   The user device 40 typically starts a plurality of applications and performs different functions using the CPU 42 and the memory device 44. The user device 40 includes a communication module 45 for managing the link 70 under the command of a communication application running on the CPU 42. In order to establish secure communication, the communication application implements an established protection protocol, such as one of the protocols discussed above, that requires a private key function such as KDF. In order to facilitate computation of the selected KDF while maintaining flexibility, the derivation of the KDF is separated into discrete subroutines, and a subroutine that requires operation on a private key is executed by the private key module 50. . Balanced by the user device 40 so that unprocessed private key data is not accessed through the user device 40.

図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 application 10 running on the user device 40 and partly practiced in the application 20 running on the private key module 50 is shown. A practical example of a protection system is shown. The KDF is divided into two parts. Private key module 50 generates KDF components 24, and application 10 uses these components to calculate KDF balance 22. The private key module 20 has a module interface 26 that exchanges data and communicates with the application 10. The module interface 26 further has two interface functions, a first interface function 28 and a second interface function 30.

有利なことであるが、ディフィ−ヘルマン(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 key module 20. The length of Z is known to the application 10, but the value of Z is not known. The application 10 has a handle so that it can reference the secret Z and thus ask the private key module 20 to derive a value from Z.

第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 first interface function 28 has an input consisting of an integer and a secret Z handle. This integer defines the number of Z octets disclosed to the application 10. This is the S1 value in the TLS PRF. When performing this function, the private key module 20 can keep the minimum number of secret octets as S2, so that the application 10 does not know the overall secret. This minimum number is chosen appropriately for the intended protection level of the application. It may be 10 octets for an 80 bit protection level. Once the first interface function 28 is called, the secret is permanently disconnected to S2, and the private key module 20 does not allow further disconnection of S2. A handle or pointer for referring to S2 is provided in the application 10. Preferably, the handle or pointer referring to Z is reused because Z is not used in further calculations. Thereafter, the private key module 20 sets the secret Z = S2 after the first interface function 28 is called. Optionally, private key module 20 can simply create a new handle pointing to S2 and output this new handle to application 10 so that application 10 can later reference S2. The value S1 is always part of the output of the first interface function 28, so that the application 10, i.e. the first part 22 of the KDF included in the application 10, is like the MD5 calculation used in the TLS PRF. Any necessary calculations can be performed on S1.

第2インタフェース関数30は、2つの値XとYと秘密Zのハンドルから構成される入力を有する。第1値は、秘密Zと同一の長さのオクテットストリングである。第2インタフェース関数30の出力は下記の通りである。
SHA−1(X+Z‖Y)
The second interface function 30 has an input composed of two values X and Y and a secret Z handle. The first value is an octet string of the same length as the secret Z. The output of the second interface function 30 is as follows.
SHA-1 (X + Z‖Y)

第2インタフェース関数30は、ANSI X9.63 KDFとTLS PRFの両者が構築できる基本的暗号動作である。第1インタフェース関数28の出力S1と、第2インタフェース関数30の出力、つまり、SHA−1のハッシュ値から、アプリケーション10は、KDF計算を完結でき、鍵を導出できる。   The second interface function 30 is a basic cryptographic operation that can be constructed by both ANSI X9.63 KDF and TLS PRF. From the output S1 of the first interface function 28 and the output of the second interface function 30, that is, the hash value of SHA-1, the application 10 can complete the KDF calculation and derive the key.

ユーザー装置40は一般的に、CPU42と、CPU42にアクセス可能なメモリ装置44と、これもまたCPU20にアクセス可能な格納媒体46と、ある入力および出力装置(図示せず)を有する。理解されるであろうが、ユーザー装置40は、他のプログラム可能な計算装置であってもよい。アプリケーション10は、CPU42上で実行される。アプリケーション10は、格納媒体46上に格納でき、ユーザー装置40に永久的に設置してもよく、あるいはユーザー装置40から取外しできてもよく、あるいは、ユーザー装置40にリモートアクセスできてもよい。アプリケーション10はまた、CPU42に直接搭載することもできる。KDFの出力は、ユーザー装置40から接続先100への接続を保護するために必要である。   The user device 40 generally has a CPU 42, a memory device 44 accessible to the CPU 42, a storage medium 46 which is also accessible to the CPU 20, and certain input and output devices (not shown). As will be appreciated, the user device 40 may be other programmable computing devices. The application 10 is executed on the CPU 42. The application 10 may be stored on the storage medium 46 and may be permanently installed on the user device 40, may be removed from the user device 40, or may be remotely accessible to the user device 40. The application 10 can also be directly mounted on the CPU 42. The output of KDF is necessary to protect the connection from the user device 40 to the connection destination 100.

私有鍵モジュール50は一般的に、CPUまたはマイクロプロセッサ52と、CPU52にアクセス可能なメモリ装置54と、これもまたCPU52にアクセス可能な格納媒体56を有する。私有鍵モジュール20はCPU52上で実行される。私有鍵モジュール50は、格納媒体56上に格納してもよく、またはメモリ装置52に直接搭載してもよい。私有鍵モジュール50は秘密私有鍵を、そのメモリ装置54またはその格納媒体56内に格納できる。理解されるであろうが、私有鍵モジュール50は、私有鍵モジュール50がキーボード付きのスマートカードである場合のキーボードのような、ユーザーが秘密私有鍵を入力する入力手段を有してもよい。   The private key module 50 generally includes a CPU or microprocessor 52, a memory device 54 accessible to the CPU 52, and a storage medium 56 that is also accessible to the CPU 52. The private key module 20 is executed on the CPU 52. The private key module 50 may be stored on the storage medium 56 or directly mounted on the memory device 52. The private key module 50 can store the private private key in its memory device 54 or its storage medium 56. As will be appreciated, the private key module 50 may have an input means for the user to enter a private private key, such as a keyboard when the private key module 50 is a smart card with a keyboard.

より揮発性の高いデータを格納するために使用される傾向にあるメモリ装置54と、より永続的なデータを格納するために使用される傾向にある格納媒体56を、ここでは区別してきたが、私有鍵モジュール50は、揮発性データおよび永続性データの両者を格納するための単一のデータ格納装置のみを有してもよい。同様に、ユーザー装置40は、揮発性データおよび永続性データの両者を格納するための単一のデータ格納装置のみを有してもよい。   Although a distinction has been made here between memory devices 54 that tend to be used to store more volatile data and storage media 56 that tend to be used to store more permanent data, Private key module 50 may have only a single data storage device for storing both volatile and persistent data. Similarly, user device 40 may have only a single data storage device for storing both volatile data and persistent data.

データリンク60は、必要なときに、アプリケーション10と私有鍵モジュール50の間の通信チャネルを提供する。データリンク60は、有線でも、ワイヤレスでもよい。それはユーザー装置40と私有鍵モジュール50間の直接接続であってもよい。データリンク60は永続的であってもよく、より好ましくは、要求により確立される接続である。一般的に、データリンク60は、オープンリンクではなく、保護されているリンクである。   Data link 60 provides a communication channel between application 10 and private key module 50 when needed. The data link 60 may be wired or wireless. It may be a direct connection between the user device 40 and the private key module 50. The data link 60 may be permanent, more preferably a connection established by request. In general, the data link 60 is not an open link but a protected link.

上記したように、私有鍵モジュール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 key module 20 does not practice the entire KDF. The KDF component 24 generated in the private key module 50 implements only a reusable part and a part that performs basic cryptographic operations for security. Thereby, adaptability can be promoted without sacrificing safety. For example, when practicing the DH protocol, raw access to static DH private key operations is not allowed on the module. Instead, the module provides an interface that is sufficiently flexible to support all existing KDFs of interest, as well as all foreseeable KDFs. One way to do this most efficiently is to practice the intersection of existing and foreseeable KDFs. Most KDFs today are built on hash functions, although it is foreseen that some will be built from block ciphers in the future. Most private key modules should support at least a hash function, because the hash function is very important for the security of many algorithms, such as digital signatures. Fortunately, the number of standardized hash functions is less than KDF. For example, the hash function SHA-1 can be reused to support several different KDFs, such as separate ANSI, IPSec, and TLS key derivation functions. TLS key derivation also uses another hash function, MD5, which can be handled outside of module 50, as further described below.

図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 application 10 instructs the private key module 50 which input to supply as an input to the hash function. Some of the inputs are secret and are not known to the application. To specify this, the application 10 refers to such secret input via a handle or pointer 57. Public input may be provided directly by the application 10. The format of each KDF-specific input is specified by a general format interface provided by the module. The hash output that the private key module 50 provides to the application 10 can also be reused by the application 10 as a further input to more hash function calls. This is because many KDFs are based on a chaining mechanism in which the output of one hash call is fed to the input of another hash call.

1つの実施形態において、私有鍵モジュール50は、SHA−1の実践と単純インタフェースを含む。代替実施形態においては、私有鍵モジュール20は、汎用目的の実行環境を含む。   In one embodiment, private key module 50 includes SHA-1 practices and a simple interface. In an alternative embodiment, private key module 20 includes a general purpose execution environment.

または、インタフェースが実践されて、それにより、モジュールが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 module interface 26 is not to practice the hash function MD5. Only the hash function SHA-1 is implemented on the private key module 20, that is, on the second part 24 of the KDF. Thus, the application 10 using the private key module 20 is responsible for practicing MD5 in its first part 22 of the KDF. From a safety point of view this is not a significant drawback. This is because MD5 hash functions are not universally considered to provide sufficient security, while SHA-1 hash functions have the highest security level (these higher levels are SHA). Tend to be universally accepted to provide sufficient security for the purpose of key derivation for all levels (except those requiring -256 or another SHA-1 successor protocol) Because.

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, application 10 selects X = 0 and Y = j‖ [SharedInfo], where j is a 4-octet counter maintained by the application. Application 10 then calls function 30 with the handles for X, Y and Z. The application 20 of the private key module 50 then calculates SHA-1 according to the equation described above and shown in FIG. 4 using the values for X and Y supplied by the application 10 and the handle for Z. The application 10 can then obtain the calculated SHA-1 value and use it to construct an ANSI X9.63 KDF and derive the key.

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 applications 10 and 20 in support of TLS PRF is illustrated in FIG. The application 10 calls the first interface function 28 to halve the shared secret Z into S1 and S2 (part 1 in FIG. 5) as described above with respect to the function 28. The application 10 then calls the second interface function 30 to calculate a hash value based on S2 (part 2 of FIG. 5), and using this above configuration, the first and second interface functions 28, P_SHA-1 is calculated from 30 outputs (part 3 in FIG. 5). Parts 2 and 3 are described below.

図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 Part 2 of the TLS-PRF operation shown in FIG. 5, the application 10 first sets X = D and Y = M and handles with the key K. Two interface functions 30 are called, thereby giving T1 = SHA-1 ((D + K) ‖M) (the value of D is generally known to be constant and is therefore available to the application 10). Then, the application 10 sets X = C and Y = T with the same handle for K, and obtains T = SHA-1 (C + K) ‖T1) = HMAC-SHA (K, M) (the value of C is , D is public).

鍵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 application 10 provides this by providing the second input Y with the necessary zero bits that are exclusive ORed with the appropriate octets of the constants C and D. Do. If the key K is long enough to initially require compression, the application 10 can do this by setting X = 0 and Y = 0 to obtain a hash key. In this case, since the application 10 has all the necessary information, it can optionally perform the rest of the computation on itself, or even use the third interface function to Can be designated as another secret for the new handle.

図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 Part 3 of the operation supporting TLS-PRF shown in FIG. 3, the application 10 now uses S1 provided as output in Part 1 and the above configuration Then, HMAC_SHA-1 in which the secret key is confined in the private key module 20 is calculated. This involves calculating A (0), A (1), A (2) by repeatedly applying HMAC_SHA-1, which results in further applying P_SHA-1 by further applying HMAC_SHA-1. Form the output of

出力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 key module 20 are derived as output to the application 10. In an alternative to this, the derived key remains in the private key module 20 and the output is just a handle or pointer to that key. An advantage of this is that all keys can be kept on the private key module 20, which further informs the module owner that the application cannot abuse the derived session key, let alone the long-term private key. Make sure.

代替実施形態において、私有鍵モジュール20は、更に高いレベルの順応性を有している。私有鍵モジュール20は、ジャバスクリプト(javascript)またはジャバ(java)のような、ある単純な実行言語をサポートしてもよく、それにより、カード上で実行される操作に広大な普遍性を与える。つまり、アプリケーション10はプログラムを私有鍵モジュール20に供給して、それを私有鍵モジュール20が実行する。プログラムは、モジュールにあるときは、秘密に自由にアクセスできる。安全のために、私有鍵モジュール20は、モジュールからのすべての出力が、SHA−1のようなハッシュアルゴリズムや、AESのような対称暗号操作の一部のような、認可されている安全性アルゴリズムを経ることを確実にする。これにより、悪意あるプログラムが試みることができるほとんどの悪用を防止できる。   In an alternative embodiment, private key module 20 has a higher level of flexibility. Private key module 20 may support some simple execution language, such as javascript or java, thereby providing vast universality for operations performed on the card. That is, the application 10 supplies a program to the private key module 20 and the private key module 20 executes it. When the program is in a module, it can be freely accessed in secret. For security purposes, the private key module 20 ensures that all output from the module is an authorized security algorithm, such as a hash algorithm such as SHA-1 or part of a symmetric cryptographic operation such as AES. Make sure to go through. This prevents most abuses that a malicious program can try.

安全性を更に高めるために、私有鍵モジュール20は、プログラムが、その公開検証鍵が既に安全に私有鍵モジュール20にロードされている署名者によるデジタル署名を要求する。これは、私有鍵モジュール20にロードされたプログラムを認証する1つの方法である。プログラムの認証により、プログラムが、モジュールの秘密を危険に晒すという目的の悪意ある実行プログラムでないことが保証される。プログラムの認証により、プログラムそれ自身が任意のアルゴリズムを実行するのに十分なほど信頼できるので、モジュール入力をあるハッシュ、または他のアルゴリズムに制限する必要がなくなる。   To further increase security, the private key module 20 requires the program to digitally sign by a signer whose public verification key has already been securely loaded into the private key module 20. This is one way to authenticate programs loaded into the private key module 20. Program authentication ensures that the program is not a malicious execution program whose purpose is to endanger the secret of the module. Program authentication eliminates the need to limit module input to certain hashes, or other algorithms, because the program itself is reliable enough to execute any algorithm.

この代替実施形態の、第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.

図1は、私有鍵モジュールにより保護されたユーザー装置と接続先との間の接続を示すブロック図である。FIG. 1 is a block diagram illustrating a connection between a user device protected by a private key module and a connection destination. 図2は、図1に示されたユーザー装置と、私有鍵モジュールにおける鍵導出関数の実践を示している模式図である。FIG. 2 is a schematic diagram showing the practice of the key derivation function in the user device and the private key module shown in FIG. 図3は、私有鍵モジュール装置を示している模式図である。FIG. 3 is a schematic diagram showing a private key module device. 図4は、鍵導出関数の1つの例を示しているフローチャートである。FIG. 4 is a flowchart showing one example of the key derivation function. 図5は、鍵導出関数の別の例を示しているフローチャートである。FIG. 5 is a flowchart showing another example of the key derivation function.

符号の説明Explanation of symbols

10 アプリケーション
20 アプリケーション
40 ユーザー装置
50 私有鍵モジュール装置
60 データリンク
70 リンク
80 公衆ネットワーク
90 リンク
100 接続
10 application 20 application 40 user device 50 private key module device 60 data link 70 link 80 public network 90 link 100 connection

Claims (20)

計算装置上で暗号化動作を計算する方法であって、前記方法は秘密値を含み、前記秘密値はデータリンクを介して前記計算装置と通信するモジュール上に格納されており、前記方法は、  A method of calculating an encryption operation on a computing device, the method comprising a secret value, wherein the secret value is stored on a module that communicates with the computing device via a data link, the method comprising:
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.
前記暗号化動作は、鍵導出関数である、請求項1に記載の方法。  The method of claim 1, wherein the encryption operation is a key derivation function. 前記モジュールによって実行される前記少なくとも1つのサブルーチンは、ハッシュ関数を含む、請求項2に記載の方法。  The method of claim 2, wherein the at least one subroutine executed by the module includes a hash function. 前記鍵導出関数は、ANSI X9.63に適合し、前記ハッシュ関数は、SHA−1ハッシュ関数を含み、前記方法は、  The key derivation function conforms to ANSI X9.63, the hash function includes a SHA-1 hash function, and the method includes:
前記アプリケーションが、前記ポインタを用いて前記秘密値に対して前記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:
前記方法は、  The method
前記アプリケーションが、共有秘密を第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ハッシュ関数の結果ポインタとを前記モジュールに提供して、前記第2のセットの入力と、前記SHA−1ハッシュ関数の結果ポインタによって参照された前記SHA−1ハッシュ関数の結果とに基づいて、前記SHA−1ハッシュ関数の1回以上の繰り返しを実行するように前記モジュールに指示することと、  The application provides the module with a second set of inputs and a result pointer of the SHA-1 hash function, and is referenced by the second set of inputs and the result pointer of the SHA-1 hash function. Instructing the module to perform one or more iterations of the SHA-1 hash function based on the result of the SHA-1 hash function;
前記モジュールが、前記指示と、前記第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:
前記アプリケーションが、前記第1の出力と前記第2の出力とを用いてP_SHA−1を計算して、前記鍵導出関数を完結して、前記鍵導出関数から鍵を導出することをさらに含む、請求項5に記載の方法。  The application further includes calculating P_SHA-1 using the first output and the second output, completing the key derivation function, and deriving a key from the key derivation function; The method of claim 5. 前記SHA−1ハッシュ関数の前記1回以上の繰り返しの結果は鍵を含み、前記第2の出力は前記鍵に対するポインタを含み、前記方法は、前記アプリケーションが、続いて、前記鍵に対する前記ポインタを参照することによって前記鍵を用いて動作を実行するように前記モジュールに指示することをさらに含む、請求項5に記載の方法。  The result of the one or more iterations of the SHA-1 hash function includes a key, the second output includes a pointer to the key, and the method allows the application to subsequently include the pointer to the key. 6. The method of claim 5, further comprising instructing the module to perform an action using the key by reference. 暗号化装置であって、  An encryption device,
前記暗号化装置は、  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.
前記モジュールと前記アプリケーションとは、単一のデバイスによって備えられている、請求項9に記載の装置。  The apparatus of claim 9, wherein the module and the application are provided by a single device. 前記モジュールは、改竄防止保護によって保護されている、請求項9に記載の装置。  The apparatus of claim 9, wherein the module is protected by tamper-proof protection. 前記モジュールは、前記アプリケーションによって提供されるジャバ実行言語を有するプログラムを含み、前記プログラムは、複数の暗号化動作からサブルーチンを実行するためのものであり、前記モジュールは、前記サブルーチンの結果が前記アプリケーションに出力される前に安全なアルゴリズムを用いて処理されることを確実にする、請求項9に記載の装置。  The module includes a program having a Java execution language provided by the application, and the program is for executing a subroutine from a plurality of encryption operations, and the module has a result of the subroutine as a result of the subroutine. The apparatus of claim 9, which ensures that it is processed using a secure algorithm before being output to. 前記アプリケーションは、前記プログラムをデジタル署名するためのデジタル署名モジュールをさらに含み、前記モジュールは、前記デジタル署名モジュールによって生成された署名を検証するための公開検証鍵をさらに含む、請求項12に記載の装置。  13. The application of claim 12, wherein the application further includes a digital signature module for digitally signing the program, and the module further includes a public verification key for verifying a signature generated by the digital signature module. apparatus. 前記暗号化動作は鍵導出関数であり、前記少なくとも1つのサブルーチンはハッシュ関数である、請求項9に記載の装置。  The apparatus of claim 9, wherein the encryption operation is a key derivation function and the at least one subroutine is a hash function. 前記鍵導出関数はANSI X9.63に適合し、前記装置は、  The key derivation function conforms to ANSI X9.63 and the device
前記アプリケーションであって、前記第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:
前記装置は、  The device is
前記アプリケーションであって、共有秘密を第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ハッシュ関数の結果ポインタとを前記モジュールに提供して、前記第2のセットの入力と、前記SHA−1ハッシュ関数の結果ポインタによって参照された前記SHA−1ハッシュ関数の結果とに基づいて、前記SHA−1ハッシュ関数の1回以上の繰り返しを実行するように前記モジュールに指示するように動作する、アプリケーションと、  The application provides a second set of inputs and a result pointer of the SHA-1 hash function to the module, and the second set of inputs and the result pointer of the SHA-1 hash function An application that operates to instruct the module to perform one or more iterations of the SHA-1 hash function based on the result of the referenced SHA-1 hash function;
前記モジュールであって、前記指示と、前記第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のインターフェース機能と第2のインターフェース機能とを提供するインターフェースを含み、前記第1のインターフェース機能は、前記秘密値を前記アプリケーションによって参照されるようにするが明らかにはされないようにすることができるポインタを提供し、前記第2のインターフェース機能は、入力値として受け取り、前記アプリケーションからのポインタは、秘密を利用して前記暗号化動作の少なくとも1つのサブルーチンを、前記モジュール上で実行し、前記方法は、  A method for calculating an encryption operation, the method comprising a secret value, the secret value being accessible to a module of the encryption device, the module executing on the encryption device via a data connection The module includes an interface that provides a first interface function and a second interface function, wherein the first interface function causes the secret value to be referenced by the application. Provides a pointer that can be prevented from being revealed, wherein the second interface function receives as an input value, and the pointer from the application utilizes a secret to at least one subroutine of the encryption operation On the module, the method 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.
前記暗号化動作は、鍵導出関数である、請求項18に記載の方法。  The method of claim 18, wherein the encryption operation is a key derivation function. 前記鍵導出関数は、共有秘密値から公開鍵を生成するための公開鍵導出関数を含み、前記少なくとも1つのサブルーチンは、前記共有秘密値に適用される一方向性関数を含む、請求項19に記載の方法。  The key derivation function includes a public key derivation function for generating a public key from a shared secret value, and the at least one subroutine includes a one-way function applied to the shared secret value. The method described.
JP2007540747A 2004-11-11 2005-11-11 A secure interface for generic key derivation function support Active JP4937921B2 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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