Internet Engineering Task Force (IETF)                         M. Groves
Request for Comments: 6508                                          CESG
Category: Informational                                    February 2012
ISSN: 2070-1721
        
                 Sakai-Kasahara Key Encryption (SAKKE)
        

Abstract

抽象

In this document, the Sakai-Kasahara Key Encryption (SAKKE) algorithm is described. This uses Identity-Based Encryption to exchange a shared secret from a Sender to a Receiver.

この文書では、堺・笠原鍵暗号(SAKKE)アルゴリズムが記述されています。これは、送信側から受信側に共有秘密を交換するIDベース暗号化を使用しています。

Status of This Memo

このメモのステータス

This document is not an Internet Standards Track specification; it is published for informational purposes.

このドキュメントはインターネット標準化過程仕様ではありません。それは、情報提供の目的のために公開されています。

This document is a product of the Internet Engineering Task Force (IETF). It has been approved for publication by the Internet Engineering Steering Group (IESG). Not all documents approved by the IESG are a candidate for any level of Internet Standard; see Section 2 of RFC 5741.

このドキュメントはインターネットエンジニアリングタスクフォース(IETF)の製品です。これは、インターネットエンジニアリング運営グループ(IESG)によって公表のために承認されています。 IESGによって承認されていないすべての文書がインターネットStandardのどんなレベルの候補です。 RFC 5741のセクション2を参照してください。

Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at http://www.rfc-editor.org/info/rfc6508.

このドキュメントの現在の状態、任意の正誤表、そしてどのようにフィードバックを提供するための情報がhttp://www.rfc-editor.org/info/rfc6508で取得することができます。

Copyright Notice

著作権表示

Copyright (c) 2012 IETF Trust and the persons identified as the document authors. All rights reserved.

著作権(C)2012 IETF信託とドキュメントの作成者として特定の人物。全著作権所有。

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.

この文書では、BCP 78と、この文書の発行日に有効なIETFドキュメント(http://trustee.ietf.org/license-info)に関連IETFトラストの法律の規定に従うものとします。彼らは、この文書に関してあなたの権利と制限を説明するように、慎重にこれらの文書を確認してください。コードコンポーネントは、トラスト法規定のセクションで説明4.eおよび簡体BSDライセンスで説明したように、保証なしで提供されているよう簡体BSDライセンスのテキストを含める必要があり、この文書から抽出されました。

Table of Contents

目次

   1. Introduction ....................................................2
      1.1. Requirements Terminology ...................................3
   2. Notation and Definitions ........................................3
      2.1. Notation ...................................................3
      2.2. Definitions ................................................5
      2.3. Parameters to Be Defined or Negotiated .....................6
   3. Elliptic Curves and Pairings ....................................7
      3.1. E(F_p^2) and the Distortion Map ............................7
      3.2. The Tate-Lichtenbaum Pairing ...............................7
   4. Representation of Values ........................................9
   5. Supporting Algorithms ..........................................10
      5.1. Hashing to an Integer Range ...............................10
   6. The SAKKE Cryptosystem .........................................11
      6.1. Setup .....................................................11
           6.1.1. Secret Key Extraction ..............................11
           6.1.2. User Provisioning ..................................11
      6.2. Key Exchange ..............................................12
           6.2.1. Sender .............................................12
           6.2.2. Receiver ...........................................12
      6.3. Group Communications ......................................13
   7. Security Considerations ........................................13
   8. References .....................................................15
      8.1. Normative References ......................................15
      8.2. Informative References ....................................15
   Appendix A. Test Data..............................................17
        
1. Introduction
1. はじめに

This document defines an efficient use of Identity-Based Encryption (IBE) based on bilinear pairings. The Sakai-Kasahara IBE cryptosystem [S-K] is described for establishment of a shared secret value. This document adds to the IBE options available in [RFC5091], providing an efficient primitive and an additional family of curves.

この文書では、双線形ペアリングに基づいて、識別情報に基づく暗号化(IBE)の効率的な使用を規定します。堺笠原IBE暗号[S-K]は、共有秘密値の確立のために記載されています。この文書では、効率的なプリミティブと曲線の追加の家族を提供する、[RFC5091]で利用可能なIBEオプションに追加されます。

This document is restricted to a particular family of curves (see Section 2.1) that have the benefit of a simple and efficient method of calculating the pairing on which the Sakai-Kasahara IBE cryptosystem is based.

この文書は、堺笠原IBE暗号が基づくペアリングを計算する単純かつ効率的な方法の利点を有する曲線(セクション2.1を参照)の特定のファミリーに限定されます。

IBE schemes allow public and private keys to be derived from Identifiers. In fact, the Identifier can itself be viewed as corresponding to a public key or certificate in a traditional public key system. However, in IBE, the Identifier can be formed by both Sender and Receiver, which obviates the necessity of providing public keys through a third party or of transmitting certified public keys during each session establishment. Furthermore, in an IBE system, calculation of keys can occur as needed, and indeed, messages can be sent to users who are yet to enroll.

IBE方式は、公開鍵と秘密鍵が識別子から導出することを可能にします。実際には、識別子自体は、従来の公開鍵システムにおける公開鍵または証明書に対応すると見なすことができます。しかし、IBEでは、識別子は、送信者と第三者を介して、または、各セッションの確立中に認定公開鍵を送信する公開鍵を設ける必要がなくなるレシーバーの両方を用いて形成することができます。さらに必要に応じて、IBEシステムでは、キーの計算が発生する可能性があり、実際、メッセージが入学をまだされているユーザーに送信することができます。

The Sakai-Kasahara primitive described in this document supports simplex transmission of messages from a Sender to a Receiver. The choice of elliptic curve pairing on which the primitive is based allows simple and efficient implementations.

堺-笠原は、この文書で説明するプリミティブは、レシーバへの送信者からのメッセージの単純伝送をサポートしています。プリミティブが基づいている楕円曲線ペアリングの選択は簡単で効率的な実装を可能にします。

The Sakai-Kasahara Key Encryption scheme described in this document is drawn from the Sakai-Kasahara Key Encapsulation Mechanism (SK-KEM) scheme (as modified to support multi-party communications) submitted to the IEEE P1363 Working Group in [SK-KEM].

このドキュメントで説明堺笠原鍵暗号方式は、堺笠原鍵カプセル化メカニズム(SK-KEM)方式から引き出される(マルチパーティ通信をサポートするように変更される)[SK-KEM]でIEEE P1363作業部会に提出。

1.1. Requirements Terminology
1.1. 要件の用語

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119].

この文書のキーワード "MUST"、 "MUST NOT"、 "REQUIRED"、、、、 "べきではない" "べきである" "ないもの" "ものとし"、 "推奨"、 "MAY"、および "OPTIONAL" はあります[RFC2119]に記載されているように解釈されます。

2. Notation and Definitions
2.表記と定義
2.1. Notation
2.1. 表記法

n A security parameter; the size of symmetric keys in bits to be exchanged by SAKKE.

nはセキュリティパラメータを、 SAKKEによって交換されるビットの対称鍵のサイズ。

p A prime, which is the order of the finite field F_p. In this document, p is always congruent to 3 modulo 4.

P有限F_Pのオーダーであるプライム、。この文書では、pは常に3モジュロ4と合同です。

F_p The finite field of order p.

オーダーpの有限体をF_P。

F* The multiplicative group of the non-zero elements in the field F; e.g., (F_p)* is the multiplicative group of the finite field F_p.

F *フィールドF内の非ゼロ要素の乗法群。例えば、(F_P)*は有限F_Pの乗法群です。

q An odd prime that divides p + 1. To provide the desired level of security, lg(q) MUST be greater than 2*n.

Qセキュリティの所望のレベルを提供するために、P + 1を分割奇素数、LG(q)は2 * nよりも大きくなければなりません。

E An elliptic curve defined over F_p, having a subgroup of order q. In this document, we use supersingular curves with equation y^2 = x^3 - 3 * x modulo p. This curve is chosen because of the efficiency and simplicity advantages it offers. The choice of -3 for the coefficient of x provides advantages for elliptic curve arithmetic that are explained in [P1363]. A further reason for this choice of curve is that Barreto's trick [Barreto] of eliminating the computation of the denominators when calculating the pairing applies.

数qのサブグループを有する、F_P上に定義された楕円曲線をE。 3 * XモジュロP - 本書では、我々は、方程式y ^ 2 = X ^ 3と超特異曲線を使用します。この曲線は、理由はそれが提供する効率性とシンプルさの利点を選択されています。 xの係数に対する-3の選択は、[P1363]で説明されている楕円曲線演算のための利点を提供します。曲線のこの選択のためのさらなる理由は、ペアリングを計算する際の分母の計算を排除するのバレットのトリック[バレット]が適用されることです。

E(F) The additive group of points of affine coordinates (x,y) with x, y in the field F, that satisfy the curve equation for E.

E.の曲線式を満たすE(F)フィールドFにおけるX、Yとのアフィン座標(x、y)の点の加法群、

P A point of E(F_p) that generates the cyclic subgroup of order q. The coordinates of P are given by P = (P_x,P_y). These coordinates are in F_p, and they satisfy the curve equation.

