Network Working Group                                           X. Boyen
Request for Comments: 5091                                     L. Martin
Category: Informational                                 Voltage Security
                                                           December 2007
        

Identity-Based Cryptography Standard (IBCS) #1: Supersingular Curve Implementations of the BF and BB1 Cryptosystems

IDベース暗号規格(IBCS)#1:BFとBB1暗号の超特異曲線実装

Status of This Memo

このメモのステータス

This memo provides information for the Internet community. It does not specify an Internet standard of any kind. Distribution of this memo is unlimited.

このメモはインターネットコミュニティのための情報を提供します。それはどんな種類のインターネット標準を指定しません。このメモの配布は無制限です。

IESG Note

IESG注意

This document specifies two mathematical algorithms for identity based encryption (IBE). Due to its specialized nature, this document experienced limited review within the IETF. Readers of this RFC should carefully evaluate its value for implementation and deployment.

この文書では、IDベース暗号(IBE)用の2つの数学的アルゴリズムを指定します。そのための特殊な性質のために、このドキュメントは、IETF内の限られたレビューを経験しました。このRFCの読者は慎重に実装と展開のためにその値を評価する必要があります。

Abstract

抽象

This document describes the algorithms that implement Boneh-Franklin (BF) and Boneh-Boyen (BB1) Identity-based Encryption. This document is in part based on IBCS #1 v2 of Voltage Security's Identity-based Cryptography Standards (IBCS) documents, from which some irrelevant sections have been removed to create the content of this document.

この文書では、Boneh-フランクリン(BF)とBoneh-Boyen(BB1)IDベース暗号化を実装するアルゴリズムを説明します。このドキュメントは、いくつかの無関係なセクションは、この文書の内容を作成するために除去された電圧SecurityのIDベース暗号規格(IBCS)文書のIBCS#1 V2に基づいて一部です。

Table of Contents

目次

   1. Introduction ....................................................4
      1.1. Sending a Message That Is Encrypted Using IBE ..............5
           1.1.1. Sender Obtains Recipient's Public Parameters ........6
           1.1.2. Construct and Send an IBE-Encrypted Message .........6
      1.2. Receiving and Viewing an IBE-Encrypted Message .............7
           1.2.1. Recipient Obtains Public Parameters from PPS ........8
           1.2.2. Recipient Obtains IBE Private Key from PKG ..........8
           1.2.3. Recipient Decrypts IBE-Encrypted Message ............9
   2. Notation and Definitions ........................................9
      2.1. Notation ...................................................9
      2.2. Definitions ...............................................12
   3. Basic Elliptic Curve Algorithms ................................12
      3.1. The Group Action in Affine Coordinates ....................13
           3.1.1. Implementation for Type-1 Curves ...................13
      3.2. Point Multiplication ......................................14
      3.3. Operations in Jacobian Projective Coordinates .............17
           3.3.1. Implementation for Type-1 Curves ...................17
      3.4. Divisors on Elliptic Curves ...............................19
           3.4.1. Implementation in F_p^2 for Type-1 Curves ..........19
      3.5. The Tate Pairing ..........................................21
           3.5.1. Tate Pairing Calculation ...........................21
           3.5.2. The Miller Algorithm for Type-1 Curves .............21
   4. Supporting Algorithms ..........................................24
      4.1. Integer Range Hashing .....................................24
           4.1.1. Hashing to an Integer Range ........................24
      4.2. Pseudo-Random Byte Generation by Hashing ..................25
           4.2.1. Keyed Pseudo-Random Bytes Generator ................25
      4.3. Canonical Encodings of Extension Field Elements ...........26
           4.3.1. Encoding an Extension Element as a String ..........26
           4.3.2. Type-1 Curve Implementation ........................27
      4.4. Hashing onto a Subgroup of an Elliptic Curve ..............28
           4.4.1. Hashing a String onto a Subgroup of an
                  Elliptic Curve .....................................28
           4.4.2. Type-1 Curve Implementation ........................29
      4.5. Bilinear Mapping ..........................................29
           4.5.1. Regular or Modified Tate Pairing ...................29
           4.5.2. Type-1 Curve Implementation ........................30
      4.6. Ratio of Bilinear Pairings ................................31
           4.6.1. Ratio of Regular or Modified Tate Pairings .........31
           4.6.2. Type-1 Curve Implementation ........................32
   5. The Boneh-Franklin BF Cryptosystem .............................32
      5.1. Setup .....................................................32
           5.1.1. Master Secret and Public Parameter Generation ......32
           5.1.2. Type-1 Curve Implementation ........................33
      5.2. Public Key Derivation .....................................34
        
           5.2.1. Public Key Derivation from an Identity and
                  Public Parameters ..................................34
      5.3. Private Key Extraction ....................................35
           5.3.1. Private Key Extraction from an Identity, a
                  Set of Public ......................................35
      5.4. Encryption ................................................36
           5.4.1. Encrypt a Session Key Using an Identity and
                  Public Parameters ..................................36
      5.5. Decryption ................................................37
           5.5.1. Decrypt an Encrypted Session Key Using
                  Public Parameters, a Private Key ...................37
   6. The Boneh-Boyen BB1 Cryptosystem ...............................38
      6.1. Setup .....................................................38
           6.1.1. Generate a Master Secret and Public Parameters .....38
           6.1.2. Type-1 Curve Implementation ........................39
      6.2. Public Key Derivation .....................................41
           6.2.1. Derive a Public Key from an Identity and
                  Public Parameters ..................................41
      6.3. Private Key Extraction ....................................41
           6.3.1. Extract a Private Key from an Identity,
                  Public Parameters and a Master Secret ..............41
      6.4. Encryption ................................................42
           6.4.1. Encrypt a Session Key Using an Identity and
                  Public Parameters ..................................42
      6.5. Decryption ................................................45
           6.5.1. Decrypt Using Public Parameters and Private Key ....45
   7. Test Data ......................................................47
      7.1. Algorithm 3.2.2 (PointMultiply) ...........................47
      7.2. Algorithm 4.1.1 (HashToRange) .............................48
      7.3. Algorithm 4.5.1 (Pairing) .................................48
      7.4. Algorithm 5.2.1 (BFderivePubl) ............................49
      7.5. Algorithm 5.3.1 (BFextractPriv) ...........................49
      7.6. Algorithm 5.4.1 (BFencrypt) ...............................50
      7.7. Algorithm 6.3.1 (BBextractPriv) ...........................51
      7.8. Algorithm 6.4.1 (BBencrypt) ...............................52
   8. ASN.1 Module ...................................................53
   9. Security Considerations ........................................58
   10. Acknowledgments ...............................................60
   11. References ....................................................60
      11.1. Normative References .....................................60
      11.2. Informative References ...................................60
        
1. Introduction
1. はじめに

This document provides a set of specifications for implementing identity-based encryption (IBE) systems based on bilinear pairings. Two cryptosystems are described: the IBE system proposed by Boneh and Franklin (BF) [BF], and the IBE system proposed by Boneh and Boyen (BB1) [BB1]. Fully secure and practical implementations are described for each system, comprising the core IBE algorithms as well as ancillary hybrid components used to achieve security against active attacks. These specifications are restricted to a family of supersingular elliptic curves over finite fields of large prime characteristic, referred to as "type-1" curves (see Section 2.1). Implementations based on other types of curves currently fall outside the scope of this document.

この文書では、バイリニアペアリングに基づくアイデンティティベースの暗号化(IBE)システムを実装するための仕様のセットを提供します。二つの暗号が記載されている:IBEシステムは、Bonehおよびフランクリン(BF)[BF]、及びBoneh及びBoyen(BB1)によって提案されたIBEシステム[BB1]によって提案されました。完全に安全で実用的な実装は、コアIBEアルゴリズムならびに能動的攻撃に対する安全性を達成するために使用される補助的なハイブリッド成分を含む、各システムのために記載されています。これらの仕様は、大きな素数特性の有限体上の超特異楕円曲線のファミリーに制限され、「1型」曲線(セクション2.1を参照)と呼ばれます。曲線の他のタイプに基づいた実装は現在、このドキュメントの範囲外。

IBE is a public-key technology, but one which varies from other public-key technologies in a slight, yet significant way. In particular, IBE keys are calculated instead of being generated randomly, which leads to a different architecture for a system using IBE than for a system using other public-key technologies. An overview of these differences and how a system using IBE works is given in [IBEARCH].

IBEは、公開鍵技術ですが、若干、まだ重要な方法で他の公開鍵テクノロジーによって異なります1。具体的には、IBEキーは、他の公開鍵技術を使用するシステムの場合よりもIBEを用いて、システムの異なるアーキテクチャにつながる、算出された代わりに、ランダムに生成されます。これらの違いの概要とどのようにIBEを使用してシステムの動作は、[IBEARCH]で与えられています。

Identity-based encryption (IBE) is a public-key encryption technology that allows a public key to be calculated from an identity, and the corresponding private key to be calculated from the public key. Calculation of both the public and private keys in an IBE-based system can occur as needed, resulting in just-in-time key material. This contrasts with other public-key systems [P1363], in which keys are generated randomly and distributed prior to secure communication commencing. The ability to calculate a recipient's public key, in particular, eliminates the need for the sender and receiver in an IBE-based messaging system to interact with each other, either directly or through a proxy such as a directory server, before sending secure messages.

アイデンティティベースの暗号化(IBE)は、公開鍵はアイデンティティから計算することを可能にする公開鍵暗号化技術であり、対応する秘密鍵は、公開鍵から計算されます。必要に応じてIBEベースのシステムでは、公開鍵と秘密鍵の両方の計算は、ジャストインタイムキーマテリアルで、その結果、発生する可能性があります。これは、キーがランダムに生成し、通信開始を確保するために事前に分散されている他の公開鍵システム[P1363]、とは対照的です。受信者の公開鍵を計算する能力は、特に、安全なメッセージを送信する前に、そのようなディレクトリ・サーバとして直接またはプロキシを介して、互いに相互作用するIBEベースのメッセージングシステム内の送信者と受信者が不要になります。

This document describes an IBE-based messaging system and how the components of the system work together. The components required for a complete IBE messaging system are the following:

この文書では、IBEベースのメッセージングシステムを説明し、システムのコンポーネントがどのように連携しますか。完全なIBEのメッセージングシステムに必要なコンポーネントは次のとおりです。

o a Private-key Generator (PKG). The PKG contains the cryptographic material, known as a master secret, for generating an individual's IBE private key. A PKG accepts an IBE user's private key request, and after successfully authenticating them in some way, returns the IBE private key.

O秘密鍵ジェネレータ(PKG)。 PKGは、個人のIBE秘密鍵を生成するために、マスターシークレットとして知られている暗号化材料を含んでいます。 PKGは、IBEのユーザの秘密鍵の要求を受け入れ、そして成功したいくつかの方法でそれらを認証した後、IBE秘密鍵を返します。

o a Public Parameter Server (PPS). IBE System Parameters include publicly sharable cryptographic material, known as IBE public parameters, and policy information for the PKG. A PPS provides a well-known location for secure distribution of IBE public parameters and policy information for the IBE PKG.

公開パラメータサーバー(PPS)、O。 IBEシステム・パラメータは、公に共有可能な暗号IBE公開パラメータとして知られている材料、およびPKGのポリシー情報が含まれています。 PPSはIBE PKGのためのIBE公開パラメータ及びポリシー情報の安全な配布のためのよく知られた場所を提供します。

A logical architecture would be to have a PKG/PPS per name space, such as a DNS zone. The organization that controls the DNS zone would also control the PKG/PPS and thus the determination of which PKG/PSS to use when creating public and private keys for the organization's members. In this case the PPS URI can be uniquely created by the form of the identity that it supports. This architecture would make it clear which set of public parameters to use and where to retrieve them for a given identity.

論理アーキテクチャは、DNSゾーンとして、名前空間ごとにPKG / PPSを持っていることであろう。 DNSゾーンを制御組織はまた、PKG / PPSを制御するため、組織のメンバーのための公開鍵と秘密鍵の作成時に使用するPKG / PSSの決意です。この場合、PPS URIは一意にそれがサポートするアイデンティティの形で作成することができます。このアーキテクチャは、それが明確にされ、公開パラメータのセットを使用するには、どこで与えられたアイデンティティのためにそれらを取得するためになるだろう。

IBE-encrypted messages can use standard message formats, such as the Cryptographic Message Syntax (CMS) [CMS]. How to use IBE with CMS is described in [IBECMS].

IBEで暗号化されたメッセージは、暗号メッセージ構文(CMS)[CMS]のような標準的なメッセージフォーマットを使用することができます。 CMSとIBEを使用する方法[IBECMS]に記載されています。

Note that IBE algorithms are used only for encryption, so if digital signatures are required, they will need to be provided by an additional mechanism.

IBEアルゴリズムは、暗号化のみに使用されているので、デジタル署名が必要な場合、彼らは追加のメカニズムによって提供される必要があることに注意してください。

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 [KEYWORDS].

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

1.1. Sending a Message That Is Encrypted Using IBE
1.1. IBEを使用して暗号化され、メッセージを送信

In order to send an encrypted message, an IBE user must perform the following steps:

暗号化されたメッセージを送信するためには、IBEのユーザーは、次の手順を実行する必要があります。

1. Obtain the recipient's public parameters.
1.受信者の公開パラメータを入手します。

The recipient's IBE public parameters allow the creation of unique public and private keys. A user of an IBE system is capable of calculating the public key of a recipient after he obtains the public parameters for their IBE system. Once the public parameters are obtained, IBE-encrypted messages can be sent.

受信者のIBE公開パラメータには、固有の公開鍵と秘密鍵の作成を可能にします。 IBEシステムの利用者は、彼が自分のIBEシステムの公開パラメータを取得した後、受信者の公開鍵を算出することが可能です。公開パラメータが得られると、IBEで暗号化されたメッセージを送信することができます。

2. Construct and send an IBE-encrypted message.
2.構築し、IBE暗号化メッセージを送信します。

All that is needed, in addition to the IBE public parameters, is the recipient's identity in order to generate their public key for use in encrypting messages to them. When this identity is the same as the identity that a message would be addressed to, then no more information is needed from a user to send someone a secure message than is needed to send them an unsecured message. This is one of the major benefits of an IBE-based secure messaging system. Examples of identities can be an individual, group, or role identifiers.

必要とされるすべては、IBE公開パラメータに加えて、彼らにメッセージを暗号化で使用するために自分の公開鍵を生成するために、受信者のIDです。このアイデンティティは、メッセージがに対処するだろうとアイデンティティと同じである場合には、その後、これ以上の情報は、誰かにそれらをセキュリティで保護されていないメッセージを送信するために必要とされるよりも安全なメッセージを送信するために、ユーザからの必要はありません。これはIBEベースのセキュアなメッセージングシステムの主要な利点の1つです。アイデンティティの例には、個人、グループ、またはロール識別子することができます。

1.1.1. Sender Obtains Recipient's Public Parameters
1.1.1. 送信者は受信者の公開パラメータを取得します

The sender of a message obtains the IBE public parameters that he needs for calculating the IBE public key of the recipient from a PPS that is hosted at a well-known URI. The IBE public parameters contain all of the information that the sender needs to create an IBE-encrypted message except for the identity of the recipient. [IBEARCH] describes the URI where a PPS is located, the format of IBE public parameters, and how to obtain them. The URI from which users obtain IBE public parameters MUST be authenticated in some way; PPS servers MUST support Transport Layer Security (TLS) 1.1 [TLS] to satisfy this requirement and MUST verify that the subject name in the server certificate matches the URI of the PPS. [IBEARCH] also describes the way in which identity formats are defined and a minimum interoperable format that all PPSs and PKGs MUST support. This step is shown below in Figure 1.

メッセージの送信者は、彼は、よく知られたURIでホストされているPPSからの受信者のIBE公開鍵を計算するために必要とIBE公開パラメータを取得します。 IBE公開パラメータは、送信者が受信者の身元を除き、IBE暗号化メッセージを作成するために必要な情報がすべて含まれています。 【IBEARCH] PPSが配置されているURI、IBE公開パラメータのフォーマットを記述し、それらを取得する方法。ユーザーは、IBE公開パラメータは、何らかの方法で認証される必要があり得る、そこからURI。 PPSサーバは、この要件を満たすために[TLS]トランスポート層セキュリティ(TLS)1.1をサポートしなければならないし、サーバ証明書のサブジェクト名は、PPSのURIと一致していることを確かめなければなりません。 【IBEARCH]も同一フォーマットが定義されている方法と全てのPPSとのPKGがサポートしなければならない最低限の相互運用可能なフォーマットを記述する。このステップは、図1において以下に示されています。

                  IBE Public Parameter Request
                 ----------------------------->
          Sender                                PPS
                 <-----------------------------
                      IBE Public Parameters
        

Figure 1. Requesting IBE Public Parameters

図1. IBE公開パラメータを要求

The sender of an IBE-encrypted message selects the PPS and corresponding PKG based on his local security policy. Different PPSs may provide public parameters that specify different IBE algorithms or different key strengths, for example, or require the use of PKGs that require different levels of authentication before granting IBE private keys.

IBE暗号化メッセージの送信者は、PPSと彼のローカルセキュリティポリシーに基づいて、対応するPKGを選択します。異なるのPPSは、例えば、異なるIBEアルゴリズムまたは異なる強みを指定する公開パラメータを提供し、またはIBE秘密鍵を許可する前に認証の異なるレベルを必要とPKGのの使用を必要とするかもしれません。

1.1.2. Construct and Send an IBE-Encrypted Message
1.1.2. 構築し、IBE-暗号化されたメッセージを送信

To IBE-encrypt a message, the sender chooses a content encryption key (CEK) and uses it to encrypt his message and then encrypts the CEK with the recipient's IBE public key (for example, as described in [CMS]). This operation is shown below in Figure 2. This document describes the algorithms needed to implement two forms of IBE. [IBECMS] describes how to use the Cryptographic Message Syntax (CMS) to encapsulate the encrypted message along with the IBE information that the recipient needs to decrypt the message.

IBE暗号化したメッセージに、送信者は、コンテンツ暗号化キー(CEK)を選択し、彼のメッセージを暗号化するためにそれを使用して、(例えば、[CMS]で説明したように)、受信者のIBE公開鍵を使用してCEKを暗号化します。この操作は、この文書では、IBEの二つの形態を実装するために必要なアルゴリズムを記載している以下の図2に示されています。 【IBECMS】受信者がメッセージを復号化する必要があることIBE情報と共に暗号化されたメッセージをカプセル化するために暗号メッセージ構文(CMS)を使用する方法について説明。

                  CEK ----> Sender ----> IBE-encrypted CEK
        
                              ^
                              |
                              |
        

Recipient's Identity and IBE Public Parameters

受信者のアイデンティティとIBE公開パラメータ

Figure 2. Using an IBE Public-Key Algorithm to Encrypt

暗号化するために、IBE公開鍵アルゴリズムを使用して図2

1.2. Receiving and Viewing an IBE-Encrypted Message
1.2. IBE-暗号化されたメッセージを受信して​​表示します

In order to read an encrypted message, a recipient of an IBE-encrypted message parses the message (for example, as described in [IBECMS]). This gives him the URI he needs to obtain the IBE public parameters required to perform IBE calculations as well as the identity that was used to encrypt the message. Next, the recipient must carry out the following steps:

([IBECMS]に記載されているように、例えば)暗号化されたメッセージを読み取るために、IBEで暗号化されたメッセージの受信者は、メッセージを解析します。これは彼に彼がIBEの計算を実行するために必要なIBE公開パラメータだけでなく、メッセージを暗号化するために使用されたIDを取得する必要があるURIを与えます。次に、受信者は、次の手順を実行する必要があります。

1. Obtain the recipient's public parameters.
1.受信者の公開パラメータを入手します。

An IBE system's public parameters allow it to uniquely create public and private keys. The recipient of an IBE-encrypted message can decrypt an IBE-encrypted message if he has both the IBE public parameters and the necessary IBE private key. The PPS can also provide the URI of the PKG where the recipient of an IBE-encrypted message can obtain the IBE private keys.

IBEシステムの公開パラメータは、それが一意に公開鍵と秘密鍵を作成することができます。彼はIBE公開パラメータ及び必要なIBE秘密鍵の両方を持っている場合IBE暗号化メッセージの受信者は、IBE暗号化メッセージを復号化することができます。 PPSはまた、IBE暗号化メッセージの受信者はIBE秘密鍵を取得することができPKGのURIを提供することができます。

2. Obtain the IBE private key from the PKG.
2.パッケージからONE秘密鍵を取得します。

To decrypt an IBE-encrypted message, in addition to the IBE public parameters, the recipient needs to obtain the private key that corresponds to the public key that the sender used. The IBE private key is obtained after successfully authenticating to a private key generator (PKG), a trusted third party that calculates private keys for users. The recipient receives the IBE private key over an HTTPS connection. The URI of a PKG MUST be authenticated in some way; PKG servers MUST support TLS 1.1 [TLS] to satisfy this requirement.

IBE暗号化メッセージを復号化するには、IBE公開パラメータに加えて、受信者は送信者が使用した公開鍵に対応する秘密鍵を取得する必要があります。 IBE秘密鍵が正常に秘密鍵生成器(PKG)、ユーザーのために秘密鍵を計算し、信頼できる第三者に認証した後に得られます。受信者は、HTTPS接続を介してIBE秘密鍵を受け取ります。 PKGのURIは、何らかの方法で認証されなければなりません。 PKGサーバは、この要件を満たすために、TLS 1.1 [TLS]をサポートしなければなりません。

3. Decrypt the IBE-encrypted message.
3. IBE-暗号化されたメッセージを解読。

The IBE private key decrypts the CEK, which is then used to decrypt encrypted message.

IBE秘密鍵は、暗号化されたメッセージを解読するために使用されるCEKを復号化します。

The PKG may allow users other than the intended recipient to receive some IBE private keys. Giving a mail filtering appliance permission to obtain IBE private keys on behalf of users, for example, can allow the appliance to decrypt and scan encrypted messages for viruses or other malicious features.

