[要約] RFC 5091は、Identity-Based Cryptography Standard (IBCS) #1として、BF(Boneh-Franklin)およびBB1(Boneh-Boyen)暗号システムの実装に関する標準を定めています。この文書の目的は、特にスーパーシンギュラー曲線を使用したアイデンティティベースの暗号(IBC)技術の実装に焦点を当てることにあります。IBCは、公開鍵の生成にユーザーの公開情報(例えば、メールアドレス)を使用することで、証明書の管理が不要になるなど、キー管理の簡素化を実現します。

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-Franklin(BF)およびBoneh-Boyen(BB1)IDベース暗号を実装するアルゴリズムについて説明します。このドキュメントは、Voltage 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.

このドキュメントは、双線形ペアリングに基づくIDベース暗号(IBE)システムを実装するための一連の仕様を提供します。BonehとFranklin(BF)[BF]によって提案されたIBEシステムと、BonehとBoyen(BB1)[BB1]によって提案されたIBEシステムの2つの暗号システムが記述されています。コア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は公開鍵技術ですが、他の公開鍵技術とはわずかではありますが重要な点で異なります。特に、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.

IDベース暗号(IBE)は、公開鍵をIDから計算し、対応する秘密鍵を公開鍵から計算できるようにする公開鍵暗号技術です。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.

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

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/PPSを使用するかを決定します。この場合、PPS URIは、それがサポートするIDの形式によって一意に作成できます。このアーキテクチャにより、特定のIDに対してどの公開パラメーターのセットを使用し、どこからそれらを取得するかが明確になります。

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」、「SHALL」、「SHALL NOT」、「SHOULD」、「SHOULD NOT」、「RECOMMENDED」、「MAY」、および「OPTIONAL」は、[KEYWORDS]で説明されているように解釈されるものとします。

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だけです。このIDがメッセージの宛先となるIDと同じであれば、誰かに安全なメッセージを送信するために、ユーザーは非セキュアなメッセージを送信する以上の情報を必要としません。これは、IBEベースのセキュアメッセージングシステムの主要な利点の1つです。IDの例としては、個人、グループ、または役割の識別子があります。

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公開パラメーターには、受信者のIDを除き、送信者がIBE暗号化メッセージを作成するために必要なすべての情報が含まれています。[IBEARCH]は、PPSが配置されているURI、IBE公開パラメーターの形式、およびそれらの取得方法について説明しています。ユーザーがIBE公開パラメーターを取得するURIは、何らかの方法で認証されなければなりません。PPSサーバーは、この要件を満たすためにTransport Layer Security(TLS)1.1 [TLS]をサポートしなければならず(MUST)、サーバー証明書のサブジェクト名がPPSのURIと一致することを確認しなければなりません(MUST)。[IBEARCH]は、ID形式の定義方法と、すべてのPPSおよびPKGがサポートしなければならない(MUST)最小限の相互運用可能な形式についても説明しています。この手順を図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)を選択し、それを使用してメッセージを暗号化し、CEKを受信者のIBE公開鍵で暗号化します(たとえば、[CMS]で説明されているように)。この操作を図2に示します。このドキュメントでは、2つの形式のIBEを実装するために必要なアルゴリズムについて説明します。[IBECMS]では、Cryptographic Message Syntax(CMS)を使用して、受信者がメッセージを復号化するために必要なIBE情報とともに暗号化されたメッセージをカプセル化する方法について説明しています。

                  CEK ----> Sender ----> IBE-encrypted CEK
        

^ | |

^ ||

Recipient's Identity and IBE Public Parameters

受信者のIDとIBE公開パラメーター

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

図2. IBE公開鍵アルゴリズムを使用した暗号化

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:

暗号化されたメッセージを読むために、IBE暗号化メッセージの受信者はメッセージを解析します(たとえば、[IBECMS]で説明されているように)。これにより、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. PKGからIBE秘密鍵を取得します。

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]をサポートしなければなりません(MUST)。

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を復号化し、その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暗号化メッセージの受信者は、メッセージの暗号化に使用されたIBE公開鍵と自身の認証資格情報をPKGに提供し、IBE公開鍵に対応する秘密鍵を要求します。このドキュメントのセクション4では、PKGとの通信プロトコル、およびすべてのIBE実装がサポートしなければならない(MUST)PKGへの認証のための最小限の相互運用可能な方法を定義しています。IBE秘密鍵のセキュリティはIBEシステムの全体的なセキュリティに不可欠であるため、IBE秘密鍵は安全なプロトコルを介して受信者に転送されなければなりません(MUST)。PKGは、IBE秘密鍵の転送のためにTLS 1.1 [TLS]をサポートしなければなりません(MUST)。この操作を図4に示します。

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

Figure 4. Obtaining an IBE Private Key

図4. IBE秘密鍵の取得

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秘密鍵を取得した後、受信者はそのIBE秘密鍵と対応するIBE公開パラメーターを使用してCEKを復号化します。この操作を図5に示します。次に、CEKを使用して暗号化されたメッセージコンテンツを復号化します(たとえば、[IBECMS]で指定されているように)。

      IBE-encrypted CEK ----> Recipient ----> CEK
        

^ | |

^ ||

IBE Private Key and IBE Public Parameters

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

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

図5. IBE公開鍵アルゴリズムを使用した復号化

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.

このセクションでは、楕円曲線上のIDベース暗号システムに関する概念と定義をまとめます。読者は、数学的背景については[ECC]、およびIDベース暗号に関連するすべての概念に関しては[BF]、[IBEARCH]を参照してください。

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 + a * x + b をF_p上の楕円曲線とします。2次の拡大において、曲線E/F_pは群(E(F_p^2), +)を定義します。これは、F_p^2上の曲線方程式を満たす(F_p^2)^2内のアフィン座標(x, y)の点の加法群であり、零元(または無限遠点)は0と表記されます。

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''をE(F_p^2)の位数qの巡回部分群とし、G2を(F_p^2)*の位数pの巡回部分群とします。

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' -> 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.

これらの条件下では、Tateペアリングとして知られる数学的構成は、効率的に計算可能な写像 e: G1' x G1'' -> G2 を提供します。これは両方の引数に対して線形であり、逆算が困難であると考えられています[BF]。Tateペアリングが計算される選択された楕円曲線に対して、効率的に計算可能な非有理自己準同型 phi: G1' -> G1'' が利用可能な場合、e'(A, B) = e(A, phi(B)) として定義される関数 e': G1' x G1'' -> G2 を構築できます。これを修正Tateペアリングと呼びます。特定の実装で使用される選択された楕円曲線に応じて、Tateペアリングeまたは修正Tateペアリング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 - 512ビットから7680ビットの素数。これは有限体F_pの位数です。

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 - 体F_p上の楕円曲線の方程式。pが2でも3でもない場合、F_p内の指定されたa, bに対して E/F_p: y^2 = x^3 + a * x + 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) - 曲線方程式E/F_pを満たす、F_p内のx, yを持つアフィン座標(x, y)の点の加法群。無限遠点0を含みます。

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(F_p)内の位数qの巡回部分群の埋め込み次数。タイプ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) - 曲線方程式E/F_pを満たすF_p^2内のアフィン座標の点の群。無限遠点0を含みます。

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^lg(x) = xとなる底が2の対数関数。