数qの巡回サブグループを生成し、P E(F_P)の点。 Pの座標は、P =(P_x、P_y)によって与えられます。これらの座標はF_Pであり、それらは、曲線の方程式を満たします。

0 The null element of any additive group of points on an elliptic curve, also called the point at infinity.

0楕円曲線上の点の任意の添加群のヌル要素は、また、無限遠点と呼ばれます。

F_p^2 The extension field of degree 2 of the field F_p. In this document, we use a particular instantiation of this field; F_p^2 = F_p[i], where i^2 + 1 = 0.

F_P ^ 2フィールドF_P度2の拡張フィールド。この文書では、我々はこの分野の特定のインスタンスを使用します。 F_P ^ 2 = F_P [i]は、ここで、i ^ 2 + 1 = 0。

PF_p The projectivization of F_p. We define this to be (F_p^2)*/(F_p)*. Note that PF_p is cyclic and has order p + 1, which is divisible by q.

F_Pのprojectivization PF_p。これは(F_P ^ 2)* /(F_P)*であることを定義します。 PF_pは、環状であり、Qで割り切れる数p + 1を有することに留意されたいです。

G[q] The q-torsion of a group G. This is the subgroup generated by points of order q in G.

G [Q]グループGのQトーションこれはG.順序qの点によって生成されるサブグループであります

< , > A version of the Tate-Lichtenbaum pairing. In this document, this is a bilinear map from E(F_p)[q] x E(F_p)[q] onto the subgroup of order q in PF_p. A full definition is given in Section 3.2.

<、>テート-Lichtenbaumペアリングのバージョン。この文書では、PF_pにおける次数qのサブグループにE(F_P)[Q]をxは、これがEから双線形写像(F_P)[Q]です。完全な定義は3.2節で与えられています。

Hash A cryptographic hash function.

暗号ハッシュ関数をハッシュ。

lg(x) The base 2 logarithm of the real value x.

LG(x)は実数値xの2を底とする対数。

The following conventions are assumed for curve operations:

次の規則は、曲線操作のために想定されています。

Point addition - If A and B are two points on a curve E, their sum is denoted as A + B.

ポイント加算 - A及びBは、曲線E上の2つの点がある場合、それらの合計は、A + Bと表記します

Scalar multiplication - If A is a point on a curve, and k an integer, the result of adding A to itself a total of k times is denoted [k]A.

スカラー倍算 - Aは、曲線上の点であり、整数k個の場合、それ自体にk回の合計を加算した結果が示されている[K] A。

We assume that the following concrete representations of mathematical objects are used:

私たちは、数学的なオブジェクトの以下の具体的な表現が使用されていることを前提としています。

Elements of F_p - The p elements of F_p are represented directly using the integers from 0 to p-1.

F_Pの要素 - F_Pのp要素は直接0からP-1までの整数を使用して表されます。

Elements of F_p^2 - The elements of F_p^2 = F_p[i] are represented as x_1 + i * x_2, where x_1 and x_2 are elements of F_p.

F_P ^ 2の要素 - F_Pの要素は^ 2 = F_P [I] X_1として表される+ iがF_Pの要素X_2ありX_1およびX_2を、*。

Elements of PF_p - Elements of PF_p are cosets of (F_p)* in (F_p^2)*. Every element of F_p^2 can be written unambiguously in the form x_1 + i * x_2, where x_1 and x_2 are elements of F_p. Thus, elements of PF_p (except the unique element of order 2) can be represented unambiguously by x_2/x_1 in F_p. Since q is odd, every element of PF_p[q] can be represented by an element of F_p in this manner.

PF_pの要素は - PF_pの要素は、(F_P ^ 2)*に*(F_P)のコセットです。 F_P ^ 2のすべての要素は、フォーム変数x_1で明確に記述することができ+ iが変数x_1とX_2はF_Pの要素であるX_2を、*。したがって、(順序2のユニークな要素を除く)PF_pの要素はF_PでX_2 / X_1によって明確に表すことができます。 qが奇数であるため、PF_p [Q]の全ての要素は、このようにF_Pの要素で表すことができます。

This representation of elements in PF_p[q] allows efficient implementation of PF_p[q] group operations, as these can be defined using arithmetic in F_p. If a and b are elements of F_p representing elements A and B of PF_p[q], respectively, then A * B in PF_p[q] is represented by (a + b)/(1 - a * b) in F_p.

これらはF_Pで演算を使用して定義することができるようにPF_p [Q]の要素のこの表現は、PF_p [Q]グループ操作の効率的な実装を可能にします。 aおよびbはPF_pの* B、次いで、それぞれ、要素PF_pのAとB [Q]を表すF_Pの要素である場合は[Q](A + B)/(1 - *のB)で表されるF_Pに。

2.2. Definitions
2.2. 定義

Identifier - Each user of an IBE system MUST have a unique, unambiguous identifying string that can be easily derived by all valid communicants. This string is the user's Identifier. An Identifier is an integer in the range 2 to q-1. The method by which Identifiers are formed MUST be defined for each application.

識別子 - IBEシステムの各ユーザは、容易に有効なすべてのコミュニカントにより誘導することができるユニークな、明白な識別文字列がなければなりません。この文字列は、ユーザの識別子です。識別子は、Q-1の範囲2の整数です。識別子が形成される方法は、アプリケーションごとに定義しなければなりません。

Key Management Service (KMS) - The Key Management Service is a trusted third party for the IBE system. It derives system secrets and distributes key material to those authorized to obtain it. Applications MAY support mutual communication between the users of multiple KMSs. We denote KMSs by KMS_T, KMS_S, etc.

キー管理サービス(KMS) - キー管理サービスは、IBEシステムのための信頼できるサードパーティです。これは、システムの秘密を導出し、それを得るために許可したものにキーマテリアルを配布します。アプリケーションは、複数のKMSSのユーザー間の相互の通信をサポートすることができます。私たちは、などKMS_T、KMS_SによってKMSSを示し、

Public parameters - The public parameters are a set of parameters that are held by all users of an IBE system. Such a system MAY contain multiple KMSs. Each application of SAKKE MUST define the set of public parameters to be used. The parameters needed are p, q, E, P, g=<P,P>, Hash, and n.

公開パラメータ - 公開パラメータは、IBEシステムのすべてのユーザーが保持されているパラメータのセットです。このようなシステムは、複数のKMSSを含むかもしれません。 SAKKEの各アプリケーションは、使用する公開パラメータのセットを定義しなければなりません。必要なパラメータは、P、Q、E、P、G = <P、P>、ハッシュ、およびnは。

Master Secret (z_T) - The Master Secret z_T is the master key generated and privately kept by KMS_T and is used by KMS_T to generate the private keys of the users that it provisions; it is an integer in the range 2 to q-1.

マスターシークレット(z_T) - マスターシークレットz_Tが生成され、個人KMS_Tによって保持され、それ条項があることをユーザの秘密鍵を生成するのにKMS_Tで使用されるマスターキーです。それは、Q-1の範囲2の整数です。

KMS Public Key: Z_T = [z_T]P - The KMS Public Key Z_T is used to form Public Key Establishment Keys for all users provisioned by KMS_T; it is a point of order q in E(F_p). It MUST be provisioned by KMS_T to all who are authorized to send messages to users of the IBE system.

KMS公開キー:Z_T = [z_T] P - KMS公開鍵Z_TがKMS_Tによってプロビジョニング、すべてのユーザーの公開鍵確立鍵を形成するために使用されます。それはE(F_P)における次数qの点です。これは、IBEシステムのユーザーにメッセージを送信することを許可されているすべての人にKMS_Tでプロビジョニングする必要があります。

Receiver Secret Key (RSK) - Each user enrolled in an IBE system is provisioned with a Receiver Secret Key by its KMS. The RSK provided to a user with Identifier 'a' by KMS_T is denoted K_(a,T). In SAKKE, the RSK is a point of order q in E(F_p).

レシーバ秘密鍵(RSK) - IBEシステムに登録する各ユーザーは、そのKMSによってレシーバー秘密鍵でプロビジョニングされます。 KMS_Tによって識別子「A」をユーザに提供RSKはK_(T)で表されます。 SAKKEにおいて、RSKは、E(F_P)における次数qの点です。

Shared Secret Value (SSV) - The aim of the SAKKE scheme is for the Sender to securely transmit a shared secret value to the Receiver. The SSV is an integer in the range 0 to (2^n) - 1.

共有秘密値(SSV) - SAKKEスキームの目的は、しっかりとReceiverに共有秘密値を送信する送信者のためです。 SSVは、0〜(2 ^ N)の整数である - 1。

Encapsulated Data - The Encapsulated Data are used to transmit secret information securely to the Receiver. They can be computed directly from the Receiver's Identifier, the public parameters, the KMS Public Key, and the SSV to be transmitted. In SAKKE, the Encapsulated Data are a point of order q in E(F_p) and an integer in the range 0 to (2^n) - 1. They are formatted as described in Section 4.