PKGは、意図した受信者以外のユーザーは、いくつかのIBE秘密鍵を受け取ることを可能にします。ユーザーの代わりにIBE秘密鍵を取得するメールフィルタリングアプライアンスの許可を与える、例えば、アプライアンスはウイルスやその他の悪質な機能のための暗号化されたメッセージを解読してスキャンできるようにすることができます。

1.2.1. Recipient Obtains Public Parameters from PPS
1.2.1. 受信者は、PPSから公開パラメータを取得します

Before he can perform any IBE calculations related to the message that he has received, the recipient of an IBE-encrypted message needs to obtain the IBE public parameters that were used in the encryption operation. This operation is shown below in Figure 3.

彼は、彼が受信したメッセージに関連するIBE計算を実行する前に、IBE暗号化メッセージの受信者は、暗号化操作に使用されたIBE公開パラメータを取得する必要があります。この動作は、図3で以下に示されています。

                 IBE Public Parameter Request
                ----------------------------->
      Recipient                                PPS
                <-----------------------------
                     IBE Public Parameters
        

Figure 3. Requesting IBE Public Parameters

図3. IBE公開パラメータを要求

1.2.2. Recipient Obtains IBE Private Key from PKG
1.2.2. 受信者は、PKGからIBE秘密鍵を取得します

To obtain an IBE private key, the recipient of an IBE-encrypted message provides the IBE public key used to encrypt the message and their authentication credentials to a PKG and requests the private key that corresponds to the IBE public key. Section 4 of this document defines the protocol for communicating with a PKG as well as a minimum interoperable way to authenticate to a PKG that all IBE implementations MUST support. Because the security of IBE private keys is vital to the overall security of an IBE system, IBE private keys MUST be transported to recipients over a secure protocol. PKGs MUST support TLS 1.1 [TLS] for transport of IBE private keys. This operation is shown below in Figure 4.

IBE秘密鍵を取得するには、IBE暗号化メッセージの受信者は、メッセージとPKGへの認証資格情報を暗号化するために使用されるIBE公開鍵を提供し、IBE公開鍵に対応する秘密鍵を要求します。この文書のセクション4は、PKGならびに全てIBE実装がサポートしなければならないPKGに対して認証するための最小の相互運用可能な方法と通信するためのプロトコルを定義します。 IBE秘密鍵のセキュリティはIBEシステム全体のセキュリティに不可欠ですので、IBE秘密鍵は、セキュアなプロトコルを介して受信者に輸送されなければなりません。 PKGのは、IBE秘密鍵の輸送のために[TLS] TLS 1.1をサポートしなければなりません。この動作は、図4において以下に示されています。

                   IBE Private Key Request
                ---------------------------->
      Recipient                                PKG
                <----------------------------
                       IBE Private Key
        

Figure 4. Obtaining an IBE Private Key

IBE秘密鍵を取得する。図4

1.2.3. Recipient Decrypts IBE-Encrypted Message
1.2.3. 受信者はIBE-暗号化されたメッセージを復号化

After obtaining the necessary IBE private key, the recipient uses that IBE private key, and the corresponding IBE public parameters, to decrypt the CEK. This operation is shown below in Figure 5. He then uses the CEK to decrypt the encrypted message content (for example, as specified in [IBECMS]).

必要なIBE秘密鍵を取得した後、受信者は、CEKを復号化するために、そのIBE秘密鍵、および対応するIBE公開パラメータを使用しています。この動作は、図5に彼が次に([IBECMS]で指定されるように、例えば)暗号化されたメッセージの内容を解読するためにCEKを使用して下に示されています。

      IBE-encrypted CEK ----> Recipient ----> CEK
        
                                  ^
                                  |
                                  |
        

IBE Private Key and IBE Public Parameters

IBE秘密鍵とIBE公開パラメータ

Figure 5. Using an IBE Public-Key Algorithm to Decrypt

復号化するためのIBE公開鍵アルゴリズムを使用して図5

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

This section summarizes the notions and definitions regarding identity-based cryptosystems on elliptic curves. The reader is referred to [ECC] for the mathematical background and to [BF], [IBEARCH] regarding all notions pertaining to identity-based encryption.

このセクションでは、楕円曲線上のアイデンティティベースの暗号システムに関する概念や定義をまとめたもの。読者は、アイデンティティベースの暗号化に関連するすべての概念について[IBEARCH]、数学的背景および[BF]に[ECC]と呼ばれます。

F_p denotes finite field of prime characteristic p; F_p^2 denotes its extension field of degree 2.

F_Pプライム標数pの有限体を示し、 F_P ^ 2度2のその拡張フィールドを示しています。

Let E/F_p: y^2 = x^3 + a * x + b be an elliptic curve over F_p. For an extension of degree 2, the curve E/F_p defines a group (E(F_p^2), +), which is the additive group of points of affine coordinates (x, y) in (F_p^2)^2 satisfying the curve equation over F_p^2, with null element, or point at infinity, denoted as 0.

E / F_Pを聞かせ:Y ^ 2 = X ^ 3 + *のX + bがF_P上の楕円曲線です。次数2の拡張のために、曲線E / F_Pは(F_P ^ 2)でアフィン座標(x、y)の点の加法群である群(E(F_P ^ 2)+)を、定義^ 2満足0として示さヌル要素、又は無限遠点とF_P ^ 2上の曲線式、、。

Let q be a prime such that E(F_p) has a cyclic subgroup G1' of order q.

qはE(F_P)は数qの巡回サブグループG1' を有するように素数とします。

Let G1'' be a cyclic subgroup of E(F_p^2) of order q, and G2 be a cyclic subgroup of (F_p^2)* of order p.

G1 '' は数qのEの巡回サブグループ(F_P ^ 2)であり、そしてG2は次数pの(F_P ^ 2)の環状亜群*とします。

Under these conditions, a mathematical construction known as the Tate pairing provides an efficiently computable map e: G1' x G1'' -> G2 that is linear in both arguments and believed hard to invert [BF]. If an efficiently computable non-rational endomorphism phi: G1' ->

これらの条件下で、テイトペアリングとしても知られている数学的構造を効率的に計算可能なマップEを提供する:G1' のX G1 『』 - > G2両方の引数に線形であり、[BF]を反転することは困難と考えられ。効率的に計算可能な非理性的自己準同型のPHIの場合:G1' - >

G1'' is available for the selected elliptic curve on which the Tate pairing is computed, then we can construct a function e': G1' x G1'' -> G2, defined as e'(A, B) = e(A, phi(B)), called the modified Tate pairing. We generically call a pairing either the Tate pairing e or the modified Tate pairing e', depending on the chosen elliptic curve used in a particular implementation.

G1 '' 我々は関数eを構築することができる、テイトペアリングが計算された選択された楕円曲線のために利用可能である ':G1' X G1 '' - E '(A、B)のように定義> G2、= E( 、PHI(B))は、修飾されたTateペアリングと呼ばれます。我々は、一般的に、特定の実装に使用される選択された楕円曲線に応じて、ペアリングテイトペアリングEのいずれか、または修飾されたテイトペアリングe」を呼び出します。

The following additional notation is used throughout this document.

以下の追加の表記は、この文書全体で使用されます。

p - A 512-bit to 7680-bit prime, which is the order of the finite field F_p.

P - 有限F_Pのオーダーである512ビットの7680ビットの素数。

F_p - The base finite field of order p over which the elliptic curve of interest E/F_p is defined.

F_P - 関心のE / F_Pの楕円曲線が定義される上次数pのベース有限。

#G - The size of the set G.

#G - 集合Gの大きさ

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の乗法群です。

E/F_p - The equation of an elliptic curve over the field F_p, which, when p is neither 2 nor 3, is of the form E/F_p: y^2 = x^3 + a * x + b, for specified a, b in F_p.

E / F_P - pが2でも3でもない場合、フォームE / F_Pであり、フィールドF_P、上の楕円曲線の方程式:指定されたAのY ^ 2 = X ^ 3 + A * X + B、 、F_PでB。

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

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

E(F_p) - The additive group of points of affine coordinates (x, y), with x, y in F_p, that satisfy the curve equation E/F_p, including the point at infinity 0.

E(F_P) - 無限0の点を含む曲線方程式E / F_Pを満たすF_PにおけるX、Yとのアフィン座標(x、y)、の点の加法群。

q - A 160-bit to 512-bit prime that is the order of the cyclic subgroup of interest in E(F_p).

Q - E(F_P)における関心の巡回サブグループの順序である160ビット、512ビットの素数。

k - The embedding degree of the cyclic subgroup of order q in E(F_p). For type-1 curves this is always equal to 2.

K - Eで数q(F_P)の環状サブグループの埋め込み次数。 1型曲線の場合、これは常に2に等しいです。

F_p^2 - The extension field of degree 2 of the field F_p.

F_P ^ 2 - フィールドF_P度2の拡張フィールド。

E(F_p^2) - The group of points of affine coordinates in F_p^2 satisfying the curve equation E/F_p, including the point at infinity 0.

E(F_P ^ 2) - アフィン変換の点群は、無限0の点を含む曲線方程式E / F_Pを満たすF_P ^ 2の座標。

Z_p - The additive group of integers modulo p.

Z_p - のpを法とする整数の加法群。

lg - The base 2 logarithm function, so that 2^lg(x) = x.

LG - ベース2対数関数、2 ^ LG(X)= xとなるように。

The term "object identifier" will be abbreviated "OID."

用語「オブジェクト識別子は、」「OID。」と略記されます

A Solinas prime is a prime of the form 2^a (+/-) 2^b (+/-) 1.

Solinasプライムフォーム2 ^ A(+/-)2 ^ B(+/-)1の素数です。

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と表記します

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

小数点乗算 - Aは、曲線上の点であり、nは整数、n回の合計が示され、それ自体に加算した結果[n]がA場合。

The following class of elliptic curves is exclusively considered for pairing operations in the present version of this document, which are referred to as "type-1" curves.

楕円曲線の次のクラスは、もっぱら「1型」曲線と呼ばれるこの文書の現在のバージョンでペアリング操作のために考慮されます。

Type-1 curves - The class of curves of type-1 is defined as the class of all elliptic curves of equation E/F_p: y^2 = x^3 + 1 for all primes p congruent to 11 modulo 12. This class forms a subclass of the class of supersingular curves. These curves satisfy #E(F_p) = p + 1, and the p points (x, y) in E(F_p) \ {0} have the property that x = (y^2 - 1)^(1/3) (mod p). Type-1 curves always have an embedding degree k = 2.

11モジュロ12このクラスの形態にY ^ 2 = X ^ 3 + 1のすべての素数pの合同のために: - タイプ1の曲線1型の曲線のクラスは、式E / F_Pの全ての楕円曲線のクラスとして定義されています超特異曲線のクラスのサブクラス。これらの曲線は、Eで#E(F_P)= P + 1、及びP点(x、y)は(F_P)\ {0}有する性質を満たすことが、X =(Y ^ 1 - 2)^(1/3) (MOD P)。 1型曲線は常に埋め込み次数k = 2を有しています。

Groups of points on type-1 curves are plentiful and easy to construct by random selection of a prime p of the appropriate form. Therefore, rather than to standardize upon a small set of common values of p, it is henceforth assumed that all type-1 curves are freshly generated at random for the given cryptographic application (an example of such generation will be given in Algorithm 5.1.2 (BFsetup1) or Algorithm 6.1.2 (BBsetup1)). Implementations based on different classes of curves are currently unsupported.

1型曲線上の点のグループが豊富で適切な形の素数pをランダムに選択することによって構築することが容易です。したがって、Pの共通値の小さなセットに標準化するのではなく、今後全て1型曲線を新たにアルゴリズム5.1.2に説明する所定の暗号化アプリケーション(例えば世代の例えばランダムに生成されているものとします(BFsetup1)またはアルゴリズム6.1.2(BBsetup1))。曲線の異なるクラスに基づいた実装は、現在サポートされていません。

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

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

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

ベースフィールド要素 - ベースフィールドF_Pのp要素は直接0からpまでの整数を使用して表されている - 1。

Extension field elements - The p^2 elements of the extension field F_p^2 are represented as ordered pairs of elements of F_p. An ordered pair (a_0, a_1) is interpreted as the complex number a_0 + a_1 * i, where i^2 = -1. This allows operations on elements of F_p^2 to be implemented as follows. Suppose that a = (a_0, a_1) and b = (b_0, b_1) are elements of F_p^2. Then a + b = ((a_0 + b_0)(mod p), (a_1 + b_1)(mod p)) and a * b = ((a_1 * b_1 - a_0 * b_0)(mod p), (a_1 * b_0 + a_0 * b_1)(mod p)).

拡張フィールド要素 - 拡張フィールドF_P ^ 2のP ^ 2つの要素はF_Pの要素の順序対として表されます。順序付けられた対は(A_0、A_1)複素数A_0 + A_1 * I、と解釈される。ここで、i ^ 2 = -1。これは次のようにF_P ^ 2の要素に対する操作を実施することを可能にします。 =(A_0、A_1)とb =(B_0、B_1)F_P ^ 2の要素であると仮定する。次いで+ B =((A_0 + B_0)(MOD P)、(A_1 + B_1)(MOD P))と*のB =((A_1 * B_1 - A_0 * B_0)(MOD P)、(A_1 * B_0 + A_0 * B_1)(モッズP))。

Elliptic curve points - Points in E(F_p^2) with the point P = (x, y) in F_p^2 x F_p^2 satisfying the curve equation E/F_p. Points not equal to 0 are internally represented using the affine coordinates (x, y), where x and y are elements of F_p^2.

楕円曲線点 - 曲線の方程式E / F_Pを満足F_P ^ 2×F_Pの点P =(X、Y)とEの点(F_P ^ 2)^ 2。 0に等しくない点は、内部xおよびyはF_P ^ 2の要素であるアフィン座標(x、y)を、使用して表されます。

2.2. Definitions
2.2. 定義

The following terminology is used to describe an IBE system.

以下の用語は、IBEシステムを説明するために使用されます。

Public parameters - The public parameters are a set of common, system-wide parameters generated and published by the private key generator (PKG).

公開パラメータ - 公開パラメータは、秘密鍵生成器(PKG)によって生成されたと発表され、共通の、システム全体のパラメータのセットです。

Master secret - The master secret is the master key generated and privately kept by the key server and used to generate the private keys of the users.

マスター秘密 - マスターシークレットが生成され、非公開鍵サーバによって保持され、利用者の秘密鍵を生成するために使用されるマスターキーです。

Identity - An identity is an arbitrary string, usually a human-readable unambiguous designator of a system user, possibly augmented with a time stamp and other attributes.

アイデンティティ - アイデンティティはおそらくタイムスタンプおよびその他の属性で拡張任意の文字列で、システムユーザの通常人間が読める明確な指示、です。

Public key - A public key is a string that is algorithmically derived from an identity. The derivation may be performed by anyone, autonomously.

公開鍵 - 公開鍵は、アルゴリズム的アイデンティティから派生した文字列です。導出は自律的に、誰でも実行することができます。

Private key - A private key is issued by the key server to correspond to a given identity (and the public key that derives from it) under the published set of public parameters.

秘密鍵は - 秘密鍵は、公開パラメータの公開されたセットの下で与えられたIDに対応する鍵サーバ(およびそれから派生する公開鍵)によって発行されます。

Plaintext - Plaintext is an unencrypted representation, or in the clear, of any block of data to be transmitted securely. For the present purposes, plaintexts are typically session keys, or sets of session keys, for further symmetric encryption and authentication purposes.

平文 - 平文が暗号化されていない表現である、または明らかに、データの任意のブロックを安全に送信します。本発明の目的のために、平文は、典型的には、セッション鍵、またはさらに、対称暗号化と認証の目的のためにセッション鍵のセットです。

Ciphertext - Ciphertext is an encrypted representation of any block of data, including plaintext, to be transmitted securely.

暗号文 - 暗号文を安全に送信する、平文データを含む、任意のブロックの暗号化された表現です。

3. Basic Elliptic Curve Algorithms
3.基本的な楕円曲線アルゴリズム

This section describes algorithms for performing all needed basic arithmetic operations on elliptic curves. The presentation is specialized to the type of curves under consideration for simplicity of implementation. General algorithms may be found in [ECC].

このセクションでは、楕円曲線上のすべての必要な基本的な算術演算を実行するためのアルゴリズムを記載しています。プレゼンテーションは、実装の簡略化のために検討中の曲線のタイプに特化しています。一般的なアルゴリズムは、[ECC]で見つけられるかもしれません。

3.1. The Group Action in Affine Coordinates
3.1. アフィン座標でのグループ行動
3.1.1. Implementation for Type-1 Curves
3.1.1. タイプ1曲線の実装

Algorithm 3.1.1 (PointDouble1): adds a point to itself on a type-1 elliptic curve.

アルゴリズム3.1.1(PointDouble1)は:1型楕円曲線上の自身にポイントを加算します。

Input:

入力:

o A point A in E(F_p^2), with A = (x, y) or 0

A =(X、Y)または0とEの点A(F_P ^ 2)、O

o An elliptic curve E/F_p: y^2 = x^3 + 1

Y ^ 2 = X ^ 3 + 1:楕円曲線E / O F_P

Output:

出力:

o The point [2]A = A + A

点O [2] A = A + A

Method:

方法:

1. If A = 0 or y = 0, then return 0
1. A = 0又はY = 0、次に0を返す場合
2. Let lambda = (3 * x^2) / (2 * y)
2.レッツラムダ=(3 * X ^ 2)/(2 * Y)
3. Let x' = lambda^2 - 2 * x
3.レッツのX」=ラムダ^ 2から2 * X
4. Let y' = (x - x') * lambda - y
*ラムダ - Y - 4 Y '=(X X')してみましょう
5. Return (x', y')
5.復路(X 'Y')

Algorithm 3.1.2 (PointAdd1): adds two points on a type-1 elliptic curve.

アルゴリズム3.1.2(PointAdd1)は:1型楕円曲線上の2点を加算します。

Input:

入力:

o A point A in E(F_p^2), with A = (x_A, y_A) or 0

Eの点A(F_P ^ 2)O、A =(X_A、y_A)を有する、または0

o A point B in E(F_p^2), with B = (x_B, y_B) or 0

B =(x_B、y_B)または0のE(F_P ^ 2)の点B、O

o An elliptic curve E/F_p: y^2 = x^3 + 1

Y ^ 2 = X ^ 3 + 1:楕円曲線E / O F_P

Output:

出力:

o The point A + B

O点A + B

Method:

方法:

1. If A = 0, return B
1. A = 0の場合、Bを返します
2. If B = 0, return A
2. B = 0、Aを返す場合
3. If x_A = x_B:
3.もしX_A = x_B:

(a) If y_A = -y_B, return 0

y_A = -y_B場合(A)、0を返します

(b) Else return [2]A computed using Algorithm 3.1.1 (PointDouble1)

(B)それ以外の戻り[2] Aアルゴリズム3.1.1を使用して計算(PointDouble1)

4. Otherwise:
4.それ以外の場合:

(a) Let lambda = (y_B - y_A) / (x_B - x_A)

(A)うラムダ=(y_B - y_A)/(x_B - X_A)

(b) Let x' = lambda^2 - x_A - x_B

(b)にしてみましょうX」=ラムダ^ 2 - X_A - x_B

(c) Let y' = (x_A - x') * lambda - y_A

(C)Y '=(X_Aを - X')してみましょう*ラムダ - y_A

(d) Return (x', y')

(D)戻り(X 'Y')

3.2. Point Multiplication
3.2. 小数点乗算

Algorithm 3.2.1 (SignedWindowDecomposition): computes the signed m-ary window representation of a positive integer [ECC].

アルゴリズム3.2.1(SignedWindowDecompositionは):[ECC]正の整数の符号付きm進ウィンドウ表現を計算します。

Input:

入力:

o An integer k > 0, where k has the binary representation k = {Sum(k_j * 2^j, for j = 0 to l} where each k_j is either 0 or 1 and k_l = 0

各k_jは0または1であり、K_L = 0ここで、kはバイナリ表現K = {LへJ = 0のために合計(k_j * 2 ^ jは、}有する整数k> 0、O

o An integer window bit-size r > 0

整数ウィンドウビットサイズr> 0 O

Output:

出力:

o An integer d and the unique d-element sequence {(b_i, e_i), for i = 0 to d - 1} such that k = {Sum(b_i * 2^(e_i), for i = 0 to d - 1}, each b_i = +/- 2^j for some 0 < j <= r - 1 and each e_i is a non-negative integer

O整数dおよびユニークD-要素系列{(b_i、e_i)、のためのI D = 0〜 - 1}のようにK = {合計(b_i * 2 ^(e_i)、のためのI = 0からd - 1 }、いくつかの0 <jについて各b_i = +/- 2 ^ jが<= rは - 1と各e_iは非負整数であります

Method:

方法:

1. Let d = 0
1.レッツさd = 0
2. Let j = 0
2.レッツのJ = 0
3. While j <= l, do:
3. J <= 1が、実行します。

(a) If k_j = 0, then:

(A)k_j = 0の場合:

i. Let j = j + 1

私。してみましょうJ = J + 1

(b) Else:

(b)の他に:

i. Let t = min{l, j + r - 1}

でT =分う。{1、J + Rを - 1}

ii. Let h_d = (k_t, k_(t - 1), ..., k_j) (base 2)

私。 (ベース2) - HD =(1)、...、K_ K_、K_(t)を聞かせて

iii. If h_d > 2^(r - 1), then:

III。もしh_d> 2 ^(R - 1)、その後:

A. Let b_d = h_d - 2^r

A.ましょうB_D = h_d - 2 ^ R

B. Increment the number (k_l, k_(l-1),...,k_j) (base 2) by 1

B.インクリメント1によって数(K_L、K_(L-1)、...、k_j)(ベース2)

iv. Else:

IV。エルス:

A. Let b_d = h_d

A.ましょうB_D = B_D

v. Let e_d = j

V。e_d = Jみよう

vi. Let d = d + 1

僕ら。光D = D + 1

vii. Let j = t + 1

VII。してみましょうJ = T + 1

4. Return d and the sequence {(b_0, e_0), ..., (b_(d - 1), e_(d - 1))}

4.リターンd及び配列{(B_0、E_0)、...、(B_(D - 1)、E_(D - 1))}

Algorithm 3.2.2 (PointMultiply): scalar multiplication on an elliptic curve using the signed m-ary window method.

アルゴリズム3.2.2(PointMultiply):署名されたM-aryのウィンドウ法を用いた楕円曲線上のスカラー倍。

Input:

入力:

o A point A in E(F_p^2)

O Eの点A(F_P ^ 2)

o An integer l > 0

O整数L> 0

o An elliptic curve E/F_p: y^2 = x^3 + a * x + b

Y ^ 2 = X ^ 3 + A * X + B:楕円曲線E / O F_P

Output:

出力:

o The point [l]A

点O [L] A

Method:

方法:

1. (Window decomposition)
1.(ウィンドウ分解)

(a) Let r > 0 be an integer (fixed) bit-wise window size, e.g., r = 5

(a)は、R> 0の整数とする(固定)ビット単位のウィンドウ・サイズ、例えば、R = 5

(b) Let l' = l where l = {Sum(l_j * 2^j), for j = 0 to len_l} is the binary expansion of l, where len_l = Ceiling(lg(l))

(b)は、L = {合計(l_j * 2 ^ j)は、len_lへJ = 0} len_l =天井(LG(L))Lのバイナリ拡張であり、L」= Lをう

(c) Compute (d, {(b_i, e_i), for i = 0 to d - 1} = SignedWindowDecomposition(l, r), the signed 2^r-ary window representation of l using Algorithm 3.2.1 (SignedWindowDecomposition)

(c)の計算(D、{(b_i、e_i)、DにI = 0 - 1} = SignedWindowDecomposition(L、R)、アルゴリズム3.2.1(SignedWindowDecomposition)を用いてLの符号付き2 ^ R進ウィンドウ表現

2. (Precomputation)
2.(事前計算)

(a) Let A_1 = A

(a)にしてみましょうA_1 = A

(b) Let A_2 = [2]A, using Algorithm 3.1.1 (PointDouble1)

(B)アルゴリズム3.1.1(PointDouble1)を使用して、A_2 = [2] Aう

(c) For i = 1 to 2^(r - 2) - 1, do:

iについて(C)= 1 ^ 2(R - 2) - 1、行います。

i. Let A_(2 * i + 1) = A_(2 * i - 1) + A_2 using Algorithm 3.1.2 (PointAdd1)

私。 A_してみましょう(2 * I + 1)= A_(2 * I - 1)+ A_2アルゴリズム3.1.2を使用して(PointAdd1)

(d) Let Q = A_(b_(d - 1))

(d)は、Q = A_( - 1)B_(d)にしてみましょう

3. Main loop
3.メインループ

(a) For i = d - 2 to 0 by -1, do:

(A)について、I = D - 2 -1により0に、行います。

i. Let Q = [2^(e_(i + 1) - e_i)]Q, using repeated applications of Algorithm 3.1.1 (PointDouble1) e_(i + 1) - e_i times

私。ましょうQ = [2 ^は、(E_(I + 1) - e_i)] Q、アルゴリズム3.1.1(PointDouble1)E_(I + 1)の繰り返し適用を使用して、 - e_i回

ii. If b_i > 0, then:

II。その後、b_i> 0の場合:

            A. Let Q = Q + A_(b_i) using Algorithm 3.1.2
               (PointAdd1)
        

iii. Else:

III。エルス:

            A. Let Q = Q - A_(-(b_i)) using Algorithm 3.1.2
               (PointAdd1)
        

(b) Calculate Q = [2^(e_0)]Q using repeated applications of Algorithm 3.1.1 (PointDouble1) e_0 times

(B)の計算Q = 2 ^(E_0)] Qアルゴリズム3.1.1の繰り返し適用を使用して(PointDouble1)E_0時間

4. Return Q.
4.戻るQ.
3.3. Operations in Jacobian Projective Coordinates
3.3. ヤコビアン射影座標での操作
3.3.1. Implementation for Type-1 Curves
3.3.1. タイプ1曲線の実装

Algorithm 3.3.1 (ProjectivePointDouble1): adds a point to itself in Jacobian projective coordinates for type-1 curves.

アルゴリズム3.3.1(ProjectivePointDouble1)は:1型カーブのヤコビアン射影座標自体にポイントを加算します。

Input:

入力:

o A point (x, y, z) = A in E(F_p^2) in Jacobian projective coordinates

ヤコビアン射影座標におけるE中のO点(x、y、z)= A(F_P ^ 2)

o An elliptic curve E/F_p: y^2 = x^3 + 1

Y ^ 2 = X ^ 3 + 1:楕円曲線E / O F_P

Output:

出力:

o The point [2]A in Jacobian projective coordinates

ヤコビアン射影座標における点O [2] A

Method:

方法:

1. If z = 0 or y = 0, return (0, 1, 0) = 0, otherwise:
1.それ以外の場合、Z = 0またはy = 0、リターン(0、1、0)= 0の場合:
2. Let lambda_1 = 3 * x^2
2.レッツのlambda_1 = 3 * X ^ 2
3. Let z' = 2 * y * z
3. Z」= 2 *のy * zをしてみましょう
4. Let lambda_2 = y^2
4.レッツのlambda_2 = y ^ 2
5. Let lambda_3 = 4 * lambda_2 * x
5.レッツのlambda_3 = 4 * lambda_2 * X
6. Let x' = lambda_1^2 - 2 * lambda_3
2 * lambda_3 - X」= lambda_1 ^ 2 6.レッツ
7. Let lambda_4 = 8 * lambda_2^2
7.ましょうlambda_4 = 8 * lambda_2 ^ 2
8. Let y' = lambda_1 * (lambda_3 - x') - lambda_4
8. Y '= lambda_1×( - X lambda_3') - うlambda_4
9. Return (x', y', z')
9.復路(X 'Y'、Z「)

Algorithm 3.3.2 (ProjectivePointAccumulate1): adds a point in affine coordinates to an accumulator in Jacobian projective coordinates, for type-1 curves.

アルゴリズム3.3.2(ProjectivePointAccumulate1は):アフィン点は、タイプ1曲線について、ヤコビアン射影座標にアキュムレータに座標を追加します。

Input:

入力:

o A point (x_A, y_A, z_A) = A in E(F_p^2) in Jacobian projective coordinates

ヤコビアン射影座標における点Eにおいて(X_A、y_A、z_A)= A(F_P ^ 2)O

o A point (x_B, y_B) = B in E(F_p^2) \ {0} in affine coordinates

点O(x_B、y_B)がE(F_P ^ 2)でBが= \ {0}アフィン座標における

o An elliptic curve E/F_p: y^2 = x^3 + 1

Y ^ 2 = X ^ 3 + 1:楕円曲線E / O F_P

Output:

出力:

o The point A + B in Jacobian projective coordinates

ヤコビアン射影座標の点A + B O

Method:

方法:

1. If z_A = 0, return (x_B, y_B, 1) = B, otherwise:
1.場合z_A = 0、リターン(x_B、y_B、1)= B、そうでない場合:
2. Let lambda_1 = z_A^2
2.ましょうlambda_1 = z_A ^ 2
3. Let lambda_2 = lambda_1 * x_B
3. * lambda_2 = lambda_1ましょうx_B
4. Let lambda_3 = x_A - lambda_2
4. lambda_3 = X_Aをしてみましょう - lambda_2
5. If lambda_3 = 0, then return (0, 1, 0), otherwise:
5. lambda_3 = 0の場合、そうでない場合は、(0、1、0)を返します。
6. Let lambda_4 = lambda_3^2
6. lambda_4 = lambda_3 ^ 2ましょう
7. Let lambda_5 = lambda_1 * y_B * z_A
7.ましょうlambda_5 = lambda_1 * y_B * z_A
8. Let lambda_6 = lambda_4 - lambda_5
lambda_5 - 8. lambda_6 = lambda_4てみよう
9. Let lambda_7 = x_A + lambda_2
9. lambda_7 = X_A + lambda_2をしてみましょう
10. Let lambda_8 = y_A + lambda_5
10.レッツlambda_8 = y_A + lambda_5
11. Let x' = lambda_6^2 - lambda_7 * lambda_4
11.レッツX」= lambda_6 ^ 2 - lambda_7 * lambda_4
12. Let lambda_9 = lambda_7 * lambda_4 - 2 * x'
12.レッツlambda_9 = lambda_7 * lambda_4 - 2 * x」は
13. Let y' = (lambda_9 * lambda_6 -
13.レッツのY」=(lambda_9 * lambda_6 -

lambda_8 * lambda_3 * lambda_4) / 2

lambda_8 * lambda_3 * lambda_4)/ 2

14. Let z' = lambda_3 * z_A
14日のz「= lambda_3 * z_Aをしてみましょう
15. Return (x', y', z')
15.復路(X 'Y'、Z「)
3.4. Divisors on Elliptic Curves
3.4. 楕円曲線上の除数
3.4.1. Implementation in F_p^2 for Type-1 Curves
3.4.1. タイプ1曲線のためのF_P ^ 2で実装

Algorithm 3.4.1 (EvalVertical1): evaluates the divisor of a vertical line on a type-1 elliptic curve.

アルゴリズム3.4.1(EvalVertical1)は:1型楕円曲線上の縦線の除数を評価します。

Input:

入力:

o A point B in E(F_p^2) with B != 0

O Eの点B Bを持つ(F_P ^ 2)!= 0

o A point A in E(F_p)

O Eの点A(F_P)

o A description of a type-1 elliptic curve E/F_p

O 1型楕円曲線E / F_Pの説明

Output:

出力:

o An element of F_p^2 that is the divisor of the vertical line going through A evaluated at B

O Bで評価を通過する垂直線の除数であるF_P ^ 2の要素

Method:

方法:

1. Let r = x_B - x_A
1.レッツのR = x_B - X_A
2. Return r
2.戻りR

Algorithm 3.4.2 (EvalTangent1): evaluates the divisor of a tangent on a type-1 elliptic curve.

アルゴリズム3.4.2(EvalTangent1)は:1型楕円曲線上の接線の除数を評価します。

Input:

入力:

o A point B in E(F_p^2) with B != 0

O Eの点B Bを持つ(F_P ^ 2)!= 0

o A point A in E(F_p)

O Eの点A(F_P)

o A description of a type-1 elliptic curve E/F_p

O 1型楕円曲線E / F_Pの説明

Output:

出力:

o An element of F_p^2 that is the divisor of the line tangent to A evaluated at B

Bで評価に対する接線の除数であるF_P ^ 2の素子O

Method:

方法:

1. (Special cases)
1.(特別な場合)

(a) If A = 0, return 1 (b) If y_A = 0, return EvalVertical1(B, A) using Algorithm 3.4.1 (EvalVertical1)

(a)は、A = 0は、図1(b)の場合y_A = 0、戻りEvalVertical1(B、A)を用いて、アルゴリズム3.4.1(EvalVertical1)を返す場合

2. (Line computation)
2.(ライン計算)

(a) Let a = -3 * (x_A)^2

(A)^ 2 = -3 *(X_A)してみましょう

(b) Let b = 2 * y_A

(b)はB = 2 * y_Aてみよう

(c) Let c = -b * y_A - a * x_A

(c)は、C = -b * y_Aをしてみましょう - * X_A

3. (Evaluation at B)
3.(Bでの評価)

(a) Let r = a * x_B + b * y_B + c

(a)は、ましょうR = A * x_B + B * + C y_B

4. Return r
4.戻りR

Algorithm 3.4.3 (EvalLine1): evaluates the divisor of a line on a type-1 elliptic curve.

アルゴリズム3.4.3(EvalLine1)は:1型楕円曲線上のラインの除数を評価します。

Input:

入力:

o A point B in E(F_p^2) with B != 0

O Eの点B Bを持つ(F_P ^ 2)!= 0

o Two points A', A'' in E(F_p)

E中のO 2点A」、A ''(F_P)

o A description of a type-1 elliptic curve E/F_p

O 1型楕円曲線E / F_Pの説明

Output:

出力:

o An element of F_p^2 that is the divisor of the line going through A' and A'' evaluated at B

O Bで評価Aを通過する線」およびA 『』の除数であるF_P ^ 2の要素

Method:

方法:

1. (Special cases)
1.(特別な場合)

(a) If A' = 0, return EvalVertical1(B, A'') using Algorithm 3.4.1 (EvalVertical1)

(A)アルゴリズム3.4.1(EvalVertical1)を使用して」( '= 0、EvalVertical1 B、A)を返す' の場合

(b) If A'' = 0, return EvalVertical1(B, A') using Algorithm 3.4.1 (EvalVertical1)

(B)A 'アルゴリズム3.4.1(EvalVertical1)を使用して'(= 0は、EvalVertical1 B、A)を返す 'の場合

(c) If A' = -A'', return EvalVertical1(B, A') using Algorithm 3.4.1 (EvalVertical1)

(C) '= -A '' は、EvalVertical1を返した場合(B、A')アルゴリズム3.4.1を使用して(EvalVertical1)

(d) If A' = A'', return EvalTangent1(B, A') using Algorithm 3.4.2 (EvalTangent1)

(D) '= A '' は、EvalTangent1を返した場合(B、A')アルゴリズム3.4.2を使用して(EvalTangent1)

2. (Line computation)
2.(ライン計算)

(a) Let a = y_A' - y_A''

「 - y_A ''(A)= y_Aをしてみましょう

(b) Let b = x_A'' - x_A'

(b)にしてみましょうB = X_A '' - X_A」

(c) Let c = -b * y_A' - a * x_A'

(c)は、C = -b * y_Aましょう ' - *のX_A'

3. (Evaluation at B)
3.(Bでの評価)

(a) Let r = a * x_B + b * y_B + c

(a)は、ましょうR = A * x_B + B * + C y_B

4. Return r
4.戻りR
3.5. The Tate Pairing
3.5. テイトペアリング
3.5.1. Tate Pairing Calculation
3.5.1. テイトペアリング計算

Algorithm 3.5.1 (Tate): computes the Tate pairing on an elliptic curve.

アルゴリズム3.5.1(テイト)は:楕円曲線上のTateペアリングを計算します。

Input:

入力:

o A point A of order q in E(F_p)

Eにおける位数qの点A(F_P)O

o A point B of order q in E(F_p^2)

Eにおける位数qの点B(F_P ^ 2)O

o A description of an elliptic curve E/F_p such that E(F_p) and E(F_p^2) have a subgroup of order q

E(F_P)及びE(F_P ^ 2)は次数qのサブグループを有するように楕円曲線E / F_Pの説明O

Output:

出力:

o The value e(A, B) in F_p^2, computed using the Miller algorithm

F_P ^ 2における値e(A、B)O、ミラーのアルゴリズムを用いて計算

Method:

方法:

1. For a type-1 curve E, execute Algorithm 3.5.2 (TateMillerSolinas)
1型曲線Eについて1、アルゴリズム3.5.2(TateMillerSolinas)を実行
3.5.2. The Miller Algorithm for Type-1 Curves
3.5.2. タイプ1曲線のためのミラーのアルゴリズム

Algorithm 3.5.2 (TateMillerSolinas): computes the Tate pairing on a type-1 elliptic curve.

アルゴリズム3.5.2(TateMillerSolinas)は:1型楕円曲線上のTateペアリングを計算します。

Input:

入力:

o A point A of order q in E(F_p)

Eにおける位数qの点A(F_P)O

o A point B of order q in E(F_p^2) o A description of a type-1 supersingular elliptic curve E/F_p such that E(F_p) and E(F_p^2) have a subgroup of Solinas prime order q where q = 2^a + s * 2^b + c, where c and s are limited to the values +/-1

1型超特異楕円曲線E / F_P E(F_P)及びE(F_P ^ 2)ここでSolinasプライム次数qのサブグループを有するようにの説明O Eで数qの点B(F_P ^ 2)O Q = 2 ^ A + S * 2 ^ B + C、C及びSが値に限定される+/- 1

Output:

出力:

o The value e(A, B) in F_p^2, computed using the Miller algorithm

F_P ^ 2における値e(A、B)O、ミラーのアルゴリズムを用いて計算

Method:

方法:

1. (Initialization)
1.(初期化)

(a) Let v_num = 1 in F_p^2

(a)はF_P ^ 2 = 1をv_numてみよう

(b) Let v_den = 1 in F_p^2

(B)F_P ^ 2 = 1をv_denう

(c) Let V = (x_V , y_V , z_V ) = (x_A, y_A, 1) in (F_p)^3, being the representation of (x_A, y_A) = A using Jacobian projective coordinates

(C)うV =(x_V、y_V、z_V)=(F_P)^ 3、である(X_A、y_A)の表現が使用ヤコビアン射影座標=(1 X_A、y_A)

(d) Let t_num = 1 in F_p^2

(D)= 1 F_Pにおける^ 2 t_numう

(e) Let t_den = 1 in F_p^2

(e)にF_P ^ 2 = 1をt_denてみよう

2. (Calculation of the (s * 2^b) contribution)
2.((S * 2 ^ B)の寄与の計算)

(a) (Repeated doublings) For n = 0 to b - 1:

(a)は、N = 0の場合(反復倍加)をBに - 1:

i. Let t_num = t_num^2

私は。してみましょうt_num t_num ^ 2 =

ii. Let t_den = t_den^2

II。してみましょうt_den t_den ^ 2 =

iii. Let t_num = t_num * EvalTangent1(B, (x_V / z_V^2, y_V / z_V^3)) using Algorithm 3.4.2 (EvalTangent1)

III。ましょうt_num = t_num * EvalTangent1(B、(x_V / z_V ^ 2、y_V / z_V ^ 3))アルゴリズム3.4.2を使用して(EvalTangent1)

iv. Let V = (x_V , y_V , z_V ) = [2]V using Algorithm 3.3.1 (ProjectivePointDouble1)

柳。 S = B(S_V、i_V、z_V)= yu2schV Usingenのz.3.1アルゴリズム(ProektivePointDuble1)

v. Let t_den = t_den * EvalVertical1(B, (x_V / z_V^2, y_V / z_V^3)using Algorithm 3.4.1 (EvalVertical1)

V。うt_den = t_den * EvalVertical1(B、(x_V / z_V ^ 2、y_V / z_Vアルゴリズム3.4.1を使用して^ 3)(EvalVertical1)

(b) (Normalization)

(b)は、(正規化)

i. Let V_b = (x_(V_b) , y_(V_b))

私。してみましょうV_bを=(X_(V_bを)、Y_(V_bを))

= (x_V / z_V^2, s * y_V / z_V^3) in (F_p)^2,

=(X_V / z_V ^ 2、S * y_V / z_V ^ 3)及び(F_P)^ 2、

resulting in a point V_b in E(F_p)

点EでV_bを(F_P)で得られました

(c) (Accumulation) Selecting on s:

(C)(蓄積)の上を選択:

i. If s = -1:

私。 S = -1の場合:

A. Let v_num = v_num * t_den

A.ましょうv_num = v_num * t_den

B. Let v_den = v_den * t_num * EvalVertical1(B, (x_V / z_V^2, y_V / z_V^3))) using Algorithm 3.4.1 (EvalVertical1)

B.年v_den = v_den * t_nim EvalVertikal1 *(B(S_V / z_V ^ 2、i_V / z_V ^ 3)))Usingenのz.4.1アルゴリズム(EvalVertikal1)

ii. If s = 1:

II。 1秒=の場合:

A. Let v_num = v_num * t_num

A.ましょうv_num = v_num * t_num

B. Let v_den = v_den * t_den

B.ましょうv_den = v_den * t_den

3. (Calculation of the 2^a contribution)
3.(2 ^寄与の計算)

(a) (Repeated doublings) For n = b to a - 1:

(A)(反復倍加)について、N = bの - 1:

i. Let t_num = t_num^2

私は。してみましょうt_num t_num ^ 2 =

ii. Let t_den = t_den^2

II。してみましょうt_den t_den ^ 2 =

iii. Let t_num = t_num * EvalTangent1(B, (x_V / z_V^2, y_V / z_V^3))) using Algorithm 3.4.2 (EvalTangent1)

III。ましょうt_num = t_num * EvalTangent1(B、(x_V / z_V ^ 2、y_V / z_V ^ 3)))を使用してアルゴリズム3.4.2(EvalTangent1)

iv. Let V = (x_V , y_V , z_V) = [2]V using Algorithm 3.3.1 (ProjectivePointDouble1)

柳。 S = B(S_V、i_V、z_V)= yu2schV Usingenのz.3.1アルゴリズム(ProektivePointDuble1)

v. Let t_den = t_den * EvalVertical1(B, (x_V / z_V^2, y_V / z_V^3))) using Algorithm 3.4.1 (EvalVertical1)

V。うt_den = t_den * EvalVertical1(B、(x_V / z_V ^ 2、y_V / z_V ^ 3)))アルゴリズム3.4.1を使用して(EvalVertical1)

(b) (Normalization)

(b)は、(正規化)

i. Let V_a = (x_(V_a) , y_(V_a)) =

私。してみましょうV_A =(X_(V_A)、Y_(V_A))=

(x_V /z_V^2, s * x_V / z_V^3) in (F_p)^2,

(X_V / z_V ^ 2、* x_V / z_V ^ 3 S)及び(F_P)^ 2、

resulting in a point V_a in E(F_p)

点EでV_A(F_P)で得られました

(c) (Accumulation)

(C)(蓄積)

i. Let v_num = v_num * t_num

私は。 v_num = v_num * t_numてみよう

ii. Let v_den = v_den * t_den

そして、。年v_den = v_den * t_den

4. (Correction for the (s * 2^b) and (c) contributions)
4.((S * 2 ^ Bの補正)および(c)拠出)

(a) Let v_num = v_num * EvalLine1(B, V_a, V_b) using Algorithm 3.4.3 (EvalLine1)

(A)アルゴリズム3.4.3(EvalLine1)を用いv_num = v_num * EvalLine1(B、V_A、V_bを)してみましょう

(b) Let v_den = v_den * EvalVertical1(B, V_a + V_b) using Algorithm 3.4.1 (EvalVertical1)