The term "object identifier" will be abbreviated "OID." A Solinas prime is a prime of the form 2^a (+/-) 2^b (+/-) 1.

「オブジェクト識別子」という用語は「OID」と略されます。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が整数の場合、Aをそれ自身に合計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.

タイプ1曲線 - タイプ1の曲線のクラスは、12を法として11と合同なすべての素数pに対する方程式 E/F_p: y^2 = x^3 + 1 のすべての楕円曲線のクラスとして定義されます。このクラスは、超特異曲線のクラスのサブクラスを形成します。これらの曲線は #E(F_p) = p + 1 を満たし、E(F_p) \ {0} 内のp個の点(x, y)は、x = (y^2 - 1)^(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 = (a_0, a_1) および b = (b_0, b_1) をF_p^2の要素とします。このとき、a + b = ((a_0 + b_0)(mod p), (a_1 + b_1)(mod p)) および a * b = ((a_1 * b_1 - a_0 * b_0)(mod p), (a_1 * b_0 + a_0 * b_1)(mod 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 x F_p^2内の点P = (x, y)を持つE(F_p^2)内の点。0と等しくない点は、アフィン座標(x, y)を使用して内部的に表現されます。ここで、xとyはF_p^2の要素です。

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

o E(F_p^2)の点A、A = (x, y) または 0

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

o 楕円曲線E/F_p: y^2 = x^3 + 1

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. lambda = (3 * x^2) / (2 * y) とします

3. Let x' = lambda^2 - 2 * x

3. x' = lambda^2 - 2 * x とします

4. Let y' = (x - x') * lambda - y

4. y' = (x - x') * lambda - y とします

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

o E(F_p^2)の点A、A = (x_A, y_A) または 0

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

o E(F_p^2)の点B、B = (x_B, y_B) または 0

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

o 楕円曲線E/F_p: y^2 = x^3 + 1

Output:

出力:

o The point A + B

o 点A + B

Method:

方法:

1. If A = 0, return B 2. If B = 0, return A

1. A = 0の場合、Bを返します。 2. B = 0の場合、Aを返します。

3. If x_A = x_B:

3. x_A = x_Bの場合:

(a) If y_A = -y_B, return 0

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

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

(b) それ以外の場合はアルゴリズム3.1.1(PointDouble1)を使用して計算された[2]Aを返します

4. Otherwise:

4. それ以外の場合:

      (a) Let lambda = (y_B - y_A) / (x_B - x_A)
        
      (b) Let x' = lambda^2 - x_A - x_B
        
      (c) Let y' = (x_A - x') * lambda - 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-aryウィンドウ表現を計算します。

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

o 整数 k > 0。ここでkは2進表現 k = {Sum(k_j * 2^j, for j = 0 to l} を持ち、各k_jは0または1、k_l = 0 です。

o An integer window bit-size r > 0

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

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), for i = 0 to d - 1}。ここで k = {Sum(b_i * 2^(e_i), for i = 0 to d - 1} であり、各 b_i = +/- 2^j (0 < 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 <= l の間、以下を行う:

(a) If k_j = 0, then:

(a) k_j = 0 の場合、以下を行う:

i. Let j = j + 1

i. j = j + 1とします

(b) Else:

(b) それ以外:

         i. Let t = min{l, j + r - 1}
        
        ii. Let h_d = (k_t, k_(t - 1), ..., k_j) (base 2)
        

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

iii. h_d > 2^(r - 1)の場合、

            A. Let b_d = h_d - 2^r
        

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

B. 数 (k_l, k_(l-1),...,k_j) (base 2) を1増やす

iv. Else:

iv. それ以外:

A. Let b_d = h_d

A. b_d = h_dとします

v. Let e_d = j

v. e_d = jとします

vi. Let d = d + 1

vi. 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(F_p^2)の点A

o An integer l > 0

o 整数 l > 0

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

o 楕円曲線E/F_p: y^2 = x^3 + a * x + b

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))
        
      (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)
        

2. (Precomputation)

2. (事前計算)

(a) Let A_1 = A

(a) A_1 = Aとします

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

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

(c) i = 1 から 2^(r - 2) - 1 まで、以下を行う:

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

3. Main loop

3. メインループ

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

(a) i = d - 2から0まで-1ずつ、以下を行う:

         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
        

ii. If b_i > 0, then:

ii. b_i > 0の場合、以下を行う:

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

A. アルゴリズム3.1.2 (PointAdd1) を使用して Q = Q + A_(b_i) とします

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
        

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

o ヤコビアン射影座標におけるE(F_p^2)の点(x, y, z) = A

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

o 楕円曲線E/F_p: y^2 = x^3 + 1

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

6. x' = lambda_1^2 - 2 * lambda_3とします

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 * (lambda_3 - x') - 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

o ヤコビアン射影座標におけるE(F_p^2)の点(x_A, y_A, z_A) = A

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

o アフィン座標におけるE(F_p^2) \ {0}の点(x_B, y_B) = B

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

o 楕円曲線E/F_p: y^2 = x^3 + 1

Output:

出力:

o The point A + B in Jacobian projective coordinates

o ヤコビアン射影座標における点A + B

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

8. lambda_6 = lambda_4 - lambda_5 とします

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
        

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 B != 0であるE(F_p^2)の点B

o A point A in E(F_p)

o E(F_p)の点A

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で評価されたAを通過する垂直線の除数である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 B != 0であるE(F_p^2)の点B

o A point A in E(F_p)

o E(F_p)の点A

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

o Bで評価されたAに接する線の因子であるF_p^2の要素

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 の場合、アルゴリズム3.4.1 (EvalVertical1) を使用して EvalVertical1(B, A) を返します

2. (Line computation)

2. (ライン計算)

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

(b) Let b = 2 * y_A

(b) b = 2 * y_A とします

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

3. (Evaluation at B)

3. (Bでの評価)

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

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 B != 0であるE(F_p^2)の点B

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

o E(F_p)の2点A', A''

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) A' = 0の場合、アルゴリズム3.4.1 (EvalVertical1) を使用してEvalVertical1(B, A'')を返します

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

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

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

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

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

(d) A' = A''の場合、アルゴリズム3.4.2 (EvalTangent1) を使用してEvalTangent1(B, A')を返します

2. (Line computation)

2. (ライン計算)

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

(a) a = y_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'
        

3. (Evaluation at B)

3. (Bでの評価)

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

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):楕円曲線上のTateペアリングを計算します。

Input:

入力:

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

o E(F_p)の位数qの点A

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

o E(F_p^2)の位数qの点B

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

o E(F_p)とE(F_p^2)が位数qの部分群を持つような、楕円曲線E/F_pの説明

Output:

出力:

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

o Millerアルゴリズムを使用して計算されたF_p^2の値e(A, B)

Method:

方法:

1. For a type-1 curve E, execute Algorithm 3.5.2 (TateMillerSolinas)

1. タイプ1曲線Eの場合、アルゴリズム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)

o E(F_p)の位数qの点A

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

o E(F_p^2)の位数qの点B o E(F_p)とE(F_p^2)がSolinas素数位数qの部分群を持つような、タイプ1超特異楕円曲線E/F_pの説明。ここで 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