カプセル化されたデータ - カプセル化されたデータを受信側にしっかりと秘密情報を送信するために使用されています。彼らは、送信する受信者の識別子、公開パラメータ、KMS公開鍵、およびSSVから直接計算することができます。セクション4で説明したように、それらがフォーマットされている1 - SAKKEでは、カプセル化されたデータは、E(F_P)における次数qの点と、(2 ^ N)の範囲0の整数です。

2.3. Parameters to Be Defined or Negotiated
2.3. パラメータが定義または交渉されます

In order for an application to make use of the SAKKE algorithm, the communicating hosts MUST agree on values for several of the parameters described above. The curve equation (E) and the pairing (< , >) are constant and used for all applications.

SAKKEアルゴリズムを利用するアプリケーションのために、通信ホストは、上述のパラメータのいくつかの値に同意しなければなりません。曲線方程式(E)とペアリング(<、>)を一定とするすべてのアプリケーションに使用されます。

For the following parameters, each application MUST either define an application-specific constant value or define a mechanism for hosts to negotiate a value:

次のパラメータに、各アプリケーションは、アプリケーション固有の一定値を定義するか、または値を交渉するためにホストするための機構を定義しなければならない次のいずれか

* n

* ん

* p

* P

* q

* Q

* P = (P_x,P_y)

* P =(P_x、P_y)

* g = <P,P>

* G = <P、P>

* Hash

*ハッシュ

3. Elliptic Curves and Pairings
3.楕円曲線とペアリング

E is a supersingular elliptic curve (of j-invariant 1728). E(F_p) contains a cyclic subgroup of order q, denoted E(F_p)[q], whereas the larger object E(F_p^2) contains the direct product of two cyclic subgroups of order q, denoted E(F_p^2)[q].

Eは、(J不変1728の)超特異楕円曲線です。 E(F_P)は(F_P ^ 2)は次数q二環式のサブグループの直積を含有する大きなオブジェクトEに対し数qの巡回サブグループ、表記E(F_P)[Q]、表記Eを含み(F_P ^ 2) [Q]。

P is a generator of E(F_p)[q]. It is specified by the (affine) coordinates (P_x,P_y) in F_p, satisfying the curve equation.

Pは、E(F_P)[Q]の発電機です。これは、曲線の方程式を満たす、F_Pに(アフィン)座標(P_x、P_y)によって指定されます。

Routines for point addition and doubling on E(F_p) can be found in Appendix A.10 of [P1363].

ポイント加算及びE(F_P)に倍増するためのルーチンは、付録A.10 [P1363]中に見出すことができます。

3.1. E(F_p^2) and the Distortion Map
3.1. E(F_P ^ 2)とディストーション地図

If (Q_x,Q_y) are (affine) coordinates in F_p for some point (denoted Q) on E(F_p)[q], then (-Q_x,iQ_y) are (affine) coordinates in F_p^2 for some point on E(F_p^2)[q]. This latter point is denoted [i]Q, by analogy with the definition for scalar multiplication. The two points P and [i]P together generate E(F_p^2)[q]. The map [i]: E(F_p) -> E(F_p^2) is sometimes termed the distortion map.

(Q_x、Q_y)は(アフィン)E上のいくつかの点(と表さQ)(F_P)ためF_P座標[Q]である場合、(-Q_x、iQ_y)は(アフィン)は、E上のいくつかの点についてF_P ^ 2座標であります(F_P ^ 2)[Q]。この後者の点は、スカラ乗算のための定義と同様にして、[i]はQで示されています。二つの点P及び[I] Pは、一緒にE(F_P ^ 2)[Q]を生成します。マップ[I]:E(F_P) - > E(F_P ^ 2)は、歪みマップを時々呼ばれています。

3.2. The Tate-Lichtenbaum Pairing
3.2. テート・Lichtenbaumのペアリング

We proceed to describe the pairing < , > to be used in SAKKE. We will need to evaluate polynomials f_R that depend on points on E(F_p)[q]. Miller's algorithm [Miller] provides a method for evaluation of f_R(X), where X is some element of E(F_p^2)[q] and R is some element of E(F_p)[q] and f_R is some polynomial over F_p whose divisor is (q)(R) - (q)(0). Note that f_R is defined only up to scalars of F_p.

私たちは、ペアリングは、<、> SAKKEで使用されることを記述するために進んでください。我々は(F_P)[Q] E上の点に依存多項式F_Rを評価する必要があります。ミラーのアルゴリズム[ミラーは、XはEいくつかの要素(F_P ^ 2)[Q]であり、Rは、Eの一部の要素(F_P)[Q]であり、F_Rはいくらかの多項式上でF_R(X)の評価のための方法を提供しますその除数である(Q)F_P(R) - (Q)(0)。 F_RだけF_Pのスカラまでに定義されていることに注意してください。

The version of the Tate-Lichtenbaum pairing used in this document is given by <R,Q> = f_R([i]Q)^c / (F_p)*. It satisfies the bilinear relation <[x]R,Q> = <R,[x]Q> = <R,Q>^x for all Q, R in E(F_p)[q], for all integers x. Note that the domain of definition is restricted to E(F_p)[q] x E(F_p)[q] so that certain optimizations are natural.

この文書で使用テート-Lichtenbaum対のバージョンが<R、Q> = F_R([I] Q)^ C /(F_P)*によって与えられます。これは、<[X] R、Q> = <R [X] Q> = <R、Qは> ^ X E内の全てのQ、R(F_P)[Q]のために、全ての整数のX双線形関係を満たします。特定の最適化は自然になるように定義のドメインがE(F_P)[Q]×E(F_P)[Q]に制限されることに留意されたいです。

We provide pseudocode for computing <R,Q>, with elliptic curve arithmetic expressed in affine coordinates. We make use of Barreto's trick [Barreto] for avoiding the calculation of denominators. Note that this section does not fully describe the most efficient way of computing the pairing; it is possible to compute the pairing without any explicit reference to the extension field F_p^2. This reduces the number and complexity of the operations needed to compute the pairing.

我々は、アフィン座標で表さ楕円曲線演算と、<R、Q>を計算するための擬似コードを提供します。私たちは、分母の計算を回避するためのバレットのトリック[バレット]を利用します。このセクションでは、完全にペアリングを計算する最も効率的な方法を記載していないことに注意してください。拡張フィールドF_P ^ 2への明示的な参照せずにペアリングを計算することが可能です。これは、ペアリングを計算するために必要な操作の数と複雑さを軽減します。

<CODE BEGINS>

<CODEが開始されます>

   /*
   Copyright (c) 2012 IETF Trust and the persons identified as
   authors of the code.  All rights reserved.
        

Redistribution and use in source and binary forms, with or without modification, is permitted pursuant to, and subject to the license terms contained in, the Simplified BSD License set forth in Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info). */

、に基づき許可されており、中に含まれるライセンス条項に従う、簡体BSDライセンスは、IETFドキュメントに関連IETFトラストの法律規定(のセクション4.Cに記載されている変更の有無にかかわらず、ソースおよびバイナリ形式での再配布および使用http://trustee.ietf.org/license-info)。 * /

Routine for computing the pairing <R,Q>:

ペアリングを計算するためのルーチン<R、Q>:

Input R, Q points on E(F_p)[q];

Eの入力R、Q点(F_P)[Q]。

Initialize variables:

変数を初期化します。

v = (F_p)*; // An element of PF_p[q] C = R; // An element of E(F_p)[q] c = (p+1)/q; // An integer

V =(F_P)*; // PF_p [Q] C = Rの要素。 // E(F_P)[Q] C =(P + 1)/ Qの要素。 //整数

for bits of q-1, starting with the second most significant bit, ending with the least significant bit, do

最下位ビットで終わる、第二最上位ビットから開始して、Q-1のビットについて、行います

// gradient of line through C, C, [-2]C. l = 3*( C_x^2 - 1 ) / ( 2*C_y );

// C、C、[-2] Cを通る線の勾配。 L = 3 *(C_x ^ 1 - 2)/(2 * C_y)。

//accumulate line evaluated at [i]Q into v v = v^2 * ( l*( Q_x + C_x ) + ( i*Q_y - C_y ) );

//は、V V = V ^ 2 *(L×(Q_x + C_x)+(i *がQ_y - C_y))への[I] Qで評価ラインを蓄積します。

C = [2]C;

C = [2] C。

if bit is 1, then

ビットが1である場合には、

// gradient of line through C, R, -C-R. l = ( C_y - R_y )/( C_x - R_x );

// C、R、-C-Rを通る線の勾配。 L =(C_y - R_y)/(C_x - R_x)。

//accumulate line evaluated at [i]Q into v v = v * ( l*( Q_x + C_x ) + ( i*Q_y - C_y ) );

// VをV = V×(L×(Q_x + C_x)+(i *がQ_y - C_y))への[I] Qで評価ラインを蓄積します。

C = C+R;

C = C + R。

           end if;
         end for;
        

t = v^c;

T = V ^ C;

return representative in F_p of t;

TのF_Pに代表を返します。

End of routine;

ルーチンの終了。

Routine for computing representative in F_p of elements of PF_p:

PF_pの要素のF_P代表を計算するためのルーチン。

Input t, in F_p^2, representing an element of PF_p;

入力T、F_P ^ 2において、PF_pの要素を表します。

         Represent t as a + i*b, with a,b in F_p;
         return b/a;
        

End of routine;

ルーチンの終了。

<CODE ENDS>

<CODEはENDS>

4. Representation of Values
値の4表現

This section provides canonical representations of values that MUST be used to ensure interoperability of implementations. The following representations MUST be used for input into hash functions and for transmission.

このセクションでは、実装の相互運用性を保証するために使用されなければならない値の正規表現を提供します。次の表現は、ハッシュ関数への入力および送信のために使用されなければなりません。

Integers Integers MUST be represented as an octet string, with bit length a multiple of 8. To achieve this, the integer is represented most significant bit first, and padded with zero bits on the left until an octet string of the necessary length is obtained. This is the octet string representation described in Section 6 of [RFC6090].

整数整数は、必要な長さのオクテットストリングが得られるまでの整数を最上位ビットを表し、左側にゼロのビットが埋め込まれ、ビット長、これを達成するために8の倍数で、オクテット文字列として表現されなければなりません。これは、[RFC6090]のセクション6で説明さオクテット文字列表現です。

F_p elements Elements of F_p MUST be represented as integers in the range 0 to p-1 using the octet string representation defined above. Such octet strings MUST have length L = Ceiling(lg(p)/8).

F_PのF_P要素要素は、上記で定義されたオクテットストリング表現を使用してP-1の範囲0の整数として表現されなければなりません。そのようなオクテットストリングは、長さL =天井(LG(P)/ 8)が必要。

PF_p elements Elements of PF_p MUST be represented as an element of F_p using the algorithm in Section 3.2. They are therefore represented as octet strings as defined above and are L octets in length. Representation of the unique element of order 2 in PF_p will not be required.

PF_pのPF_p要素要素は、セクション3.2でアルゴリズムを使用F_Pの要素として表現されなければなりません。上記で定義され、長さがLオクテットであり、それらは従ってオクテットストリングとして表されます。 PF_p順序2のユニークな要素の表現が必要とされることはありません。

Points on E Elliptic curve points MUST be represented in uncompressed form as defined in Section 2.2 of [RFC5480]. For an elliptic curve point (x,y) with x and y in F_p, this representation is given by

[RFC5480]のセクション2.2で定義されているE楕円曲線点上の点は、非圧縮形式で表現されなければなりません。 F_Pにおけるxとyとの楕円曲線の点(x、y)のために、この表現は、次式で与えられます。

                      0x04 || x' || y', where x' is the octet string
                      representing x, y' is the octet string
                      representing y, and || denotes concatenation.  The
                      representation is 2*L+1 octets in length.
        

Encapsulated Data The Encapsulated Data MUST be represented as an elliptic curve point concatenated with an integer in the range 0 to (2 ^ n) - 1. Since the length of the representation of elements of F_p is well defined given p, these data can be unambiguously parsed to retrieve their components. The Encapsulated Data is 2*L + n + 1 octets in length.

カプセル化されたデータザカプセル化されたデータは、(2 ^ N)の範囲0の整数と連結楕円曲線点として表現されなければならない - 1 F_Pの要素の表現の長さは、Pウェル与え定義されているので、これらのデータがあってもよいです明確にそのコンポーネントを取得するために解析されました。カプセル化されたデータの長さは、2つの* L + N + 1オクテットです。

5. Supporting Algorithms
5.サポートするアルゴリズム
5.1. Hashing to an Integer Range
5.1. 整数の範囲にハッシング

We use the function HashToIntegerRange( s, n, hashfn ) to hash strings to an integer range. Given a string (s), a hash function (hashfn), and an integer (n), this function returns a value between 0 and n - 1.

我々は、整数範囲に文字列をハッシュする機能HashToIntegerRange(S、N、hashfn)を使用します。 1 - 文字列(S)、ハッシュ関数(hashfn)、及び整数(n)が与えられると、この関数は0とnの間の値を返します。

Input:

入力:

* an octet string, s

*オクテット文字列、S

* an integer, n <= (2^hashlen)^hashlen

*整数、N <=(2 ^ hashlen)^ hashlen

* a hash function, hashfn, with output length hashlen bits

出力長hashlenビットで*ハッシュ関数、hashfn、

Output:

出力:

* an integer, v, in the range 0 to n-1

*整数、V、範囲は0からn-1

Method:

方法:

1) Let A = hashfn( s )

1))A = hashfn(Sう

2) Let h_0 = 00...00, a string of null bits of length hashlen bits