(B)アルゴリズム3.4.1(EvalVertical1)を用いv_den = v_den * EvalVertical1(B、V_A + V_bを)してみましょう

(c) If c = -1, then:

(c)の場合、-1 = C:

i. Let v_den = v_den * EvalVertical1(B, A) using Algorithm 3.4.1 (EvalVertical1)

私。ましょうv_den = v_den * EvalVertical1(B、A)を用いて、アルゴリズム3.4.1(EvalVertical1)

5. (Correcting exponent)
5.(補正指数)

(a) Let eta = (p^2 - 1) / q

(A)は、この年=(N 1 - 2)/ K

6. (Final result)
6.(最終結果)

(a) Return (v_num / v_den)^eta

(A)再循環比(v_nim / v_den)^この

4. Supporting Algorithms
4.サポートアルゴリズム

This section describes a number of supporting algorithms for encoding and hashing.

このセクションでは、符号化とハッシュのためのアルゴリズムをサポートする数を表します。

4.1. Integer Range Hashing
4.1. 整数の範囲ハッシング
4.1.1. Hashing to an Integer Range
4.1.1. 整数の範囲にハッシング

HashToRange(s, n, hashfcn) takes a string s, an integer n, and a cryptographic hash function hashfcn as input and returns an integer in the range 0 to n - 1 by cryptographic hashing. The input n MUST be less than 2^(hashlen), where hashlen is the number of octets comprising the output of the hash function hashfcn. HashToRange is based on Merkle's method for hashing [MERKLE], which is provably as secure as the underlying hash function hashfcn.

HashToRange(S、N、hashfcn)は文字列s、整数n、および入力として暗号ハッシュ関数hashfcnを取り、0からnの範囲の整数を返す - 1暗号ハッシュによって。入力は、n hashlenは、ハッシュ関数hashfcnの出力を含むオクテットの数は2 ^(hashlen)未満でなければなりません。 HashToRangeは、基礎となるハッシュ関数hashfcnとして証明可能に安全である[マークル]を、ハッシングのためのマークルの方法に基づいています。

Algorithm 4.1.1 (HashToRange): cryptographically hashes strings to integers in a range.

アルゴリズム4.1.1(HashToRangeは):暗号技術の範囲内の整数に文字列をハッシュします。

Input:

入力:

o A string s of length |s| octets

Oの長さの文字列s |よ|オクテット

o A positive integer n represented as Ceiling(lg(n) / 8) octets.

O正の整数をn天井(LG(N)/ 8)オクテットとして表されます。

o A cryptographic hash function hashfcn

暗号学的ハッシュ関数hashfcn O

Output:

出力:

o A positive integer v in the range 0 to n - 1

Oの範囲の正の整数v 0からn - 1

Method:

方法:

1. Let hashlen be the number of octets comprising the output of hashfcn

1.レッツはhashfcnの出力を備えたオクテットの数であるhashlen

2. Let v_0 = 0
2.年v_0 = 0

3. Let h_0 = 0x00...00, a string of null octets with a length of hashlen

3.ましょうH_0 = 0x00の... 00、hashlenの長さとヌルオクテットの列

4. For i = 1 to 2, do:
2へのI = 1 4.、操作を行います。

(a) Let t_i = h_(i - 1) || s, which is the (|s| + hashlen)- octet string concatenation of the strings h_(i - 1) and s

(a)はT_I = H_してみましょう(I - 1)|| (| S | + hashlen)であるS、 - 文字列のオクテット文字列の連結H_(I - 1)とs

(b) Let h_i = hashfcn(t_i), which is a hashlen-octet string resulting from the hash algorithm hashfcn on the input t_i

(B)入力上のハッシュアルゴリズムhashfcn起因hashlenオクテットストリングである、H_I = hashfcn(T_I)うT_I

(c) Let a_i = Value(h_i) be the integer in the range 0 to 256^hashlen - 1 denoted by the raw octet string h_i interpreted in the unsigned big-endian convention

符号なしのビッグエンディアン規則で解釈生オクテットストリングH_Iで表さ1 - (C)a_iを=値(H_I)は256 ^ hashlen範囲0の整数とします

(d) Let v_i = 256^hashlen * v_(i - 1) + a_i

(d)にしてみましょうV_I = 256 ^ hashlen * V_(I - 1)+ a_iを

5. Let v = v_l (mod n)
5.のlet V = V_L(mod n)を計算します
4.2. Pseudo-Random Byte Generation by Hashing
4.2. ハッシュすることによって擬似乱数バイトの生成
4.2.1. Keyed Pseudo-Random Bytes Generator
4.2.1. 鍵付き擬似ランダムバイトジェネレータ

HashBytes(b, p, hashfcn) takes an integer b, a string p, and a cryptographic hash function hashfcn as input and returns a b-octet pseudo-random string r as output. The value of b MUST be less than or equal to the number of bytes in the output of hashfcn. HashBytes is based on Merkle's method for hashing [MERKLE], which is provably as secure as the underlying hash function hashfcn.

HashBytes(B、P、hashfcn)は、入力として整数B、列P、および暗号ハッシュ関数hashfcnを受け取り、出力としてBオクテット擬似乱数列Rを返します。 bの値は、以下hashfcnの出力のバイト数に等しくなければなりません。 HashBytesは、基礎となるハッシュ関数hashfcnとして証明可能に安全である[マークル]を、ハッシングのためのマークルの方法に基づいています。

Algorithm 4.2.1 (HashBytes): keyed cryptographic pseudo-random bytes generator.

アルゴリズム4.2.1(HashBytes):キー付き暗号擬似ランダムバイト発生器。

Input:

入力:

o An integer b

O整数B

o A string p

O列P

o A cryptographic hash function hashfcn

暗号学的ハッシュ関数hashfcn O

Output:

出力:

o A string r comprising b octets

Bオクテットを含む文字列R O

Method:

方法:

1. Let hashlen be the number of octets comprising the output of hashfcn

1.レッツはhashfcnの出力を備えたオクテットの数であるhashlen

2. Let K = hashfcn(p)
2. K = hashfcn(p)をう

3. Let h_0 = 0x00...00, a string of null octets with a length of hashlen

3.ましょうH_0 = 0x00の... 00、hashlenの長さとヌルオクテットの列

4. Let l = Ceiling(b / hashlen)
4.レッツL =天井(B / hashlen)
5. For each i in 1 to l, do:
リットルに1の各5.私は、実行します。

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

(a)はH_I = hashfcn( - 1)H_(I)してみましょう

(b) Let r_i = hashfcn(h_i || K), where h_i || K is the (2 * hashlen)-octet concatenation of h_i and K

(B)うR_iを= hashfcn(H_I || K)、ここでH_I || Kは、(2 * hashlen)-octet連結H_I及びKであります

6. Let r = LeftmostOctets(b, r_1 || ... || r_l), i.e., r is formed as the concatenation of the r_i, truncated to the desired number of octets

6. R = LeftmostOctets(B、R_1 || ... || R_L)しよう、即ち、rはオクテットの所望の数に切り捨てR_iとの連結として形成されています

4.3. Canonical Encodings of Extension Field Elements
4.3. 拡張フィールドの要素の正規のエンコーディング
4.3.1. Encoding an Extension Element as a String
4.3.1. Stringとして拡張の要素をコードします

Canonical(p, k, o, v) takes an element v in F_p^k, and returns a canonical octet string of fixed length representing v. The parameter o MUST be either 0 or 1, and specifies the ordering of the encoding.

カノニカル(P、Kは、O、V)F_P ^ k個の要素vを受け取り、Vを表す固定長の正規オクテットストリングを返す。パラメータoは0または1のいずれかであり、符号化の順序を指定しなければなりません。

Algorithm 4.3.1 (Canonical): encodes elements of an extension field F_p^2 as strings.

アルゴリズム4.3.1(正規)は:拡張フィールド文字列としてF_P ^ 2の要素をコードします。

Input:

入力:

o An element v in F_p^2

O F_Pで元v ^ 2

o A description of F_p^2

O F_Pの説明^ 2

o An ordering parameter o, either 0 or 1

O発注パラメータ0、0または1

Output:

出力:

o A fixed-length string s representing v

O固定長の文字列sを表すV

Method:

方法:

1. For a type-1 curve, execute Algorithm 4.3.2 (Canonical1)
1型曲線の1、アルゴリズム4.3.2(Canonical1)を実行
4.3.2. Type-1 Curve Implementation
4.3.2. タイプ1カーブの実装

Canonical1(p, o, v) takes an element v in F_p^2 and returns a canonical representation of v as an octet string s of fixed size. The parameter o MUST be either 0 or 1, and specifies the ordering of the encoding.

Canonical1(pは、O、V)F_P ^ 2の要素vを受け取り、固定サイズのオクテットストリングsとVの正規表現を返します。パラメータoは0または1のいずれかであり、符号化の順序を指定しなければなりません。

Algorithm 4.3.2 (Canonical1): canonically represents elements of an extension field F_p^2.

アルゴリズム4.3.2(Canonical1は):正準拡張フィールドF_P ^ 2の要素を表します。

Input:

入力:

o An element v in F_p^2

O F_Pで元v ^ 2

o A description of p, where p is congruent to 3 modulo 4

pは、3モジュロ4と合同であり、P、Oの説明

o A ordering parameter o, either 0 or 1

O発注パラメータ0、0または1

Output:

出力:

o A string s of size 2 * Ceiling(lg(p) / 8) octets

Oサイズ2 *天井(LG(P)/ 8)オクテットの文字列s

Method:

方法:

1. Let l = Ceiling(lg(p) / 8), the number of octets needed to represent integers in Z_p

1.レッツ1 =天井(LG(P)/ 8)、Z_pの整数を表すために必要なオクテットの数

2. Let v = a + b * i, where i^2 = -1
2.レッツのV = A + B * I、I ^ 2 = -1

3. Let a_(256^l) be the big-endian zero-padded fixed-length octet string representation of a in Z_p

3.レッツのA_(256 ^ l)はZ_p中のビッグエンディアンゼロパディング固定長オクテットストリング表現であります

4. Let b_(256^l) be the big-endian zero-padded fixed-length octet string representation of b in Z_p

4.レッツのB_(256 ^ l)はZ_pにおけるBのビッグエンディアンゼロパディング固定長オクテットストリング表現であります

5. Depending on the choice of ordering o:
5.注文Oの選択に応じて:

(a) If o = 0, then let s = a_(256^l) || b_(256^l), which is the concatenation of a_(256^l) followed by b_(256^l)

(A)0 = O、その後のS =のA_(256 ^ L)とする場合|| A_の連結であるB_(256 ^ L)、(256 ^ L)B_(256 ^ L)、続いて

(b) If o = 1, then let s = b_(256^l) || a_(256^l), which is the concatenation of b_(256^l) followed by a_(256^l)

1 = Oの場合(B)、次いで、S = B_(256 ^ L)させ|| A_(256 ^ L)が続くB_の連結(256 ^ L)であるA_(256 ^ L)、

6. Return s
6.リターンの
4.4. Hashing onto a Subgroup of an Elliptic Curve
4.4. 楕円曲線のサブグループにハッシング
4.4.1. Hashing a String onto a Subgroup of an Elliptic Curve
4.4.1. 楕円曲線のサブグループに文字列をハッシュ

HashToPoint(E, p, q, id, hashfcn) takes an identity string id, the description of a subgroup of prime order q in E(F_p) or E(F_p^2), and a cryptographic hash function hashfcn and returns a point Q_id of order q in E(F_p) or E(F_p^2).

HashToPointは(E、P、Q、ID、hashfcn)アイデンティティ文字列ID、Eでプライム次数qのサブグループの記述(F_P)またはE(F_P ^ 2)、および暗号ハッシュ関数hashfcnを取り、ポイントを返しますE(F_P)またはE(F_P ^ 2)における次数qのQ_id。

Algorithm 4.4.1 (HashToPoint): cryptographically hashes strings to points on elliptic curves.

アルゴリズム4.4.1(HashToPointは):暗号楕円曲線上の点に文字列をハッシュ。

Input:

入力:

o An elliptic curve E

楕円曲線E O

o A prime p

O素数p

o A prime q

Oプライムのq

o A string id

文字列ID O

o A cryptographic hash function hashfcn

暗号学的ハッシュ関数hashfcn O

Output:

出力:

o A point Q_id = (x, y) of order q n E(F_p)

数q N E(F_P)のO点Q_id =(x、y)は

Method:

方法:

1. For a type-1 curve E, execute Algorithm 4.4.2 (HashToPoint1)
1型曲線Eについて1、アルゴリズム4.4.2(HashToPoint1)を実行
4.4.2. Type-1 Curve Implementation
4.4.2. タイプ1カーブの実装

HashToPoint1(p, q, id, hashfcn) takes an identity string id and the description of a subgroup of order q in E(F_p), where E: y^2 = x^3 + 1 with p congruent to 11 modulo 12, and returns a point Q_id of order q in E(F_p) that is calculated using the cryptographic hash function hashfcn. The parameters p, q and hashfcn MUST be part of a valid set of public parameters as defined in Section 5.1.2 or Section 6.1.2.

11モジュロ12に合同PとY ^ 2 = X ^ 3 + 1:HashToPoint1(P、Q、ID、hashfcn)が識別文字列IDとEにおける順序qのサブグループの記述(F_P)をとり、ここで、E暗号ハッシュ関数hashfcnを用いて算出されるE(F_P)における次数qの点Q_idを返します。セクション5.1.2または6.1.2項で定義されるようにパラメータp、qおよびhashfcnは、公開パラメータの有効なセットの一部でなければなりません。

Algorithm 4.4.2 (HashToPoint1): cryptographically hashes strings to points on type-1 curves.

アルゴリズム4.4.2(HashToPoint1は):暗号タイプ1曲線上の点に文字列をハッシュ。

Input:

入力:

o A prime p

O素数p

o A prime q

Oプライムのq

o A string id

文字列ID O

o A cryptographic hash function hashfcn

暗号学的ハッシュ関数hashfcn O

Output:

出力:

o A point Q_id of order q in E(F_p)

O点Eにおける次数qのQ_id(F_P)

Method:

方法:

1. Let y = HashToRange(id, p, hashfcn), using Algorithm 4.1.1 (HashToRange), an element of F_p

1. YはHashToRange(ID、P、hashfcn)、アルゴリズム4.1.1(HashToRange)を使用して、F_Pの要素=う

2. Let x = (y^2 - 1)^((2 * p - 1) / 3) modulo p, an element of F_p
2.レッツX =(Y ^ 2 - 1)^((2 * P - 1)/ 3)モジュロP、F_Pの要素
3. Let Q' = (x, y), a non-zero point in E(F_p)
3.レッツQ」=(x、y)は、Eにおける非零点(F_P)
4. Let Q = [(p + 1) / q ]Q', a point of order q in E(F_p)
4.レッツQ = [(P + 1)/ Q] Q」、Eにおける位数qの点(F_P)
4.5. Bilinear Mapping
4.5. 双線形写像
4.5.1. Regular or Modified Tate Pairing
4.5.1. 定期的または変更されたテイトペアリング

Pairing(E, p, q, A, B) takes two points A and B, both of order q, and, in the type-1 case, returns the modified pairing e'(A, phi(B)) in F_p^2 where A and B are both in E(F_p).

ペアリング(E、P、Q、A、B)はオーダーqの両方、二つの点A及びBをとり、そして、タイプ1の場合に、変性ペアリングE 'F_Pにおける(A、PHI(B))^を返しますA及びBは、E(F_P)の両方である2。

Algorithm 4.5.1 (Pairing): computes the regular or modified Tate pairing depending on the curve type.

アルゴリズム4.5.1(ペアリング):曲線のタイプに応じて規則的または修飾テイトペアリングを計算します。

Input:

入力:

o A description of an elliptic curve E/F_p such that E(F_p) and E(F_p^2) have a subgroup of order q

E(F_P)及びE(F_P ^ 2)は次数qのサブグループを有するように楕円曲線E / F_Pの説明O

o Two points A and B of order q in E(F_p) or E(F_p^2)

E(F_P)またはE(F_P ^ 2)における次数qのO 2点AとB

Output:

出力:

o On supersingular curves, the value of e'(A, B) in F_p^2 where A and B are both in E(F_p)

O超特異曲線、F_PにおけるE '(A、B)の値^ A及びBは、E(F_P)で共に2で

Method:

方法:

1. If E is a type-1 curve, execute Algorithm 4.5.2 (Pairing1)
1. Eは、1型曲線である場合、アルゴリズム4.5.2(Pairing1)を実行
4.5.2. Type-1 Curve Implementation
4.5.2. タイプ1カーブの実装

Algorithm 4.5.2 (Pairing1): computes the modified Tate pairing on type-1 curves. The values of p and q MUST be part of a valid set of public parameters as defined in Section 5.1.2 or Section 6.1.2.

アルゴリズム4.5.2(Pairing1)は:1型曲線に修飾テイトペアリングを計算します。セクション5.1.2または6.1.2項で定義されるように、pおよびqの値は、公開パラメータの有効なセットの一部でなければなりません。

Input:

入力:

o A curve E/F_p: y^2 = x^3 + 1 where p is congruent to 11 modulo 12 and E(F_p) has a subgroup of order q

曲線E / F_P(O)pは11モジュロ12及びE(F_P)と合同であり、Y ^ 2 = X ^ 3 + 1次数qのサブグループを有しています

o Two points A and B of order q in E(F_p)

Eにおける順序qのO 2点AとB(F_P)

Output:

出力:

o The value of e'(A, B) = e(A, phi(B)) in F_p^2

F_P ^ 2におけるE '(A、B)= E(A、PHI(B))の値O

Method:

方法:

1. Compute B' = phi(B), as follows:
1.計算B」= PHI(B)、次のように

(a) Let (x, y) in F_p x F_p be the coordinates of B in E(F_p)

(A)(x、y)はF_PにF_PがEにおけるBの座標であるX(F_P)をう

(b) Let zeta = (a_zeta , b_zeta), where a_zeta = (p - 1) / 2 and b_zeta = 3^((p + 1) / 4) (mod p), an element of F_p^2

(b)は、ゼータ=(a_zeta、b_zeta)をしましょう、ここでa_zeta =(P - 1)/ 2とb_zeta = 3 ^((P + 1)/ 4)(MOD P)、F_Pの要素^ 2

(c) Let x' = x * zeta in F_p^2

F_P(c)において、xを」= X *ゼータ^ 2

(d) Let B' = (x', y) in F_p^2 x F_p

(D)F_P ^ 2×F_PにおけるB '=(x'、y)をう