o Millerアルゴリズムを使用して計算されたF_p^2の値e(A, B)

Method:

方法:

1. (Initialization)

1. (初期化)

(a) Let v_num = 1 in F_p^2

(a) F_p^2でv_num = 1とします

(b) Let v_den = 1 in F_p^2

(b) F_p^2でv_den = 1とします

      (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
        

(d) Let t_num = 1 in F_p^2

(d) F_p^2でt_num = 1とします

(e) Let t_den = 1 in F_p^2

(e) F_p^2でt_den = 1とします

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

i. 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)
        
        iv. Let V = (x_V , y_V , z_V ) = [2]V  using Algorithm 3.3.1
            (ProjectivePointDouble1)
        
         v. Let t_den = t_den * EvalVertical1(B, (x_V / z_V^2, y_V /
            z_V^3)using Algorithm 3.4.1 (EvalVertical1)
        

(b) (Normalization)

(b) (正規化)

         i. Let V_b = (x_(V_b) , y_(V_b))
        
            = (x_V / z_V^2, s * y_V / z_V^3) in (F_p)^2,
        

resulting in a point V_b in E(F_p)

E(F_p)の点V_bになります

(c) (Accumulation) Selecting on s:

(c) (累積)sで選択:

i. If s = -1:

i. 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)
        

ii. If s = 1:

ii. s = 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 の寄与の計算)

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

(a) (繰り返しの倍加)n = b から a - 1:

i. Let t_num = t_num^2

i. 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)
        
        iv. Let V = (x_V , y_V , z_V) = [2]V  using Algorithm 3.3.1
            (ProjectivePointDouble1)
        
         v. Let t_den = t_den * EvalVertical1(B, (x_V / z_V^2, y_V /
            z_V^3))) using Algorithm 3.4.1 (EvalVertical1)
        

(b) (Normalization)

(b) (正規化)

         i. Let 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, s * x_V / z_V^3) in (F_p)^2,

resulting in a point V_a in E(F_p)

E(F_p)の点V_aになります

(c) (Accumulation)

(c) (累積)

i. Let v_num = v_num * t_num

i. v_num = v_num * t_numとします

ii. Let v_den = v_den * t_den

ii. 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)
        

(c) If c = -1, then:

(c) c = -1の場合、以下を行う:

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

i. アルゴリズム3.4.1 (EvalVertical1) を使用して v_den = v_den * EvalVertical1(B, A) とします

5. (Correcting exponent)

5. (指数の修正)

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

6. (Final result)

6. (最終結果)

(a) Return (v_num / v_den)^eta

(a) (v_num / v_den)^eta を返します

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は2^(hashlen)未満でなければなりません(MUST)。ここで、hashlenはハッシュ関数hashfcnの出力を構成するオクテット数です。HashToRangeは、[MERKLE]のハッシュ手法に基づいており、これは基礎となるハッシュ関数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|オクテットの文字列s

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

o Ceiling(lg(n) / 8)オクテットとして表される正の整数n。

o A cryptographic hash function hashfcn

o 暗号化ハッシュ関数hashfcn

Output:

出力:

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

o 0からn -1の範囲の正の整数V

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:

4. i = 1 から 2 の場合、以下を行う:

      (a) Let t_i = h_(i - 1) || s, which is the (|s| + hashlen)- octet
          string concatenation of the strings h_(i - 1) and 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) h_i = hashfcn(t_i) とします。これは、入力t_iに対するハッシュアルゴリズムhashfcnから得られるhashlenオクテットの文字列です

(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

(c) a_i = Value(h_i) を、符号なしビッグエンディアン規則で解釈された生のオクテット文字列h_iによって示される0から256^hashlen - 1の範囲の整数とします

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

5. Let v = v_l (mod n)

5. 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の出力のバイト数以下でなければなりません(MUST)。HashBytesは、[MERKLE]のハッシュ手法に基づいており、これは基礎となるハッシュ関数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

o 暗号化ハッシュ関数hashfcn

Output:

出力:

o A string r comprising b octets

o bオクテットを含む文字列r

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 = Ceiling(b / hashlen) とします

5. For each i in 1 to l, do:

5. 1からlの各iについて、以下を行う:

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

(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)オクテットの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. 拡張要素を文字列としてエンコードします

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.

Canonical(p, k, o, v)はF_p^kの要素vを取り、vを表す固定長の正規オクテット文字列を返します。パラメーターoは0または1でなければならず(MUST)、エンコードの順序を指定します。

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

アルゴリズム4.3.1(Canonical):拡大体F_p^2の要素を文字列としてエンコードします。

Input:

入力:

o An element v in F_p^2

o F_p^2の要素v

o A description of F_p^2

o F_p^2の説明

o An ordering parameter o, either 0 or 1

o 順序付けパラメーターo、0または1のいずれか

Output:

出力:

o A fixed-length string s representing v

o vを表す固定長文字列s

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のいずれかでなければならず(MUST)、エンコードの順序を指定します。

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^2の要素v

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

o pの説明。ここで、pは4を法として3と合同です

o A ordering parameter o, either 0 or 1

o 順序付けパラメーターo、0または1のいずれか

Output:

出力:

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

o サイズ 2 * Ceiling(lg(p) / 8) オクテットの文字列s

Method:

方法:

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

1. l = Ceiling(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におけるaのビッグエンディアンゼロパディング固定長オクテット文字列表現とします

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)
        
      (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)
        

6. Return s

6. sを返します

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文字列id、E(F_p)またはE(F_p^2)内の素数位数qの部分群の説明、および暗号学的ハッシュ関数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

o 楕円曲線E

o A prime p

o 素数p

o A prime q

o 素数q

o A string id

o 文字列ID

o A cryptographic hash function hashfcn

o 暗号化ハッシュ関数hashfcn

Output:

出力:

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

o E(F_p)の位数qの点Q_id = (x, y)

Method:

方法:

1. For a type-1 curve E, execute Algorithm 4.4.2 (HashToPoint1)

1. タイプ1曲線Eの場合、アルゴリズム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.

HashToPoint1(p, q, id, hashfcn)は、ID文字列idとE(F_p)内の位数qの部分群の説明(ここでE: y^2 = x^3 + 1、pは12を法として11と合同)を取り、暗号学的ハッシュ関数hashfcnを使用して計算されたE(F_p)内の位数qの点Q_idを返します。パラメーターp、q、およびhashfcnは、セクション5.1.2またはセクション6.1.2で定義されている有効な公開パラメーターのセットの一部でなければなりません(MUST)。

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

o 文字列ID

o A cryptographic hash function hashfcn

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

Output:

出力:

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

o E(F_p)の位数qの点Q_id

Method:

方法:

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

1. アルゴリズム4.1.1 (HashToRange) を使用して、y = HashToRange(id, p, hashfcn) とします。これは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) modulo 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(F_p)の位数qの点です

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).

Pairing(E, p, q, A, B)は、共に位数qの2つの点AとBを取り、タイプ1の場合、F_p^2内の修正ペアリング e'(A, phi(B)) を返します。ここでAとBは共にE(F_p)にあります。

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

アルゴリズム4.5.1(Pairing):曲線タイプに応じて、通常のTateペアリングまたは修正Tateペアリングを計算します。

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