2)H_0 = 00 ... 00、ヌル長さのビットhashlenビット列う

3) Let l = Ceiling(lg(n)/hashlen)

3))、L =天井(LG(N)/ hashlenう

4) For each i in 1 to l, do:

4)L 1の各iについて、行います。

a) Let h_i = hashfn(h_(i - 1))

A)してみましょうH_I = hashfn(H_(I - 1))

b) Let v_i = hashfn(h_i || A), where || denotes concatenation

B)(H_I || A)V_I = hashfnう、ここで、||連結を表し、

5) Let v' = v_1 || ... || v_l

5)V_1 = ||わたし年... || V_L

6) Let v = v' mod n

6)mod nをわたしで年=

6. The SAKKE Cryptosystem
6.バッグは暗号

This section describes the Sakai-Kasahara Key Encryption algorithm. It draws from the cryptosystem first described in [S-K].

このセクションでは、堺笠原鍵暗号化アルゴリズムを記述しています。これは、最初の[S-K]に記載の暗号システムから引き込みます。

6.1. Setup
6.1. セットアップ

All users share a set of public parameters with a KMS. In most circumstances, it is expected that a system will only use a single KMS. However, it is possible for users provisioned by different KMSs to interoperate, provided that they use a common set of public parameters and that they each possess the necessary KMS Public Keys. In order to facilitate this interoperation, it is anticipated that parameters will be published in application-specific standards.

すべてのユーザーがKMSと公開パラメータのセットを共有します。ほとんどの状況では、システムは、単一のKMSを使用することが期待されます。しかし、異なるKMSSによってプロビジョニングされたユーザーは、相互運用することが可能であり、彼らは公開パラメータの共通セットを使用し、それらは各々が必要KMS公開鍵を持っていることをことを条件とします。この相互運用を容易にするためには、パラメータは、アプリケーション固有の規格に公表されることが予想されます。

KMS_T chooses its KMS Master Secret, z_T. It MUST randomly select a value in the range 2 to q-1, and assigns this value to z_T. It MUST derive its KMS Public Key, Z_T, by performing the calculation Z_T = [z_T]P.

KMS_TはそのKMSマスターシークレット、z_Tを選択します。これは、ランダムQ-1の範囲2の値を選択し、z_Tにこの値を代入しなければなりません。これは、計算Z_T = [z_T] Pを実行することにより、そのKMS公開鍵、Z_Tを導出しなければなりません。

6.1.1. Secret Key Extraction
6.1.1. 秘密鍵の抽出

The KMS derives each RSK from an Identifier and its KMS Master Secret. It MUST derive a RSK for each user that it provisions.

KMSは、識別子とそのKMSマスターシークレットから各RSKを導出します。それは規定がそれユーザーごとにRSKを導出しなければなりません。

For Identifier 'a', the RSK K_(a,T) provided by KMS_T MUST be derived by KMS_T as K_(a,T) = [(a + z_T)^-1]P, where 'a' is interpreted as an integer, and the inversion is performed modulo q.

'' として解釈されるP、 - 識別子 'A' のために、KMS_Tによって提供RSK K_(T)は、K_(T)= 1(+ z_T)^]としてKMS_Tによって導出されなければなりません整数、反転モジュロQ行われます。

6.1.2. User Provisioning
6.1.2. ユーザー・プロビジョニング

The KMS MUST provide its KMS Public Key to all users through an authenticated channel. RSKs MUST be supplied to all users through a channel that provides confidentiality and mutual authentication. The mechanisms that provide security for these channels are beyond the scope of this document: they are application specific.

KMSは、認証されたチャネルを介して、すべてのユーザーにそのKMS公開鍵を提供しなければなりません。 RSKsは、機密性と相互認証を提供し、チャネルを介してすべてのユーザーに供給されなければなりません。これらのチャネルのセキュリティを提供するメカニズムは、このドキュメントの範囲を超えて:彼らは、特定のアプリケーションです。

Upon receipt of key material, each user MUST verify its RSK. For Identifier 'a', RSKs from KMS_T are verified by checking that the following equation holds: < [a]P + Z, K_(a,T) > = g, where 'a' is interpreted as an integer.

鍵材料を受信すると、各ユーザは、そのRSKを確認しなければなりません。識別子 'A' のために、KMS_TからRSKsは、以下の式が成り立つことを確認することによって検証されます。<[A] P + Zを、K_(T)> '' 整数として解釈される= G、。

6.2. Key Exchange
6.2. 鍵交換

A Sender forms Encapsulated Data and sends it to the Receiver, who processes it. The result is a shared secret that can be used as keying material for securing further communications. We denote the Sender A with Identifier 'a'; we denote the Receiver B with Identifier 'b'; Identifiers are to be interpreted as integers in the algorithms below. Let A be provisioned by KMS_T and B be provisioned by KMS_S.