2. Compute the Tate pairing e(A, B') = e(A, phi(B)) in F_p^2 using the Miller method, as in Algorithm 3.5.1 (Tate) described in Section 3.5

ミラー法を用いて2計算テイトペアリングE(A、B ')= F_P ^ 2において、E(A、PHI(B))、セクション3.5で説明されたアルゴリズム3.5.1(テイト)と

4.6. Ratio of Bilinear Pairings
4.6. 双一次ペアリングの割合
4.6.1. Ratio of Regular or Modified Tate Pairings
4.6.1. 定期的または変更テイトペアリングの割合

PairingRatio(E, p, q, A, B, C, D) takes four points as input and computes the ratio of the two bilinear pairings, Pairing(E, p, q, A, B) / Pairing(E, p, q, C, D), or, equivalently, the product, Pairing(E, p, q, A, B) * Pairing(E, p, q, C, -D).

PairingRatio(E、P、Q、A、B、C、D)は入力として4点をとり、2つの双線形ペアリングの比率を計算し、ペアリング(E、P、Q、A、B)/ペアリング(E、P、 Q、C、D)、または、等価的に、製品、ペアリング(E、P、Q、A、B)*ペアリング(E、P、Q、C、-D)。

On type-1 curves, all four points are of order q in E(F_p), and the result is an element of order q in the extension field F_p^2 .

1型曲線に、4つのすべての点がEで数q(F_P)のものであり、その結果、拡張フィールドF_P ^ 2で数qの要素です。

The motivation for this algorithm is that the ratio of two pairings can be calculated more efficiently than by computing each pairing separately and dividing one into the other, since certain calculations that would normally appear in each of the two pairings can be combined and carried out at once. Such calculations include the repeated doublings in steps 2(a)i, 2(a)ii, 3(a)i, and 3(a)ii of Algorithm 3.5.2 (TateMillerSolinas), as well as the final exponentiation in step 6(a) of Algorithm 3.5.2 (TateMillerSolinas).

このアルゴリズムのための動機は、通常、2対のそれぞれに表示される特定の計算を合わせ、で行うことができるので、2対の比率が、別々に各ペアを計算し、他に一方を分割することによってよりも効率的に計算することができることです一回。このような計算は、ステップで繰り返し倍加を含む2(a)のI、図2(a)II、図3(a)I、及び図3(a)アルゴリズム3.5.2(TateMillerSolinas)、並びにステップ6における最終べきのロ(a)は、アルゴリズム3.5.2の(TateMillerSolinas)。

Algorithm 4.6.1 (PairingRatio): computes the ratio of two regular or modified Tate pairings depending on the curve type.

アルゴリズム4.6.1(PairingRatioは):曲線のタイプに応じて2つの規則的または修飾テイトペアリングの比率を計算します。

Input:

入力:

o A description of an elliptic curve E/F_p such that E(F_p) and E(F_p^2) have a subgroup of order q

E(F_P)及びE(F_P ^ 2)は次数qのサブグループを有するように楕円曲線E / F_Pの説明O

o Four points A, B, C, and D, of order q in E(F_p) or E(F_p^2)

O 4点E(F_P)またはEにおける次数qのA、B、C、およびD、(F_P ^ 2)

Output:

出力:

o On supersingular curves, the value of e'(A, B) / e'(C, D) in F_p^2 where A, B, C, D are all in E(F_p)

O超特異曲線、Eの値に '(A、B)/ E'(C、D)F_Pにおける^ A、B、C、DがEにあるそれら2(F_P)

Method:

方法:

1. If E is a type-1 curve, execute Algorithm 4.6.2 (PairingRatio1)
1. Eは、1型曲線である場合、アルゴリズム4.6.2(PairingRatio1)を実行
4.6.2. Type-1 Curve Implementation
4.6.2. タイプ1カーブの実装

Algorithm 4.6.2 (PairingRatio1): computes the ratio of two modified Tate pairings on type-1 curves. The values of p and q MUST be part of a valid set of public parameters as defined in Section 5.1.2 or Section 6.1.2.

アルゴリズム4.6.2(PairingRatio1)は:1型曲線上の2つの修飾テイトペアリングの比率を計算します。セクション5.1.2または6.1.2項で定義されるように、pおよびqの値は、公開パラメータの有効なセットの一部でなければなりません。

Input:

入力:

o A curve E/F_p: y^2 = x^3 + 1, where p is congruent to 11 modulo 12 and E(F_p) has a subgroup of order q

曲線E / F_P O:pは11モジュロ12及びE(F_P)と合同であり、Y ^ 2 = X ^ 3 + 1は、オーダーqのサブグループを有しています

o Four points A, B, C, and D of order q in E(F_p)

O 4点A、B、C、およびEで数qのD(F_P)

Output:

出力:

o The value of e'(A, B) / e'(C, D) = e(A, phi(B)) / e(C, phi(D)) = e(A, phi(B)) * e(-C, phi(D)), in F_p^2

fの値O '(A、B)/ F'(C、D)は= F(A、PHI(B))/ F(C、ノン(D))は* F(A、PHI(B))= F_P ^ 2中のF(-C、ノン(D))、

Method:

方法:

1. The step-by-step description of the optimized algorithm is omitted in this normative specification

1.最適化アルゴリズムのステップバイステップの説明は、本規範明細書では省略されています

The correct result can always be obtained, although more slowly, by computing the product of pairings Pairing1(E, p, q, A, B) * Pairing1(E, p, q, -C, D) by using two invocations of Algorithm 4.5.2 (Pairing1).

正しい結果が常によりゆっくりであるが、ペアリングの積を計算することによって、得ることができるPairing1(E、P、Q、A、B)* Pairing1(E、P、Q、-C、D)アルゴリズム二の呼び出しを使用して4.5.2(Pairing1)。

5. The Boneh-Franklin BF Cryptosystem
Boneh - フランクリンBF暗号5.

This chapter describes the algorithms constituting the Boneh-Franklin identity-based cryptosystem as described in [BF].

この章では、[BF]で説明されるようにBoneh - フランクリンアイデンティティに基づく暗号システムを構成するアルゴリズムを記載しています。

5.1. Setup
5.1. セットアップ
5.1.1. Master Secret and Public Parameter Generation
5.1.1. マスターシークレットと公開パラメータ生成

Algorithm 5.1.1 (BFsetup): randomly selects a master secret and the associated public parameters.

アルゴリズム5.1.1(BFsetup):ランダムにマスターシークレットと関連付けられた公開パラメータを選択します。

Input:

入力:

o An integer version number

O整数バージョン番号

o A security parameter n (MUST take values either 1024, 2048, 3072, 7680, 15360)

セキュリティパラメータ、O、N(値1024、2048、3072、7680、15360のいずれかを取る必要があります)

Output:

出力:

o A set of public parameters (version, E, p, q, P, P_pub, hashfcn)

O公開パラメータのセット(バージョン、E、P、Q、P、P_pub、hashfcn)

o A corresponding master secret s

O対応するマスタ秘密S

Method:

方法:

1. Depending on the selected type t:
1.選択型tに応じて:

(a) If version = 2, then execute Algorithm 5.1.2 (BFsetup1)

(a)は、バージョン= 2は、アルゴリズム5.1.2(BFsetup1)を実行する場合

2. The resulting master secret and public parameters are separately encoded as per the application protocol requirements

2.得られたマスタシークレットと公開パラメータを別々のアプリケーション・プロトコルの必要条件に従って符号化されます

5.1.2. Type-1 Curve Implementation
5.1.2. タイプ1カーブの実装

BFsetup1 takes a security parameter n as input. For type-1 curves, the scale of n corresponds to the modulus bit-size believed [BF] of comparable security in the classical Diffie-Hellman or RSA public-key cryptosystems.

BFsetup1は、入力として、セキュリティパラメータnをとります。 1型曲線について、Nのスケールは、古典的なディフィー - ヘルマンまたはRSA公開鍵暗号方式における同等のセキュリティのモジュラスビットサイズと考え[BF]に相当します。

Algorithm 5.1.2 (BFsetup1): establishes a master secret and public parameters for type-1 curves.

アルゴリズム5.1.2(BFsetup1)は:1型曲線のマスターシークレットと公開パラメータを確立します。

Input:

入力:

o A security parameter n, which MUST be either 1024, 2048, 3072, 7680 or 15360

1024、2048、3072、7680または15360のいずれかでなければならないセキュリティパラメータn、O

Output:

出力:

o A set of common public parameters (version, p, q, P, Ppub, hashfcn)

O共通の公開パラメータのセット(バージョン、P、Q、P、Ppub、hashfcn)

o A corresponding master secret s

O対応するマスタ秘密S

Method:

方法:

1. Set the version to version = 2.
1.バージョン= 2にバージョンを設定します。

2. Determine the subordinate security parameters n_p and n_q as follows:

2.次のように下位セキュリティパラメータのN_Pとn_qを決定します。

(a) If n = 1024, then let n_p = 512, n_q = 160, hashfcn = 1.3.14.3.2.26 (SHA-1 [SHA]

(A)の場合、N = 1024、その後せN_P = 512、n_q = 160、hashfcn = 1.3.14.3.2.26(SHA-1 [SHA]

(b) If n = 2048, then let n_p = 1024, n_q = 224, hashfcn = 2.16.840.1.101.3.4.2.4 (SHA-224 [SHA])

(B)の場合、N = 2048、その後せN_P = 1024、n_q = 224、hashfcn = 2.16.840.1.101.3.4.2.4(SHA-224 [SHA])

(c) If n = 3072, then let n_p = 1536, n_q = 256, hashfcn = 2.16.840.1.101.3.4.2.1 (SHA-256 [SHA])

(C)の場合、N = 3072、その後せN_P = 1536、n_q = 256、hashfcn = 2.16.840.1.101.3.4.2.1(SHA-256 [SHA])

(d) If n = 7680, then let n_p = 3840, n_q = 384, hashfcn = 2.16.840.1.101.3.4.2.2 (SHA-384 [SHA])

(D)の場合、N = 7680、その後せN_P = 3840、n_q = 384、hashfcn = 2.16.840.1.101.3.4.2.2(SHA-384 [SHA])

(e) If n = 15360, then let n_p = 7680, n_q = 512, hashfcn = 2.16.840.1.101.3.4.2.3 (SHA-512 [SHA])

(e)の場合、N = 15360、次いでせN_P = 7680、n_q = 512、hashfcn = 2.16.840.1.101.3.4.2.3(SHA-512 [SHA])

3. Construct the elliptic curve and its subgroup of interest, as follows:

3.次のように、楕円曲線及び関心のそのサブグループを構築します。

(a) Select an arbitrary n_q-bit Solinas prime q

(a)は、任意n_qビットSolinas素数qを選択

(b) Select a random integer r such that p = 12 * r * q - 1 is an n_p-bit prime

1 N_Pビットの素数である - (b)は、P = 12 *のR * Qは、そのようなランダム整数rを選択

4. Select a point P of order q in E(F_p), as follows:
4.次のように、E(F_P)における次数qの点Pを選択します。

(a) Select a random point P' of coordinates (x', y') on the curve E/F_p: y^2 = x^3 + 1 (mod p)

Y ^ 2 = X ^ 3 + 1(MOD P):(A)の曲線E / F_Pの '座標(X' ランダム点P、Y ')を選択

(b) Let P = [12 * r]P'

(b)は、P = 12 * R] P」う

(c) If P = 0, then start over in step 3a

P = 0の場合(C)、ステップ3aにやり直します

5. Determine the master secret and the public parameters as follows:
5.次のようにマスターシークレットと公開パラメータを決定します。

(a) Select a random integer s in the range 2 to q - 1

(a)のQの範囲2にランダムな整数の選択 - 1

(b) Let P_pub = [s]P

(B)P_pub = [S] Pう

6. (version, E, p, q, P, P_pub) are the public parameters where E: y^2 = x^3 + 1 is represented by the OID 2.16.840.1.114334.1.1.1.1.

6.(バージョン、E、P、Q、P、P_pub)は、公開パラメータここでEあり:Y ^ 2 = X ^ 3 + 1は、OID 2.16.840.1.114334.1.1.1.1で表されます。

7. The integer s is the master secret
7.整数sがマスター秘密です
5.2. Public Key Derivation
5.2. 公開鍵の導出
5.2.1. Public Key Derivation from an Identity and Public Parameters
5.2.1. アイデンティティと公開パラメータから公開鍵導出

BFderivePubl takes an identity string id and a set of public parameters, and it returns a point Q_id. The public parameters used MUST be a valid set of public parameters as defined by Section 5.1.2.

BFderivePublは、アイデンティティ列IDと公開パラメータのセットを取り、それがポイントQ_idを返します。 5.1.2項で定義されるように使用される公開パラメータは、公開パラメータの有効なセットでなければなりません。

Algorithm 5.2.1 (BFderivePubl): derives the public key corresponding to an identity string.

アルゴリズム5.2.1(BFderivePublは):アイデンティティ文字列に対応する公開鍵を導出します。

Input:

入力:

o An identity string id

Oアイデンティティ列ID

o A set of public parameters (version, E, p, q, P, P_pub, hashfcn)

O公開パラメータのセット(バージョン、E、P、Q、P、P_pub、hashfcn)

Output:

出力:

o A point Q_id of order q in E(F_p) or E(F_p^2)

点Eにおける次数qのQ_id(F_P)またはE(F_P ^ 2)O

Method:

方法:

1. Q_id = HashToPoint(E, p, q, id, hashfcn), using Algorithm 4.4.1 (HashToPoint)

1. Q_id = HashToPoint(E、P、Q、ID、hashfcn)、アルゴリズム4.4.1を使用して(HashToPoint)

5.3. Private Key Extraction
5.3. 秘密鍵の抽出

5.3.1. Private Key Extraction from an Identity, a Set of Public Parameters and a Master Secret

5.3.1. アイデンティティから秘密鍵の抽出、公開パラメータ及びマスターシークレットの設定

BFextractPriv takes an identity string id, a set of public parameters, and corresponding master secret, and it returns a point S_id. The public parameters used MUST be a valid set of public parameters as defined by Section 5.1.2.

BFextractPrivは、アイデンティティ列ID、公開パラメータのセット、および対応するマスター秘密を取り、それがポイントS_IDを返します。 5.1.2項で定義されるように使用される公開パラメータは、公開パラメータの有効なセットでなければなりません。

Algorithm 5.3.1 (BFextractPriv): extracts the private key corresponding to an identity string.

アルゴリズム5.3.1(BFextractPrivは):アイデンティティ文字列に対応する秘密鍵を抽出します。

Input:

入力:

o An identity string id

Oアイデンティティ列ID

o A set of public parameters (version, E, p, q, P, P_pub, hashfcn)

O公開パラメータのセット(バージョン、E、P、Q、P、P_pub、hashfcn)

Output:

出力:

o A point S_id of order q in E(F_p)

O点Eにおける次数qのS_ID(F_P)

Method:

方法:

1. Let Q_id = HashToPoint(E, p, q, id, hashfcn) using Algorithm 4.4.1 (HashToPoint)

1.うQ_id = HashToPoint(E、P、Q、ID、hashfcn)アルゴリズム4.4.1を使用して(HashToPoint)

2. Let S_id = [s]Q_id
2.レッツS_ID = [S] Q_id
5.4. Encryption
5.4. 暗号化
5.4.1. Encrypt a Session Key Using an Identity and Public Parameters
5.4.1. アイデンティティと公開パラメータを使用してセッション鍵を暗号化

BFencrypt takes three inputs: a public parameter block, an identity id, and a plaintext m. The plaintext MUST be a random symmetric session key. The public parameters used MUST be a valid set of public parameters as defined by Section 5.1.2.

公開パラメータブロック、識別ID、及び平文m:BFencryptは、3つの入力を要します。平文はランダム対称セッションキーでなければなりません。 5.1.2項で定義されるように使用される公開パラメータは、公開パラメータの有効なセットでなければなりません。

Algorithm 5.4.1 (BFencrypt): encrypts a random session key for an identity string.

アルゴリズム5.4.1(BFencryptは):アイデンティティ文字列のためのランダムセッションキーを暗号化します。

Input:

入力:

o A plaintext string m of size |m| octets

サイズの平文の文字列M O | M |オクテット

o A recipient identity string id

受信者のアイデンティティ列ID O

o A set of public parameters (version, E, p, q, P, P_pub, hashfcn)

O公開パラメータのセット(バージョン、E、P、Q、P、P_pub、hashfcn)

Output:

出力:

o A ciphertext tuple (U, V, W) in E(F_p) x {0, ... , 255}^hashlen x {0, ... , 255}^|m|

O Eで暗号文タプル(U、V、W)(F_P)X {0、...、255} ^ hashlen X {0、...、255} ^ | M |

Method:

方法:

1. Let hashlen be the length of the output of the cryptographic hash function hashfcn from the public parameters.

1.レッツは、公開パラメータから暗号学的ハッシュ関数hashfcnの出力の長さhashlen。

2. Q_id = HashToPoint(E, p, q, id, hashfcn), using Algorithm 4.4.1 (HashToPoint), which results in a point of order q in E(F_p)

2. Q_id = HashToPoint(E、P、Q、ID、hashfcn)、アルゴリズム4.4.1 Eで数qの点をもたらす(HashToPoint)を使用して(F_P)

3. Select a random hashlen-bit vector rho, represented as (hashlen / 8)-octet string in big-endian convention

3.ビッグエンディアン大会で(hashlen / 8)-octet文字列として表さランダムhashlenビットのベクトルローを選択

4. Let t = hashfcn(m), a hashlen-octet string resulting from applying the hashfcn algorithm to the input m

4.レッツさt = hashfcn(M)、入力mにhashfcnアルゴリズムを適用することから生じるhashlenオクテットストリング

5. Let l = HashToRange(rho || t, q, hashfcn), an integer in the range 0 to q - 1 resulting from applying Algorithm 4.1.1 (HashToRange) to the (2 * hashlen)-octet concatenation of rho and t

5.レッツ1 = HashToRange(ロー|| T、Q、hashfcn)、qは範囲0の整数 - ローの(2 * hashlen)-octet連結するためのアルゴリズム4.1.1(HashToRange)を適用することから生じる1トン

6. Let U = [l]P, which is a point of order q in E(F_p)
6.レッツU Eで数qの点である= [L] P(F_P)

7. Let theta = Pairing(E, p, q, P_pub, Q_id), which is an element of the extension field F_p^2 obtained using the modified Tate pairing of Algorithm 4.5.1 (Pairing)

7.レッツシータ=ペアリング(E、P、Q、P_pub、Q_id)拡大体の要素である、F_P ^ 2アルゴリズム4.5.1(ペアリング)の修飾されたテイトペアリングを使用して得られました

8. Let theta' = theta^l, which is theta raised to the power of l in F_p^2

シータ^ 2 F_PにおけるLのパワーに上昇する8レッツシータ」=シータ^ L、

9. Let z = Canonical(p, k, 0, theta'), using Algorithm 4.3.1 (Canonical), the result of which is a canonical string representation of theta'

9「アルゴリズム4.3.1(正規)を使用して、シータの正規の文字列表現であり、その結果をZ =カノニカル(P、K、0、シータ)」をしよう

10. Let w = hashfcn(z) using the hashfcn hashing algorithm, the result of which is a hashlen-octet string

10.レッツ= hashfcn(Z)hashfcnハッシュアルゴリズムを用いてwは、結果がそのhashlenオクテットストリングであります

11. Let V = w XOR rho, which is the hashlen-octet long bit-wise XOR of w and rho

XOR Wのhashlenオクテット長ビット単位のXORでロー、およびRho W 11のlet V =

12. Let W = HashBytes(|m|, rho, hashfcn) XOR m, which is the bit-wise XOR of m with the first |m| octets of the pseudo-random bytes produced by Algorithm 4.2.1 (HashBytes) with seed rho

12.レッツW = HashBytes(| M |、ロー、hashfcn)第一とMのビット毎のXORでのXOR M、| M |種子のRhoとアルゴリズム4.2.1によって生成される擬似ランダムバイト(HashBytes)のオクテット

13. The ciphertext is the triple (U, V, W)
13.暗号文はトリプル(U、V、W)であります
5.5. Decryption
5.5. 復号化

5.5.1. Decrypt an Encrypted Session Key Using Public Parameters, a Private Key

5.5.1. 公開パラメータ、秘密鍵を使用して暗号化されたセッション鍵を復号化

BFdecrypt takes three inputs: a public parameter block, a private key block key, and a ciphertext parsed as (U', V', W'). The public parameters used MUST be a valid set of public parameters as defined by Section 5.1.2.

解析公開パラメータブロック、秘密鍵ブロックキー、および暗号文(U「V」、W '):BFdecryptは、3つの入力を取ります。 5.1.2項で定義されるように使用される公開パラメータは、公開パラメータの有効なセットでなければなりません。

Algorithm 5.5.1 (BFdecrypt): decrypts an encrypted session key using a private key.

アルゴリズム5.5.1(BFdecryptは):秘密鍵を使って暗号化されたセッション鍵を復号化します。

Input:

入力:

o A private key point S_id of order q in E(F_p)

プライベートキーポイントEでのオーダーqのS_ID(F_P)O

o A ciphertext triple (U, V, W) in E(F_p) x {0, ... , 255}^hashlen x {0, ... , 255}*

E三重暗号文(U、V、W)O(F_P)X {0、...、255} ^ hashlen X {0、...、255} *

o A set of public parameters (version, E, p, q, P, P_pub, hashfcn)

O公開パラメータのセット(バージョン、E、P、Q、P、P_pub、hashfcn)

Output:

出力:

o A decrypted plaintext m, or an invalid ciphertext flag

O復号された平文M、または無効な暗号文フラグ

Method:

方法:

1. Let hashlen be the length of the output of the hash function hashlen measured in octets

1.レッツは、オクテット単位で測定されたハッシュ関数hashlenの出力の長さhashlen

2. Let theta = Pairing(E, p ,q, U, S_id) by applying the modified Tate pairing of Algorithm 4.5.1 (Pairing)

2.レッツシータ=ペアリング(E、P、Q、U、S_ID)アルゴリズム4.5.1の修飾テイトペアリングを適用することにより、(ペアリング)

3. Let z = Canonical(p, k, 0, theta) using Algorithm 4.3.1 (Canonical), the result of which is a canonical string representation of theta

3.アルゴリズム4.3.1(正規)、シータの正規の文字列表現であり、その結果を用いてZ =カノニカル(P、K、0、シータ)をう

4. Let w = hashfcn(z) using the hashfcn hashing algorithm, the result of which is a hashlen-octet string

4.ハッシュアルゴリズムhashfcnを用いて、W = hashfcn(Z)う、結果はhashlenオクテット列であります

5. Let rho = w XOR V, the bit-wise XOR of w and V
XOR V、Wのビット単位のXOR及びV W 5のletロー=

6. Let m = HashBytes(|W|, rho, hashfcn) XOR W, which is the bit-wise XOR of m with the first |W| octets of the pseudo-random bytes produced by Algorithm 4.2.1 (HashBytes) with seed rho

6. M = HashBytesレット(| W |、ロー、hashfcn)第一とMのビット毎のXORであるXORのW、| W |種子のRhoとアルゴリズム4.2.1によって生成される擬似ランダムバイト(HashBytes)のオクテット

7. Let t = hashfcn(m) using the hashfcn algorithm
hashfcnアルゴリズムを使用して7のlet T = hashfcn(M)

8. Let l = HashToRange(rho || t, q, hashfcn) using Algorithm 4.1.1 (HashToRange) on the (2 * hashlen)-octet concatenation of rho and t

RhoとT(2 * hashlen)-octet連結にアルゴリズム4.1.1(HashToRange)を使用して8のlet L = HashToRange(ロー|| T、Q、hashfcn)

9. Verify that U = [l]P:
9.そのU = [L] Pを確認します。

(a) If this is the case, then the decrypted plaintext m is returned

この場合、(A)は、復号された平文mが返されます

(b) Otherwise, the ciphertext is rejected and no plaintext is returned

(b)はそれ以外の場合は、暗号文が拒否され、何の平文が返されません

6. The Boneh-Boyen BB1 Cryptosystem
6. Boneh-Boyen BB1暗号

This section describes the algorithms constituting the first of the two Boneh-Boyen identity-based cryptosystems proposed in [BB1]. The description follows the practical implementation given in [BB1].

このセクションでは、[BB1]で提案された2 Boneh-Boyen IDベース暗号システムの第一を構成するアルゴリズムを記述する。説明は[BB1]で与えられた実用的な実装に従います。

6.1. Setup
6.1. セットアップ
6.1.1. Generate a Master Secret and Public Parameters
6.1.1. マスターシークレットと公開パラメータを生成します

Algorithm 6.1.1 (BBsetup). Randomly selects a set of master secrets and the associated public parameters.

アルゴリズム6.1.1(BBsetup)。ランダムにマスター秘密と関連する公開パラメータのセットを選択します。

Input:

入力:

o An integer version number

O整数バージョン番号

o An integer security parameter n (MUST take values either 1024, 2048, 3072, 7680, or 15360)

整数セキュリティパラメータ、O、N(1024、2048、3072、7680、または15360のいずれかの値を取る必要があります)

Output:

出力:

o A set of public parameters

公開パラメータのセットO

o A corresponding master secret

対応するマスタシークレットO

Method:

方法:

1. Depending on the version:
1.バージョンによって:

(a) If version = 2, then execute Algorithm 6.1.2 (BBsetup1)

(a)は、バージョン= 2は、アルゴリズム6.1.2(BBsetup1)を実行する場合

6.1.2. Type-1 Curve Implementation
6.1.2. タイプ1カーブの実装

BBsetup1 takes a security parameter n as input. For type-1 curves, n corresponds to the modulus bit-size believed [BF] of comparable security in the classical Diffie-Hellman or RSA public-key cryptosystems. For this implementation, n MUST be one of 1024, 2048, 3072, 7680 or 15360, which correspond to the equivalent bit security levels of 80, 112, 128, 192 and 256 bits respectively.

BBsetup1は、入力として、セキュリティパラメータnをとります。 1型曲線について、nは古典的なディフィー - ヘルマンまたはRSA公開鍵暗号方式における同等のセキュリティのモジュラスビットサイズと考え[BF]に相当します。この実装では、Nは、それぞれ80、112、128、192、および256ビットの同等ビットのセキュリティ・レベルに対応する1024 2048 3072、7680または15360のいずれかでなければなりません。

Algorithm 6.1.2 (BBsetup1): randomly establishes a master secret and public parameters for type-1 curves.

アルゴリズム6.1.2(BBsetup1は):ランダムに1型曲線のマスターシークレットと公開パラメータを確立します。

Input:

入力:

o A security parameter n, either 1024, 2048, 3072, 7680, or 15360

セキュリティパラメータO N 1024、2048、3072、7680、または15360のいずれか

Output:

出力:

o A set of public parameters (version, k, E, p, q, P, P_1, P_2, P_3, v, hashfcn)

公開パラメータのセット(バージョン、K、E、P、Q、P、P_1、P_2、P_3、V、hashfcn)O

o A corresponding triple of master secrets (alpha, beta, gamma)

Oマスタシークレットの三重対応(アルファ、ベータ、ガンマ)

Method:

方法:

1. Determine the subordinate security parameters n_p and n_q as follows: (a) If n = 1024, then let n_p = 512, n_q = 160, hashfcn = 1.3.14.3.2.26 (SHA-1 [SHA]

1.次のようN_Pとn_q従属セキュリティパラメータを決定する:(A)の場合、N = 1024、その後せN_P = 512、n_q = 160、hashfcn = 1.3.14.3.2.26(SHA-1 [SHA]

(b) If n = 2048, then let n_p = 1024, n_q = 224, hashfcn = 2.16.840.1.101.3.4.2.4 (SHA-224 [SHA])

(B)の場合、N = 2048、その後せN_P = 1024、n_q = 224、hashfcn = 2.16.840.1.101.3.4.2.4(SHA-224 [SHA])

(c) If n = 3072, then let n_p = 1536, n_q = 256, hashfcn = 2.16.840.1.101.3.4.2.1 (SHA-256 [SHA])

(C)の場合、N = 3072、その後せN_P = 1536、n_q = 256、hashfcn = 2.16.840.1.101.3.4.2.1(SHA-256 [SHA])

(d) If n = 7680, then let n_p = 3840, n_q = 384, hashfcn = 2.16.840.1.101.3.4.2.2 (SHA-384 [SHA])

(D)の場合、N = 7680、その後せN_P = 3840、n_q = 384、hashfcn = 2.16.840.1.101.3.4.2.2(SHA-384 [SHA])

(e) If n = 15360, then let n_p = 7680, n_q = 512, hashfcn = 2.16.840.1.101.3.4.2.3 (SHA-512 [SHA])

(e)の場合、N = 15360、次いでせN_P = 7680、n_q = 512、hashfcn = 2.16.840.1.101.3.4.2.3(SHA-512 [SHA])

2. Construct the elliptic curve and its subgroup of interest as follows:

2.次のように楕円曲線と関心のそのサブグループを構築します。

(a) Select a random n_q-bit Solinas prime q

(a)はランダムn_qビットSolinasプライムのqを選択

(b) Select a random integer r, such that p = 12 * r * q - 1 is an n_p-bit prime

1 N_Pビットの素数である - (b)は、P = 12 *のR * Qは、そのようなランダム整数rを選択

3. Select a point P of order q in E(F_p), as follows:
3.次のように、E(F_P)における次数qの点Pを選択します。

(a) Select a random point P' of coordinates (x', y') on the curve E/F_p: y^2 = x^3 + 1 (mod p)

Y ^ 2 = X ^ 3 + 1(MOD P):(A)の曲線E / F_Pの '座標(X' ランダム点P、Y ')を選択

(b) Let P = [12 * r]P'

(b)は、P = 12 * R] P」う

(c) If P = 0, then start over in step 3a

P = 0の場合(C)、ステップ3aにやり直します

4. Determine the master secret and the public parameters as follows:
4.次のようにマスターシークレットと公開パラメータを決定します。

(a) Select three random integers alpha, beta, gamma, each of them in the range 1 to q - 1

(a)のQの範囲1において、それらのそれぞれの3つのランダムな整数アルファ、ベータ、ガンマの選択 - 1

(b) Let P_1 = [alpha]P

(B)P_1 =αPう

(c) Let P_2 = [beta]P

(C)うP_2 =βP

(d) Let P_3 = [gamma]P

(D)P_3 = [ガンマ] Pう

(e) Let v = Pairing(E, p, q, P_1, P_2), which is an element of the extension field F_p^2 obtained using the modified Tate pairing of Algorithm 4.5.1 (Pairing)

(E)V =ペアリングレット(E、P、Q、P_1、P_2)拡大体の要素である、F_P ^ 2アルゴリズム4.5.1(ペアリング)の修飾されたテイトペアリングを使用して得られました

5. (version, E, p, q, P, P_1, P_2, P_3, v, hashfcn) are the public parameters

5.(バージョン、E、P、Q、P、P_1、P_2、P_3、V、hashfcn)は、公開パラメータであります

6. (alpha, beta, gamma) constitute the master secret
6.(アルファ、ベータ、ガンマ)マスタシークレットを構成します
6.2. Public Key Derivation
6.2. 公開鍵の導出
6.2.1. Derive a Public Key from an Identity and Public Parameters
6.2.1. アイデンティティと公開パラメータから公開鍵を導出

Takes an identity string id and a set of public parameters and returns an integer h_id. The public parameters used MUST be a valid set of public parameters as defined by Section 6.1.2.

同一列IDと公開パラメータのセットを受け取り、整数h_idを返します。 6.1.2項で定義されるように使用される公開パラメータは、公開パラメータの有効なセットでなければなりません。

Algorithm 6.2.1 (BBderivePubl): derives the public key corresponding to an identity string. The public parameters used MUST be a valid set of public parameters as defined by Section 6.1.2.

アルゴリズム6.2.1(BBderivePublは):アイデンティティ文字列に対応する公開鍵を導出します。 6.1.2項で定義されるように使用される公開パラメータは、公開パラメータの有効なセットでなければなりません。

Input:

入力:

o An identity string id

Oアイデンティティ列ID

o A set of common public parameters (version, k, E, p, q, P, P_1, P_2, P_3, v, hashfcn)

O共通の公開パラメータのセット(バージョン、K、E、P、Q、P、P_1、P_2、P_3、V、hashfcn)

Output:

出力:

o An integer h_id modulo q

整数h_idモジュロqはO

Method:

方法:

1. Let h_id = HashToRange(id, q, hashfcn), using Algorithm 4.1.1 (HashToRange)

1.アルゴリズム4.1.1(HashToRange)を使用して、h_id = HashToRange(ID、Q、hashfcn)しよう

6.3. Private Key Extraction
6.3. 秘密鍵の抽出

6.3.1. Extract a Private Key from an Identity, Public Parameters and a Master Secret

6.3.1. アイデンティティー、公開パラメータ及びマスターシークレットから秘密鍵を抽出

BBextractPriv takes an identity string id, a set of public parameters, and corresponding master secrets, and it returns a private key consisting of two points D_0 and D_1. The public parameters used MUST be a valid set of public parameters as defined by Section 6.1.2.

BBextractPrivは、アイデンティティ列ID、公開パラメータのセット、および対応するマスター秘密を取り、それは二つの点D_0とD_1からなる秘密鍵を返します。 6.1.2項で定義されるように使用される公開パラメータは、公開パラメータの有効なセットでなければなりません。

Algorithm 6.3.1 (BBextractPriv): extracts the private key corresponding to an identity string.

アルゴリズム6.3.1(BBextractPrivは):アイデンティティ文字列に対応する秘密鍵を抽出します。

Input:

入力:

o An identity string id

Oアイデンティティ列ID

o A set of public parameters (version, k, E, p, q, P, P_1, P_2, P_3, v, hashfcn)

公開パラメータのセット(バージョン、K、E、P、Q、P、P_1、P_2、P_3、V、hashfcn)O

Output:

出力:

o A pair of points (D_0, D_1), each of which has order q in E(F_p)

E順序qをそれぞれ有する点(D_0、D_1)の対、(F_P)O

Method:

方法:

1. Select a random integer r in the range 1 to q - 1
1. Qの範囲1におけるランダム整数rを選択 - 1
2. Calculate the point D_0 as follows:
2.次のようにポイントD_0を計算します。

(a) Let hid = HashToRange(id, q, hashfcn) using Algorithm 4.1.1 (HashToRange)

(a)は、レッツは、HID = HashToRange(ID、Q、hashfcn)アルゴリズム4.1.1を使用して(HashToRange)

(b) Let y = alpha * beta + r * (alpha * h_id + gamma) in F_q

F_q(b)において、yはしよう=アルファ*ベータ+ R×(アルファ* h_id +ガンマ)

(c) Let D_0 = [y]P

(C)うD_0 = [Y] P

3. Calculate the point D_1 as follows:
3.次のようにポイントD_1を計算します。

(a) Let D_1 = [r]P

(A)うD_1 = [R] P

4. The pair of points (D_0, D_1) constitutes the private key for id
4.ポイント(D_0、D_1)のペアは、IDの秘密鍵を構成します
6.4. Encryption
6.4. 暗号化
6.4.1. Encrypt a Session Key Using an Identity and Public Parameters
6.4.1. アイデンティティと公開パラメータを使用してセッション鍵を暗号化

BBencrypt takes three inputs: a set of public parameters, an identity id, and a plaintext m. The plaintext MUST be a random session key. The public parameters used MUST be a valid set of public parameters as defined by Section 6.1.2.

公開パラメータのセット、識別ID、及び平文m:BBencryptは、3つの入力を要します。平文はランダムなセッションキーでなければなりません。 6.1.2項で定義されるように使用される公開パラメータは、公開パラメータの有効なセットでなければなりません。

Algorithm 6.4.1 (BBencrypt): encrypts a session key for an identity string.

アルゴリズム6.4.1(BBencryptは):アイデンティティ文字列のためのセッションキーを暗号化します。

Input:

入力:

o A plaintext string m of size |m| octets

サイズの平文の文字列M O | M |オクテット

o A recipient identity string id o A set of public parameters (version, k, E, p, q, P, P_1, P_2, P_3, v, hashfcn)

O公開パラメータの組O受信者アイデンティティ列ID(バージョン、K、E、P、Q、P、P_1、P_2、P_3、V、hashfcn)

Output:

出力:

o A ciphertext tuple (u, C_0, C_1, y) in F_q x E(F_p) x E(F_p) x {0, ... , 255}^|m|

F_qにおける暗号文組(U、C_0、C_1、Y)O EをX(F_P)×E(F_P)X {0、...、255} ^ | M |

Method:

方法:

1. Select a random integer s in the range 1 to q - 1
1.ランダムな整数の範囲1におけるQの選択 - 1

2. Let w = v^s, which is v raised to the power of s in F_p^2, the result is an element of order q in F_p^2

2. = V F_P ^ 2におけるS乗Vである^ S、Wう、結果はF_P ^ 2で数qの要素であります

3. Calculate the point C_0 as follows:
3.次のようにポイントC_0を計算します。

(a) Let C_0 = [s]P

(a)はC_0 = [S] Pう

4. Calculate the point C_1 as follows:
4.次のようにポイントC_1を計算します。

(a) Let _hid = HashToRange(id, q, hashfcn) using Algorithm 4.1.1 (HashToRange)

(A)_HID = HashToRange(ID、Q、hashfcn)アルゴリズム4.1.1を使用してみよう(HashToRange)

(b) Let y = s * h_id in F_q

(B)F_qでY = Sで* h_idレット

(c) Let C_1 = [y]P_1 + [s]P_3

(C)うC_1 = [Y] P_1 + [S] P_3

5. Obtain canonical string representations of certain elements:
5.特定の要素の正規の文字列表現を取得します。

(a) Let psi = Canonical(p, k, 1, w) using Algorithm 4.3.1 (Canonical), the result of which is a canonical octet string representation of w

(A)アルゴリズム4.3.1(正規)、Wの正規のオクテット文字列表現であるその結果を用いて、(P、K 1 W)PSIは=正規う

(b) Let l = Ceiling(lg(p) / 8), the number of octets needed to represent integers in F_p, and represent each of these F_p elements as a big-endian zero-padded octet string of fixed length l:

(b)は、L =天井(LG(P)/ 8)、F_Pの整数を表すために必要なオクテットの数をしようと、固定長LのビッグエンディアンゼロパディングオクテットストリングとしてこれらF_Pの各要素を表します。

(x_0)_(256^l) to represent the x coordinate of C_0

X C_0の座標を表す(X_0)_(256 ^ L)

(y_0)_(256^l) to represent the y coordinate of C_0

C_0のy座標を表す(Y_0)_(256 ^ L)

(x_1)_(256^l) to represent the x coordinate of C_1

X C_1の座標を表す(X_1)_(256 ^ L)

(y_1)_(256^l) to represent the y coordinate of C_1

C_1のy座標を表す(Y_1)_(256 ^ L)

6. Encrypt the message m into the string y as follows:
次のように6列Yにメッセージmを暗号化します。

(a) Compute an encryption key h_0 as a two-pass hash of w via its representation psi:

(a)は、その表現のPSIを介して、Wの二パスハッシュとして暗号鍵H_0を計算します:

            i. Let zeta = hashfcn(psi) using the hashing algorithm
               hashfcn
        

ii. Let xi = hashfcn(zeta || psi) using the hashing algorithm hashfcn

II。 XI = hashfcn(ゼータ|| PSI)ハッシュアルゴリズムのhashfcnを使用してみましょう

iii. Let h' = xi || zeta, the concatenation of the previous two hashfcn outputs

III。 H」= XIをしてみましょう||ゼータ、前の二つのhashfcn出力の連結

(b) Let y = HashBytes(|m|, h', hashfcn) XOR m, which is the bit-wise XOR of m with the first |m| octets of the pseudo-random bytes produced by Algorithm 4.2.1 (HashBytes) with seed h'

M |(| M |、H」、hashfcn)第一とMのビット毎のXORであるXOR Mを、(b)は、YはHashBytesし=う|シードH」とアルゴリズム4.2.1によって生成される擬似ランダムバイト(HashBytes)のオクテット

7. Create the integrity check tag u as follows:
7.次のように整合性チェックタグのuを作成します。

(a) Compute a one-time pad h'' as a dual-pass hash of the representation of (w, C_0, C_1, y):

(A)(C_0、C_1、Y、W)の表現のデュアルパスハッシュとしてワンタイムパッドH '' を計算します:

            i. Let sigma = (y_1)_(256^l) || (x_1)_(256^l) ||
               (y_0)_(256^l) || (x_0)_(256^l) || y || psi be the
               concatenation of y and the five indicated strings in the
               specified order
        

ii. Let eta = hashfcn(sigma) using the hashing algorithm hashfcn

II。 ETA = hashfcn(シグマ)ハッシュアルゴリズムのhashfcnを使用してみましょう

iii. Let mu = hashfcn(eta || sigma) using the hashfcn hashing algorithm

III。 hashfcnのハッシュアルゴリズムを使用してムー= hashfcn(イータ||シグマ)をしてみましょう

iv. Let h'' = mu || eta, the concatenation of the previous two outputs of hashfcn

IV。 H '' =ムーをしてみましょう|| ETA、hashfcnの前の2つの出力の連結

(b) Build the tag u as the encryption of the integer s with the one-time pad h'':

(b)は整数SワンタイムパッドH「」との暗号化のようなタグUを構築:

i. Let rho = HashToRange(h'', q, hashfcn) to get an integer in Z_q

私。 Z_qの整数を取得するためのRho = HashToRange(H ''、Q、hashfcn)ましょう

ii. Let u = s + rho (mod q)

II。ましょう、U = S +ロー(モッズQ)

8. The complete ciphertext is given by the quadruple (u, C_0, C_1, y)
8.完全な暗号文は、四重極(U、C_0、C_1、Y)で与えられます。
6.5. Decryption
6.5. 復号化
6.5.1. Decrypt Using Public Parameters and Private Key
6.5.1. 公開パラメータと秘密鍵を使用して復号化します

BBdecrypt takes three inputs: a set of public parameters (version, k, E, p, q, P, P_1, P_2, P_3, v, hashfcn), a private key (D_0, D_1), and a ciphertext (u, C_0, C_1, y). It outputs a message m, or signals an error if the ciphertext is invalid for the given key. The public parameters used MUST be a valid set of public parameters as defined by Section 6.1.2.

公開パラメータのセット(バージョン、K、E、P、Q、P、P_1、P_2、P_3、V、hashfcn)、秘密鍵(D_0、D_1)、および暗号文(U、C_0:BBdecryptは、3つの入力を取り、C_1、Y)。これは、メッセージmを出力し、または暗号文が指定されたキーの無効な場合、エラーを通知します。 6.1.2項で定義されるように使用される公開パラメータは、公開パラメータの有効なセットでなければなりません。

Algorithm 6.5.1 (BBdecrypt): decrypts a ciphertext using public parameters and a private key.

アルゴリズム6.5.1(BBdecryptは):公開パラメータと秘密鍵を使って暗号文を解読します。

Input:

入力:

o A private key given as a pair of points (D_0, D_1) of order q in E(F_p)

Eにおける位数qの点(D_0、D_1)の組として与えられる秘密鍵(F_P)O

o A ciphertext quadruple (u, C_0, C_1, y) in Z_q x E(F_p) x E(F_p) x {0, ... , 255}*

Z_qにおける暗号文四重(U、C_0、C_1、Y)O E(F_P)×E(F_P)X {0、...、255} *をxは

o A set of public parameters (version, k, E, p, q, P, P_1, P_2, P_3, v, hashfcn)

公開パラメータのセット(バージョン、K、E、P、Q、P、P_1、P_2、P_3、V、hashfcn)O

Output:

出力:

o A decrypted plaintext m, or an invalid ciphertext flag

O復号された平文M、または無効な暗号文フラグ

Method:

方法:

1. Let w = PairingRatio(E, p, q, C_0, D_0, C_1, D_1), which computes the ratio of two Tate pairings (modified, for type-1 curves) as specified in Algorithm 4.6.1 (PairingRatio)

アルゴリズム4.6.1(PairingRatio)で指定されたように、2つのテイトペアリング(タイプ1曲線のために、修飾された)の比を計算= PairingRatio(E、P、Q、C_0、D_0、C_1、D_1)W 1レッツ、

2. Obtain canonical string representations of certain elements:
2.特定の要素の正規の文字列表現を取得します。

(a) Let psi = Canonical(p, k, 1, w) using Algorithm 4.3.1 (Canonical); the result is a canonical octet string representation of w

(A)うPSI =カノニカル(P、K、1、W)を用いて、アルゴリズム4.3.1(正規)。結果は、Wの正規のオクテット文字列表現であります

(b) Let l = Ceiling(lg(p) / 8), the number of octets needed to represent integers in F_p, and represent each of these F_p elements as a big-endian zero-padded octet string of fixed length l:

(b)は、L =天井(LG(P)/ 8)、F_Pの整数を表すために必要なオクテットの数をしようと、固定長LのビッグエンディアンゼロパディングオクテットストリングとしてこれらF_Pの各要素を表します。

(x_0)_(256^l) to represent the x coordinate of C_0 (y_0)_(256^l) to represent the y coordinate of C_0

(X_0)_(256 ^ L)は、x、yはC_0の座標を表現するために(256 ^ L)_ C_0(Y_0)の座標を表現します

(x_1)_(256^l) to represent the x coordinate of C_1

X C_1の座標を表す(X_1)_(256 ^ L)

(y_1)_(256^l) to represent the y coordinate of C_1

C_1のy座標を表す(Y_1)_(256 ^ L)

3. Decrypt the message m from the string y as follows:
3.次のように文字列yからメッセージmを復号化:

(a) Compute the decryption key h' as a dual-pass hash of w via its representation psi:

(a)は、その表現のPSIを介してWのデュアルパスハッシュとして復号鍵h」を計算します:

i. Let zeta = hashfcn(psi) using the hashing algorithm hashfcn

私。ゼータ= hashfcn(PSI)ハッシュアルゴリズムのhashfcnを使用してみましょう

ii. Let xi = hashfcn(zeta || psi) using the hashing algorithm hashfcn

II。 XI = hashfcn(ゼータ|| PSI)ハッシュアルゴリズムのhashfcnを使用してみましょう

iii. Let h' = xi || zeta, the concatenation of the previous two hashfcn outputs

III。 H」= XIをしてみましょう||ゼータ、前の二つのhashfcn出力の連結

(b) Let m = HashBytes(|y|, h', hashfcn)_XOR y, which is the bit-wise XOR of y with the first |y| octets of the pseudo-random bytes produced by Algorithm 4.2.1 (HashBytes) with seed h'

(b)は、M = HashBytesう(| Y |、H」、hashfcn)第一とyとのビット毎のXORである_XORのY、| Y |シードH」とアルゴリズム4.2.1によって生成される擬似ランダムバイト(HashBytes)のオクテット

4. Obtain the integrity check tag u as follows:
4.次のように整合性チェックタグuを取得します。

(a) Recover the one-time pad h'' as a dual-pass hash of the representation of (w, C_0, C_1, y):

(A)(C_0、C_1、Y、W)の表現のデュアルパスハッシュとしてワンタイムパッドH「」を回復します。

i. Let sigma = (y_1)_(256^l) || (x_1)_(256^l) || (y_0)_(256^l) || (x_0)_(256^l) || y || psi be the concatenation of y and the five indicated strings in the specified order

私。してみましょうシグマ=(Y_1)_(256 ^ L)|| (X_1)_(256 ^ L)|| (Y_0)_(256 ^ L)|| (X_0)_(256 ^ L)|| Y || PSIは、Yの連結と指定された順序で5つの示す文字列であります

ii. Let eta = hashfcn(sigma) using the hashing algorithm hashfcn

II。 ETA = hashfcn(シグマ)ハッシュアルゴリズムのhashfcnを使用してみましょう

iii. Let mu = hashfcn(eta || sigma) using the hashing algorithm hashfcn

III。ムー= hashfcn(ETA ||シグマ)ハッシュアルゴリズムのhashfcnを使用してみましょう

iv. Let h'' = mu || eta, the concatenation of the previous two hashfcn outputs

IV。 H '' =ムーをしてみましょう||イータ、前の2つのhashfcn出力の連結

(b) Unblind the encryption randomization integer s from the tag u using h'':

(b)は、暗号化ランダム整数S U「」はHを使用してタグからUnblind。

i. Let rho = HashToRange(h'', q, hashfcn) to get an integer in Z_q

私。 Z_qの整数を取得するためのRho = HashToRange(H ''、Q、hashfcn)ましょう

ii. Let s = u - rho (mod q)

II。 sがuと=ましょう - ロー(モッズQ)

5. Verify the ciphertext consistency according to the decrypted values:

前記復号化値に応じて、暗号文の整合性を確認します。

(a) Test whether the equality w = v^s holds

= V ^ S wの等号が成立しているか否か(A)試験

(b) Test whether the equality C_0 = [s]P holds

(b)は等価C_0 = [S] Pが成立するかどうかをテスト

6. Adjudication and final output:
6.裁決と最終的な出力:

(a) If either of the tests performed in step 5 fails, the ciphertext is rejected, and no decryption is output

(a)工程5失敗で行った試験のいずれかで、暗号文は拒否され、そしていかなる復号化は出力されない場合

(b) Otherwise, i.e., when both tests performed in step 5 succeed, the decrypted message is the output

ステップ5で実行両方のテストが成功した場合(B)それ以外の場合、すなわち、復号化されたメッセージを出力します

7. Test Data
7.テストデータ

The following data can be used to verify the correct operation of selected algorithms that are defined in this document.

以下のデータは、この文書で定義されている選択されたアルゴリズムの正しい動作を検証するために使用することができます。

7.1. Algorithm 3.2.2 (PointMultiply)
7.1. アルゴリズム3.2.2(PointMultiply)

Input:

入力:

q = 0xfffffffffffffffffffffffffffbffff

Q = 0xfffffffffffffffffffffffffffbffff

p = 0xbffffffffffffffffffffffffffcffff3

P = 0xbffffffffffffffffffffffffffcffff3

E/F_p: y^2 = x^3 + 1

E / F_P:Y ^ 2 = X ^ 3 + 1

A = (0x489a03c58dcf7fcfc97e99ffef0bb4634, 0x510c6972d795ec0c2b081b81de767f808)

A =(0x489a03c58dcf7fcfc97e99ffef0bb4634、0x510c6972d795ec0c2b081b81de767f808)

l = 0xb8bbbc0089098f2769b32373ade8f0daf

L = 0xb8bbbc0089098f2769b32373ade8f0daf

Output:

出力:

[l]A = (0x073734b32a882cc97956b9f7e54a2d326, 0x9c4b891aab199741a44a5b6b632b949f7)

[L] A =(0x073734b32a882cc97956b9f7e54a2d326、0x9c4b891aab199741a44a5b6b632b949f7)

7.2. Algorithm 4.1.1 (HashToRange)
7.2. アルゴリズム4.1.1(HashToRange)

Input:

入力:

s = 54:68:69:73:20:41:53:43:49:49:20:73:74:72:69:6e:67:20:77:69:74 :68:6f:75:74:20:6e:75:6c:6c:2d:74:65:72:6d:69:6e:61:74:6f:72 ("This ASCII string without null-terminator")

S = 54:68:69:73:20:41:53:43:49:49:20:73:74:72:69:6E:67:20:77:69:74:68:6F:75: 74:20:6E:75:6C:6C:2D:74:65:72:6D:69:6E:61:74:6F:72( "ヌルターミネータことなく、このASCII文字列")

n = 0xffffffffffffffffffffefffffffffffffffffff

N = 0xffffffffffffffffffffefffffffffffffffffff

hashfcn = 1.3.14.3.2.16 (SHA-1)

hashfcn = 1.3.14.3.2.16(SHA-1)

Output:

出力:

v = 0x79317c1610c1fc018e9c53d89d59c108cd518608

= 0h79317s1610ts1fs018e9s53d89d59ts108sd518608で

7.3. Algorithm 4.5.1 (Pairing)
7.3. アルゴリズム4.5.1(ペアリング)

Input:

入力:

q = 0xfffffffffffffffffffffffffffbffff

Q = 0xfffffffffffffffffffffffffffbffff

p = 0xbffffffffffffffffffffffffffcffff3

P = 0xbffffffffffffffffffffffffffcffff3

E/F_p: y^2 = x^3 + 1

E / F_P:Y ^ 2 = X ^ 3 + 1

A = (0x489a03c58dcf7fcfc97e99ffef0bb4634, 0x510c6972d795ec0c2b081b81de767f808)

A =(0x489a03c58dcf7fcfc97e99ffef0bb4634、0x510c6972d795ec0c2b081b81de767f808)

B = (0x40e98b9382e0b1fa6747dcb1655f54f75, 0xb497a6a02e7611511d0db2ff133b32a3f)

B =(0x40e98b9382e0b1fa6747dcb1655f54f75、0xb497a6a02e7611511d0db2ff133b32a3f)

Output:

出力:

e'(A, B) = (0x8b2cac13cbd422658f9e5757b85493818, 0xbc6af59f54d0a5d83c8efd8f5214fad3c)

E '(A、B)=(0x8b2cac13cbd422658f9e5757b85493818、0xbc6af59f54d0a5d83c8efd8f5214fad3c)

7.4. Algorithm 5.2.1 (BFderivePubl)
7.4. アルゴリズム5.2.1(BFderivePubl)

Input:

入力:

id = 6f:42:62 ("Bob")

ID = 6F:42:62( "ボブ")

version = 2

バージョン= 2

p = 0xa6a0ffd016103ffffffffff595f002fe9ef195f002fe9efb

P = 0xa6a0ffd016103ffffffffff595f002fe9ef195f002fe9efb

q = 0xffffffffffffffffffffffeffffffffffff

Q = 0xffffffffffffffffffffffeffffffffffff

P = (0x6924c354256acf5a0ff7f61be4f0495b54540a5bf6395b3d, 0x024fd8e2eb7c09104bca116f41c035219955237c0eac19ab)

P =(0x6924c354256acf5a0ff7f61be4f0495b54540a5bf6395b3d、0x024fd8e2eb7c09104bca116f41c035219955237c0eac19ab)

P_pub = (0xa68412ae960d1392701066664d20b2f4a76d6ee715621108, 0x9e7644e75c9a131d075752e143e3f0435ff231b6745a486f)

P_pub =(0xa68412ae960d1392701066664d20b2f4a76d6ee715621108、0x9e7644e75c9a131d075752e143e3f0435ff231b6745a486f)

Output:

出力:

Q_id = (0x22fa1207e0d19e1a4825009e0e88e35eb57ba79391498f59, 0x982d29acf942127e0f01c881b5ec1b5fe23d05269f538836)

Q_id =(0x22fa1207e0d19e1a4825009e0e88e35eb57ba79391498f59、0x982d29acf942127e0f01c881b5ec1b5fe23d05269f538836)

7.5. Algorithm 5.3.1 (BFextractPriv)
7.5. アルゴリズム5.3.1(BFextractPriv)

Input:

入力:

s = 0x749e52ddb807e0220054417e514742b05a0

S = 0x749e52ddb807e0220054417e514742b05a0

version = 2

バージョン= 2

p = 0xa6a0ffd016103ffffffffff595f002fe9ef195f002fe9efb

P = 0xa6a0ffd016103ffffffffff595f002fe9ef195f002fe9efb

q = 0xffffffffffffffffffffffeffffffffffff

Q = 0xffffffffffffffffffffffeffffffffffff

P = (0x6924c354256acf5a0ff7f61be4f0495b54540a5bf6395b3d, 0x024fd8e2eb7c09104bca116f41c035219955237c0eac19ab)

P =(0x6924c354256acf5a0ff7f61be4f0495b54540a5bf6395b3d、0x024fd8e2eb7c09104bca116f41c035219955237c0eac19ab)

P_pub = (0xa68412ae960d1392701066664d20b2f4a76d6ee715621108, 0x9e7644e75c9a131d075752e143e3f0435ff231b6745a486f)

P_pub =(0xa68412ae960d1392701066664d20b2f4a76d6ee715621108、0x9e7644e75c9a131d075752e143e3f0435ff231b6745a486f)

Output:

出力:

Q_id = (0x8212b74ea75c841a9d1accc914ca140f4032d191b5ce5501, 0x950643d940aba68099bdcb40082532b6130c88d317958657)

Q_id =(0x8212b74ea75c841a9d1accc914ca140f4032d191b5ce5501、0x950643d940aba68099bdcb40082532b6130c88d317958657)

7.6. Algorithm 5.4.1 (BFencrypt)
7.6. アルゴリズム5.4.1(BFencrypt)
      Note: the following values can also be used to test
      Algorithm 5.5.1 (BFdecrypt).
        

Input:

入力:

m = 48:69:20:74:68:65:72:65:21 ("Hi there!")

メートル= 48:69:20:74:68:65:72:65:21( "こんにちは!")

id = 6f:42:62 ("Bob")

ID = 6F:42:62( "ボブ")

version = 2

バージョン= 2

p = 0xa6a0ffd016103ffffffffff595f002fe9ef195f002fe9efb

P = 0xa6a0ffd016103ffffffffff595f002fe9ef195f002fe9efb

q = 0xffffffffffffffffffffffeffffffffffff

Q = 0xffffffffffffffffffffffeffffffffffff

P = (0x6924c354256acf5a0ff7f61be4f0495b54540a5bf6395b3d, 0x024fd8e2eb7c09104bca116f41c035219955237c0eac19ab)

P =(0x6924c354256acf5a0ff7f61be4f0495b54540a5bf6395b3d、0x024fd8e2eb7c09104bca116f41c035219955237c0eac19ab)

P_pub = (0xa68412ae960d1392701066664d20b2f4a76d6ee715621108, 0x9e7644e75c9a131d075752e143e3f0435ff231b6745a486f)

P_pub =(0xa68412ae960d1392701066664d20b2f4a76d6ee715621108、0x9e7644e75c9a131d075752e143e3f0435ff231b6745a486f)

Output:

出力:

Using the random value rho = 0xed5397ff77b567ba5ecb644d7671d6b6f2082968, we get the following output:

ランダム値、ρ= 0xed5397ff77b567ba5ecb644d7671d6b6f2082968を使用して、我々は次のような出力が得られます。

U = (0x1b5f6c461497acdfcbb6d6613ad515430c8b3fa23b61c585e9a541b199e 2a6cb, 0x9bdfbed1ae664e51e3d4533359d733ac9a600b61048a7d899104e826a0ec 4fa4)

U =(0x1b5f6c461497acdfcbb6d6613ad515430c8b3fa23b61c585e9a541b199eの2a6cb、0x9bdfbed1ae664e51e3d4533359d733ac9a600b61048a7d899104e826a0ec 4fa4)

V = e0:1d:ad:81:32:6c:b1:73:af:c2:8d:72:2e:7a:32:1a:7b:29:8a:aa

P = J 0:1 D:エド:81:32:Ttsの:B 1:73:F:何か:あなた可能性があります右:A:ハ:32:1 A:ラブ:カット:Doanh:任意

W = f9:04:ba:40:30:e9:ce:6e:ff

F =クローブ:04:Baの:40:30:EQ:Q:私は:P

7.7. Algorithm 6.3.1 (BBextractPriv)
7.7. アルゴリズム6.3.1(BBextractPriv)

Input:

入力:

alpha = 0xa60c395285ded4d70202c8283d894bad4f0

アルファ= 0xa60c395285ded4d70202c8283d894bad4f0

beta = 0x48bf012da19f170b13124e5301561f45053

ベータ= 0x48bf012da19f170b13124e5301561f45053

gamma = 0x226fba82bc38e2ce4e28e56472ccf94a499

ガンマ= 0x226fba82bc38e2ce4e28e56472ccf94a499

version = 2

バージョン= 2

p = 0x91bbe2be1c8950750784befffffffffffff6e441d41e12fb

P = 0x91bbe2be1c8950750784befffffffffffff6e441d41e12fb

q = 0xfffffffffbfffffffffffffffffffffffff

Q = 0xfffffffffbfffffffffffffffffffffffff

P = (0x13cc538fe950411218d7f5c17ae58a15e58f0877b29f2fe1, 0x8cf7bab1a748d323cc601fabd8b479f54a60be11e28e18cf)

P =(0x13cc538fe950411218d7f5c17ae58a15e58f0877b29f2fe1、0x8cf7bab1a748d323cc601fabd8b479f54a60be11e28e18cf)

P_1 = (0x0f809a992ed2467a138d72bc1d8931c6ccdd781bedc74627, 0x11c933027beaaf73aa9022db366374b1c68d6bf7d7a888c2)

P_1 =(0x0f809a992ed2467a138d72bc1d8931c6ccdd781bedc74627、0x11c933027beaaf73aa9022db366374b1c68d6bf7d7a888c2)

P_2 = (0x0f8ac99a55e575bf595308cfea13edb8ec673983919121b0, 0x3febb7c6369f5d5f18ee3ea6ca0181448a4f3c4f3385019c)

P_2 =(0x0f8ac99a55e575bf595308cfea13edb8ec673983919121b0、0x3febb7c6369f5d5f18ee3ea6ca0181448a4f3c4f3385019c)

P_3 = (0x2c10b43991052e78fac44fdce639c45824f5a3a2550b2a45, 0x6d7c12d8a0681426a5bbc369c9ef54624356e2f6036a064f)

P_3 =(0x2c10b43991052e78fac44fdce639c45824f5a3a2550b2a45、0x6d7c12d8a0681426a5bbc369c9ef54624356e2f6036a064f)

v = (0x38f91032de6847a89fc3c83e663ed0c21c8f30ce65c0d7d3, 0x44b9aa10849cc8d8987ef2421770a340056745da8b99fba2)

=(0h38f91032de6847a89fk3k83e663ed0ch21k8f30se65k0d7d3、0h44b9aa10849sk8d8987ef2421770az40056745da8b99fba2)

id = 6f:42:62 ("Bob")

ID = 6F:42:62( "ボブ")

Output:

出力:

Using the random value r = 0x695024c25812112187162c08aa5f65c7a2c, we get the following output:

ランダムな値r = 0x695024c25812112187162c08aa5f65c7a2cを使用して、我々は次のような出力が得られます。

D_0 = (0x3264e13feeb7c506493888132964e79ad657a952334b9e53, 0x3eeaefc14ba1277a1cd6fdea83c7c882fe6d85d957055c7b)

D_0 =(0x3264e13feeb7c506493888132964e79ad657a952334b9e53、0x3eeaefc14ba1277a1cd6fdea83c7c882fe6d85d957055c7b)

D_1 = (0x8d7a72ad06909bb3bb29b67676d935018183a905e7e8cb18, 0x2b346c6801c1db638f270af915a21054f16044ab67f6c40e)

D_1 =(0x8d7a72ad06909bb3bb29b67676d935018183a905e7e8cb18、0x2b346c6801c1db638f270af915a21054f16044ab67f6c40e)

7.8. Algorithm 6.4.1 (BBencrypt)
7.8. アルゴリズム6.4.1(BBencrypt)
      Note: the following values can also be used to test
      Algorithm 5.5.1 (BFdecrypt).
        

Input:

入力:

m = 48:69:20:74:68:65:72:65:21 ("Hi there!")

メートル= 48:69:20:74:68:65:72:65:21( "こんにちは!")

id = 6f:42:62 ("Bob")

ID = 6F:42:62( "ボブ")

version = 2

バージョン= 2

E: y^2 = x^3 + 1

E:y ^ 2 = X ^ 3 + 1

p = 0x91bbe2be1c8950750784befffffffffffff6e441d41e12fb

P = 0x91bbe2be1c8950750784befffffffffffff6e441d41e12fb

q = 0xfffffffffbfffffffffffffffffffffffff

Q = 0xfffffffffbfffffffffffffffffffffffff

P = (0x13cc538fe950411218d7f5c17ae58a15e58f0877b29f2fe1, 0x8cf7bab1a748d323cc601fabd8b479f54a60be11e28e18cf)

P =(0x13cc538fe950411218d7f5c17ae58a15e58f0877b29f2fe1、0x8cf7bab1a748d323cc601fabd8b479f54a60be11e28e18cf)

P_1 = (0x0f809a992ed2467a138d72bc1d8931c6ccdd781bedc74627, 0x11c933027beaaf73aa9022db366374b1c68d6bf7d7a888c2)

P_1 =(0x0f809a992ed2467a138d72bc1d8931c6ccdd781bedc74627、0x11c933027beaaf73aa9022db366374b1c68d6bf7d7a888c2)

P_2 = (0x0f8ac99a55e575bf595308cfea13edb8ec673983919121b0, 0x3febb7c6369f5d5f18ee3ea6ca0181448a4f3c4f3385019c)

P_2 =(0x0f8ac99a55e575bf595308cfea13edb8ec673983919121b0、0x3febb7c6369f5d5f18ee3ea6ca0181448a4f3c4f3385019c)

P_3 = (0x2c10b43991052e78fac44fdce639c45824f5a3a2550b2a45, 0x6d7c12d8a0681426a5bbc369c9ef54624356e2f6036a064f)

P_3 =(0x2c10b43991052e78fac44fdce639c45824f5a3a2550b2a45、0x6d7c12d8a0681426a5bbc369c9ef54624356e2f6036a064f)

v = (0x38f91032de6847a89fc3c83e663ed0c21c8f30ce65c0d7d3, 0x44b9aa10849cc8d8987ef2421770a340056745da8b99fba2)

=(0h38f91032de6847a89fk3k83e663ed0ch21k8f30se65k0d7d3、0h44b9aa10849sk8d8987ef2421770az40056745da8b99fba2)

hashfcn = 1.3.14.3.2.26 (SHA-1)

hashfcn = 1.3.14.3.2.26(SHA-1)

Output:

出力:

Using the random value s = 0x62759e95ce1af248040e220263fb41b965e, we get the following output:

ランダムな値s = 0x62759e95ce1af248040e220263fb41b965eを使用して、我々は次のような出力が得られます。

u = 0xad1ebfa82edf0bcb5111e9dc08ff0737c68

U = 0xad1ebfa82edf0bcb5111e9dc08ff0737c68

C_0 = (0x79f8f35904579f1aaf51897b1e8f1d84e1c927b8994e81f9, 0x1cf77bb2516606681aba2e2dc14764aa1b55a45836014c62)

C_0 =(0x79f8f35904579f1aaf51897b1e8f1d84e1c927b8994e81f9、0x1cf77bb2516606681aba2e2dc14764aa1b55a45836014c62)

C_1 = (0x410cfeb0bccf1fa4afc607316c8b12fe464097b20250d684, 0x8bb76e7195a7b1980531b0a5852ce710cab5d288b2404e90)

C_1 =(0x410cfeb0bccf1fa4afc607316c8b12fe464097b20250d684、0x8bb76e7195a7b1980531b0a5852ce710cab5d288b2404e90)

y = 82:a6:42:b9:bb:e9:82:c4:57

J =光の:フレームワーク:42:ボス:B:EQ:の光:Q 4時57分

8. ASN.1 Module
8. ASN.1モジュール

This section defines the ASN.1 module for the encodings discussed in this document.

このセクションでは、この文書で説明したエンコーディングのためのASN.1モジュールを定義します。

IBCS { joint-iso-itu-t(2) country(16) us(840) organization(1) identicrypt(114334) ibcs(1) module(5) version(1) }

IBCS {共同イソ - ITU-T(2)国(16)米国(840)組織(1)identicrypt(114334)IBCS(1)モジュール(5)バージョン(1)}

   DEFINITIONS IMPLICIT TAGS ::= BEGIN
        

-- -- Identity-based cryptography standards (IBCS): -- supersingular curve implementations of -- the BF and BB1 cryptosystems -- -- This version only supports IBE using -- type-1 curves, i.e., the curve y^2 = x^3 + 1. --

- - IDベース暗号化規格(IBCS): - BFとBB1の暗号 - - - このバージョンのみ使用IBEをサポート - 1型曲線、すなわち、曲線y ^ 2の超特異曲線実装= X ^ 3 + 1 -

   ibcs OBJECT IDENTIFIER ::= {
      joint-iso-itu-t(2) country(16) us(840) organization(1)
         identicrypt(114334) ibcs(1)
   }
        

-- -- IBCS1 -- -- IBCS1 defines the algorithms used to implement IBE --

- - IBCS1 - - IBCS1はIBEを実装するために使用されるアルゴリズムを定義します -

   ibcs1 OBJECT IDENTIFIER ::= {
      ibcs ibcs1(1)
   }
        

-- -- An elliptic curve is specified by an OID. -- A type1curve is defined by the equation y^2 = x^3 + 1. --

- - 楕円曲線は、OIDで指定されます。 - type1curveは、方程式y ^ 2 = X ^ 3 + 1によって定義されます -

   type1curve OBJECT IDENTIFIER ::= {
      ibcs1 curve-types(1) type1-curve(1)
   }
        

-- -- Supporting types --

- - サポートタイプ -

-- -- Encoding of a point on an elliptic curve E/F_p -- An FpPoint can either represent an element of -- F_p^2 or an element of (F_p)^2.

- - 楕円曲線E / F_P上の点のエンコード - F_P ^ 2又は(F_P)の要素^ 2 - FpPointはの要素を表現しますか。

    FpPoint ::= SEQUENCE {
      x  INTEGER,
      y  INTEGER
   }
        
   --
   -- The following hash functions are supported:
   --
   -- SHA-1
   --
   -- id-sha1  OBJECT IDENTIFIER  ::= {
   --   iso(1) identified-organization(3) oiw(14)
   --   secsig(3) algorithms(2) hashAlgorithmIdentifier(26)
   -- }
   --
   -- SHA-224
   --
   -- id-sha224  OBJECT IDENTIFIER  ::= {
   --   joint-iso-itu-t(2)country(16) us(840)
   --   organization(1) gov(101)
   --   csor(3) nistAlgorithm(4) hashAlgs(2) sha224(4)
   -- }
   --
   -- SHA-256
   --
   -- id-sha256  OBJECT IDENTIFIER  ::= {
   --   joint-iso-itu-t(2)country(16) us(840)
   --   organization(1) gov(101)
   --   csor(3) nistAlgorithm(4) hashAlgs(2) sha256(1)
   -- }
   --
   -- SHA-384
   --
   -- id-sha384  OBJECT IDENTIFIER  ::= {
   --   joint-iso-itu-t(2)country(16) us(840)
   --   organization(1) gov(101)
   --   csor(3) nistAlgorithm(4) hashAlgs(2) sha384(2)
   -- }
   --
        
   -- SHA-512
   --
   -- id-sha512  OBJECT IDENTIFIER  ::= {
   --   joint-iso-itu-t(2) country(16) us(840)
   --   organization(1) gov(101)
   --   csor(3) nistAlgorithm(4) hashAlgs(2) sha512(3)
   -- }
   --
   --
   -- Algorithms
   --
        
   ibe-algorithms OBJECT IDENTIFIER ::= {
      ibcs1 ibe-algorithms(2)
   }
        
   ---
   --- Boneh-Franklin IBE
   ---
        
   bf OBJECT IDENTIFIER ::= { ibe-algorithms bf(1) }
        

-- -- Encoding of a BF public parameters block. -- The only version currently supported is version 2. -- The values p and q define a subgroup of E(F_p) of order q. --

- - 公開パラメータはブロックBFのエンコーディング。 - 現在サポートされている唯一のバージョンは2である - 値pとqは数qのE(F_P)のサブグループを定義します。 -

   BFPublicParameters ::= SEQUENCE {
      version     INTEGER { v2(2) },
      curve       OBJECT IDENTIFIER,
      p           INTEGER,
      q           INTEGER,
      pointP      FpPoint,
      pointPpub   FpPoint,
      hashfcn     OBJECT IDENTIFIER
   }
        

-- -- A BF private key is a point on an elliptic curve, -- which is an FpPoint. -- The only version supported is version 2. --

- - FpPointある - BF秘密鍵は、楕円曲線上の点です。 - サポートされている唯一のバージョンは2です -

   BFPrivateKeyBlock ::= SEQUENCE {
      version     INTEGER { v2(2) },
      privateKey  FpPoint
   }
        

-- -- A BF master secret is an integer. -- The only version supported is version 2. --

- - BFマスターシークレットは、整数です。 - サポートされている唯一のバージョンは2です -

   BFMasterSecret ::= SEQUENCE {
      version        INTEGER {v2(2) },
      masterSecret   INTEGER
   }
        

-- -- BF ciphertext block -- The only version supported is version 2. --

- - BF暗号文ブロック - サポートされている唯一のバージョンは2であります -

   BFCiphertextBlock ::= SEQUENCE {
      version  INTEGER { v2(2) },
      u        FpPoint,
      v        OCTET STRING,
      w        OCTET STRING
   }
        

-- -- Boneh-Boyen (BB1) IBE --

- - Boneh-Boyen(BB1)IBE -

   bb1 OBJECT IDENTIFIER ::= { ibe-algorithms bb1(2) }
        

-- -- Encoding of a BB1 public parameters block. -- The version is currently fixed to 2. -- --

- - 公開パラメータはブロックBB1のエンコーディング。 - バージョンは現在、2に固定されています - -

   BB1PublicParameters ::= SEQUENCE {
      version     INTEGER { v2(2) },
      curve       OBJECT IDENTIFIER,
      p           INTEGER,
      q           INTEGER,
      pointP      FpPoint,
      pointP1     FpPoint,
      pointP2     FpPoint,
      pointP3     FpPoint,
      v           FpPoint,
      hashfcn     OBJECT IDENTIFIER
   }
        

-- -- BB1 master secret block -- The only version supported is version 2. --

- - BB1マスターシークレットブロック - サポートされている唯一のバージョンは2です -

   BB1MasterSecret ::= SEQUENCE {
      version  INTEGER { v2(2) },
      alpha    INTEGER,
      beta     INTEGER,
      gamma    INTEGER
   }
        

-- -- BB1 private Key block -- The only version supported is version 2. --

- - BB1秘密鍵ブロック - サポートされている唯一のバージョンは2です -

   BB1PrivateKeyBlock ::= SEQUENCE {
      version  INTEGER { v2(2) },
      pointD0  FpPoint,
      pointD1  FpPoint
   }
        

-- -- BB1 ciphertext block -- The only version supported is version 2. --

- - BB1暗号文ブロック - サポートされている唯一のバージョンは2です -

   BB1CiphertextBlock ::= SEQUENCE {
      version     INTEGER {v2(2) },
      pointChi0   FpPoint,
      pointChi1   FpPoint,
      nu          INTEGER,
      y           OCTET STRING
   }
        

END

終わり

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

This document describes cryptographic algorithms. We assume that the security provided by such algorithms depends entirely on the secrecy of the relevant private key, and for an adversary to defeat the security provided by the algorithms, he will need to perform computationally-intensive cryptanalytic attacks to recover the private key.

この文書では、暗号化アルゴリズムを説明しています。私たちは、そのようなアルゴリズムによって提供されるセキュリティは、関連する秘密鍵の機密性に完全に依存していることを前提とし、敵がアルゴリズムによって提供されるセキュリティを倒すため、彼は秘密鍵を回復するために、計算集約暗号解析攻撃を実行する必要があります。

We assume that users of the algorithms described in this document will require one of five levels of cryptographic strength: the equivalent of 80 bits, 112 bits, 128 bits, 192 bits or, 256 bits. The 80-bit level is suitable for legacy applications and SHOULD NOT be used to protect information whose useful life extends past the year 2010. The 112-bit level is suitable for use in key transport of Triple-DES keys and should be adequate to protect information whose useful life extends up to the year 2030. The 128-bit levels and higher are suitable for use in the transport of Advanced Encryption Standard (AES) keys of the corresponding length or less and are adequate to protect information whose useful life extends past the year 2030.

80ビット、112ビット、128ビット、192ビットまたは256ビットの同等:我々は、この文書に記載されたアルゴリズムのユーザは暗号強度の5つの段階のいずれかを必要とすると仮定する。 80ビット・レベルは、レガシーアプリケーションに適しており、その耐用年、2010年を越えて延び112ビットのレベルがトリプルDESキーのキー輸送での使用に適しており、保護するのに十分であるべき情報を保護するために使用しないでくださいその耐用年数128ビットレベル及びより高いが、対応する長さ以下のAdvanced Encryption Standard(AES)の鍵の輸送に使用するのに適しており、その耐用年数を延長過去の情報を保護するのに十分で年間2030まで延びている情報2030年。

Table 1 summarizes the security parameters for the BF and BB1 algorithms that will attain these levels of security. In this table, |p| represents the number of bits in a prime number p, and |q| represents the number of bits in a subprime q. This table assumes that a Type-1 supersingular curve is used.

表1は、セキュリティのこれらのレベルを達成しますBFとBB1アルゴリズムのためのセキュリティパラメータをまとめたもの。このテーブルには、| P |素数pのビット数を表し、| Q |サブプライムのqのビット数を表します。このテーブルは、1型超特異曲線が使用されることを想定しています。

Bits of Security |p| |q| 80 512 160 112 1024 224 128 1536 256 192 3840 384 256 7680 512

セキュリティのビット| P | | Q | 80 512 160 112 1024 224 128 1536 256 192 3840 384 256 7680 512

Table 1: Sizes of BF and BB1 Parameters Required to Attain Standard Levels of Bit Security [SP800-57].

表1:BFとBB1パラメータ必須のサイズビットのセキュリティの標準レベルを達成するために、[SP800-57]。

If an IBE key is used to transport a symmetric key that provides more bits of security than the bit strength of the IBE key, users should understand that the security of the system is then limited by the strength of the weaker IBE key. So if an IBE key that provides 112 bits of security is used to transport a 128-bit AES key, then the security provided is limited by the 112 bits of security of the IBE key.

IBEキーがIBEキーのビット強度よりもセキュリティの複数のビットを提供する対称鍵を輸送するために使用される場合、ユーザは、システムのセキュリティは、次により弱いIBEキーの強さによって制限されることを理解すべきです。セキュリティの112ビットを提供IBEキーは128ビットAESキーを輸送するために使用されるのであれば、その後、提供されるセキュリティは、IBEキーのセキュリティの112ビットによって制限されます。

Note that this document specifies the use of the National Institute of Standards and Technology (NIST) hashing algorithms [SHA] to hash identities to either a point on an elliptic curve or an integer. Recent attacks on SHA-1 [SHA] have discovered ways to find collisions with less work than the expected 2^80 hashes required based on the size of the output of the hash function alone. If an attacker can find a collision, then they could use the colliding preimages to create two identities that have the same IBE private key. The practical use of such a SHA-1 [SHA] collision is extremely unlikely, however.

この文書は、楕円曲線上の点または整数のいずれかにIDをハッシュするアメリカ国立標準技術研究所(NIST)ハッシュアルゴリズム[SHA]の使用を指定することに留意されたいです。 SHA-1に関する最近の攻撃[SHA]は単独のハッシュ関数の出力の大きさに基づいて必要な予想2 ^ 80ハッシュ未満の仕事との衝突を見つけるための方法を発見しました。攻撃者は、衝突を見つけることができれば、それらは同じIBE秘密鍵を持っている2人のアイデンティティを作成するために、衝突preimagesを使用することができます。そのようなSHA-1 [SHA]衝突の実用化は、しかし、非常に低いです。

Identities are typically not random strings like the preimages of a hash collision would be. In particular, this is true if IBE is used as described in [IBECMS], in which components of an identity are defined to be an e-mail address, a validity period, and a URI. In this case, the unpredictable results of a collision are extremely unlikely to fit the format of a valid identity, and thus, are of no use to an attacker. Any protocol using IBE MUST define an identity in a way that makes collisions in a hash function essentially useless to an attacker. Because random strings are rarely used as identities, this requirement should not be unduly difficult to fulfill.

アイデンティティは、一般的になり、ハッシュ衝突のpreimagesのようなランダムな文字列ではありません。同一の構成要素は、電子メールアドレス、有効期間、およびURIであると定義されている、[IBECMS]に記載されているようにIBEが使用される場合、特に、これは真です。この場合、衝突の予測できない結果が有効なIDのフォーマットに合わせて極めてまれであり、したがって、攻撃者に役に立ちません。 IBEを使用して任意のプロトコルが攻撃者に、ハッシュ関数の衝突が、基本的に役に立たない可能な方法でアイデンティティを定義しなければなりません。ランダムな文字列はめったにアイデンティティとして使用されていないので、この要件は満たすことが過度に難しいことではありません。

The randomness of the random values that are required by the cryptographic algorithms is vital to the security provided by the algorithms. Any implementation of these algorithms MUST use a source of random values that provides an adequate level of security. Appropriate algorithms to generate such values include [FIPS186-2] and [X9.62]. This will ensure that the random values used to mask plaintext messages in Sections 5.4 and 6.4 are not reused with a significant probability.

暗号化アルゴリズムによって必要とされるランダムな値のランダム性をアルゴリズムによって提供されるセキュリティに不可欠です。これらのアルゴリズムのいずれかの実装では、セキュリティの適切なレベルを提供するランダム値のソースを使用しなければなりません。そのような値を生成するために適切なアルゴリズムは[FIPS186-2]及び[X9.62]を含みます。これは、セクション5.4と6.4での平文メッセージをマスクするために使用されるランダムな値が大幅確率で再利用されていないことを確認します。

The strength of a system using the algorithms described in this document relies on the strength of the mechanism used to authenticate a user requesting a private key from a PKG, as described in step 2 of Section 1.2 of this document. This is analogous to the way in which the strength of a system using digital certificates [X.509] is limited by the strength of the authentication required of users before certificates are granted to them. In either case, a weak mechanism for authenticating users will result in a weak system that relies on the technology. A system that uses the algorithms described in this document MUST require users to authenticate in a way that is suitably strong, particularly if IBE private keys will be used for authentication.

このドキュメントのセクション1.2のステップ2に記載したように、本書に記載されたアルゴリズムを使用して、システムの強度は、PKGから秘密鍵を要求するユーザを認証するために使用されるメカニズムの強さに依存しています。これは、証明書がそれらに付与される前に、デジタル証明書[X.509]を使用して、システムの強度は、ユーザの必要な認証の強度によって制限される方法に類似しています。いずれの場合も、ユーザー認証のための弱いメカニズムは、技術に依存している弱いシステムになります。この文書で説明したアルゴリズムを使用するシステムは、IBE秘密鍵が認証に使用される場合は特に、適切な強度のある方法で認証するようにユーザーに要求しなければなりません。

Note that IBE systems have different properties than other asymmetric cryptographic schemes when it comes to key recovery. If a master secret is maintained on a secure PKG, then the PKG and any administrator with the appropriate level of access will be able to create arbitrary private keys, so that controls around such administrators and logging of all actions performed by such administrators SHOULD be part of a functioning IBE system.

それは、キー回復に来るときIBEシステムは、他の非対称暗号方式とは異なる特性を持っていることに注意してください。マスターシークレットが安全なPKG上で維持されている場合は、そのような管理者と、そのような管理者によって実行されたすべてのアクションのログ周りのコントロールが一部であるべきように、その後、PKGおよびアクセスの適切なレベルを持つすべての管理者は、任意の秘密鍵を作成することができます機能IBEシステムの。

On the other hand, it is also possible to create IBE private keys using a master secret and to then destroy the master secret, making any key recovery impossible. If this property is not desired, an administrator of an IBE system SHOULD require that the format of the identity used by the system contain a component that is short-lived. The format of identity that is defined in [IBECMS], for example, contains information about the time period of validity of the key that will be calculated from the identity. Such an identity can easily be changed to allow the rekeying of users if their IBE private key is somehow compromised.

一方、マスターシークレットを使用してIBE秘密鍵を作成した後、任意のキー回復が不可能、マスター秘密を破壊することも可能です。このプロパティが望まれていない場合、IBEシステムの管理者は、システムによって使用される同一のフォーマットは短命である成分を含有することを必要とするべきです。 【IBECMS]で定義されている同一のフォーマットは、例えば、アイデンティティから計算されるキーの有効期間に関する情報が含まれています。このようなアイデンティティは、簡単に自分のIBE秘密鍵が危殆化した場合は、ユーザーの再入力を許可するように変更することができます。

10. Acknowledgments
10.謝辞

This document is based on the IBCS #1 v2 document of Voltage Security, Inc. Any substantial use of material from this document should acknowledge Voltage Security, Inc. as the source of the information.

この文書は、電圧Security社のIBCS#1 v2のドキュメント情報のソースとして電圧Security、Inc.のを確認する必要があり、この文書からの材料の実質的な使用に基づいています。

11. References
11.参考文献
11.1. Normative References
11.1. 引用規格

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

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

[TLS] Dierks, T. and E. Rescorla, "The Transport Layer Security (TLS) Protocol Version 1.1", RFC 4346, April 2006.

[TLS]ダークス、T.およびE.レスコラ、 "トランスポート層セキュリティ(TLS)プロトコルバージョン1.1"、RFC 4346、2006年4月。

11.2. Informative References
11.2. 参考文献

[BB1] D. Boneh and X. Boyen, "Efficient selective-ID secure identity based encryption without random oracles," In Proc. of EUROCRYPT 04, LNCS 3027, pp. 223-238, 2004.

[BB1] PROCでD. BonehとX. Boyen、 "ランダムオラクルのない効率的な選択-IDの安全なIDベース暗号化、"。 EUROCRYPT 04、LNCS 3027、頁223から238、2004。

[BF] D. Boneh and M. Franklin, "Identity-based encryption from the Weil pairing," in Proc. of CRYPTO 01, LNCS 2139, pp. 213-229, 2001.

[BF] PROCでD. Boneh及びM.フランクリン、「ワイルペアリングからアイデンティティベースの暗号化」。 CRYPTO 01、LNCS 2139、頁213から229、2001年。

[CMS] Housley, R., "Cryptographic Message Syntax (CMS)", RFC 3852, July 2004.

[CMS] Housley氏、R.、 "暗号メッセージ構文(CMS)"、RFC 3852、2004年7月。

[ECC] I. Blake, G. Seroussi, and N. Smart, "Elliptic Curves in Cryptography", Cambridge University Press, 1999.

[ECC] I.ブレイク、G. Seroussi、およびN.スマート、 "暗号における楕円曲線"、ケンブリッジ大学出版局、1999年。

[FIPS186-2] National Institute of Standards and Technology, "Digital Signature Standard," Federal Information Processing Standard 186-2, August 2002.

[FIPS186-2]米国国立標準技術研究所、「デジタル署名標準、」連邦情報処理規格186-2、2002年8月。

[IBEARCH] G. Appenzeller, L. Martin, and M. Schertler, "Identity-based Encryption Architecture", Work in Progress.

[IBEARCH] G.アッペンツェル、L.マーチン、およびM. Schertler、 "IDベース暗号化アーキテクチャ" が進行中で働いています。

[IBECMS] L. Martin and M. Schertler, "Using the Boneh-Franklin and Boneh-Boyen identity-based encryption algorithms with the Cryptographic Message Syntax (CMS)", Work in Progress.

"暗号メッセージ構文(CMS)とBoneh - フランクリンとBoneh-Boyen同一性ベースの暗号化アルゴリズムを使用して" [IBECMS] L. MartinとM. Schertler、進行中で働いています。

[MERKLE] R. Merkle, "A fast software one-way hash function," Journal of Cryptology, Vol. 3 (1990), pp. 43-58.

[マークル] R.マークル、「高速ソフトウェア一方向ハッシュ関数、」暗号学誌、Vol。 3(1990)、頁43-58。

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

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

[SP800-57] E. Barker, W. Barker, W. Burr, W. Polk 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月。

[SHA] National Institute for Standards and Technology, "Secure Hash Standard," Federal Information Processing Standards Publication 180-2, August 2002, with Change Notice 1, February 2004.

変更通知1、2004年2月と標準技術のための[SHA]国立研究所、「セキュアハッシュ標準、」連邦情報処理規格180-2出版、2002年8月、。

[X9.62] American National Standards Institute, "Public Key Cryptography for the Financial Services Industry: The Elliptic Curve Digital Signature Algorithm (ECDSA)," American National Standard for Financial Services X9.62-2005, November 2005.

[X9.62]米国規格協会、「金融サービス業界向け公開鍵暗号:楕円曲線デジタル署名アルゴリズム(ECDSA)、」金融サービスX9.62-2005、2005年11月のためのアメリカの国家規格。

[X.509] ITU-T Recommendation X.509 (2000) | ISO/IEC 9594-8:2001, Information Technology - Open Systems Interconnection - The Directory: Public-key and Attribute Certificate Frameworks.

[X.509] ITU-T勧告X.509(2000)| ISO / IEC 9594から8:2001、情報技術 - 開放型システム間相互接続 - ディレクトリ:公開鍵と証明書の枠組みを属性。

Authors' Addresses

著者のアドレス

Xavier Boyen Voltage Security 1070 Arastradero Rd Suite 100 Palo Alto, CA 94304

ザビエルBoyen電圧セキュリティ1070 Arastradero Rdのスイート100パロアルト、CA 94304

EMail: xavier@voltage.com

メールアドレス:xavier@voltage.com

Luther Martin Voltage Security 1070 Arastradero Rd Suite 100 Palo Alto, CA 94304

ルーサーマーティン電圧セキュリティ1070 Arastradero Rdのスイート100パロアルト、CA 94304

EMail: martin@voltage.com

メールアドレス:martin@voltage.com

Full Copyright Statement

完全な著作権声明

Copyright (C) The IETF Trust (2007).

著作権(C)IETFトラスト(2007)。

This document is subject to the rights, licenses and restrictions contained in BCP 78 and at www.rfc-editor.org/copyright.html, and except as set forth therein, the authors retain all their rights.

この文書では、BCP 78に及びwww.rfc-editor.org/copyright.htmlに含まれる権利と許可と制限の適用を受けており、その中の記載を除いて、作者は彼らのすべての権利を保有します。

This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

この文書とここに含まれている情報は、基礎とCONTRIBUTOR「そのまま」、ORGANIZATION HE / SHEが表すまたはインターネットSOCIETY、(もしあれば)を後援し、IETF TRUST ANDインターネットエンジニアリングタスクフォース放棄ALLに設けられています。保証は、明示または黙示、この情報の利用および特定目的に対する権利または商品性または適合性の黙示の保証を侵害しない任意の保証がこれらに限定されません。

Intellectual Property

知的財産

The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79.

IETFは、本書またはそのような権限下で、ライセンスがたりないかもしれない程度に記載された技術の実装や使用に関係すると主張される可能性があります任意の知的財産権やその他の権利の有効性または範囲に関していかなる位置を取りません利用可能です。またそれは、それがどのような権利を確認する独自の取り組みを行ったことを示すものでもありません。 RFC文書の権利に関する手続きの情報は、BCP 78およびBCP 79に記載されています。

Copies of IPR disclosures made to the IETF Secretariat and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr.

IPRの開示のコピーが利用できるようにIETF事務局とライセンスの保証に行われた、または本仕様の実装者または利用者がそのような所有権の使用のための一般的なライセンスまたは許可を取得するために作られた試みの結果を得ることができますhttp://www.ietf.org/iprのIETFのオンラインIPRリポジトリから。

The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org.

IETFは、その注意にこの標準を実装するために必要とされる技術をカバーすることができる任意の著作権、特許または特許出願、またはその他の所有権を持ってすべての利害関係者を招待します。 ietf-ipr@ietf.orgのIETFに情報を記述してください。