o E(F_p)とE(F_p^2)が位数qの部分群を持つような、楕円曲線E/F_pの説明

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

o E(F_p)またはE(F_p^2)の位数qの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^2内の e'(A, B) の値。ここでAとBは共にE(F_p)にあります。

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曲線上の修正Tateペアリングを計算します。pとqの値は、セクション5.1.2またはセクション6.1.2で定義されている有効な公開パラメーターのセットの一部でなければなりません(MUST)。

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

o 曲線E/F_p: y^2 = x^3 + 1。ここでpは12を法として11と合同であり、E(F_p)は位数qの部分群を持ちます

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

o E(F_p)の位数qの2つの点AとB

Output:

出力:

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

o F_p^2における e'(A, B) = e(A, phi(B)) の値

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) F_p x F_pの(x, y)をE(F_p)のBの座標とします

      (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
        
      (c) Let x' =  x * zeta in F_p^2
        
      (d) Let B' = (x', y) in F_p^2 x F_p
        

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. セクション3.5で説明されているアルゴリズム3.5.1 (Tate) のように、Miller法を使用して、F_p^2におけるTateペアリング e(A, B') = e(A, phi(B)) を計算します

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つの双線形ペアリングの比 Pairing(E, p, q, A, B) / Pairing(E, p, q, C, D)、または同等に、積 Pairing(E, p, q, A, B) * Pairing(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(F_p)の位数qであり、結果は拡大体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つのペアリングの比をより効率的に計算できることです。このような計算には、アルゴリズム3.5.2 (TateMillerSolinas) のステップ2(a)i、2(a)ii、3(a)i、および3(a)iiにおける繰り返しの倍加や、アルゴリズム3.5.2 (TateMillerSolinas) のステップ6(a)における最終的なべき乗が含まれます。

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つの通常のTateペアリングまたは修正Tateペアリングの比を計算します。

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

o E(F_p)とE(F_p^2)が位数qの部分群を持つような、楕円曲線E/F_pの説明

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

o E(F_p)またはE(F_p^2)の位数qの4つの点A, B, C, D

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 超特異曲線では、F_p^2内の e'(A, B) / e'(C, D) の値。ここでA, B, C, DはすべてE(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つの修正Tateペアリングの比を計算します。pとqの値は、セクション5.1.2またはセクション6.1.2で定義されている有効な公開パラメーターのセットの一部でなければなりません(MUST)。

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

o 曲線E/F_p: y^2 = x^3 + 1。ここでpは12を法として11と合同であり、E(F_p)は位数qの部分群を持ちます

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

o E(F_p)の位数qの4つの点A, B, C, およびD

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

o F_p^2における e'(A, B) / e'(C, D) = e(A, phi(B)) / e(C, phi(D)) = e(A, phi(B)) * e(-C, phi(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).

アルゴリズム4.5.2 (Pairing1) を2回呼び出してペアリングの積 Pairing1(E, p, q, A, B) * Pairing1(E, p, q, -C, D) を計算することにより、より低速ではありますが、常に正しい結果を得ることができます。

5. The Boneh-Franklin BF Cryptosystem
5. Boneh-Franklin BF Cryptosystem

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

この章では、[BF]で説明されているように、Boneh-Franklin IDベース暗号システムを構成するアルゴリズムについて説明します。

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 公開パラメーターのセット(version, 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の尺度は、古典的なDiffie-Hellmanまたは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

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

Output:

出力:

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

o 共通の公開パラメーターのセット(version, p, q, P, Ppub, hashfcn)

o A corresponding master secret s

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

Method:

方法:

1. Set the version to version = 2.

1. version = 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]
        
      (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])
        
      (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])
        
      (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])
        
      (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])
        

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
        

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)
        
      (b) Let P = [12 * r]P'
        

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

(c) P = 0の場合、ステップ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) 範囲2からq - 1のランダムな整数sを選択します

      (b) Let 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. (version, 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文字列idと公開パラメーターのセットを取り、点Q_idを返します。使用される公開パラメーターは、セクション5.1.2で定義されている有効な公開パラメーターのセットでなければなりません(MUST)。

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

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

Input:

入力:

o An identity string id

o ID文字列ID

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

o 公開パラメーターのセット(version, 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)

o E(F_p)またはE(F_p^2)の位数qの点Q_id

Method:

方法:

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

1. アルゴリズム4.4.1 (HashToPoint) を使用して、Q_id = HashToPoint(E, p, q, id, hashfcn) とします

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文字列id、公開パラメーターのセット、および対応するマスターシークレットを取り、点S_idを返します。使用される公開パラメーターは、セクション5.1.2で定義されている有効な公開パラメーターのセットでなければなりません(MUST)。

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

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

Input:

入力:

o An identity string id

o ID文字列ID

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

o 公開パラメーターのセット(version, E, p, q, P, P_pub, hashfcn)

Output:

出力:

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

o E(F_p)の位数qの点S_id

Method:

方法:

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

1. アルゴリズム4.4.1 (HashToPoint) を使用して、Q_id = HashToPoint(E, p, q, id, hashfcn) とします

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. IDとパブリックパラメーターを使用してセッションキーを暗号化する

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.

BFencryptは、公開パラメーターブロック、ID id、および平文mの3つの入力を取ります。平文はランダムな対称セッションキーでなければなりません(MUST)。使用される公開パラメーターは、セクション5.1.2で定義されている有効な公開パラメーターのセットでなければなりません(MUST)。

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

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

Input:

入力:

o A plaintext string m of size |m| octets

o サイズ|m|オクテットの平文文字列m

o A recipient identity string id

o 受信者ID文字列ID

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

o 公開パラメーターのセット(version, 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(F_p) x {0, ... , 255}^hashlen x {0, ... , 255}^|m| における暗号文タプル (U, V, W)

Method:

方法:

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

1. hashlenを、公開パラメーターからの暗号学的ハッシュ関数hashfcnの出力の長さとします。

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. アルゴリズム4.4.1 (HashToPoint) を使用して、Q_id = HashToPoint(E, p, q, id, hashfcn) とします。これはE(F_p)の位数qの点になります

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

3. ビッグエンディアン規則で (hashlen / 8) オクテット文字列として表されるランダムなhashlenビットベクトルrhoを選択します

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

4. hashfcnアルゴリズムを入力mに適用した結果として得られるhashlenオクテット文字列 t = hashfcn(m) とします

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. アルゴリズム4.1.1 (HashToRange) をrhoとtの (2 * hashlen) オクテット連結に適用した結果として得られる0からq - 1の範囲の整数 l = HashToRange(rho || t, q, hashfcn) とします

6. Let U = [l]P, which is a point of order q in E(F_p)

6. U = [l]P とします。これはE(F_p)の位数qの点です

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. theta = Pairing(E, p, q, P_pub, Q_id) とします。これはアルゴリズム4.5.1 (Pairing) の修正Tateペアリングを使用して取得された拡大体F_p^2の要素です

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

8. theta' = theta^l とします。これはF_p^2においてthetaを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 (Canonical) を使用して z = Canonical(p, k, 0, theta') とします。その結果はtheta'の正規文字列表現です

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

10. hashfcnハッシュアルゴリズムを使用してw = hashfcn(z)とします。その結果はhashlenオクテット文字列です

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

11. V = w XOR rho とします

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|, rho, hashfcn) XOR m とします。これは、シードrhoでアルゴリズム4.2.1 (HashBytes) によって生成された擬似ランダムバイトの最初の|m|オクテットとmのビットごとのXORです

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.