送信者のフォームは、データをカプセル化し、それを処理レシーバー、に送信します。結果はさらに、通信を保護するための鍵材料として使用することができる共有秘密です。私たちは、識別子「A」で送信者Aを示します。我々は、識別子「B」を有する受信機Bを表します。識別子は、以下のアルゴリズムの整数として解釈されるべきです。 KMS_TでプロビジョニングするとBがKMS_Sによってプロビジョニングされてみましょう。

6.2.1. Sender
6.2.1. 送信者

In order to form Encapsulated Data to send to device B who is provisioned by KMS_S, A needs to hold Z_S. It is anticipated that this will have been provided to A by KMS_T along with its User Private Keys. The Sender MUST carry out the following steps:

KMS_SによってプロビジョニングされたデバイスBに送信するカプセル化されたデータを形成するために、AはZ_Sを保持する必要があります。そのユーザーの秘密鍵と一緒にKMS_TによってAに提供されていることが予想されます。送信者は、次の手順を実行する必要があります。

1) Select a random ephemeral integer value for the SSV in the range 0 to 2^n - 1;

1)の範囲でSSVランダムエフェメラル整数値を選択して0〜2 ^ N - 1。

2) Compute r = HashToIntegerRange( SSV || b, q, Hash );

2)R = HashToIntegerRange(SSV || B、Q、ハッシュ)を計算します。

3) Compute R_(b,S) = [r]([b]P + Z_S) in E(F_p);

E(F_P)3)を計算R_(B、S)= [R]([B] P + Z_S)。

4) Compute the Hint, H;

4)ヒント、Hを計算します。

a) Compute g^r. Note that g is an element of PF_p[q] represented by an element of F_p. Thus, in order to calculate g^r, the operation defined in Section 2.1 for calculation of A * B in PF_p[q] is to be used as part of a square and multiply (or similar) exponentiation algorithm, rather than the regular F_p operations;

A)を計算G ^ R。 gはF_Pの要素によって表さPF_p [Q]の要素があることに留意されたいです。したがって、^ R Gを算出するために、PF_pの* B [Q]の算出については、セクション2.1で定義された動作は、正方形の一部として使用されるべきであり、乗算(または類似の)累乗アルゴリズムではなく、正規F_Pオペレーション;

b) Compute H := SSV XOR HashToIntegerRange( g^r, 2^n, Hash );

B)を計算H:= SSV XOR HashToIntegerRange(G ^ R、2 ^ nは、ハッシュ)。

5) Form the Encapsulated Data ( R_(b,S), H ), and transmit it to B;

5)カプセル化されたデータ(R_(B、S)、H)を形成し、Bに送信します。

6) Output SSV for use to derive key material for the application to be keyed.

6)キー入力するアプリケーションのためのキーマテリアルを導出するのに使用するための出力をSSV。

6.2.2. Receiver
6.2.2. 受信機

Device B receives Encapsulated Data from device A. In order to process this, it requires its RSK, K_(b,S), which will have been provisioned in advance by KMS_S. The method by which keys are provisioned by the KMS is application specific. The Receiver MUST carry out the following steps to derive and verify the SSV:

デバイスBがこれを処理するために、デバイスAからカプセル化されたデータを受信し、それがKMS_Sによって予めプロビジョニングされているであろうそのRSK、K_(B、S)を必要とします。キーはKMSによってプロビジョニングされる方法は、アプリケーション固有のものです。レシーバは、SSVを導出し、検証するには、次の手順を実行する必要があります。

1) Parse the Encapsulated Data ( R_(b,S), H ), and extract R_(b,S) and H;

1)カプセル化されたデータ(R_(B、S)、H)を解析し、R_(B、S)及びHを抽出します。

2) Compute w := < R_(b,S), K_(b,S) >. Note that by bilinearity, w = g^r;

W 2)を計算する:= <R_(B、S)、K_(B、S)>。双線形性によって、= G ^ R Wことに留意されたいです。

3) Compute SSV = H XOR HashToIntegerRange( w, 2^n, Hash );

3)計算SSV = H XOR HashToIntegerRange()2 ^ nは、ハッシュ、W。

4) Compute r = HashToIntegerRange( SSV || b, q, Hash );

4)R = HashToIntegerRange(SSV || B、Q、ハッシュ)を計算します。

5) Compute TEST = [r]([b]P + Z_S) in E(F_p). If TEST does not equal R_(b,S), then B MUST NOT use the SSV to derive key material;

5)計算TEST = [R]([B] EにおけるP + Z_S)(F_P)。 TESTが等しくないR_(B、S)がない場合、Bは、鍵材料を導出するSSVを使用してはいけません。

6) Output SSV for use to derive key material for the application to be keyed.

6)キー入力するアプリケーションのためのキーマテリアルを導出するのに使用するための出力をSSV。

6.3. Group Communications
6.3. グループコミュニケーションズ

The SAKKE scheme can be used to exchange SSVs for group communications. To provide a shared secret to multiple Receivers, a Sender MUST form Encapsulated Data for each of their Identifiers and transmit the appropriate data to each Receiver. Any party possessing the group SSV MAY extend the group by forming Encapsulated Data for a new group member.

SAKKE方式は、グループ通信のためのSSVを交換するために使用することができます。複数の受信機への共有秘密情報を提供するために、送信者は、その識別子のそれぞれについて、カプセル化されたデータを形成し、各受信機に適切なデータを送信しなければなりません。グループSSVを有する当事者は、新たなグループのメンバーのためにカプセル化されたデータを形成することにより、グループを拡張することができます。

While the Sender needs to form multiple Encapsulated Data, the fact that the sending operation avoids pairings means that the extension to multiple Receivers can be carried out more efficiently than for alternative IBE schemes that require the Sender to compute a pairing.

送信者が複数のカプセル化されたデータを形成する必要がある一方で、送信操作がペアを避けているという事実は、複数の受信機への拡張は、より効率的にペアリングを計算するために、送信者を必要とする代替IBEスキームのためのより行うことができることを意味しています。

7. Security Considerations
7.セキュリティの考慮事項

This document describes the SAKKE cryptographic algorithm. We assume that the security provided by this algorithm depends entirely on the secrecy of the secret keys it uses, and that for an adversary to defeat this security, he will need to perform computationally intensive cryptanalytic attacks to recover a secret key. Note that a security proof exists for SAKKE in the Random Oracle Model [SK-KEM].

この文書では、SAKKE暗号アルゴリズムを記述しています。私たちは、このアルゴリズムによって提供されるセキュリティは、それが使用する秘密鍵の機密性に完全に依存していることを前提とし、それは、このセキュリティを破るために敵のために、彼は秘密鍵を回復するために、計算集約暗号解析攻撃を実行する必要があります。セキュリティ証明はランダムオラクルモデル[SK-KEM]でSAKKEのために存在することに注意してください。

When defining public parameters, guidance on parameter sizes from [SP800-57] SHOULD be followed. Note that the size of the F_p^2 discrete logarithm on which the security rests is 2*lg(p). Table 1 shows bits of security afforded by various sizes of p. If k bits of security are needed, then lg(q) SHOULD be chosen to be at least 2*k. Similarly, if k bits of security are needed, then a hash with output size at least 2*k SHOULD be chosen.

公開パラメータを定義する場合、[SP800-57]からパラメータ・サイズのガイダンスに従わされるべきです。セキュリティが載るF_P ^ 2の離散対数の大きさが2であることに注意してください* LG(P)。表1は、pの様々なサイズによって与えられるセキュリティのビットを示します。セキュリティのkビットが必要とされる場合は、(Q)、LGは、少なくとも2 * Kであるように選択されるべきです。セキュリティのkビットが必要な場合、同様に、出力サイズのハッシュは、少なくとも2 * kが選択されるべきです。

         Bits of Security | lg(p)
         -------------------------
         80               |   512
         112              |  1024
         128              |  1536
         192              |  3840
         256              |  7680
        

Table 1: Comparable Strengths, Taken from Table 2 of [SP800-57]

表1:表2から撮影匹敵する強さ、[SP800-57]

The KMS Master Secret provides the security for each device provisioned by the KMS. It MUST NOT be revealed to any other entity. Each user's RSK protects the SAKKE communications it receives. This key MUST NOT be revealed to any entity other than the trusted KMS and the authorized user.

KMSマスターシークレットKMSによってプロビジョニングされた各デバイスのセキュリティを提供します。これは、任意の他のエンティティに明らかにされてはなりません。各ユーザーのRSKは、受信SAKKE通信を保護します。このキーは、信頼KMSと許可されたユーザ以外のエンティティに明らかにされてはなりません。

In order to ensure that the RSK is received only by an authorized device, it MUST be provided through a secure channel. The security offered by this system is no greater than the security provided by this delivery channel.

RSKのみ認可デバイスによって受信されることを保証するためには、安全なチャネルを介して提供されなければなりません。このシステムによって提供されるセキュリティは、この配信チャネルによって提供されるセキュリティよりも大きくありません。

Note that IBE systems have different properties than other asymmetric cryptographic schemes with regard to key recovery. The KMS (and hence any administrator with appropriate privileges) can create RSKs for arbitrary Identifiers, and procedures to monitor the creation of RSKs, such as logging of administrator actions, SHOULD be defined by any functioning implementation of SAKKE.