BFdecryptは、公開パラメーターブロック、秘密鍵ブロックキー、および(U', V', W')として解析された暗号文の3つの入力を取ります。使用される公開パラメーターは、セクション5.1.2で定義されている有効な公開パラメーターのセットでなければなりません(MUST)。

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)

o E(F_p)の位数qの秘密鍵点S_id

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

o E(F_p) x {0, ... , 255}^hashlen x {0, ... , 255}* における暗号文トリプル (U, V, W)

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

o 公開パラメーターのセット(version, E, p, q, P, P_pub, hashfcn)

Output:

出力:

o A decrypted plaintext m, or an invalid ciphertext flag Method:

o 復号化された平文m、または無効な暗号文フラグ 方法:

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

1. hashlenを、オクテットで測定されたハッシュ関数の出力の長さとします

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

2. アルゴリズム4.5.1 (Pairing) の修正Tateペアリングを適用して、theta = Pairing(E, p, q, U, S_id) とします

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 (Canonical) を使用して z = Canonical(p, k, 0, theta) とします。その結果はthetaの正規文字列表現です

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

5. rho = w XOR V とします。これはwとVのビットごとのXORです

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|, rho, hashfcn) XOR W とします。これは、シードrhoでアルゴリズム4.2.1 (HashBytes) によって生成された擬似ランダムバイトの最初の|W|オクテットとmのビットごとのXORです

7. Let t = hashfcn(m) using the hashfcn algorithm

7. hashfcnアルゴリズムを使用して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

8. rhoとtの (2 * hashlen) オクテット連結に対してアルゴリズム4.1.1 (HashToRange) を使用して、l = HashToRange(rho || 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 Cryptosystem

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のアイデンティティベースの暗号システムの最初を構成するアルゴリズムについて説明します。説明は、[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) version = 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は、古典的なDiffie-HellmanまたはRSA公開鍵暗号システムにおいて同等のセキュリティを持つと考えられる[BF]モジュラスのビットサイズに対応します。この実装では、nは1024、2048、3072、7680、または15360のいずれかでなければなりません(MUST)。これらはそれぞれ、80、112、128、192、および256ビットの同等のビットセキュリティレベルに対応します。

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)

o 公開パラメーターのセット(version, k, E, p, q, P, P_1, P_2, P_3, v, hashfcn)

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

o 対応するマスターシークレットのトリプル (alpha, beta, gamma)

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])
        
      (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])
        
      (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])
        
      (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])
        

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
        

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)
        
      (b) Let P = [12 * r]P'
        

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

(c) P = 0の場合、ステップ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) それぞれ1からq - 1の範囲にある3つのランダムな整数alpha, beta, gammaを選択します

      (b) Let P_1 = [alpha]P
        
      (c) Let P_2 = [beta]P
        
      (d) Let P_3 = [gamma]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 = Pairing(E, p, q, P_1, P_2) とします。これはアルゴリズム4.5.1 (Pairing) の修正Tateペアリングを使用して取得された拡大体F_p^2の要素です

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

5. (version, E, p, q, P, P_1, P_2, P_3, v, hashfcn)は公開パラメーターです

6. (alpha, beta, gamma) constitute the master secret

6. (alpha, beta, gamma) はマスターシークレットを構成します

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文字列idと公開パラメーターのセットを取り、整数h_idを返します。使用される公開パラメーターは、セクション6.1.2で定義されている有効な公開パラメーターのセットでなければなりません(MUST)。

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):ID文字列に対応する公開鍵を導出します。使用される公開パラメーターは、セクション6.1.2で定義されている有効な公開パラメーターのセットでなければなりません(MUST)。

Input:

入力:

o An identity string id

o ID文字列ID

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

o 共通の公開パラメーターのセット(version, k, E, p, q, P, P_1, P_2, P_3, v, hashfcn)

Output:

出力:

o An integer h_id modulo q

o 整数H_IDモジュロQ

Method:

方法:

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

1. h_id = hashtorange(id、q、hashfcn)、アルゴリズム4.1.1(ハッシュトランジュ)を使用してください

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文字列id、公開パラメーターのセット、および対応するマスターシークレットを取り、2つの点D_0とD_1で構成される秘密鍵を返します。使用される公開パラメーターは、セクション6.1.2で定義されている有効な公開パラメーターのセットでなければなりません(MUST)。

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

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

Input:

入力:

o An identity string id

o ID文字列ID

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

o 公開パラメーターのセット(version, k, E, p, q, P, P_1, P_2, P_3, v, hashfcn)

Output:

出力:

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

o 点のペア (D_0, D_1)、それぞれがE(F_p)において位数qを持ちます

Method:

方法:

1. Select a random integer r in the range 1 to q - 1

1. 範囲1からq - 1のランダムな整数rを選択します

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) アルゴリズム4.1.1 (HashToRange) を使用して、h_id = HashToRange(id, q, hashfcn) とします

      (b) Let y = alpha * beta + r * (alpha * h_id + gamma) in F_q
        
      (c) Let D_0 = [y]P
        

3. Calculate the point D_1 as follows:

3. 次のようにポイントD_1を計算します。

      (a) Let 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. IDとパブリックパラメーターを使用してセッションキーを暗号化する

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.

BBencryptは、公開パラメーターのセット、ID id、および平文mの3つの入力を取ります。平文はランダムなセッションキーでなければなりません(MUST)。使用される公開パラメーターは、セクション6.1.2で定義されている有効な公開パラメーターのセットでなければなりません(MUST)。

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

アルゴリズム6.4.1(BBencrypt):ID文字列のセッションキーを暗号化します。

Input:

入力:

o A plaintext string m of size |m| octets

o サイズ|m|オクテットの平文文字列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 受信者ID文字列id o 公開パラメーターのセット(version, 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|

o F_q x E(F_p) x E(F_p) x {0, ... , 255}^|m| における暗号文タプル (u, C_0, C_1, y)

Method:

方法:

1. Select a random integer s in the range 1 to q - 1

1. 範囲1からq - 1のランダムな整数sを選択します

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. w = v^s とします。これはF_p^2においてvをs乗したもので、結果はF_p^2の位数qの要素です

3. Calculate the point C_0 as follows:

3. 次のようにポイントC_0を計算します。

      (a) Let 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) アルゴリズム4.1.1 (HashToRange) を使用して、h_id = HashToRange(id, q, hashfcn) とします

(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
        

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 (Canonical) を使用して psi = Canonical(p, k, 1, w) とします。その結果は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 = Ceiling(lg(p) / 8) とします。これはF_pの整数を表すために必要なオクテット数であり、これらのF_p要素のそれぞれを固定長lのビッグエンディアンゼロパディングオクテット文字列として表します:

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

(x_0)_(256^l) はC_0のx座標を表します

(y_0)_(256^l) to represent the y coordinate of C_0

(y_0)_(256^l) はC_0のy座標を表します

(x_1)_(256^l) to represent the x coordinate of C_1

(x_1)_(256^l) はC_1のx座標を表します

(y_1)_(256^l) to represent the y coordinate of C_1

(y_1)_(256^l) はC_1のy座標を表します

6. Encrypt the message m into the string y as follows:

6. 次のように、メッセージmを文字列yに暗号化します。

(a) Compute an encryption key h_0 as a two-pass hash of w via its representation psi:

(a) 表現psiを介してwの2パスハッシュとして暗号化キーh_0を計算します:

i. Let zeta = hashfcn(psi) using the hashing algorithm hashfcn

i. ハッシュアルゴリズムhashfcnを使用してzeta = hashfcn(psi)とします

ii. Let xi = hashfcn(zeta || psi) using the hashing algorithm hashfcn

ii. ハッシュアルゴリズムhashfcnを使用して xi = hashfcn(zeta || psi) とします

iii. Let h' = xi || zeta, the concatenation of the previous two hashfcn outputs

iii. h' = xi || zeta とします。これは前の2つの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'

(b) y = HashBytes(|m|, h', hashfcn) XOR m とします。これは、シードh'でアルゴリズム4.2.1 (HashBytes) によって生成された擬似ランダムバイトの最初の|m|オクテットとmのビットごとのXORです

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) (w, C_0, C_1, y) の表現のデュアルパスハッシュとして、ワンタイムパッド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. ハッシュアルゴリズムhashfcnを使用して eta = hashfcn(sigma) とします

iii. Let mu = hashfcn(eta || sigma) using the hashfcn hashing algorithm

iii. hashfcnハッシュアルゴリズムを使用して mu = hashfcn(eta || sigma) とします

iv. Let h'' = mu || eta, the concatenation of the previous two outputs of hashfcn

iv. h'' = mu || eta とします。これはhashfcnの前の2つの出力の連結です

(b) Build the tag u as the encryption of the integer s with the one-time pad h'':

(b) ワンタイムパッドh''を使用して整数sの暗号化としてタグuを構築します:

i. Let rho = HashToRange(h'', q, hashfcn) to get an integer in Z_q

i. rho = HashToRange(h'', q, hashfcn) とし、Z_qの整数を取得します

ii. Let u = s + rho (mod q)

ii. u = s + rho (mod 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.

BBdecryptは、公開パラメーターのセット(version, k, E, p, q, P, P_1, P_2, P_3, v, hashfcn)、秘密鍵(D_0, D_1)、および暗号文(u, C_0, C_1, y)の3つの入力を取ります。メッセージmを出力するか、特定の鍵に対して暗号文が無効である場合はエラーを通知します。使用される公開パラメーターは、セクション6.1.2で定義されている有効な公開パラメーターのセットでなければなりません(MUST)。

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)

o E(F_p)の位数qの点のペア (D_0, D_1) として与えられる秘密鍵

o A ciphertext quadruple (u, C_0, C_1, y) in Z_q x E(F_p) x E(F_p) x {0, ... , 255}*

o Z_q x E(F_p) x E(F_p) x {0, ... , 255}* における暗号文四つ組 (u, C_0, C_1, y)

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

o 公開パラメーターのセット(version, k, E, p, q, P, P_1, P_2, P_3, v, hashfcn)

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)

1. w = PairingRatio(E, p, q, C_0, D_0, C_1, D_1) とします。これはアルゴリズム4.6.1 (PairingRatio) で指定されているように、2つのTateペアリング(タイプ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) アルゴリズム4.3.1 (Canonical) を使用して psi = Canonical(p, k, 1, w) とします。結果は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 = Ceiling(lg(p) / 8) とします。これはF_pの整数を表すために必要なオクテット数であり、これらのF_p要素のそれぞれを固定長lのビッグエンディアンゼロパディングオクテット文字列として表します:

          (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_1)_(256^l) to represent the x coordinate of C_1

(x_1)_(256^l) はC_1のx座標を表します

(y_1)_(256^l) to represent the y coordinate of C_1

(y_1)_(256^l) はC_1のy座標を表します

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

i. ハッシュアルゴリズムhashfcnを使用してzeta = hashfcn(psi)とします

ii. Let xi = hashfcn(zeta || psi) using the hashing algorithm hashfcn

ii. ハッシュアルゴリズムhashfcnを使用してxi = hashfcn(zeta || psi)とします

iii. Let h' = xi || zeta, the concatenation of the previous two hashfcn outputs

iii. h' = xi || zeta とします。これは前の2つの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) XOR y とします。これは、シードh'でアルゴリズム4.2.1 (HashBytes) によって生成された擬似ランダムバイトの最初の|y|オクテットとyのビットごとのXORです

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) (w、c_0、c_1、y)の表現のデュアルパスハッシュとして1回限りのパッド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。ハッシュアルゴリズムhashfcnを使用して、eta = hashfcn(sigma)

iii. Let mu = hashfcn(eta || sigma) using the hashing algorithm hashfcn

iii。ハッシュアルゴリズムHashfcnを使用して、Mu = Hashfcn(ETA || Sigma)とします

iv. Let h'' = mu || eta, the concatenation of the previous two hashfcn outputs

IV。let h '' = mu ||ETA、前の2つのHasHFCN出力の連結

(b) Unblind the encryption randomization integer s from the tag u using h'':

(b) h ''を使用してタグuから暗号化ランダム化整数をblindします:

i. Let rho = HashToRange(h'', q, hashfcn) to get an integer in Z_q

i. rho = hashtorange(h ''、q、hashfcn)をz_qで整数を取得します

ii. Let s = u - rho (mod q)

ii。s = u -rho(mod q)と

5. Verify the ciphertext consistency according to the decrypted values:

5. 復号化された値に従って、暗号文の一貫性を確認します。

(a) Test whether the equality w = v^s holds

(a) 等式w = v^sが成り立つかどうかをテストします

      (b) Test whether the equality C_0 = [s]P holds
        

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

(b) それ以外の場合、つまり、ステップ5で実行された両方のテストが成功すると、復号化されたメッセージが出力されます

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
        
   p = 0xbffffffffffffffffffffffffffcffff3
        
   E/F_p: y^2 = x^3 + 1
        
   A = (0x489a03c58dcf7fcfc97e99ffef0bb4634,
   0x510c6972d795ec0c2b081b81de767f808)
        
   l = 0xb8bbbc0089098f2769b32373ade8f0daf
        

Output:

出力:

   [l]A = (0x073734b32a882cc97956b9f7e54a2d326,
   0x9c4b891aab199741a44a5b6b632b949f7)
        
7.2. Algorithm 4.1.1 (HashToRange)
7.2. アルゴリズム4.1.1(ハッシュトランジュ)

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")
        
   n = 0xffffffffffffffffffffefffffffffffffffffff
        

hashfcn = 1.3.14.3.2.16 (SHA-1)

hashfcn = 1.3.14.3.2.16(sha-1)

Output:

出力:

   v = 0x79317c1610c1fc018e9c53d89d59c108cd518608
        
7.3. Algorithm 4.5.1 (Pairing)
7.3. アルゴリズム4.5.1(ペアリング)

Input:

入力:

   q = 0xfffffffffffffffffffffffffffbffff
        
   p = 0xbffffffffffffffffffffffffffcffff3
        
   E/F_p: y^2 = x^3 + 1
        
   A = (0x489a03c58dcf7fcfc97e99ffef0bb4634,
   0x510c6972d795ec0c2b081b81de767f808)
        
   B = (0x40e98b9382e0b1fa6747dcb1655f54f75,
   0xb497a6a02e7611511d0db2ff133b32a3f)
        