IBEシステムは、キー回復に関しては、他の非対称暗号方式とは異なる特性を持っていることに注意してください。 (従って、適切な権限を持つ管理者)KMSは、任意の識別子のRSKsを作成することができ、そのような管理者のアクションのログとしてRSKsの作成を監視する手順は、SAKKEの任意の機能の実装によって定義されるべきです。

Identifiers MUST be defined unambiguously by each application of SAKKE. Note that it is not necessary to hash the data in a format for Identifiers (except in the case where its size would be greater than that of q). In this way, any weaknesses that might be caused by collisions in hash functions can be avoided without reliance on the structure of the Identifier format. Applications of SAKKE MAY include a time/date component in their Identifier format to ensure that Identifiers (and hence RSKs) are only valid for a fixed period of time.

識別子はSAKKEの各アプリケーションによって明確に定義されなければなりません。 (そのサイズをqよりも大きくなるであろう場合を除く)識別子の形式でデータをハッシュする必要はないことに留意されたいです。このように、ハッシュ関数に衝突によって引き起こされる可能性のある弱点は、識別子の形式の構造に依存せずに回避することができます。 SAKKEのアプリケーションは、識別子(ひいてはRSKs)が一定時間のみ有効であることを保証するためにそれらの識別子の形式で時刻/日付の成分を含んでいてもよいです。

The randomness of values stipulated to be selected at random in SAKKE, as described in this document, is essential to the security provided by SAKKE. If the ephemeral value r selected by the Sender is not chosen at random, then the SSV, which is used to provide key material for further communications, could be predictable. Guidance on the generation of random values for security can be found in [RFC4086].

この文書に記載されたような値のランダム性は、SAKKEにランダムに選択する規定、SAKKEによって提供されるセキュリティに不可欠です。送信者によって選択されたエフェメラル値rをランダムに選択されていない場合、さらに通信のための鍵を提供するために使用されるSSVは、予測可能であってもよいです。セキュリティのためのランダム値の生成に関するガイダンスは、[RFC4086]に見出すことができます。

8. References
8.参照文献
8.1. Normative References
8.1. 引用規格

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.

[RFC2119]ブラドナーの、S.、 "要件レベルを示すためにRFCsにおける使用のためのキーワード"、BCP 14、RFC 2119、1997年3月。

[RFC5480] Turner, S., Brown, D., Yiu, K., Housley, R., and T. Polk, "Elliptic Curve Cryptography Subject Public Key Information", RFC 5480, March 2009.

[RFC5480]ターナー、S.、ブラ​​ウン、D.、耀輝、K.、Housley氏、R.、およびT.ポーク、 "楕円曲線暗号件名公開鍵情報"、RFC 5480、2009年3月。

[RFC6090] McGrew, D., Igoe, K., and M. Salter, "Fundamental Elliptic Curve Cryptography Algorithms", RFC 6090, February 2011.

[RFC6090]マグリュー、D.、Igoe、K.、およびM.ソルター、 "基礎楕円曲線暗号アルゴリズム"、RFC 6090、2011年2月。

[S-K] Sakai, R., Ohgishi, K., and M. Kasahara, "ID based cryptosystem based on pairing on elliptic curves", Symposium on Cryptography and Information Security - SCIS, 2001.

[S-K]酒井、R.、Ohgishi、K.、およびM.笠原は、 "IDベース暗号、楕円曲線上のペアリングに基づいて"、暗号と情報セキュリティシンポジウム - SCIS 2001。