Output:

出力:

   e'(A, B) = (0x8b2cac13cbd422658f9e5757b85493818,
   0xbc6af59f54d0a5d83c8efd8f5214fad3c)
        
7.4. Algorithm 5.2.1 (BFderivePubl)
7.4. アルゴリズム5.2.1(bfderivepubl)

Input:

入力:

   id = 6f:42:62 ("Bob")
        
   version = 2
        
   p = 0xa6a0ffd016103ffffffffff595f002fe9ef195f002fe9efb
        
   q = 0xffffffffffffffffffffffeffffffffffff
        
   P = (0x6924c354256acf5a0ff7f61be4f0495b54540a5bf6395b3d,
   0x024fd8e2eb7c09104bca116f41c035219955237c0eac19ab)
        
   P_pub = (0xa68412ae960d1392701066664d20b2f4a76d6ee715621108,
   0x9e7644e75c9a131d075752e143e3f0435ff231b6745a486f)
        

Output:

出力:

   Q_id = (0x22fa1207e0d19e1a4825009e0e88e35eb57ba79391498f59,
   0x982d29acf942127e0f01c881b5ec1b5fe23d05269f538836)
        
7.5. Algorithm 5.3.1 (BFextractPriv)
7.5. アルゴリズム5.3.1(bfextractpriv)

Input:

入力:

   s = 0x749e52ddb807e0220054417e514742b05a0
        
   version = 2
        
   p = 0xa6a0ffd016103ffffffffff595f002fe9ef195f002fe9efb
        
   q = 0xffffffffffffffffffffffeffffffffffff
        
   P = (0x6924c354256acf5a0ff7f61be4f0495b54540a5bf6395b3d,
   0x024fd8e2eb7c09104bca116f41c035219955237c0eac19ab)
        
   P_pub = (0xa68412ae960d1392701066664d20b2f4a76d6ee715621108,
   0x9e7644e75c9a131d075752e143e3f0435ff231b6745a486f)
        

Output:

出力:

   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).

注:次の値を使用して、アルゴリズム5.5.1(BFDECRYPT)をテストすることもできます。

Input:

入力:

   m = 48:69:20:74:68:65:72:65:21 ("Hi there!")
        
   id = 6f:42:62 ("Bob")
        
   version = 2
        
   p = 0xa6a0ffd016103ffffffffff595f002fe9ef195f002fe9efb
        
   q = 0xffffffffffffffffffffffeffffffffffff
        
   P = (0x6924c354256acf5a0ff7f61be4f0495b54540a5bf6395b3d,
   0x024fd8e2eb7c09104bca116f41c035219955237c0eac19ab)
        
   P_pub = (0xa68412ae960d1392701066664d20b2f4a76d6ee715621108,
   0x9e7644e75c9a131d075752e143e3f0435ff231b6745a486f)
        

Output:

出力:

Using the random value rho = 0xed5397ff77b567ba5ecb644d7671d6b6f2082968, we get the following output:

ランダム値rho = 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
        
   W = f9:04:ba:40:30:e9:ce:6e:ff
        
7.7. Algorithm 6.3.1 (BBextractPriv)
7.7. アルゴリズム6.3.1(bbextractpriv)

Input:

入力:

   alpha = 0xa60c395285ded4d70202c8283d894bad4f0
        
   beta = 0x48bf012da19f170b13124e5301561f45053
        
   gamma = 0x226fba82bc38e2ce4e28e56472ccf94a499
        
   version = 2
        
   p = 0x91bbe2be1c8950750784befffffffffffff6e441d41e12fb
        
   q = 0xfffffffffbfffffffffffffffffffffffff
        
   P = (0x13cc538fe950411218d7f5c17ae58a15e58f0877b29f2fe1,
   0x8cf7bab1a748d323cc601fabd8b479f54a60be11e28e18cf)
        
   P_1 = (0x0f809a992ed2467a138d72bc1d8931c6ccdd781bedc74627,
   0x11c933027beaaf73aa9022db366374b1c68d6bf7d7a888c2)
        
   P_2 = (0x0f8ac99a55e575bf595308cfea13edb8ec673983919121b0,
   0x3febb7c6369f5d5f18ee3ea6ca0181448a4f3c4f3385019c)
        
   P_3 = (0x2c10b43991052e78fac44fdce639c45824f5a3a2550b2a45,
   0x6d7c12d8a0681426a5bbc369c9ef54624356e2f6036a064f)
        
   v = (0x38f91032de6847a89fc3c83e663ed0c21c8f30ce65c0d7d3,
   0x44b9aa10849cc8d8987ef2421770a340056745da8b99fba2)
        
   id = 6f:42:62 ("Bob")
        

Output:

出力:

Using the random value r = 0x695024c25812112187162c08aa5f65c7a2c, we get the following output:

ランダム値r = 0x695024c25812112187162c08aa5f65c7a2cを使用して、次の出力を取得します。

   D_0 = (0x3264e13feeb7c506493888132964e79ad657a952334b9e53,
   0x3eeaefc14ba1277a1cd6fdea83c7c882fe6d85d957055c7b)
        
   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).

注:次の値を使用して、アルゴリズム5.5.1(BFDECRYPT)をテストすることもできます。

Input:

入力:

   m = 48:69:20:74:68:65:72:65:21 ("Hi there!")
        
   id = 6f:42:62 ("Bob")
        
   version = 2
        
   E: y^2 = x^3 + 1
        
   p = 0x91bbe2be1c8950750784befffffffffffff6e441d41e12fb
        
   q = 0xfffffffffbfffffffffffffffffffffffff
        
   P = (0x13cc538fe950411218d7f5c17ae58a15e58f0877b29f2fe1,
   0x8cf7bab1a748d323cc601fabd8b479f54a60be11e28e18cf)
        
   P_1 = (0x0f809a992ed2467a138d72bc1d8931c6ccdd781bedc74627,
   0x11c933027beaaf73aa9022db366374b1c68d6bf7d7a888c2)
        
   P_2 = (0x0f8ac99a55e575bf595308cfea13edb8ec673983919121b0,
   0x3febb7c6369f5d5f18ee3ea6ca0181448a4f3c4f3385019c)
        
   P_3 = (0x2c10b43991052e78fac44fdce639c45824f5a3a2550b2a45,
   0x6d7c12d8a0681426a5bbc369c9ef54624356e2f6036a064f)
        
   v = (0x38f91032de6847a89fc3c83e663ed0c21c8f30ce65c0d7d3,
   0x44b9aa10849cc8d8987ef2421770a340056745da8b99fba2)
        

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
        
   C_0 = (0x79f8f35904579f1aaf51897b1e8f1d84e1c927b8994e81f9,
   0x1cf77bb2516606681aba2e2dc14764aa1b55a45836014c62)
      C_1 = (0x410cfeb0bccf1fa4afc607316c8b12fe464097b20250d684,
   0x8bb76e7195a7b1980531b0a5852ce710cab5d288b2404e90)
        
   y = 82:a6:42:b9:bb:e9:82:c4: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) }
        
   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.
   --
        
   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 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.
   --
        
   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.
        
    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 ---

-- -- 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.
   --
        
   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.
   --
        
   BFPrivateKeyBlock ::= SEQUENCE {
      version     INTEGER { v2(2) },
      privateKey  FpPoint
   }
        
   --
   -- A BF master secret is an integer.
   -- The only version supported is version 2.
   --
        
   BFMasterSecret ::= SEQUENCE {
      version        INTEGER {v2(2) },
      masterSecret   INTEGER
   }
        
   --
   -- BF ciphertext block
   -- The only version supported is version 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.
   --
   --
        
   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.
   --
        
   BB1MasterSecret ::= SEQUENCE {
      version  INTEGER { v2(2) },
      alpha    INTEGER,
      beta     INTEGER,
      gamma    INTEGER
   }
        
   --
   -- BB1 private Key block
   -- The only version supported is version 2.
   --
        
   BB1PrivateKeyBlock ::= SEQUENCE {
      version  INTEGER { v2(2) },
      pointD0  FpPoint,
      pointD1  FpPoint
   }
        
   --
   -- BB1 ciphertext block
   -- The only version supported is version 2.
   --
        
   BB1CiphertextBlock ::= SEQUENCE {
      version     INTEGER {v2(2) },
      pointChi0   FpPoint,
      pointChi1   FpPoint,
      nu          INTEGER,
      y           OCTET STRING
   }
        

END

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.

このドキュメントで説明されているアルゴリズムのユーザーには、50ビット、112ビット、128ビット、192ビット、または256ビットの5つのレベルの暗号強度のいずれかが必要になると想定しています。80ビットレベルはレガシーアプリケーションに適しているため、2010年以降に耐用年数が延長される情報を保護するために使用しないでください。112ビットレベルは、トリプルデスキーのキー輸送での使用に適しており、保護するのに適している必要があります。耐用年数が2030年までまで及ぶ情報。128ビットレベル以上は、対応する長さ以下の高度な暗号化標準(AES)キーの輸送における使用に適しており、耐用年数が過ぎている情報を保護するのに適しています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
        

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.

このドキュメントは、国立標準技術研究所(NIST)ハッシュアルゴリズム[SHA]が楕円曲線上のポイントまたは整数のポイントのいずれかに対するハッシュアイデンティティの使用を指定していることに注意してください。SHA-1 [SHA]に対する最近の攻撃は、ハッシュ関数のみの出力のサイズに基づいて必要な予想される2^80ハッシュよりも少ない作業で衝突を見つける方法を発見しました。攻撃者が衝突を見つけることができる場合、衝突するプリイメージを使用して、同じIBE秘密キーを持つ2つのIDを作成できます。ただし、そのような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.

通常、アイデンティティは、ハッシュ衝突のプリイメージのようなランダムな文字列ではありません。特に、これは[IBECMS]で説明されているようにIBEが使用される場合に当てはまります。この場合、アイデンティティのコンポーネントは電子メールアドレス、有効期間、およびURIと定義されます。この場合、衝突の予測不可能な結果は、有効なアイデンティティの形式に適合する可能性が非常に低いため、攻撃者には役に立ちません。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システムの一部であるべきです(SHOULD)。

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システムの管理者は、システムで使用されるIDの形式に短命のコンポーネントが含まれることを要求する必要があります。たとえば、[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.

このドキュメントは、IBCS#1 V2 Voltage Security、Incのドキュメントに基づいています。このドキュメントからの資料の実質的な使用は、情報のソースとしてVoltage 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.

[キーワード] Bradner、S。、「要件レベルを示すためにRFCで使用するためのキーワード」、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] Dierks、T。およびE. Rescorla、「The Transport Layer Security(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] D. BonehおよびX. Boyen、「ランダムオラクルなしの効率的な選択的IDセキュアなアイデンティティベースの暗号化」、Proc。EuroCrypt 04、LNCS 3027、pp。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] D. BonehおよびM. Franklin、「Weilペアリングからのアイデンティティベースの暗号化」、Proc。Crypto 01、LNCS 2139、pp。213-229、2001。

[CMS] Housley, R., "Cryptographic Message Syntax (CMS)", RFC 3852, July 2004.

[CMS] Housley、R。、「Cryptographic Message Syntax(CMS)」、RFC 3852、2004年7月。

[ECC] I. Blake, G. Seroussi, and N. Smart, "Elliptic Curves in Cryptography", Cambridge University Press, 1999.

[ECC] I. Blake、G。Seroussi、およびN. Smart、「Elliptic Curves in Cryptography」、ケンブリッジ大学出版局、1999。

[FIPS186-2] National Institute of Standards and Technology, "Digital Signature Standard," Federal Information Processing Standard 186-2, August 2002.

[FIPS186-2]国立標準技術研究所、「Digital Signature Standard」、連邦情報処理標準186-2、2002年8月。

[IBEARCH] G. Appenzeller, L. Martin, and M. Schertler, "Identity-based Encryption Architecture", Work in Progress.

[IBEARCH] G. Appenzeller、L。Martin、およびM. Schertler、「Identity-based Encryption Architecture」、進行中の作業。

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

[IBECMS] L. MartinおよびM. Schertler、「Using the Boneh-Franklin and Boneh-Boyen identity-based encryption algorithms with the Cryptographic Message Syntax (CMS)」、進行中の作業。

[MERKLE] R. Merkle, "A fast software one-way hash function," Journal of Cryptology, Vol. 3 (1990), pp. 43-58.

[MERKLE] R. Merkle、「A fast software one-way hash function」、Journal of Cryptology、vol。3(1990)、pp。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. Barker、W。Barker、W。Burr、W。Polkおよび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.

[SHA]国立標準技術研究所、「Secure Hash Standard」、連邦情報処理基準出版180-2、2002年8月、2004年2月。

[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] American National Standards Institute、「金融サービス業界向けの公開キー暗号:The Elliptic Curve Digital Signature Algorithm(ECDSA)」、American National Standard for Financial Servindation 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

Xavier Boyen Voltage Security 1070 Arastradero Rd Suite 100 Palo Alto、CA 94304

   EMail: xavier@voltage.com
        

Luther Martin Voltage Security 1070 Arastradero Rd Suite 100 Palo Alto, CA 94304

Luther Martin Voltage Security 1070 Arastradero Rd Suite 100 Palo Alto、CA 94304

   EMail: martin@voltage.com
        

Full Copyright Statement

完全な著作権声明

Copyright (C) The IETF Trust (2007).

著作権(c)The IETF Trust(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.

このドキュメントとここに含まれる情報は、「現状のまま」に基づいて提供され、貢献者、彼/彼女が代表する組織(もしあれば)、インターネット協会、IETFトラスト、インターネットエンジニアリングタスクフォースがすべてを否認します。明示的または黙示的な保証。ここでの情報の使用は、特定の目的に対する商品性または適合性の権利または暗黙の保証を侵害しないという保証を含むがこれらに限定されない。

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.

IETF事務局に行われたIPR開示のコピーと、利用可能にするライセンスの保証、またはこの仕様の実装者またはユーザーによるそのような独自の権利の使用のための一般的なライセンスまたは許可を取得するための試みの結果を取得できます。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への情報をお問い合わせください。