[SK-KEM] Barbosa, M., Chen, L., Cheng, Z., Chimley, M., Dent, A., Farshim, P., Harrison, K., Malone-Lee, J., Smart, N., and F. Vercauteren, "SK-KEM: An Identity-Based KEM", submission for IEEE P1363.3, June 2006, (http://grouper.ieee.org/groups/1363/IBC/ submissions/Barbosa-SK-KEM-2006-06.pdf).

[SK-KEM]バルボサ、M.、チェン、L.、チェン、Z.、Chimley、M.、デント、A.、Farshim、P.、ハリソン、K.、マローンリー、J.、スマート、N 。、およびF. Vercauteren、 "SK-KEM:IDベースKEM"、IEEE P1363.3、2006年6月のための提出、(http://grouper.ieee.org/groups/1363/IBC/提出/ Barbosa- SK-KEM-2006-06.pdf)。

[SP800-57] Barker, E., Barker, W., Burr, W., Polk, W., and M. Smid, "Recommendation for Key Management - Part 1: General (Revised)", NIST Special Publication 800-57, March 2007.

[SP800-57]バーカー、E.、バーカー、W.、バリ、W.、ポーク、W.、およびM. SMID、 "キー管理のための提言 - パート1:一般(改訂)"、は、NIST Special Publication 800- 57、2007年3月。

8.2. Informative References
8.2. 参考文献

[Barreto] Barreto, P., Kim, H., Lynn, B., and M. Scott, "Efficient Algorithms for Pairing-Based Cryptosystems", Advances in Cryptology - Crypto 2002, LNCS 2442, Springer-Verlag (2002), pp. 354-369.

[バレット]バレット、P.、金、H.、リン、B.、およびM.スコット、 "ペアリングベースの暗号のための効率的なアルゴリズム" は、暗号理論における進歩 - クリプト2002、LNCS 2442、シュプリンガー・フェアラーク(2002)、頁354から369まで。

[Miller] Miller, V., "The Weil pairing, and its efficient calculation", J. Cryptology 17 (2004), 235-261.

【ミラー】ミラー、V.、「ワイルペアリング、及びその効率的な計算」、J.暗号理論17(2004)、235から261。

[P1363] IEEE P1363-2000, "Standard Specifications for Public-Key Cryptography", 2001.

[P1363] IEEE P1363-2000、 "公開鍵暗号のための標準仕様"、2001年。

[RFC4086] Eastlake 3rd, D., Schiller, J., and S. Crocker, "Randomness Requirements for Security", BCP 106, RFC 4086, June 2005.

[RFC4086]イーストレーク3、D.、シラー、J.、およびS.クロッカー、 "セキュリティのためのランダム要件"、BCP 106、RFC 4086、2005年6月。

[RFC5091] Boyen, X. and L. Martin, "Identity-Based Cryptography Standard (IBCS) #1: Supersingular Curve Implementations of the BF and BB1 Cryptosystems", RFC 5091, December 2007.

[RFC5091] Boyen、X.とL.マーチン、 "IDベース暗号化規格(IBCS)#1:BFの超特異曲線実装とBB1暗号"、RFC 5091、2007年12月。

[RFC6509] Groves, M., "MIKEY-SAKKE: Sakai-Kasahara Key Encryption in Multimedia Internet KEYing (MIKEY)", RFC 6509, February 2012.

[RFC6509]グローブス、M.、 "MIKEY-SAKKE:マルチメディア、インターネットキーイング堺笠原鍵暗号(MIKEY)"、RFC 6509、2012年2月。

Appendix A. Test Data

付録A.テストデータ

This appendix provides test data for SAKKE with the public parameters defined in Appendix A of [RFC6509]. 'b' represents the Identifier of the Responder. The value "mask" is the value used to mask the SSV and is defined to be HashToIntegerRange( g^r, 2^n, Hash ).

この付録では、[RFC6509]の付録Aで定義される公開パラメータとSAKKEための試験データを提供します。 「B」はレスポンダの識別子を表します。値「マスク」は、SSVをマスクするために使用される値であり、HashToIntegerRange(G ^ R、2 ^ nは、ハッシュ)であると定義されます。

      // --------------------------------------------------------
      // The KMS generates:
        

z = AFF429D3 5F84B110 D094803B 3595A6E2 998BC99F

Z = AFF429D3 5F84B110 D094803B 3595A6E2 998BC99F

Zx = 5958EF1B 1679BF09 9B3A030D F255AA6A 23C1D8F1 43D4D23F 753E69BD 27A832F3 8CB4AD53 DDEF4260 B0FE8BB4 5C4C1FF5 10EFFE30 0367A37B 61F701D9 14AEF097 24825FA0 707D61A6 DFF4FBD7 273566CD DE352A0B 04B7C16A 78309BE6 40697DE7 47613A5F C195E8B9 F328852A 579DB8F9 9B1D0034 479EA9C5 595F47C4 B2F54FF2

ZX = 5958EF1B 1679BF09 9B3A030D F255AA6A 23C1D8F1 43D4D23F 753E69BD 27A832F3 8CB4AD53 DDEF4260 B0FE8BB4 5C4C1FF5 10EFFE30 0367A37B 61F701D9 14AEF097 24825FA0 707D61A6 DFF4FBD7 273566CD DE352A0B 04B7C16A 78309BE6 40697DE7 47613A5F C195E8B9 F328852A 579DB8F9 9B1D0034 479EA9C5 595F47C4 B2F54FF2

Zy = 1508D375 14DCF7A8 E143A605 8C09A6BF 2C9858CA 37C25806 5AE6BF75 32BC8B5B 63383866 E0753C5A C0E72709 F8445F2E 6178E065 857E0EDA 10F68206 B63505ED 87E534FB 2831FF95 7FB7DC61 9DAE6130 1EEACC2F DA3680EA 4999258A 833CEA8F C67C6D19 487FB449 059F26CC 8AAB655A B58B7CC7 96E24E9A 39409575 4F5F8BAE

ZY = 1508D375 14DCF7A8 E143A605 8C09A6BF 2C9858CA 37C25806 5AE6BF75 32BC8B5B 63383866 E0753C5A C0E72709 F8445F2E 6178E065 857E0EDA 10F68206 B63505ED 87E534FB 2831FF95 7FB7DC61 9DAE6130 1EEACC2F DA3680EA 4999258A 833CEA8F C67C6D19 487FB449 059F26CC 8AAB655A B58B7CC7 96E24E9A 39409575 4F5F8BAE

      // --------------------------------------------------------
      // Creating Encapsulated Data
        

b = 3230 31312D30 32007465 6C3A2B34 34373730 30393030 31323300

B = 3230 31312D30 32007465 6C3A2B34 34373730 30393030 31323300

SSV = 12345678 9ABCDEF0 12345678 9ABCDEF0 r = HashToIntegerRange( 12345678 9ABCDEF0 12345678 9ABCDEF0 32303131 2D303200 74656C3A 2B343437 37303039 30303132 3300, q, SHA-256 )

SSV = 12345678 12345678 9ABCDEF0 9ABCDEF0 R = HashToIntegerRange(2D303200 74656C3A 2B343437 37303039 30303132 12345678 3300 9ABCDEF0 12345678 9ABCDEF0 32303131、Q、SHA-256)

               = 13EE3E1B 8DAC5DB1 68B1CEB3 2F0566A4
                 C273693F 78BAFFA2 A2EE6A68 6E6BD90F
                 8206CCAB 84E7F42E D39BD4FB 131012EC
                 CA2ECD21 19414560 C17CAB46 B956A80F
                 58A3302E B3E2C9A2 28FBA7ED 34D8ACA2
                 392DA1FF B0B17B23 20AE09AA EDFD0235
                 F6FE0EB6 5337A63F 9CC97728 B8E5AD04
                 60FADE14 4369AA5B 21662132 47712096
        

Rbx = 44E8AD44 AB8592A6 A5A3DDCA 5CF896C7 18043606 A01D650D EF37A01F 37C228C3 32FC3173 54E2C274 D4DAF8AD 001054C7 6CE57971 C6F4486D 57230432 61C506EB F5BE438F 53DE04F0 67C776E0 DD3B71A6 29013328 3725A532 F21AF145 126DC1D7 77ECC27B E50835BD 28098B8A 73D9F801 D893793A 41FF5C49 B87E79F2 BE4D56CE

RBX = 44E8AD44 AB8592A6 A5A3DDCA 5CF896C7 18043606 A01D650D EF37A01F 37C228C3 32FC3173 54E2C274 D4DAF8AD 001054C7 6CE57971 C6F4486D 57230432 61C506EB F5BE438F 53DE04F0 67C776E0 DD3B71A6 29013328 3725A532 F21AF145 126DC1D7 77ECC27B E50835BD 28098B8A 73D9F801 D893793A 41FF5C49 B87E79F2 BE4D56CE

Rby = 557E134A D85BB1D4 B9CE4F8B E4B08A12 BABF55B1 D6F1D7A6 38019EA2 8E15AB1C 9F76375F DD1210D4 F4351B9A 009486B7 F3ED46C9 65DED2D8 0DADE4F3 8C6721D5 2C3AD103 A10EBD29 59248B4E F006836B F097448E 6107C9ED EE9FB704 823DF199 F832C905 AE45F8A2 47A072D8 EF729EAB C5E27574 B07739B3 4BE74A53 2F747B86

RBY = 557E134A D85BB1D4 B9CE4F8B E4B08A12 BABF55B1 D6F1D7A6 38019EA2 8E15AB1C 9F76375F DD1210D4 F4351B9A 009486B7 F3ED46C9 65DED2D8 0DADE4F3 8C6721D5 2C3AD103 A10EBD29 59248B4E F006836B F097448E 6107C9ED EE9FB704 823DF199 F832C905 AE45F8A2 47A072D8 EF729EAB C5E27574 B07739B3 4BE74A53 2F747B86

g^r = 7D2A8438 E6291C64 9B6579EB 3B79EAE9 48B1DE9E 5F7D1F40 70A08F8D B6B3C515 6F2201AF FBB5CB9D 82AA3EC0 D0398B89 ABC78A13 A760C0BF 3F77E63D 0DF3F1A3 41A41B88 11DF197F D6CD0F00 3125606F 4F109F40 0F7292A1 0D255E3C 0EBCCB42 53FB182C 68F09CF6 CD9C4A53 DA6C74AD 007AF36B 8BCA979D 5895E282 F483FCD6

G ^ R = 7D2A8438 E6291C64 9B6579EB 3B79EAE9 48B1DE9E 5F7D1F40 70A08F8D B6B3C515 6F2201AF FBB5CB9D 82AA3EC0 D0398B89 ABC78A13 A760C0BF 3F77E63D 0DF3F1A3 41A41B88 11DF197F D6CD0F00 3125606F 4F109F40 0F7292A1 0D255E3C 0EBCCB42 53FB182C 68F09CF6 CD9C4A53 DA6C74AD 007AF36B 8BCA979D 5895E282 F483FCD6

mask = HashToIntegerRange( 7D2A8438 E6291C64 9B6579EB 3B79EAE9 48B1DE9E 5F7D1F40 70A08F8D B6B3C515 6F2201AF FBB5CB9D 82AA3EC0 D0398B89 ABC78A13 A760C0BF 3F77E63D 0DF3F1A3 41A41B88 11DF197F D6CD0F00 3125606F 4F109F40 0F7292A1 0D255E3C 0EBCCB42 53FB182C 68F09CF6 CD9C4A53 DA6C74AD 007AF36B 8BCA979D 5895E282 F483FCD6, 2^128, SHA-256 )

マスク= HashToIntegerRange(7D2A8438 E6291C64 9B6579EB 3B79EAE9 48B1DE9E 5F7D1F40 70A08F8D B6B3C515 6F2201AF FBB5CB9D 82AA3EC0 D0398B89 ABC78A13 A760C0BF 3F77E63D 0DF3F1A3 41A41B88 11DF197F D6CD0F00 3125606F 4F109F40 0F7292A1 0D255E3C 0EBCCB42 53FB182C 68F09CF6 CD9C4A53 DA6C74AD 007AF36B 8BCA979D 5895E282 F483FCD6、2 ^ 128、SHA-256)

= 9BD4EA1E 801D37E6 2AD2FAB0 D4F5BBF7

= 9BD4EA1E 801D37E6 2AD2FAB0 D4F5BBF7

H = 89E0BC66 1AA1E916 38E6ACC8 4E496507

H = 89E0BC66 1AA1E916 38E6ACC8 4E496507

      // --------------------------------------------------------
      // Receiver processing
        

// Device receives Kb from the KMS

//デバイスは、KMSからKBを受け取り、

Kbx = 93AF67E5 007BA6E6 A80DA793 DA300FA4 B52D0A74 E25E6E7B 2B3D6EE9 D18A9B5C 5023597B D82D8062 D3401956 3BA1D25C 0DC56B7B 979D74AA 50F29FBF 11CC2C93 F5DFCA61 5E609279 F6175CEA DB00B58C 6BEE1E7A 2A47C4F0 C456F052 59A6FA94 A634A40D AE1DF593 D4FECF68 8D5FC678 BE7EFC6D F3D68353 25B83B2C 6E69036B

KBX = 93AF67E5 007BA6E6 A80DA793 DA300FA4 B52D0A74 E25E6E7B 2B3D6EE9 D18A9B5C 5023597B D82D8062 D3401956 3BA1D25C 0DC56B7B 979D74AA 50F29FBF 11CC2C93 F5DFCA61 5E609279 F6175CEA DB00B58C 6BEE1E7A 2A47C4F0 C456F052 59A6FA94 A634A40D AE1DF593 D4FECF68 8D5FC678 BE7EFC6D F3D68353 25B83B2C 6E69036B

Kby = 155F0A27 241094B0 4BFB0BDF AC6C670A 65C325D3 9A069F03 659D44CA 27D3BE8D F311172B 55416018 1CBE94A2 A783320C ED590BC4 2644702C F371271E 496BF20F 588B78A1 BC01ECBB 6559934B DD2FB65D 2884318A 33D1A42A DF5E33CC 5800280B 28356497 F87135BA B9612A17 26042440 9AC15FEE 996B744C 33215123 5DECB0F5

K BY = 155F0A27 241094B0 4BFB0BDF AC6C670A 65C325D3 9A069F03 659D44CA 27D3BE8D F311172B 55416018 1CBE94A2 A783320C ED590BC4 2644702C F371271E 496BF20F 588B78A1 BC01ECBB 6559934B DD2FB65D 2884318A 33D1A42A DF5E33CC 5800280B 28356497 26042440 F87135BA B9612A17 9AC15FEE 996B744C 33215123 5DECB0F5

// Device processes Encapsulated Data

//デバイスは、カプセル化されたデータを処理します

w = 7D2A8438 E6291C64 9B6579EB 3B79EAE9 48B1DE9E 5F7D1F40 70A08F8D B6B3C515 6F2201AF FBB5CB9D 82AA3EC0 D0398B89 ABC78A13 A760C0BF 3F77E63D 0DF3F1A3 41A41B88 11DF197F D6CD0F00 3125606F 4F109F40 0F7292A1 0D255E3C 0EBCCB42 53FB182C 68F09CF6 CD9C4A53 DA6C74AD 007AF36B 8BCA979D 5895E282 F483FCD6

W = 7D2A8438 E6291C64 9B6579EB 3B79EAE9 48B1DE9E 5F7D1F40 70A08F8D B6B3C515 6F2201AF FBB5CB9D 82AA3EC0 D0398B89 ABC78A13 A760C0BF 3F77E63D 0DF3F1A3 41A41B88 11DF197F D6CD0F00 3125606F 4F109F40 0F7292A1 0D255E3C 0EBCCB42 53FB182C 68F09CF6 CD9C4A53 DA6C74AD 007AF36B 8BCA979D 5895E282 F483FCD6

SSV = 12345678 9ABCDEF0 12345678 9ABCDEF0

SSV = 12345678 9ABCDEF0 12345678 9ABCDEF0

r = 13EE3E1B 8DAC5DB1 68B1CEB3 2F0566A4 C273693F 78BAFFA2 A2EE6A68 6E6BD90F 8206CCAB 84E7F42E D39BD4FB 131012EC CA2ECD21 19414560 C17CAB46 B956A80F 58A3302E B3E2C9A2 28FBA7ED 34D8ACA2 392DA1FF B0B17B23 20AE09AA EDFD0235 F6FE0EB6 5337A63F 9CC97728 B8E5AD04 60FADE14 4369AA5B 21662132 47712096

R = 13EE3E1B 8DAC5DB1 68B1CEB3 2F0566A4 C273693F 78BAFFA2 A2EE6A68 6E6BD90F 8206CCAB 84E7F42E D39BD4FB 131012EC CA2ECD21 19414560 C17CAB46 B956A80F 58A3302E B3E2C9A2 28FBA7ED 34D8ACA2 392DA1FF B0B17B23 20AE09AA EDFD0235 F6FE0EB6 5337A63F 9CC97728 B8E5AD04 60FADE14 4369AA5B 21662132 47712096

TESTx = 44E8AD44 AB8592A6 A5A3DDCA 5CF896C7 18043606 A01D650D EF37A01F 37C228C3 32FC3173 54E2C274 D4DAF8AD 001054C7 6CE57971 C6F4486D 57230432 61C506EB F5BE438F 53DE04F0 67C776E0 DD3B71A6 29013328 3725A532 F21AF145 126DC1D7 77ECC27B E50835BD 28098B8A 73D9F801 D893793A 41FF5C49 B87E79F2 BE4D56CE

TESTx = 44E8AD44 AB8592A6 A5A3DDCA 5CF896C7 18043606 A01D650D EF37A01F 37C228C3 32FC3173 54E2C274 D4DAF8AD 001054C7 6CE57971 C6F4486D 57230432 61C506EB F5BE438F 53DE04F0 67C776E0 DD3B71A6 29013328 3725A532 F21AF145 126DC1D7 77ECC27B E50835BD 28098B8A 73D9F801 D893793A 41FF5C49 B87E79F2 BE4D56CE

TESTy = 557E134A D85BB1D4 B9CE4F8B E4B08A12 BABF55B1 D6F1D7A6 38019EA2 8E15AB1C 9F76375F DD1210D4 F4351B9A 009486B7 F3ED46C9 65DED2D8 0DADE4F3 8C6721D5 2C3AD103 A10EBD29 59248B4E F006836B F097448E 6107C9ED EE9FB704 823DF199 F832C905 AE45F8A2 47A072D8 EF729EAB C5E27574 B07739B3 4BE74A53 2F747B86

テスト= 557E134A D85BB1D4 B9CE4F8B E4B08A12 BABF55B1 D6F1D7A6 38019EA2 8E15AB1C 9F76375F DD1210D4 F4351B9A 009486B7 F3ED46C9 65DED2D8 0DADE4F3 8C6721D5 2C3AD103 A10EBD29 59248B4E F006836B F097448E 6107C9ED EE9FB704 823DF199 F832C905 AE45F8A2 47A072D8 EF729EAB C5E27574 B07739B3 4BE74A53 2F747B86

TEST == Rb

TEST ==のRb

      // --------------------------------------------------------
      // HashToIntegerRange( M, q, SHA-256 ) example
        

M = 12345678 9ABCDEF0 12345678 9ABCDEF0 32303131 2D303200 74656C3A 2B343437 37303039 30303132 3300

M = 12345678 9ABCDEF0 12345678 9ABCDEF0 32303131 2D303200 74656C3A 2B343437 37303039 30303132 3300

A = E04D4EF6 9DF86893 22B39AE3 80284617 4A93BEDB 1E3D2A2C 5F2C7EA0 05513EBA

A = E04D4EF6 9DF86893 22B39AE3 80284617 4A93BEDB 1E3D2A2C 5F2C7EA0 05513EBA

h0 = 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

H0 = 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

h1 = 66687AAD F862BD77 6C8FC18B 8E9F8E20 08971485 6EE233B3 902A591D 0D5F2925

E 1 = 66687AAD F862BD77 6C8FC18B 8E9F8E20 08971485 6EE233B3 902A591D 0D5F2925

h2 = 2B32DB6C 2C0A6235 FB1397E8 225EA85E 0F0E6E8C 7B126D00 16CCBDE0 E667151E

H2 = 2B32DB6C 2C0A6235 FB1397E8 225EA85E 0F0E6E8C 7B126D00 16CCBDE0 E667151E

h3 = 12771355 E46CD47C 71ED1721 FD5319B3 83CCA3A1 F9FCE3AA 1C8CD3BD 37AF20D7

ハ= 12771355 E46CD47C 71ED1721 FD5319B3 83CCA3A1 F9FCE3AA 1C8CD3BD 37AF20D7

h4 = FE15C0D3 EBE314FA D720A08B 839A004C 2E6386F5 AECC19EC 74807D19 20CB6AEB

E 4 = FE15C0D3 EBE314FA D720A08B 839A004C 2E6386F5 AECC19EC 74807D19 20CB6AEB

v1 = FA2656CA 1D2DBD79 015AE918 773DFEDC 24957C91 E3C9C335 40D6BF6D 7C3C0055

P 1 = FA2656CA 1D2DBD79 015AE918 773DFEDC 24957C91 E3C9C335 40D6BF6D 7C3C0055

v2 = F016CD67 59620AD7 87669E3A DD887DF6 25895A91 0CEE1486 91A06735 B2F0A248

カテゴリー= F016CD67 59620AD7 87669E3A DD887DF6 25895A91 0CEE1486 91A06735 B2F0A248

v3 = AC45C6F9 7F83BCE0 A2BBD0A1 4CF4D7F4 CB3590FB FAF93AE7 1C64E426 185710B5

VZ = A456F9 7F83BE0 A2BBD0A1 CHTSFCHDSHTFCH B3590FB FAFYAZAESHT 164E426 185710B5

v4 = E65D50BD 551A54EF 981F535E 072DE98D 2223ACAD 4621E026 3B0A61EA C56DB078

RF = E65D50BD 551A54EF 981F535E 072DE98D 2223AAD 4621E026 3B0A61EA 56DB078

v mod q = 13EE3E1B 8DAC5DB1 68B1CEB3 2F0566A4 C273693F 78BAFFA2 A2EE6A68 6E6BD90F 8206CCAB 84E7F42E D39BD4FB 131012EC CA2ECD21 19414560 C17CAB46 B956A80F 58A3302E B3E2C9A2 28FBA7ED 34D8ACA2 392DA1FF B0B17B23 20AE09AA EDFD0235 F6FE0EB6 5337A63F 9CC97728 B8E5AD04 60FADE14 4369AA5B 21662132 47712096

V MOD Q = 13EE3E1B 8DAC5DB1 68B1CEB3 2F0566A4 C273693F 78BAFFA2 A2EE6A68 6E6BD90F 8206CCAB 84E7F42E D39BD4FB 131012EC CA2ECD21 19414560 C17CAB46 B956A80F 58A3302E B3E2C9A2 28FBA7ED 34D8ACA2 392DA1FF B0B17B23 20AE09AA EDFD0235 F6FE0EB6 5337A63F 9CC97728 B8E5AD04 60FADE14 4369AA5B 21662132 47712096

      // --------------------------------------------------------
        

Author's Address

著者のアドレス

Michael Groves CESG Hubble Road Cheltenham GL51 8HJ UK

マイケル・グローブスCESGハッブル道路チェルトナムGL51 8HJ英国

EMail: Michael.Groves@cesg.gsi.gov.uk

メールアドレス:Michael.Groves@cesg.gsi.gov.uk