RFC5091 日本語訳

5091 Identity-Based Cryptography Standard (IBCS) #1: SupersingularCurve Implementations of the BF and BB1 Cryptosystems. X. Boyen, L.Martin. December 2007. (Format: TXT=103464 bytes) (Status: INFORMATIONAL)
プログラムでの自動翻訳です。
英語原文

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

Boyenがコメントのために要求するワーキンググループX.をネットワークでつないでください: 5091年のL.マーチンカテゴリ: 情報の電圧セキュリティ2007年12月

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

アイデンティティベースの暗号規格(IBCS)#1: BFとBB1暗号系のSupersingularカーブ実現

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.

このドキュメントはアイデンティティに基づいている暗号化(IBE)のための2つの数学のアルゴリズムを指定します。 専門化している本質のため、このドキュメントはIETFの中で限られたレビューになりました。 このRFCの読者は実現と展開のために慎重に値を評価するべきです。

Abstract

要約

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

このドキュメントはBoneh-フランクリン(BF)とBoneh-Boyen(BB1)のアイデンティティベースのEncryptionを実行するアルゴリズムを説明します。 このドキュメントはVoltage SecurityのIdentityベースのCryptography Standards(IBCS)ドキュメントのIBCS#1v2に一部基づいています。(数人の無関係のセクションが、このドキュメントの中身を作成するためにそれから取り外されました)。

Boyen & Martin               Informational                      [Page 1]

RFC 5091                        IBCS #1                    December 2007

Boyenとマーチン[1ページ]情報のRFC5091IBCS#2007年12月1日

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

1. 序論…4 1.1. それをメッセージに送るのはIBEを使用することでコード化されています…5 1.1.1. 送付者は受取人の公共のパラメタを得ます…6 1.1.2. IBE-暗号化メッセージを構成して、送ってください…6 1.2. IBE-暗号化メッセージを受け取って、見ます…7 1.2.1. 受取人はPPSから公共のパラメタを得ます…8 1.2.2. 受取人はPKGからIBE秘密鍵を得ます…8 1.2.3. 受取人はIBE-暗号化メッセージを解読します…9 2. 記法と定義…9 2.1. 記法…9 2.2. 定義…12 3. 基本的な楕円曲線アルゴリズム…12 3.1. アフィンな座標における集団行動…13 3.1.1. タイプ-1のための実現は曲がります…13 3.2. 乗法を示してください…14 3.3. ヤコビアンの射影の座標における操作…17 3.3.1. タイプ-1のための実現は曲がります…17 3.4. 楕円曲線の除数…19 3.4.1. タイプ-1のためのF_p^2での実現は曲がります…19 3.5. テイト組み合わせ…21 3.5.1. テイト組み合わせ計算…21 3.5.2. タイプ-1のためのミラーアルゴリズムは曲がります…21 4. アルゴリズムを支持します…24 4.1. 整数範囲の論じ尽くすこと…24 4.1.1. 整数範囲に論じ尽くします。24 4.2. 論じ尽くすのによる擬似ランダムバイト世代…25 4.2.1. 擬似ランダムバイトジェネレータを合わせます…25 4.3. 拡大の正準なEncodingsはElementsをさばきます…26 4.3.1. ストリングとして拡大要素をコード化します…26 4.3.2. タイプ-1カーブ実現…27 4.4. 楕円曲線のサブグループに論じ尽くします。28 4.4.1. 楕円曲線のサブグループにストリングを論じ尽くします…28 4.4.2. タイプ-1カーブ実現…29 4.5. 双線型のマッピング…29 4.5.1. 通常の、または、変更されたテイトPairing…29 4.5.2. タイプ-1カーブ実現…30 4.6. 双線型の組み合わせの比率…31 4.6.1. 通常の、または、変更されたテイトPairingsの比率…31 4.6.2. タイプ-1カーブ実現…32 5. Boneh-フランクリンBF暗号系…32 5.1. セットアップしてください…32 5.1.1. 秘密の、そして、公立のパラメタ世代を支配してください…32 5.1.2. タイプ-1カーブ実現…33 5.2. 公開鍵派生…34

Boyen & Martin               Informational                      [Page 2]

RFC 5091                        IBCS #1                    December 2007

Boyenとマーチン[2ページ]情報のRFC5091IBCS#2007年12月1日

           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

5.2.1. アイデンティティと公共のパラメタからの公開鍵派生…34 5.3. 秘密鍵抽出…35 5.3.1. アイデンティティからの秘密鍵抽出、1セットの公衆…35 5.4. 暗号化…36 5.4.1. アイデンティティと公共のパラメタを使用して、セッションキーをコード化してください…36 5.5. 復号化…37 5.5.1. 公共のパラメタ、秘密鍵を使用して、コード化されたセッションキーを解読してください…37 6. Boneh-Boyen BB1暗号系…38 6.1. セットアップしてください…38 6.1.1. マスター秘密と公共のパラメタを発生させてください…38 6.1.2. タイプ-1カーブ実現…39 6.2. 公開鍵派生…41 6.2.1. アイデンティティと公共のパラメタから公開鍵を得てください…41 6.3. 秘密鍵抽出…41 6.3.1. アイデンティティ、公共のパラメタ、およびマスター秘密から秘密鍵を抽出してください…41 6.4. 暗号化…42 6.4.1. アイデンティティと公共のパラメタを使用して、セッションキーをコード化してください…42 6.5. 復号化…45 6.5.1. 公共のパラメタを使用して、秘密鍵を解読してください…45 7. テストデータ…47 7.1. アルゴリズム3.2.2(PointMultiply)…47 7.2. アルゴリズム4.1.1(HashToRange)…48 7.3. アルゴリズム4.5.1(組み合わせ)…48 7.4. アルゴリズム5.2.1(BFderivePubl)…49 7.5. アルゴリズム5.3.1(BFextractPriv)…49 7.6. アルゴリズム5.4.1(BFencrypt)…50 7.7. アルゴリズム6.3.1(BBextractPriv)…51 7.8. アルゴリズム6.4.1(BBencrypt)…52 8. ASN.1モジュール…53 9. セキュリティ問題…58 10. 承認…60 11. 参照…60 11.1. 標準の参照…60 11.2. 有益な参照…60

Boyen & Martin               Informational                      [Page 3]

RFC 5091                        IBCS #1                    December 2007

Boyenとマーチン[3ページ]情報のRFC5091IBCS#2007年12月1日

1.  Introduction

1. 序論

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

このドキュメントは双線型の組み合わせに基づくアイデンティティベースの暗号化(IBE)システムを導入するための仕様一式を提供します。 2つの暗号系が説明されます: Bonehとフランクリン(BF)[BF]でIBEシステムは提案しました、そして、BonehとBoyen(BB1)[BB1]でIBEシステムは提案しました。 完全に安全で実用的な実現は各システムのために説明されます、活発な攻撃に対して安定を得るのに使用される付属のハイブリッドコンポーネントと同様にコア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を使用することでシステムのための異なった構造に通じます。 [IBEARCH]でこれらの違いとIBEを使用するシステムがどう動作するかに関する概観を与えます。

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

アイデンティティベースの暗号化(IBE)は公開鍵が公開鍵から計算されるためにアイデンティティ、および対応する秘密鍵から計算されるのを許容する公開カギ暗号技術です。 IBEベースのシステムにおける、公衆と秘密鍵の両方の計算は必要に応じて起こることができます、主要な材料をちょうど間に合ってもたらして。 これは他の公開カギシステム[P1363]とひどく違います。そこでは、キーは、安全なコミュニケーションの始めの前に手当たりしだいに発生して、分配されます。 受取人の公開鍵について特に計算する能力はIBEベースのメッセージシステムの送付者と受信機が直接かディレクトリサーバなどのプロキシを通して互いに対話する必要性を排除します、安全なメッセージを送る前に。

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

このドキュメントはIBEベースのメッセージシステムとシステムの部品がどう一緒に働いているかを説明します。 完全なIBEメッセージシステムに必要であるコンポーネントは以下です:

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

o 秘密鍵ジェネレータ(PKG)。 PKGは、個人のIBE秘密鍵を発生させるようにマスター秘密として知られている暗号の材料を含んでいます。 PKGはIBEユーザの秘密鍵要求を受け入れて、首尾よく何らかの方法でそれらを認証した後にそうして、リターンはIBE秘密鍵です。

Boyen & Martin               Informational                      [Page 4]

RFC 5091                        IBCS #1                    December 2007

Boyenとマーチン[4ページ]情報のRFC5091IBCS#2007年12月1日

   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 System ParametersはIBEの公共のパラメタ、およびPKGのための方針情報として知られている公的に共有可能な暗号の材料を含んでいます。 PPSはIBE PKGのためのIBEの公共のパラメタと方針情報の安全な分配に周知の位置を提供します。

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

論理的な構造はDNSゾーンなどの名前スペースあたり1PKG/PPSを持つだろうことです。 また、DNSゾーンを制御する組織は組織のメンバーのために公衆と秘密鍵を創造するとき、どのPKG/PSSを使用したらよいかに関するPKG/PPSとその結果決断を制御するでしょう。 この場合、それが支持するアイデンティティのフォームは唯一PPS URIを作成できます。 この構造はどのセットの公共のパラメタを使用するか、そして、与えられたアイデンティティのためにどこでそれらを検索するかを断言するでしょう。

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

IBE-暗号化メッセージはCryptographic Message Syntaxなどの標準のメッセージ・フォーマット(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"、「必須NOT」が「必要です」、“SHALL"、「」、“SHOULD"、「「推薦され」て、「5月」の、そして、「任意」のNOTは[キーワード]で説明されるように本書では解釈されることであるべきですか?

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

IBEの公共のパラメタに加えて必要であるのは、メッセージをそれらにコード化することにおける使用のためにそれらの公開鍵を発生させる受取人のアイデンティティだけです。 このアイデンティティがメッセージが記述されるアイデンティティと同じである場合、詳しい情報は、全く発信するのにユーザから必要ではありません。

Boyen & Martin               Informational                      [Page 5]

RFC 5091                        IBCS #1                    December 2007

Boyenとマーチン[5ページ]情報のRFC5091IBCS#2007年12月1日

         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.

非安全にされたメッセージをそれらに送るのが必要であるというよりもaだれか安全な人は通信します。 これはIBEベースの安全なメッセージシステムの主要な利益の1つです。 アイデンティティに関する例は、個人、グループ、または役割の識別子であるかもしれません。

1.1.1.  Sender Obtains Recipient's Public Parameters

1.1.1. 送付者は受取人の公共のパラメタを得ます。

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

メッセージの送付者は彼が周知のURIで接待されるPPSから受取人のIBE公開鍵について計算するのに必要とするIBEの公共のパラメタを得ます。 IBEの公共のパラメタは送付者が、受取人のアイデンティティ以外のIBE-暗号化メッセージを作成する必要があるという情報のすべてを含んでいます。 [IBEARCH]はPPSが位置しているURI、IBEの公共のパラメタと、どうそれらを得るかに関する形式について説明します。 何らかの方法で、ユーザがIBEの公共のパラメタを得るURIを認証しなければなりません。 PPSサーバは、この要件を満たすために、Transport Layer Security(TLS)1.1[TLS]を支持しなければならなくて、サーバ証明書の対象の名前がPPSのURIに合っていることを確かめなければなりません。また、[IBEARCH]はアイデンティティ書式が定義される方法とすべてのPPSsとPKGsが支持しなければならない最小の共同利用できる形式を述べます。 このステップは図1に以下に示されます。

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

IBEの公共のパラメタ要求----------------------------->送付者PPS<。----------------------------- IBEの公共のパラメタ

         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を選択します。 異なったPPSsは例えば、異なったIBEアルゴリズムか異なった主要な強さを指定するか、または秘密鍵をIBEに与える前に異なったレベルの認証を必要とするPKGsの使用を必要とする公共のパラメタを提供するかもしれません。

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)を選んで、彼のメッセージをコード化するのにそれを使用して、次に、受取人のIBE公開鍵でCEKをコード化します(例えば[CMS]で説明されるように)。 この操作は図2に以下に示されます。 このドキュメントはIBEの2つのフォームを実行するのに必要であるアルゴリズムを説明します。 [IBECMS]は受取人が、メッセージを解読する必要があるというIBE情報に伴う暗号化メッセージを要約するのに、Cryptographic Message Syntax(CMS)を使用する方法を説明します。

Boyen & Martin               Informational                      [Page 6]

RFC 5091                        IBCS #1                    December 2007

Boyenとマーチン[6ページ]情報のRFC5091IBCS#2007年12月1日

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

CEK---->送付者---->はCEKをIBEコード化しました。

                              ^
                              |
                              |

^ | |

                     Recipient's Identity
                   and IBE Public Parameters

受取人のアイデンティティと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を入手するために必要とする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の公共のパラメタに加えて、受取人は、送付者が使用した公開鍵に対応する秘密鍵を得る必要があります。 首尾よく、(PKG)(ユーザのための秘密鍵について計算する信頼できる第三者機関)を秘密鍵ジェネレータに認証した後に、IBE秘密鍵を得ます。 受取人はHTTPS接続の上にIBE秘密鍵を受けます。 URI、PKG MUSTでは、何らかの方法で認証されてください。 PKGサーバは、この要件を満たすために、TLS1.1[TLS]を支持しなければなりません。

      3.  Decrypt the IBE-encrypted message.

3. IBE-暗号化メッセージを解読してください。

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

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

Boyen & Martin               Informational                      [Page 7]

RFC 5091                        IBCS #1                    December 2007

Boyenとマーチン[7ページ]情報のRFC5091IBCS#2007年12月1日

         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

IBEの公共のパラメタ要求----------------------------->受取人PPS<。----------------------------- IBEの公共のパラメタ

           Figure 3.  Requesting IBE Public Parameters

図3。 IBEの公共のパラメタを要求します。

1.2.2.  Recipient Obtains IBE Private Key from PKG

1.2.2. 受取人はPKGからIBE秘密鍵を得ます。

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

IBE-暗号化メッセージの受取人は、IBE秘密鍵を得るために、メッセージとそれらの認証信任状をPKGにコード化するのに使用されるIBE公開鍵を提供して、IBE公開鍵に対応する秘密鍵を要求します。 このドキュメントのセクション4は、PKGとすべてのIBE実現がPKGにそれを認証するために最小の共同利用できる方法で支持されなければならないのと同じくらいよくコミュニケートするためにプロトコルを定義します。 IBE秘密鍵のセキュリティがIBEシステムの総合的なセキュリティに必要であるので、安全なプロトコルの上でIBE秘密鍵を受取人に輸送しなければなりません。 PKGsはIBE秘密鍵の輸送のために、TLS1.1[TLS]を支持しなければなりません。 この操作は図4に以下に示されます。

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

IBE秘密鍵要求---------------------------->受取人PKG<。---------------------------- IBE秘密鍵

           Figure 4.  Obtaining an IBE Private Key

図4。 IBE秘密鍵を得ます。

Boyen & Martin               Informational                      [Page 8]

RFC 5091                        IBCS #1                    December 2007

Boyenとマーチン[8ページ]情報のRFC5091IBCS#2007年12月1日

1.2.3.  Recipient Decrypts IBE-Encrypted Message

1.2.3. 受取人はIBE-暗号化メッセージを解読します。

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

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

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

IBEによってコード化されたCEK---->受取人---->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.

このセクションはアイデンティティを拠点とする暗号系に関して概念と定義を楕円曲線へまとめます。 読者は、数学のバックグラウンドについて呼ばれて[ECC]、[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はFの上の楕円曲線が_pであったなら+ *x+bあたりx^3と等しいです。 度2の拡大のために、カーブE/F_pはグループ(E(F_p^2)、+)を定義します。(それは、2が0としてヌル要素、または無限におけるポイントで指示したF_p^の上で曲線方程式を満たす(F_p^2)^2のポイントのアフィンな座標(x、y)の加法群です)。

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

オーダーqの'E(F_p)には周期的なサブグループG1があるように、qが主要であることをさせてください'。

   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.

(F_p^2)の周期的なサブグループがオーダーpの*であったならG1"が注文q、およびG2のE(F_p^2)の周期的なサブグループであることをさせてください。

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

これらの条件で、テイト組み合わせとして知られている数学の工事が提供される、効率的である、計算できる地図e: 両方の議論で直線的であり、逆にしにくいと信じられている'G1'x G1"->G2[BF]。 効率的である、計算できる理性的でない自己準同形φ: 'G1'->。

Boyen & Martin               Informational                      [Page 9]

RFC 5091                        IBCS #1                    December 2007

Boyenとマーチン[9ページ]情報のRFC5091IBCS#2007年12月1日

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

'G1"がテイト組み合わせが計算される選択された楕円曲線に利用可能である、次に、私たちは機能eを構成できます': e'と定義された'G1'x G1"->G2はeと等しいです(A、B)。(A(φ(B)))は変更されたテイト組み合わせを呼びました。 '私たちは、一般的に組み合わせをテイト組み合わせeか変更されたテイト組み合わせeのどちらかと呼びます'、特定の実現に使用される選ばれた楕円曲線によって。

   The following additional notation is used throughout this document.

以下の追加記法はこのドキュメント中で使用されます。

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

p--有限分野Fの注文である7680年のビットの主要になりまでの512ビットの_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--pがどちらの2と3であるときに、フォームE/F_pのそうである分野F_pの上の楕円曲線の方程式: y^2がx^3+a*x+bと等しい、F_pでa、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)--x、F_pのyが無限0でポイントを含む曲線方程式E/F_pを満たしているポイントのアフィンな座標(x、y)の加法群。

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

q--Eにおける興味がある周期的なサブグループの注文である512ビットの主要になりまでの160ビットの(F_p。)

   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)--無限0でポイントを含む曲線方程式E/F_pを満たすF_p^2のポイントのアフィンな座標のグループ。

   Z_p - The additive group of integers modulo p.

Z_p--整数法pの加法群。

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

lg--ベース2対数機能であり、したがって、その2^lg(x)はxと等しいです。

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

「物の識別子」という用語は簡略化された"OID"でしょう。

Boyen & Martin               Informational                     [Page 10]

RFC 5091                        IBCS #1                    December 2007

Boyenとマーチン[10ページ]情報のRFC5091IBCS#2007年12月1日

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

Solinas第1はフォーム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がカーブ、および1整数あたりのnのポイントであるなら、合計n回それ自体にAを加えるという結果は指示された[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.

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.

   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.

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.

   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.

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.

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

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.

Base field elements - The p elements of the base field F_p are represented directly using the integers from 0 to 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)).

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

Boyen & Martin               Informational                     [Page 11]

RFC 5091                        IBCS #1                    December 2007

Boyen & Martin Informational [Page 11] RFC 5091 IBCS #1 December 2007

   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.

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.

2.2.  Definitions

2.2. Definitions

   The following terminology is used to describe an IBE system.

The following terminology is used to describe an IBE system.

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

Public parameters - The public parameters are a set of common, system-wide parameters generated and published by the private key generator (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.

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.

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.

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.

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.

   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.

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.

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

3.  Basic Elliptic Curve Algorithms

3. Basic Elliptic Curve Algorithms

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

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

Boyen & Martin               Informational                     [Page 12]

RFC 5091                        IBCS #1                    December 2007

Boyen & Martin Informational [Page 12] RFC 5091 IBCS #1 December 2007

3.1.  The Group Action in Affine Coordinates

3.1. The Group Action in Affine Coordinates

3.1.1.  Implementation for Type-1 Curves

3.1.1. Implementation for Type-1 Curves

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

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

   Input:

Input:

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

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

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

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

   Output:

Output:

   o  The point [2]A = A + A

o The point [2]A = A + A

   Method:

Method:

   1. If A = 0 or y = 0, then return 0

1. If A = 0 or y = 0, then return 0

   2. Let lambda = (3 * x^2) / (2 * y)

2. Let lambda = (3 * x^2) / (2 * y)

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

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

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

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

   5. Return (x', y')

5. Return (x', y')

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

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

   Input:

Input:

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

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

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

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

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

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

   Output:

Output:

   o  The point A + B

o The point A + B

   Method:

Method:

   1. If A = 0, return B

1. If A = 0, return B

Boyen & Martin               Informational                     [Page 13]

RFC 5091                        IBCS #1                    December 2007

Boyen & Martin Informational [Page 13] RFC 5091 IBCS #1 December 2007

   2. If B = 0, return A

2. If B = 0, return A

   3. If x_A = x_B:

3. If x_A = x_B:

      (a) If y_A = -y_B, return 0

(a) If y_A = -y_B, return 0

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

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

   4.  Otherwise:

4. Otherwise:

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

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

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

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

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

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

      (d) Return (x', y')

(d) Return (x', y')

3.2.  Point Multiplication

3.2. Point Multiplication

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

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

   Input:

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 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  An integer window bit-size r > 0

o An integer window bit-size r > 0

   Output:

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

   Method:

Method:

   1. Let d = 0

1. Let d = 0

   2. Let j = 0

2. Let j = 0

   3. While j <= l, do:

3. While j <= l, do:

      (a) If k_j = 0, then:

(a) If k_j = 0, then:

Boyen & Martin               Informational                     [Page 14]

RFC 5091                        IBCS #1                    December 2007

Boyen & Martin Informational [Page 14] RFC 5091 IBCS #1 December 2007

         i. Let j = j + 1

i. Let j = j + 1

      (b) Else:

(b) Else:

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

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

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

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

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

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

            A. Let b_d = h_d - 2^r

A. Let b_d = h_d - 2^r

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

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

        iv.  Else:

iv. Else:

            A.  Let b_d = h_d

A. Let b_d = h_d

         v.  Let e_d = j

v. Let e_d = j

        vi.  Let d = d + 1

vi. Let d = d + 1

       vii.  Let j = t + 1

vii. Let j = t + 1

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

4. Return d and the sequence {(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.

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

   Input:

Input:

   o  A point A in E(F_p^2)

o A point A in E(F_p^2)

   o  An integer l > 0

o An integer l > 0

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

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

   Output:

Output:

   o  The point [l]A

o The point [l]A

   Method:

Method:

   1.  (Window decomposition)

1. (Window decomposition)

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

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

Boyen & Martin               Informational                     [Page 15]

RFC 5091                        IBCS #1                    December 2007

Boyen & Martin Informational [Page 15] RFC 5091 IBCS #1 December 2007

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

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

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

      (a) Let A_1 = A

(a) Let A_1 = A

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

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

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

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

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

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

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

   3.  Main loop

3. Main loop

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

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

         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

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. If b_i > 0, then:

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

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

       iii. Else:

iii. Else:

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

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

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

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

   4.  Return Q.

4. Return Q.

Boyen & Martin               Informational                     [Page 16]

RFC 5091                        IBCS #1                    December 2007

Boyen & Martin Informational [Page 16] RFC 5091 IBCS #1 December 2007

3.3.  Operations in Jacobian Projective Coordinates

3.3. Operations in Jacobian Projective Coordinates

3.3.1.  Implementation for Type-1 Curves

3.3.1. Implementation for Type-1 Curves

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

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

   Input:

Input:

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

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

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

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

   Output:

Output:

   o  The point [2]A in Jacobian projective coordinates

o The point [2]A in Jacobian projective coordinates

   Method:

Method:

   1. If z = 0 or y = 0, return (0, 1, 0) = 0, otherwise:

1. If z = 0 or y = 0, return (0, 1, 0) = 0, otherwise:

   2. Let lambda_1 = 3 * x^2

2. Let lambda_1 = 3 * x^2

   3. Let z' = 2 * y * z

3. Let z' = 2 * y * z

   4. Let lambda_2 = y^2

4. Let lambda_2 = y^2

   5. Let lambda_3 = 4 * lambda_2 * x

5. Let lambda_3 = 4 * lambda_2 * x

   6. Let x' = lambda_1^2 - 2 * lambda_3

6. Let x' = lambda_1^2 - 2 * lambda_3

   7. Let lambda_4 = 8 * lambda_2^2

7. Let lambda_4 = 8 * lambda_2^2

   8. Let y' = lambda_1 * (lambda_3 - x') - lambda_4

8. Let y' = lambda_1 * (lambda_3 - x') - lambda_4

   9. Return (x', y', z')

9. Return (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.

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

   Input:

Input:

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

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

Boyen & Martin               Informational                     [Page 17]

RFC 5091                        IBCS #1                    December 2007

Boyen & Martin Informational [Page 17] RFC 5091 IBCS #1 December 2007

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

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

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

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

   Output:

Output:

   o  The point A + B in Jacobian projective coordinates

o The point A + B in Jacobian projective coordinates

   Method:

Method:

   1. If z_A = 0, return (x_B, y_B, 1) = B, otherwise:

1. If z_A = 0, return (x_B, y_B, 1) = B, otherwise:

   2. Let lambda_1 = z_A^2

2. Let lambda_1 = z_A^2

   3. Let lambda_2 = lambda_1 * x_B

3. Let lambda_2 = lambda_1 * x_B

   4. Let lambda_3 = x_A - lambda_2

4. Let lambda_3 = x_A - lambda_2

   5. If lambda_3 = 0, then return (0, 1, 0), otherwise:

5. If lambda_3 = 0, then return (0, 1, 0), otherwise:

   6. Let lambda_4 = lambda_3^2

6. Let lambda_4 = lambda_3^2

   7. Let lambda_5 = lambda_1 * y_B * z_A

7. Let lambda_5 = lambda_1 * y_B * z_A

   8. Let lambda_6 = lambda_4 - lambda_5

8. Let lambda_6 = lambda_4 - lambda_5

   9. Let lambda_7 = x_A + lambda_2

9. Let lambda_7 = x_A + lambda_2

   10. Let lambda_8 = y_A + lambda_5

10. Let lambda_8 = y_A + lambda_5

   11. Let x' = lambda_6^2 - lambda_7 * lambda_4

11. Let x' = lambda_6^2 - lambda_7 * lambda_4

   12. Let lambda_9 = lambda_7 * lambda_4 - 2 * x'

12. Let lambda_9 = lambda_7 * lambda_4 - 2 * x'

   13. Let y' = (lambda_9 * lambda_6 -

13. Let y' = (lambda_9 * lambda_6 -

       lambda_8 * lambda_3 * lambda_4) / 2

lambda_8 * lambda_3 * lambda_4) / 2

   14. Let z' = lambda_3 * z_A

14. Let z' = lambda_3 * z_A

   15. Return (x', y', z')

15. Return (x', y', z')

Boyen & Martin               Informational                     [Page 18]

RFC 5091                        IBCS #1                    December 2007

Boyen & Martin Informational [Page 18] RFC 5091 IBCS #1 December 2007

3.4.  Divisors on Elliptic Curves

3.4. Divisors on Elliptic Curves

3.4.1.  Implementation in F_p^2 for Type-1 Curves

3.4.1. Implementation in F_p^2 for Type-1 Curves

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

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

   Input:

Input:

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

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

   o  A point A in E(F_p)

o A point A in E(F_p)

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

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

   Output:

Output:

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

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

   Method:

Method:

   1. Let r = x_B - x_A

1. Let r = x_B - x_A

   2. Return r

2. Return r

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

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

   Input:

Input:

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

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

   o  A point A in E(F_p)

o A point A in E(F_p)

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

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

   Output:

Output:

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

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

   Method:

Method:

   1. (Special cases)

1. (Special cases)

      (a) If A = 0, return 1

(a) If A = 0, return 1

Boyen & Martin               Informational                     [Page 19]

RFC 5091                        IBCS #1                    December 2007

Boyen & Martin Informational [Page 19] RFC 5091 IBCS #1 December 2007

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

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

   2. (Line computation)

2. (Line computation)

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

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

      (b) Let b = 2 * y_A

(b) Let b = 2 * y_A

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

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

   3. (Evaluation at B)

3. (Evaluation at B)

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

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

   4. Return r

4. Return r

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

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

   Input:

Input:

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

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

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

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

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

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

   Output:

Output:

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

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

   Method:

Method:

   1. (Special cases)

1. (Special cases)

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

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

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

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

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

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

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

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

Boyen & Martin               Informational                     [Page 20]

RFC 5091                        IBCS #1                    December 2007

Boyen & Martin Informational [Page 20] RFC 5091 IBCS #1 December 2007

   2. (Line computation)

2. (Line computation)

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

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

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

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

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

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

   3. (Evaluation at B)

3. (Evaluation at B)

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

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

   4. Return r

4. Return r

3.5.  The Tate Pairing

3.5. The Tate Pairing

3.5.1.  Tate Pairing Calculation

3.5.1. Tate Pairing Calculation

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

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

   Input:

Input:

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

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

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

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

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

   Output:

Output:

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

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

   Method:

Method:

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

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

3.5.2.  The Miller Algorithm for Type-1 Curves

3.5.2. The Miller Algorithm for Type-1 Curves

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

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

   Input:

Input:

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

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

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

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

Boyen & Martin               Informational                     [Page 21]

RFC 5091                        IBCS #1                    December 2007

Boyen & Martin Informational [Page 21] RFC 5091 IBCS #1 December 2007

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

   Output:

Output:

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

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

   Method:

Method:

   1. (Initialization)

1. (Initialization)

      (a) Let v_num = 1 in F_p^2

(a) Let v_num = 1 in F_p^2

      (b) Let v_den = 1 in F_p^2

(b) Let v_den = 1 in F_p^2

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

(c) 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) Let t_num = 1 in F_p^2

      (e) Let t_den = 1 in F_p^2

(e) Let t_den = 1 in F_p^2

   2. (Calculation of the (s * 2^b) contribution)

2. (Calculation of the (s * 2^b) contribution)

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

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

         i. Let t_num = t_num^2

i. Let t_num = t_num^2

        ii. Let t_den = t_den^2

ii. Let t_den = t_den^2

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

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

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)

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

Boyen & Martin               Informational                     [Page 22]

RFC 5091                        IBCS #1                    December 2007

Boyen & Martin Informational [Page 22] RFC 5091 IBCS #1 December 2007

      (b) (Normalization)

(b) (Normalization)

         i. Let V_b = (x_(V_b) , y_(V_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,

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

resulting in a point V_b in E(F_p)

      (c) (Accumulation) Selecting on s:

(c) (Accumulation) Selecting on s:

         i. If s = -1:

i. If s = -1:

            A. Let v_num = v_num * t_den

A. Let v_num = v_num * t_den

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

B. 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. If s = 1:

            A. Let v_num = v_num * t_num

A. Let v_num = v_num * t_num

            B. Let v_den = v_den * t_den

B. Let v_den = v_den * t_den

   3. (Calculation of the 2^a contribution)

3. (Calculation of the 2^a contribution)

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

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

         i. Let t_num = t_num^2

i. Let t_num = t_num^2

        ii. Let t_den = t_den^2

ii. Let t_den = t_den^2

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

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

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)

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

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

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)

resulting in a point V_a in E(F_p)

Boyen & Martin               Informational                     [Page 23]

RFC 5091                        IBCS #1                    December 2007

Boyen & Martin Informational [Page 23] RFC 5091 IBCS #1 December 2007

      (c) (Accumulation)

(c) (Accumulation)

         i. Let v_num = v_num * t_num

i. Let v_num = v_num * t_num

        ii. Let v_den = v_den * t_den

ii. Let v_den = v_den * t_den

   4. (Correction for the (s * 2^b) and (c) contributions)

4. (Correction for the (s * 2^b) and (c) contributions)

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

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

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

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

      (c) If c = -1, then:

(c) If c = -1, then:

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

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

   5. (Correcting exponent)

5. (Correcting exponent)

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

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

   6. (Final result)

6. (Final result)

      (a) Return (v_num / v_den)^eta

(a) Return (v_num / v_den)^eta

4.  Supporting Algorithms

4. Supporting Algorithms

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

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

4.1.  Integer Range Hashing

4.1. Integer Range Hashing

4.1.1.  Hashing to an Integer Range

4.1.1. Hashing to an Integer Range

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

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

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

Boyen & Martin               Informational                     [Page 24]

RFC 5091                        IBCS #1                    December 2007

Boyen & Martin Informational [Page 24] RFC 5091 IBCS #1 December 2007

   Input:

Input:

   o  A string s of length |s| octets

o A string s of length |s| octets

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

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

   o  A cryptographic hash function hashfcn

o A cryptographic hash function hashfcn

   Output:

Output:

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

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

   Method:

Method:

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

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

   2. Let v_0 = 0

2. Let v_0 = 0

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

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

   4. For i = 1 to 2, do:

4. For i = 1 to 2, do:

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

(a) 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) Let h_i = hashfcn(t_i), which is a hashlen-octet string resulting from the hash algorithm hashfcn on the input t_i

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

(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

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

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

   5. Let v = v_l (mod n)

5. Let v = v_l (mod n)

4.2.  Pseudo-Random Byte Generation by Hashing

4.2. Pseudo-Random Byte Generation by Hashing

4.2.1.  Keyed Pseudo-Random Bytes Generator

4.2.1. Keyed Pseudo-Random Bytes Generator

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

Boyen & Martin               Informational                     [Page 25]

RFC 5091                        IBCS #1                    December 2007

Boyen & Martin Informational [Page 25] RFC 5091 IBCS #1 December 2007

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

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

   Input:

Input:

   o  An integer b

o An integer b

   o  A string p

o A string p

   o  A cryptographic hash function hashfcn

o A cryptographic hash function hashfcn

   Output:

Output:

   o  A string r comprising b octets

o A string r comprising b octets

   Method:

Method:

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

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

   2. Let K = hashfcn(p)

2. Let K = hashfcn(p)

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

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

   4. Let l = Ceiling(b / hashlen)

4. Let l = Ceiling(b / hashlen)

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

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

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

(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) Let r_i = hashfcn(h_i || K), where h_i || K is the (2 * hashlen)-octet concatenation of h_i and 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. 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

4.3.  Canonical Encodings of Extension Field Elements

4.3. Canonical Encodings of Extension Field Elements

4.3.1.  Encoding an Extension Element as a String

4.3.1. Encoding an Extension Element as a String

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

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.

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

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

Boyen & Martin               Informational                     [Page 26]

RFC 5091                        IBCS #1                    December 2007

Boyen & Martin Informational [Page 26] RFC 5091 IBCS #1 December 2007

   Input:

Input:

   o  An element v in F_p^2

o An element v in F_p^2

   o  A description of F_p^2

o A description of F_p^2

   o  An ordering parameter o, either 0 or 1

o An ordering parameter o, either 0 or 1

   Output:

Output:

   o  A fixed-length string s representing v

o A fixed-length string s representing v

   Method:

Method:

   1. For a type-1 curve, execute Algorithm 4.3.2 (Canonical1)

1. For a type-1 curve, execute Algorithm 4.3.2 (Canonical1)

4.3.2.  Type-1 Curve Implementation

4.3.2. Type-1 Curve Implementation

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

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

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

   Input:

Input:

   o  An element v in F_p^2

o An element v in F_p^2

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

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

   o  A ordering parameter o, either 0 or 1

o A ordering parameter o, either 0 or 1

   Output:

Output:

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

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

   Method:

Method:

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

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

   2. Let v = a + b * i, where i^2 = -1

2. Let v = a + b * i, where 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. Let a_(256^l) be the big-endian zero-padded fixed-length octet string representation of a in Z_p

Boyen & Martin               Informational                     [Page 27]

RFC 5091                        IBCS #1                    December 2007

Boyen & Martin Informational [Page 27] RFC 5091 IBCS #1 December 2007

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

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

   5. Depending on the choice of ordering o:

5. Depending on the choice of ordering o:

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

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

(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. Return s

4.4.  Hashing onto a Subgroup of an Elliptic Curve

4.4. Hashing onto a Subgroup of an Elliptic Curve

4.4.1.  Hashing a String onto a Subgroup of an Elliptic Curve

4.4.1. Hashing a String onto a Subgroup of an Elliptic Curve

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

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

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

   Input:

Input:

   o  An elliptic curve E

o An elliptic curve E

   o  A prime p

o A prime p

   o  A prime q

o A prime q

   o  A string id

o A string id

   o  A cryptographic hash function hashfcn

o A cryptographic hash function hashfcn

   Output:

Output:

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

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

   Method:

Method:

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

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

Boyen & Martin               Informational                     [Page 28]

RFC 5091                        IBCS #1                    December 2007

Boyen & Martin Informational [Page 28] RFC 5091 IBCS #1 December 2007

4.4.2.  Type-1 Curve Implementation

4.4.2. Type-1 Curve Implementation

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

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

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

   Input:

Input:

   o  A prime p

o A prime p

   o  A prime q

o A prime q

   o  A string id

o ストリングイド

   o  A cryptographic hash function hashfcn

o 暗号の細切れ肉料理機能hashfcn

   Output:

出力:

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

o EにおけるオーダーqのポイントQ_イド(F_p)

   Method:

方法:

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

1. Algorithm4.1.1(HashToRange)、F_pの要素を使用して、yをHashToRange(イド、p、hashfcn)との等しさにしてください。

   2. Let x = (y^2 - 1)^((2 * p - 1) / 3) modulo p, an element of F_p

2. xを^(2*p--1)/3)法p、F_pの要素との等しさにしてください(y^2--1)。

   3. Let Q' = (x, y), a non-zero point in E(F_p)

3. 'Qをさせてください'という=(x、y)、Eにおける非ゼロポイント(F_p)

   4. Let Q = [(p + 1) / q ]Q', a point of order q in E(F_p)

4. 'Qを(p+1)/q]Qとの等しさにしてください'、Eにおける議事進行上の問題q(F_p)

4.5.  Bilinear Mapping

4.5. 双線型のマッピング

4.5.1.  Regular or Modified Tate Pairing

4.5.1. 通常の、または、変更されたテイトPairing

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

'タイプ-1場合では、組み合わせ(E、p、q、A、B)は、2ポイントAとB、オーダーqの両方を取って、変更された組み合わせeを返します'。(A(E(F_p)には両方の、AとBがあるF_p^2のφ(B)))。

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

アルゴリズム4.5.1(組み合わせ): カーブタイプに頼る通常の、または、変更されたテイト組み合わせを計算します。

Boyen & Martin               Informational                     [Page 29]

RFC 5091                        IBCS #1                    December 2007

Boyenとマーチン[29ページ]情報のRFC5091IBCS#2007年12月1日

   Input:

以下を入力してください。

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

o そのようなそのユーロ(F_p)とユーロ(F_p^2)がサブグループを持っている楕円曲線E/F_pの記述はqを命令します。

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

o E(F_p)かユーロにおける2ポイントAとBのオーダーq(F_p^2)

   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 '「スーパー-単数」カーブ、Eには両方の、AとBがあるF_p^2のe'(A、B)の値に関して(F_p)

   Method:

方法:

   1. If E is a type-1 curve, execute Algorithm 4.5.2 (Pairing1)

1. Eがタイプ-1カーブであるなら、Algorithm4.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における組み合わせが曲がらせる変更されたテイトを計算します。 pとqの値はセクション5.1.2かセクション6.1.2で定義されるように有効なセットの公共のパラメタの一部でなければなりません。

   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: pが11法12とE(F_p)に一致しているy^2=x^3+1はオーダーqのサブグループを持っています。

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

o Eにおける2ポイントAとBのオーダーq(F_p)

   Output:

出力:

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

o 'eの値'(A、B)がeと等しい、(A、F_p^2のφ(B))

   Method:

方法:

   1. Compute B' = phi(B), as follows:

1. 'Bを計算してください'は以下の通りφ(B)と等しいです:

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

EにおけるBの座標になってください(a) F_p x F_pで貸されて(x、y)。(F_p)

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

(b) ζ=(_ζ、b_ζ)(_ζは/2とb_ζと等しいです(p--1))は3^(p+1)/4と等しい)(モッズp)をさせてください、F_p^2の要素

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

(c) 'xをさせてください'はF_p^2でx*ζと等しいです。

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

(d) 'Bをさせてください'はF_p^2x F_pで(x'、y)と等しいです。

Boyen & Martin               Informational                     [Page 30]

RFC 5091                        IBCS #1                    December 2007

Boyenとマーチン[30ページ]情報のRFC5091IBCS#2007年12月1日

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

2. 'テイト組み合わせe(A、B')=eを計算してください、(A、ミラー方法を使用するF_p^2のφ(B))、Algorithm3.5のように、.1(テイト)は中でセクション3.5について説明しました。

4.6.  Ratio of Bilinear Pairings

4.6. 双線型の組み合わせの比率

4.6.1.  Ratio of Regular or Modified Tate Pairings

4.6.1. 通常の、または、変更されたテイトPairingsの比率

   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)/対にしている(E、p、q、C、D)組み合わせの比率か同等に製品を計算します、Pairing(E、p、q、A、B)*組み合わせ(E、p、q、C、-D)。

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

タイプ-1カーブでは、すべての4ポイントがE(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).

このアルゴリズムに関する動機は別々に各組み合わせを計算して、もう片方に1つを割るより効率的に2つの組み合わせの比率について計算できるということです、すぐに通常、それぞれの2つの組み合わせに現れるある計算は結合して、行うことができるので。 そのような計算はAlgorithm3.5.2(TateMillerSolinas)のステップの2(a)i、2(a)ii、3(a)i、および3(a)iiに繰り返されたdoublingsを含んでいます、Algorithm3.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つの通常の、または、変更されたテイト組み合わせの比率を計算します。

   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 そのようなそのユーロ(F_p)とユーロ(F_p^2)がサブグループを持っている楕円曲線E/F_pの記述はqを命令します。

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

o E(F_p)かユーロにおけるオーダーqの4ポイントA、B、C、およびD(F_p^2)

   Output:

出力:

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

o 'カーブはsupersingularします、優にEにはA、B、C、DがあるF_p^2のe'(A、B)/e'(C、D)の値(F_p)

   Method:

方法:

   1. If E is a type-1 curve, execute Algorithm 4.6.2 (PairingRatio1)

1. Eがタイプ-1カーブであるなら、Algorithm4.6.2を実行してください。(PairingRatio1)

Boyen & Martin               Informational                     [Page 31]

RFC 5091                        IBCS #1                    December 2007

Boyenとマーチン[31ページ]情報のRFC5091IBCS#2007年12月1日

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つの変更されたテイト組み合わせの比率を計算します。 pとqの値はセクション5.1.2かセクション6.1.2で定義されるように有効なセットの公共のパラメタの一部でなければなりません。

   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が11に一致しているところでは、法12とE(F_p)はオーダーqのサブグループを持っています。

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

o Eにおける4ポイントA、B、C、およびDのオーダーq(F_p)

   Output:

出力:

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

o 'e'(A、B)/eの値'(C、D)がeと等しい、(A、φ(B))/e、(C、φ(D))がeと等しい、(A、φ(B))*e、(-C、F_p^2のφ(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).

いつも正しい結果を得ることができます、よりゆっくりですが、Algorithm4.5.2(Pairing1)の2つの実施を使用することによって組み合わせPairing1(E、p、q、A、B)*Pairing1(E、p、q、-C、D)の製品を計算することによって。

5.  The Boneh-Franklin BF Cryptosystem

5. Boneh-フランクリンBF暗号系

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

本章は[BF]で説明されるようにBoneh-フランクリンのアイデンティティを拠点とする暗号系を構成するアルゴリズムを説明します。

5.1.  Setup

5.1. セットアップ

5.1.1.  Master Secret and Public Parameter Generation

5.1.1. 秘密の、そして、公立のパラメタ世代を支配してください。

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

アルゴリズム5.1.1(BFsetup): 手当たりしだいに、マスター秘密と関連公共のパラメタを選択します。

   Input:

以下を入力してください。

   o  An integer version number

o 整数バージョン番号

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

o セキュリティパラメタn(値1024、2048、3072、7680、15360を取らなければなりません)

Boyen & Martin               Informational                     [Page 32]

RFC 5091                        IBCS #1                    December 2007

Boyenとマーチン[32ページ]情報のRFC5091IBCS#2007年12月1日

   Output:

出力:

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

o 1セットの公共のパラメタ(バージョン、E、p、q、P、P_パブ、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であるなら、Algorithm5.1.2を実行してください。(BFsetup1)

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

2. 結果として起こるマスター秘密と公共のパラメタはアプリケーション・プロトコル要件に従って別々にコード化されます。

5.1.2.  Type-1 Curve Implementation

5.1.2. タイプ-1カーブ実現

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

BFsetup1は入力されるようにセキュリティパラメタnを取ります。 タイプ-1カーブのために、nのスケールは古典的なディフィー-ヘルマンかRSA公開カギ暗号系で匹敵するセキュリティの[BF]であると信じられている係数ビット-サイズに対応しています。

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

アルゴリズム5.1.2(BFsetup1): タイプ-1カーブのためのマスター秘密と公共のパラメタを確立します。

   Input:

以下を入力してください。

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

o セキュリティパラメタn。(1024、2048、3072、7680かそのパラメタは15360のどちらかであるに違いありません)。

   Output:

出力:

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

o 1セットの一般的な公共のパラメタ(バージョン、p、q、P、Ppub、hashfcn)

   o  A corresponding master secret s

o 対応するマスター秘密s

   Method:

方法:

   1. Set the version to version = 2.

1. バージョン=2にバージョンを設定してください。

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

2. 下位のセキュリティパラメタのn_pと以下のn_qを決定してください:

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

(a) n=1024であるなら512、n_q=160、hashfcn=1.3.14n_p=.3をさせてください、.2、.26、(SHA-1[SHA]

Boyen & Martin               Informational                     [Page 33]

RFC 5091                        IBCS #1                    December 2007

Boyenとマーチン[33ページ]情報のRFC5091IBCS#2007年12月1日

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

(b) n=2048であるなら1024、n_q=224、hashfcn=2.16.840n_p=.1をさせてください、.101、.3、.4、.2、.4(SHA-224[SHA])

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

(c) n=3072であるなら1536、n_q=256、hashfcn=2.16.840n_p=.1をさせてください、.101、.3、.4、.2、.1(SHA-256[SHA])

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

(d) n=7680であるなら3840、n_q=384、hashfcn=2.16.840n_p=.1をさせてください、.101、.3、.4、.2、.2(SHA-384[SHA])

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

(e) n=15360であるなら7680、n_q=512、hashfcn=2.16.840n_p=.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第1qを選択してください。

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

(b) pが12*r*qと等しいように、無作為の整数rを選択してください--1はn_pビットの主要です。

   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)

'(a) カーブE/F_pで座標(x'、y')の無作為のポイントP'を選択してください: y^2=x^3+1(モッズp)

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

(b) '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) qへの範囲2の選んだa無作為の整数s--1

      (b) Let P_pub = [s]P

(b) P_パブ=[s]Pをさせてください。

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

6. (バージョン、E、p、q、P、P_パブ) 公共のパラメタがどこであるか、E: y^2=x^3+1はOID2.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はアイデンティティストリングイドと公共のパラメタのセットを取ります、そして、それはポイントQ_イドを返します。 使用される公共のパラメタはセクション5.1.2によって定義されるように有効なセットの公共のパラメタであるに違いありません。

Boyen & Martin               Informational                     [Page 34]

RFC 5091                        IBCS #1                    December 2007

Boyenとマーチン[34ページ]情報のRFC5091IBCS#2007年12月1日

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

アルゴリズム5.2.1(BFderivePubl): アイデンティティストリングに対応する公開鍵を引き出します。

   Input:

以下を入力してください。

   o  An identity string id

o アイデンティティストリングイド

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

o 1セットの公共のパラメタ(バージョン、E、p、q、P、P_パブ、hashfcn)

   Output:

出力:

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

o E(F_p)かユーロにおけるオーダーqのポイントQ_イド(F_p^2)

   Method:

方法:

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

1. Algorithm4.4.1を使用して、Q_イドはHashToPoint(E、p、q、イド、hashfcn)と等しいです。(HashToPoint)

5.3.  Private Key Extraction

5.3. 秘密鍵抽出

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

5.3.1. アイデンティティからの秘密鍵抽出、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は1セットのアイデンティティストリングイド、公共のパラメタ、および対応するマスター秘密を取ります、そして、それはポイントS_イドを返します。 使用される公共のパラメタはセクション5.1.2によって定義されるように有効なセットの公共のパラメタであるに違いありません。

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

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

   Input:

以下を入力してください。

   o  An identity string id

o アイデンティティストリングイド

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

o 1セットの公共のパラメタ(バージョン、E、p、q、P、P_パブ、hashfcn)

   Output:

出力:

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

o EにおけるオーダーqのポイントS_イド(F_p)

   Method:

方法:

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

1. Algorithm4.4.1を使用することでQ_イドをHashToPoint(E、p、q、イド、hashfcn)との等しさにしてください。(HashToPoint)

   2. Let S_id = [s]Q_id

2. S_イド=[s]Q_イドをさせてください。

Boyen & Martin               Informational                     [Page 35]

RFC 5091                        IBCS #1                    December 2007

Boyenとマーチン[35ページ]情報のRFC5091IBCS#2007年12月1日

5.4.  Encryption

5.4. 暗号化

5.4.1.  Encrypt a Session Key Using an Identity and Public Parameters

5.4.1. アイデンティティと公共のパラメタを使用して、セッションキーをコード化してください。

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

BFencryptは3つの入力を取ります: 公共のパラメタブロック、アイデンティティイド、および平文m。 平文は無作為の左右対称のセッションキーであるに違いありません。 使用される公共のパラメタはセクション5.1.2によって定義されるように有効なセットの公共のパラメタであるに違いありません。

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

アルゴリズム5.4.1(BFencrypt): アイデンティティストリングに、主要な無作為のセッションをコード化します。

   Input:

以下を入力してください。

   o  A plaintext string m of size |m| octets

o サイズの平文ストリングm|m| 八重奏

   o  A recipient identity string id

o 受取人アイデンティティストリングイド

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

o 1セットの公共のパラメタ(バージョン、E、p、q、P、P_パブ、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の暗号文tuple(U、V、W)、0、…、255、^hashlen x、0、…、255、^|m|

   Method:

方法:

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

1. 公共のパラメタから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. Eで議事進行上の問題qをもたらすAlgorithm4.4.1(HashToPoint)を使用するQ_イド=HashToPoint(E、p、q、イド、hashfcn)(F_p)

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

3. (hashlen / 8)八重奏ストリングとしてビッグエンディアンコンベンションで表された無作為のhashlen-ビットベクトルρを選択してください。

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

4. hashfcnアルゴリズムを入力mに適用するので、tをhashfcn(m)、hashlen-八重奏ストリングの結果になるとの等しさにしてください。

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

5. 範囲0でlをHashToRange(ρ| | t、q、hashfcn)、整数とのq--ρの(2*hashlen)八重奏連結にAlgorithm4.1.1(HashToRange)を適用するのからの1の結果になるのとtと等しさにしてください。

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

6. EでUを[l] Pとの等しさにしてください。(それは、議事進行上の問題qです)。(F_p)

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

7. Algorithm4.5.1の変更されたテイト組み合わせを使用して、θを組み合わせ(E、p、q、P_パブ、Q_イド)との等しさにしてください。(それは、^2が得た拡大野原F_pの要素です)。(組み合わせ)

Boyen & Martin               Informational                     [Page 36]

RFC 5091                        IBCS #1                    December 2007

Boyenとマーチン[36ページ]情報のRFC5091IBCS#2007年12月1日

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

8. 'θをさせてください'はθ^lと等しいです。(それは、F_p^2の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. '正準な状態で(p、k、0、θ')z=をさせてください、それの結果がθの正準なストリング表現であるAlgorithm4.3.1(正準な)を使用して'

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

10. アルゴリズムを論じ尽くすhashfcn(それの結果はhashlen-八重奏ストリングである)を使用することでwをhashfcn(z)との等しさにしてください。

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

11. Vをw XORρとの等しさにしてください。(XORはwとρのhashlen-八重奏の長いビット的なXORです)。

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

12. WをHashBytesとの等しさにしてください、(| m|、hashfcn) ρ、XOR m。(そのmは1番目があるmのビット的なXORです)。|m| 種子ρでAlgorithm4.2.1(HashBytes)生産された擬似ランダムバイトの八重奏

   13. The ciphertext is the triple (U, V, W)

13. 暗号文は三重です。(U、V、W)

5.5.  Decryption

5.5. 復号化

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

5.5.1. 公共のパラメタ、秘密鍵を使用して、コード化されたセッションキーを解読してください。

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

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

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

アルゴリズム5.5.1(BFdecrypt): 秘密鍵を使用することでコード化されたセッションキーを解読します。

   Input:

以下を入力してください。

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

o Eにおけるオーダーqの秘密鍵ポイントS_イド(F_p)

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

o E(F_p)xの暗号文三重(U、V、W)、0、…、255、^hashlen x、0、…、255、*

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

o 1セットの公共のパラメタ(バージョン、E、p、q、P、P_パブ、hashfcn)

   Output:

出力:

   o  A decrypted plaintext m, or an invalid ciphertext flag

o 解読された平文m、または無効の暗号文旗

Boyen & Martin               Informational                     [Page 37]

RFC 5091                        IBCS #1                    December 2007

Boyenとマーチン[37ページ]情報のRFC5091IBCS#2007年12月1日

   Method:

方法:

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

1. hashlenが八重奏で測定されたハッシュ関数hashlenの出力の長さであることをさせてください。

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

2. Algorithm4.5.1の変更されたテイト組み合わせを適用することによって、θを組み合わせ(E、p、q、U、S_イド)との等しさにしてください。(組み合わせ)

   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. Algorithm4.3.1(正準な)(それの結果はθの正準なストリング表現である)を使用して、正準な状態で(p、k、0、θ)z=をさせてください。

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

4. アルゴリズムを論じ尽くすhashfcn(それの結果はhashlen-八重奏ストリングである)を使用することでwをhashfcn(z)との等しさにしてください。

   5. Let rho = w XOR V, the bit-wise XOR of w and V

5. ρを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|、hashfcn) ρ、XOR W。(そのXOR Wは1番目があるmのビット的なXORです)。|W| 種子ρでAlgorithm4.2.1(HashBytes)生産された擬似ランダムバイトの八重奏

   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. ρとtの(2*hashlen)八重奏連結のときにAlgorithm4.1.1(HashToRange)を使用することでlをHashToRange(ρ| | t、q、hashfcn)との等しさにしてください。

   9. Verify that U = [l]P:

9. Uが[l]Pと等しいことを確かめてください:

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

(a) これがそうであるなら、解読された平文mを返します。

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

(b) さもなければ、暗号文を拒絶します、そして、平文を全く返しません。

6.  The Boneh-Boyen BB1 Cryptosystem

6. Boneh-Boyen BB1暗号系

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

このセクションは[BB1]で提案された2つのBoneh-Boyenのアイデンティティを拠点とする暗号系の1番目を構成するアルゴリズムを説明します。 記述は[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)。 手当たりしだいに、1セットのマスター秘密と関連公共のパラメタを選択します。

Boyen & Martin               Informational                     [Page 38]

RFC 5091                        IBCS #1                    December 2007

Boyenとマーチン[38ページ]情報のRFC5091IBCS#2007年12月1日

   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 1セットの公共のパラメタ

   o  A corresponding master secret

o 対応するマスター秘密

   Method:

方法:

   1. Depending on the version:

1. バージョンによります:

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

(a) バージョン=2であるなら、Algorithm6.1.2を実行してください。(BBsetup1)

6.1.2.  Type-1 Curve Implementation

6.1.2. タイプ-1カーブ実現

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

BBsetup1は入力されるようにセキュリティパラメタnを取ります。 タイプ-1カーブのために、nは古典的なディフィー-ヘルマンかRSA公開カギ暗号系で匹敵するセキュリティの[BF]であると信じられている係数ビット-サイズに対応しています。nはこの実現のための、1024、2048、3072、7680または15360の1つでなければなりません。(15360はそれぞれ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 1セットの公共のパラメタ(バージョン、k、E、p、q、P、P_1、P_2、P_3、v、hashfcn)

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

o マスター秘密の対応する三重(アルファ、ベータ、ガンマ)

   Method:

方法:

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

1. 下位のセキュリティパラメタのn_pと以下のn_qを決定してください:

Boyen & Martin               Informational                     [Page 39]

RFC 5091                        IBCS #1                    December 2007

Boyenとマーチン[39ページ]情報のRFC5091IBCS#2007年12月1日

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

(a) n=1024であるなら512、n_q=160、hashfcn=1.3.14n_p=.3をさせてください、.2、.26、(SHA-1[SHA]

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

(b) n=2048であるなら1024、n_q=224、hashfcn=2.16.840n_p=.1をさせてください、.101、.3、.4、.2、.4(SHA-224[SHA])

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

(c) n=3072であるなら1536、n_q=256、hashfcn=2.16.840n_p=.1をさせてください、.101、.3、.4、.2、.1(SHA-256[SHA])

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

(d) n=7680であるなら3840、n_q=384、hashfcn=2.16.840n_p=.1をさせてください、.101、.3、.4、.2、.2(SHA-384[SHA])

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

(e) n=15360であるなら7680、n_q=512、hashfcn=2.16.840n_p=.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第1qを選択してください。

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

(b) 無作為の整数rを選択してください、pが12*r*qと等しいように--1はn_pビットの主要です。

   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)

'(a) カーブE/F_pで座標(x'、y')の無作為のポイントP'を選択してください: y^2=x^3+1(モッズp)

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

(b) '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) 選んだ3無作為の整数アルファ、ベータ、ガンマ--1。(それらのそれぞれがqにガンマのための範囲1です)。

      (b) Let P_1 = [alpha]P

(b) P_1を[アルファ]Pとの等しさにしてください。

      (c) Let P_2 = [beta]P

(c) P_2を[ベータ]Pとの等しさにしてください。

      (d) Let P_3 = [gamma]P

(d) P_3を[ガンマ]Pとの等しさにしてください。

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

(e) =に対して組み合わせ(E、p、q、P_1、P_2)をさせてください。(それは、Algorithm4.5.1の変更されたテイト組み合わせを使用する^2が得た拡大野原F_pの要素です)。(組み合わせ)

Boyen & Martin               Informational                     [Page 40]

RFC 5091                        IBCS #1                    December 2007

Boyenとマーチン[40ページ]情報のRFC5091IBCS#2007年12月1日

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

5. (バージョン、E、p、q、P、P_1、P_2、P_3、v、hashfcn) 公共のパラメタです。

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

6. (アルファ、ベータ、ガンマ) マスター秘密を構成してください。

6.2.  Public Key Derivation

6.2. 公開鍵派生

6.2.1.  Derive a Public Key from an Identity and Public Parameters

6.2.1. アイデンティティと公共のパラメタから公開鍵を得てください。

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

アイデンティティストリングイドと公共のパラメタのセットを取って、整数h_イドを返します。 使用される公共のパラメタはセクション6.1.2によって定義されるように有効なセットの公共のパラメタであるに違いありません。

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

アルゴリズム6.2.1(BBderivePubl): アイデンティティストリングに対応する公開鍵を引き出します。 使用される公共のパラメタはセクション6.1.2によって定義されるように有効なセットの公共のパラメタであるに違いありません。

   Input:

以下を入力してください。

   o  An identity string id

o アイデンティティストリングイド

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

o 1セットの一般的な公共のパラメタ(バージョン、k、E、p、q、P、P_1、P_2、P_3、v、hashfcn)

   Output:

出力:

   o  An integer h_id modulo q

o 整数h_イド法q

   Method:

方法:

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

1. Algorithm4.1.1を使用して、h_イドをHashToRange(イド、q、hashfcn)との等しさにしてください。(HashToRange)

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は1セットのアイデンティティストリングイド、公共のパラメタ、および対応するマスター秘密を取ります、そして、それは2ポイントD_0とD_1から成る秘密鍵を返します。 使用される公共のパラメタはセクション6.1.2によって定義されるように有効なセットの公共のパラメタであるに違いありません。

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

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

Boyen & Martin               Informational                     [Page 41]

RFC 5091                        IBCS #1                    December 2007

Boyenとマーチン[41ページ]情報のRFC5091IBCS#2007年12月1日

   Input:

以下を入力してください。

   o  An identity string id

o アイデンティティストリングイド

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

o 1セットの公共のパラメタ(バージョン、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 1組のポイント(D_0、D_1)。それのそれぞれには、Eにおけるオーダーqがあります。(F_p)

   Method:

方法:

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

1. qへの範囲1の選んだa無作為の整数r--1

   2. Calculate the point D_0 as follows:

2. 以下のポイントD_0について計算してください:

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

貸された(a)は、Algorithm4.1.1を使用することで=HashToRange(イド、q、hashfcn)を隠しました。(HashToRange)

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

(b) F_qでyをアルファ*ベータ+r*(アルファ*h_イド+ガンマ)との等しさにしてください。

      (c) Let D_0 = [y]P

(c) D_0を[y]Pとの等しさにしてください。

   3. Calculate the point D_1 as follows:

3. 以下のポイントD_1について計算してください:

      (a) Let D_1 = [r]P

(a) D_1を[r]Pとの等しさにしてください。

   4. The pair of points (D_0, D_1) constitutes the private key for id

4. ポイント(D_0、D_1)の組はイドのために秘密鍵を構成します。

6.4.  Encryption

6.4. 暗号化

6.4.1.  Encrypt a Session Key Using an Identity and Public Parameters

6.4.1. アイデンティティと公共のパラメタを使用して、セッションキーをコード化してください。

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

BBencryptは3つの入力を取ります: 1セットの公共のパラメタ、アイデンティティイド、および平文m。 平文は無作為のセッションキーであるに違いありません。 使用される公共のパラメタはセクション6.1.2によって定義されるように有効なセットの公共のパラメタであるに違いありません。

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

アルゴリズム6.4.1(BBencrypt): アイデンティティストリングに、主要なセッションをコード化します。

   Input:

以下を入力してください。

   o  A plaintext string m of size |m| octets

o サイズの平文ストリングm|m| 八重奏

   o  A recipient identity string id

o 受取人アイデンティティストリングイド

Boyen & Martin               Informational                     [Page 42]

RFC 5091                        IBCS #1                    December 2007

Boyenとマーチン[42ページ]情報のRFC5091IBCS#2007年12月1日

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

o 1セットの公共のパラメタ(バージョン、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の暗号文tuple(u、C_0、C_1、y)、0、…、255、^|m|

   Method:

方法:

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

1. qへの範囲1の選んだa無作為の整数s--1

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

2. ^sに対するw=をさせてください。(それは、F_p^2のsのパワーに上げられたv、結果がF_p^2のオーダーqの要素であるということです)。

   3. Calculate the point C_0 as follows:

3. 以下のポイントC_0について計算してください:

      (a) Let C_0 = [s]P

(a) C_0を[s]Pとの等しさにしてください。

   4. Calculate the point C_1 as follows:

4. 以下のポイントC_1について計算してください:

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

(a) 貸されて、_は、Algorithm4.1.1を使用することで=HashToRange(イド、q、hashfcn)を隠しました。(HashToRange)

      (b) Let y = s * h_id in F_q

(b) F_qでyをs*h_イドとの等しさにしてください。

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

(c) C_1=[y]P_1+[s]P_3をさせてください。

   5. Obtain canonical string representations of certain elements:

5. ある要素の正準なストリング表現を得てください:

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

(a) Algorithm4.3.1(正準な)(それの結果はwの正準な八重奏ストリング表現である)を使用して、正準な状態で(p、k、1、w)psi=をさせてください。

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

(b) lを天井(lg(p) / 8)、F_pに整数を表すのに必要である八重奏の数との等しさにしてください、そして、固定長lのビッグエンディアンの無そっと歩いている八重奏ストリングとしてそれぞれのこれらのF_p要素を表してください:

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

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

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

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

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

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

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

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

Boyen & Martin               Informational                     [Page 43]

RFC 5091                        IBCS #1                    December 2007

Boyenとマーチン[43ページ]情報のRFC5091IBCS#2007年12月1日

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

6. 以下のストリングyにメッセージmをコード化してください:

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

(a) wのツー・パス細切れ肉料理として表現ψで暗号化主要なh_0を計算してください:

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

i。 論じ尽くすアルゴリズムhashfcnを使用することでζをhashfcn(psi)との等しさにしてください。

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

ii。 論じ尽くすアルゴリズムhashfcnを使用することでξをhashfcn(ζ| | psi)との等しさにしてください。

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

iii。 'hをさせてください'はξと等しいです。|| ζ、前の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|、hashfcn) h'、XOR m。(そのmは1番目があるmのビット的なXORです)。|m| '疑似無作為のバイトの八重奏は種子hでAlgorithm4.2.1(HashBytes)生産しました'

   7. Create the integrity check tag u as follows:

7. 以下の保全チェックタグuを作成してください:

      (a) Compute a one-time pad h'' as a dual-pass hash of the
          representation of (w, C_0, C_1, y):

(w、C_0、C_1、y)の表現の二元的なパス細切れ肉料理としての「(a) 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

i。 σを(y_1)_(256^l)との等しさにしてください。|| (x_1)_(^256l) || (y_0)_(^256l) || (x_0)_(^256l) || y|| psiは、yの連結であり、指定でオーダーを結びます5が、示した。

           ii. Let eta = hashfcn(sigma) using the hashing algorithm
               hashfcn

ii。 論じ尽くすアルゴリズムhashfcnを使用することでηをhashfcn(σ)との等しさにしてください。

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

iii。 アルゴリズムを論じ尽くすhashfcnを使用することでμをhashfcn(η| | σ)との等しさにしてください。

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

iv。 「hをさせてください」はμと等しいです。|| η、hashfcnの前の2回の出力の連結

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

「(b) 1回のパッドhによる整数sの暗号化としてタグuを組立ててください」:

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

i。 「ρをHashToRange(h」、q、hashfcn)との等しさにして、Z_qで整数を得てください。

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

ii。 uをs+ρとの等しさにしてください。(モッズq)

   8. The complete ciphertext is given by the quadruple (u, C_0, C_1, y)

8. 4倍は完全な暗号文を与えます。(u、C_0、C_1、y)

Boyen & Martin               Informational                     [Page 44]

RFC 5091                        IBCS #1                    December 2007

Boyenとマーチン[44ページ]情報のRFC5091IBCS#2007年12月1日

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は3つの入力を取ります: 1セットの公共のパラメタ(バージョン、k、E、p、q、P、P_1、P_2、P_3、v、hashfcn)、秘密鍵(D_0、D_1)、および暗号文(u、C_0、C_1、y)。 それは、メッセージmを出力するか、または与えられたキーに、暗号文が無効であるなら、誤りに合図します。 使用される公共のパラメタはセクション6.1.2によって定義されるように有効なセットの公共のパラメタであるに違いありません。

   Algorithm 6.5.1 (BBdecrypt): decrypts a ciphertext using public
   parameters and a private key.

アルゴリズム6.5.1(BBdecrypt): 暗号文が公共のパラメタを使用して、秘密鍵であると解読します。

   Input:

以下を入力してください。

   o  A private key given as a pair of points (D_0, D_1) of order q in
      E(F_p)

o Eにおける、1組のポイント(D_0、D_1)の注文qとして与えられた秘密鍵(F_p)

   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の暗号文4倍(u、C_0、C_1、y)、0、…、255、*

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

o 1セットの公共のパラメタ(バージョン、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)との等しさにしてください。(PairingRatioはAlgorithm4.6.1のうちの指定されるとしての2つのテイト組み合わせ(タイプ-1カーブのために、変更される)の比率を計算します)。(PairingRatio)

   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) Algorithm4.3.1(正準な)を使用して、正準な状態で(p、k、1、w)psi=をさせてください。 結果はwの正準な八重奏ストリング表現です。

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

(b) lを天井(lg(p) / 8)、F_pに整数を表すのに必要である八重奏の数との等しさにしてください、そして、固定長lのビッグエンディアンの無そっと歩いている八重奏ストリングとしてそれぞれのこれらのF_p要素を表してください:

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

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

Boyen & Martin               Informational                     [Page 45]

RFC 5091                        IBCS #1                    December 2007

Boyenとマーチン[45ページ]情報のRFC5091IBCS#2007年12月1日

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

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

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

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

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

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

   3. Decrypt the message m from the string y as follows:

3. 以下のストリングyからのメッセージmを解読してください:

      (a) Compute the decryption key h' as a dual-pass hash of w via its
          representation psi:

'(a) wの二元的なパス細切れ肉料理として表現ψで復号化キーh'を計算してください:

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

i。 論じ尽くすアルゴリズムhashfcnを使用することでζをhashfcn(psi)との等しさにしてください。

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

ii。 論じ尽くすアルゴリズムhashfcnを使用することでξをhashfcn(ζ| | psi)との等しさにしてください。

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

iii。 'hをさせてください'はξと等しいです。|| ζ、前の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|、hashfcn) _h'、XOR y。(そのXOR yは1番目があるyのビット的なXORです)。|y| '疑似無作為のバイトの八重奏は種子hでAlgorithm4.2.1(HashBytes)生産しました'

   4. Obtain the integrity check tag u as follows:

4. 以下の保全チェックタグuを入手してください:

      (a) Recover the one-time pad h'' as a dual-pass hash of the
          representation of (w, C_0, C_1, y):

(w、C_0、C_1、y)の表現の二元的なパス細切れ肉料理としての「(a) 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

i。 σを(y_1)_(256^l)との等しさにしてください。|| (x_1)_(^256l) || (y_0)_(^256l) || (x_0)_(^256l) || y|| psiは、yの連結であり、指定でオーダーを結びます5が、示した。

        ii. Let eta = hashfcn(sigma) using the hashing algorithm hashfcn

ii。 論じ尽くすアルゴリズムhashfcnを使用することでηをhashfcn(σ)との等しさにしてください。

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

iii。 論じ尽くすアルゴリズムhashfcnを使用することでμをhashfcn(η| | σ)との等しさにしてください。

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

iv。 「hをさせてください」はμと等しいです。|| η、前の2回のhashfcn出力の連結

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

「hを使用して、(b)はタグuから暗号化無作為化整数sをUnblindします」:

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

i。 「ρをHashToRange(h」、q、hashfcn)との等しさにして、Z_qで整数を得てください。

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

ii。 sをu--ρとの等しさにしてください。(モッズq)

Boyen & Martin               Informational                     [Page 46]

RFC 5091                        IBCS #1                    December 2007

Boyenとマーチン[46ページ]情報のRFC5091IBCS#2007年12月1日

   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

(b) 平等C_0が[s]Pと等しいか否かに関係なく、テストは成立します。

   6. Adjudication and final output:

6. 判決と最終産出物:

      (a) If either of the tests performed in step 5 fails, the
          ciphertext is rejected, and no decryption is output

(a) ステップ5で実行されたテストのどちらかが失敗するなら、暗号文は拒絶されます、そして、どんな復号化も出力ではありません。

      (b) Otherwise, i.e., when both tests performed in step 5 succeed,
          the decrypted message is the output

(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

qは0xfffffffffffffffffffffffffffbffffと等しいです。

   p = 0xbffffffffffffffffffffffffffcffff3

pは0xbffffffffffffffffffffffffffcffff3と等しいです。

   E/F_p: y^2 = x^3 + 1

E/F_p: y^2=x^3+1

   A = (0x489a03c58dcf7fcfc97e99ffef0bb4634,
   0x510c6972d795ec0c2b081b81de767f808)

=(0x489a03c58dcf7fcfc97e99ffef0bb4634、0x510c6972d795ec0c2b081b81de767f808)

   l = 0xb8bbbc0089098f2769b32373ade8f0daf

lは0xb8bbbc0089098f2769b32373ade8f0dafと等しいです。

   Output:

出力:

   [l]A = (0x073734b32a882cc97956b9f7e54a2d326,
   0x9c4b891aab199741a44a5b6b632b949f7)

[l] =(0x073734b32a882cc97956b9f7e54a2d326、0x9c4b891aab199741a44a5b6b632b949f7)

Boyen & Martin               Informational                     [Page 47]

RFC 5091                        IBCS #1                    December 2007

Boyenとマーチン[47ページ]情報のRFC5091IBCS#2007年12月1日

7.2.  Algorithm 4.1.1 (HashToRange)

7.2. アルゴリズム4.1.1(HashToRange)

   Input:

以下を入力してください。

   s =
   54:68:69:73:20:41:53:43:49:49:20:73:74:72:69:6e:67:20:77:69:74
   :68:6f:75:74:20:6e:75:6c:6c:2d:74:65:72:6d:69:6e:61:74:6f:72
   ("This ASCII string without null-terminator")

等しい(「ヌルターミネータのないこのASCIIストリング」)

   n = 0xffffffffffffffffffffefffffffffffffffffff

nは0xffffffffffffffffffffefffffffffffffffffffと等しいです。

   hashfcn = 1.3.14.3.2.16 (SHA-1)

hashfcn=1.3.14.3、.2、.16(SHA-1)

   Output:

出力:

   v = 0x79317c1610c1fc018e9c53d89d59c108cd518608

=0x79317c1610c1fc018e9c53d89d59c108cd518608に対して

7.3.  Algorithm 4.5.1 (Pairing)

7.3. アルゴリズム4.5.1(組み合わせ)

   Input:

以下を入力してください。

   q = 0xfffffffffffffffffffffffffffbffff

qは0xfffffffffffffffffffffffffffbffffと等しいです。

   p = 0xbffffffffffffffffffffffffffcffff3

pは0xbffffffffffffffffffffffffffcffff3と等しいです。

   E/F_p: y^2 = x^3 + 1

E/F_p: y^2=x^3+1

   A = (0x489a03c58dcf7fcfc97e99ffef0bb4634,
   0x510c6972d795ec0c2b081b81de767f808)

=(0x489a03c58dcf7fcfc97e99ffef0bb4634、0x510c6972d795ec0c2b081b81de767f808)

   B = (0x40e98b9382e0b1fa6747dcb1655f54f75,
   0xb497a6a02e7611511d0db2ff133b32a3f)

B=(0x40e98b9382e0b1fa6747dcb1655f54f75、0xb497a6a02e7611511d0db2ff133b32a3f)

   Output:

出力:

   e'(A, B) = (0x8b2cac13cbd422658f9e5757b85493818,
   0xbc6af59f54d0a5d83c8efd8f5214fad3c)

'e'(A、B)=(0x8b2cac13cbd422658f9e5757b85493818、0xbc6af59f54d0a5d83c8efd8f5214fad3c)

Boyen & Martin               Informational                     [Page 48]

RFC 5091                        IBCS #1                    December 2007

Boyenとマーチン[48ページ]情報のRFC5091IBCS#2007年12月1日

7.4.  Algorithm 5.2.1 (BFderivePubl)

7.4. アルゴリズム5.2.1(BFderivePubl)

   Input:

以下を入力してください。

   id = 6f:42:62 ("Bob")

イド=6f: 42:62(「ボブ」)

   version = 2

バージョン= 2

   p = 0xa6a0ffd016103ffffffffff595f002fe9ef195f002fe9efb

pは0xa6a0ffd016103ffffffffff595f002fe9ef195f002fe9efbと等しいです。

   q = 0xffffffffffffffffffffffeffffffffffff

qは0xffffffffffffffffffffffeffffffffffffと等しいです。

   P = (0x6924c354256acf5a0ff7f61be4f0495b54540a5bf6395b3d,
   0x024fd8e2eb7c09104bca116f41c035219955237c0eac19ab)

P=(0x6924c354256acf5a0ff7f61be4f0495b54540a5bf6395b3d、0x024fd8e2eb7c09104bca116f41c035219955237c0eac19ab)

   P_pub = (0xa68412ae960d1392701066664d20b2f4a76d6ee715621108,
   0x9e7644e75c9a131d075752e143e3f0435ff231b6745a486f)

P_パブ=(0xa68412ae960d1392701066664d20b2f4a76d6ee715621108、0x9e7644e75c9a131d075752e143e3f0435ff231b6745a486f)

   Output:

出力:

   Q_id = (0x22fa1207e0d19e1a4825009e0e88e35eb57ba79391498f59,
   0x982d29acf942127e0f01c881b5ec1b5fe23d05269f538836)

Q_イド=(0x22fa1207e0d19e1a4825009e0e88e35eb57ba79391498f59、0x982d29acf942127e0f01c881b5ec1b5fe23d05269f538836)

7.5.  Algorithm 5.3.1 (BFextractPriv)

7.5. アルゴリズム5.3.1(BFextractPriv)

   Input:

以下を入力してください。

   s = 0x749e52ddb807e0220054417e514742b05a0

sは0x749e52ddb807e0220054417e514742b05a0と等しいです。

   version = 2

バージョン= 2

   p = 0xa6a0ffd016103ffffffffff595f002fe9ef195f002fe9efb

pは0xa6a0ffd016103ffffffffff595f002fe9ef195f002fe9efbと等しいです。

   q = 0xffffffffffffffffffffffeffffffffffff

qは0xffffffffffffffffffffffeffffffffffffと等しいです。

   P = (0x6924c354256acf5a0ff7f61be4f0495b54540a5bf6395b3d,
   0x024fd8e2eb7c09104bca116f41c035219955237c0eac19ab)

P=(0x6924c354256acf5a0ff7f61be4f0495b54540a5bf6395b3d、0x024fd8e2eb7c09104bca116f41c035219955237c0eac19ab)

   P_pub = (0xa68412ae960d1392701066664d20b2f4a76d6ee715621108,
   0x9e7644e75c9a131d075752e143e3f0435ff231b6745a486f)

P_パブ=(0xa68412ae960d1392701066664d20b2f4a76d6ee715621108、0x9e7644e75c9a131d075752e143e3f0435ff231b6745a486f)

   Output:

出力:

   Q_id = (0x8212b74ea75c841a9d1accc914ca140f4032d191b5ce5501,
   0x950643d940aba68099bdcb40082532b6130c88d317958657)

Q_イド=(0x8212b74ea75c841a9d1accc914ca140f4032d191b5ce5501、0x950643d940aba68099bdcb40082532b6130c88d317958657)

Boyen & Martin               Informational                     [Page 49]

RFC 5091                        IBCS #1                    December 2007

Boyenとマーチン[49ページ]情報のRFC5091IBCS#2007年12月1日

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

以下に注意してください。 また、Algorithm5.5.1(BFdecrypt)をテストするのに以下の値を使用できます。

   Input:

以下を入力してください。

   m = 48:69:20:74:68:65:72:65:21 ("Hi there!")

m=48:69:20:74:68:65:72:65:21(「やあ!」)

   id = 6f:42:62 ("Bob")

イド=6f: 42:62(「ボブ」)

   version = 2

バージョン= 2

   p = 0xa6a0ffd016103ffffffffff595f002fe9ef195f002fe9efb

pは0xa6a0ffd016103ffffffffff595f002fe9ef195f002fe9efbと等しいです。

   q = 0xffffffffffffffffffffffeffffffffffff

qは0xffffffffffffffffffffffeffffffffffffと等しいです。

   P = (0x6924c354256acf5a0ff7f61be4f0495b54540a5bf6395b3d,
   0x024fd8e2eb7c09104bca116f41c035219955237c0eac19ab)

P=(0x6924c354256acf5a0ff7f61be4f0495b54540a5bf6395b3d、0x024fd8e2eb7c09104bca116f41c035219955237c0eac19ab)

   P_pub = (0xa68412ae960d1392701066664d20b2f4a76d6ee715621108,
   0x9e7644e75c9a131d075752e143e3f0435ff231b6745a486f)

P_パブ=(0xa68412ae960d1392701066664d20b2f4a76d6ee715621108、0x9e7644e75c9a131d075752e143e3f0435ff231b6745a486f)

   Output:

出力:

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

無作為の値ρ=0xed5397ff77b567ba5ecb644d7671d6b6f2082968を使用して、私たちは以下の出力を手に入れます:

   U =
   (0x1b5f6c461497acdfcbb6d6613ad515430c8b3fa23b61c585e9a541b199e
   2a6cb,
   0x9bdfbed1ae664e51e3d4533359d733ac9a600b61048a7d899104e826a0ec
   4fa4)

U=(0x1b5f6c461497acdfcbb6d6613ad515430c8b3fa23b61c585e9a541b199e 2a6cb、0x9bdfbed1ae664e51e3d4533359d733ac9a600b61048a7d899104e826a0ec 4fa4)

   V =
   e0:1d:ad:81:32:6c:b1:73:af:c2:8d:72:2e:7a:32:1a:7b:29:8a:aa

V=e0:1d:広告: 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

Wはf9:04:Ba:40:30:e9:Ce:6e:ffと等しいです。

Boyen & Martin               Informational                     [Page 50]

RFC 5091                        IBCS #1                    December 2007

Boyenとマーチン[50ページ]情報のRFC5091IBCS#2007年12月1日

7.7.  Algorithm 6.3.1 (BBextractPriv)

7.7. アルゴリズム6.3.1(BBextractPriv)

   Input:

以下を入力してください。

   alpha = 0xa60c395285ded4d70202c8283d894bad4f0

アルファ=0xa60c395285ded4d70202c8283d894bad4f0

   beta = 0x48bf012da19f170b13124e5301561f45053

ベータ=0x48bf012da19f170b13124e5301561f45053

   gamma = 0x226fba82bc38e2ce4e28e56472ccf94a499

ガンマ=0x226fba82bc38e2ce4e28e56472ccf94a499

   version = 2

バージョン= 2

   p = 0x91bbe2be1c8950750784befffffffffffff6e441d41e12fb

pは0x91bbe2be1c8950750784befffffffffffff6e441d41e12fbと等しいです。

   q = 0xfffffffffbfffffffffffffffffffffffff

qは0xfffffffffbfffffffffffffffffffffffffと等しいです。

   P = (0x13cc538fe950411218d7f5c17ae58a15e58f0877b29f2fe1,
   0x8cf7bab1a748d323cc601fabd8b479f54a60be11e28e18cf)

P=(0x13cc538fe950411218d7f5c17ae58a15e58f0877b29f2fe1、0x8cf7bab1a748d323cc601fabd8b479f54a60be11e28e18cf)

   P_1 = (0x0f809a992ed2467a138d72bc1d8931c6ccdd781bedc74627,
   0x11c933027beaaf73aa9022db366374b1c68d6bf7d7a888c2)

P_1=(0x0f809a992ed2467a138d72bc1d8931c6ccdd781bedc74627、0x11c933027beaaf73aa9022db366374b1c68d6bf7d7a888c2)

   P_2 = (0x0f8ac99a55e575bf595308cfea13edb8ec673983919121b0,
   0x3febb7c6369f5d5f18ee3ea6ca0181448a4f3c4f3385019c)

P_2=(0x0f8ac99a55e575bf595308cfea13edb8ec673983919121b0、0x3febb7c6369f5d5f18ee3ea6ca0181448a4f3c4f3385019c)

   P_3 = (0x2c10b43991052e78fac44fdce639c45824f5a3a2550b2a45,
   0x6d7c12d8a0681426a5bbc369c9ef54624356e2f6036a064f)

P_3=(0x2c10b43991052e78fac44fdce639c45824f5a3a2550b2a45、0x6d7c12d8a0681426a5bbc369c9ef54624356e2f6036a064f)

   v = (0x38f91032de6847a89fc3c83e663ed0c21c8f30ce65c0d7d3,
   0x44b9aa10849cc8d8987ef2421770a340056745da8b99fba2)

=に対して(0x38f91032de6847a89fc3c83e663ed0c21c8f30ce65c0d7d3、0x44b9aa10849cc8d8987ef2421770a340056745da8b99fba2)

   id = 6f:42:62 ("Bob")

イド=6f: 42:62(「ボブ」)

   Output:

出力:

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

無作為の値r=0x695024c25812112187162c08aa5f65c7a2cを使用して、私たちは以下の出力を手に入れます:

   D_0 = (0x3264e13feeb7c506493888132964e79ad657a952334b9e53,
   0x3eeaefc14ba1277a1cd6fdea83c7c882fe6d85d957055c7b)

D_0=(0x3264e13feeb7c506493888132964e79ad657a952334b9e53、0x3eeaefc14ba1277a1cd6fdea83c7c882fe6d85d957055c7b)

   D_1 = (0x8d7a72ad06909bb3bb29b67676d935018183a905e7e8cb18,
   0x2b346c6801c1db638f270af915a21054f16044ab67f6c40e)

D_1=(0x8d7a72ad06909bb3bb29b67676d935018183a905e7e8cb18、0x2b346c6801c1db638f270af915a21054f16044ab67f6c40e)

Boyen & Martin               Informational                     [Page 51]

RFC 5091                        IBCS #1                    December 2007

Boyenとマーチン[51ページ]情報のRFC5091IBCS#2007年12月1日

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

以下に注意してください。 また、Algorithm5.5.1(BFdecrypt)をテストするのに以下の値を使用できます。

   Input:

以下を入力してください。

   m = 48:69:20:74:68:65:72:65:21 ("Hi there!")

m=48:69:20:74:68:65:72:65:21(「やあ!」)

   id = 6f:42:62 ("Bob")

イド=6f: 42:62(「ボブ」)

   version = 2

バージョン= 2

   E: y^2 = x^3 + 1

E: y^2=x^3+1

   p = 0x91bbe2be1c8950750784befffffffffffff6e441d41e12fb

pは0x91bbe2be1c8950750784befffffffffffff6e441d41e12fbと等しいです。

   q = 0xfffffffffbfffffffffffffffffffffffff

qは0xfffffffffbfffffffffffffffffffffffffと等しいです。

   P = (0x13cc538fe950411218d7f5c17ae58a15e58f0877b29f2fe1,
   0x8cf7bab1a748d323cc601fabd8b479f54a60be11e28e18cf)

P=(0x13cc538fe950411218d7f5c17ae58a15e58f0877b29f2fe1、0x8cf7bab1a748d323cc601fabd8b479f54a60be11e28e18cf)

   P_1 = (0x0f809a992ed2467a138d72bc1d8931c6ccdd781bedc74627,
   0x11c933027beaaf73aa9022db366374b1c68d6bf7d7a888c2)

P_1=(0x0f809a992ed2467a138d72bc1d8931c6ccdd781bedc74627、0x11c933027beaaf73aa9022db366374b1c68d6bf7d7a888c2)

   P_2 = (0x0f8ac99a55e575bf595308cfea13edb8ec673983919121b0,
   0x3febb7c6369f5d5f18ee3ea6ca0181448a4f3c4f3385019c)

P_2=(0x0f8ac99a55e575bf595308cfea13edb8ec673983919121b0、0x3febb7c6369f5d5f18ee3ea6ca0181448a4f3c4f3385019c)

   P_3 = (0x2c10b43991052e78fac44fdce639c45824f5a3a2550b2a45,
   0x6d7c12d8a0681426a5bbc369c9ef54624356e2f6036a064f)

P_3=(0x2c10b43991052e78fac44fdce639c45824f5a3a2550b2a45、0x6d7c12d8a0681426a5bbc369c9ef54624356e2f6036a064f)

   v = (0x38f91032de6847a89fc3c83e663ed0c21c8f30ce65c0d7d3,
   0x44b9aa10849cc8d8987ef2421770a340056745da8b99fba2)

=に対して(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

uは0xad1ebfa82edf0bcb5111e9dc08ff0737c68と等しいです。

   C_0 = (0x79f8f35904579f1aaf51897b1e8f1d84e1c927b8994e81f9,
   0x1cf77bb2516606681aba2e2dc14764aa1b55a45836014c62)

C_0=(0x79f8f35904579f1aaf51897b1e8f1d84e1c927b8994e81f9、0x1cf77bb2516606681aba2e2dc14764aa1b55a45836014c62)

Boyen & Martin               Informational                     [Page 52]

RFC 5091                        IBCS #1                    December 2007

Boyenとマーチン[52ページ]情報のRFC5091IBCS#2007年12月1日

   C_1 = (0x410cfeb0bccf1fa4afc607316c8b12fe464097b20250d684,
   0x8bb76e7195a7b1980531b0a5852ce710cab5d288b2404e90)

C_1=(0x410cfeb0bccf1fa4afc607316c8b12fe464097b20250d684、0x8bb76e7195a7b1980531b0a5852ce710cab5d288b2404e90)

   y = 82:a6:42:b9:bb:e9:82:c4:57

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.

このセクションは本書では議論したencodingsのためにASN.1モジュールを定義します。

   IBCS { joint-iso-itu-t(2) country(16) us(840) organization(1)
      identicrypt(114334) ibcs(1) module(5) version(1) }

IBCS(16) 共同iso-ituのt(2)国の私たち、(840) 組織(1)identicrypt(114334) ibcs(1)モジュール(5)バージョン(1)

   DEFINITIONS IMPLICIT TAGS ::= BEGIN

定義、内在しているタグ:、:= 始まってください。

   --
   -- Identity-based cryptography standards (IBCS):
   -- supersingular curve implementations of
   -- the BF and BB1 cryptosystems
   --
   -- This version only supports IBE using
   -- type-1 curves, i.e., the curve y^2 = x^3 + 1.
   --

-- -- アイデンティティベースの暗号規格(IBCS): -- このバージョンサポートだけIBEが使用して、-1をタイプしている--BFとBB1暗号系--カーブの「スーパー-単数」カーブ実現、すなわち、カーブy^2はx^3+1と等しいです。 --

   ibcs OBJECT IDENTIFIER ::= {
      joint-iso-itu-t(2) country(16) us(840) organization(1)
         identicrypt(114334) ibcs(1)
   }

ibcs OBJECT IDENTIFIER:、:= (16) 共同iso-ituのt(2)国の私たち、(840) 組織(1)identicrypt(114334) ibcs(1)

   --
   -- IBCS1
   --
   -- IBCS1 defines the algorithms used to implement IBE
   --

-- -- IBCS1----IBCS1はIBEを実行するのに使用されるアルゴリズムを定義します--

   ibcs1 OBJECT IDENTIFIER ::= {
      ibcs ibcs1(1)
   }

ibcs1 OBJECT IDENTIFIER:、:= ibcs ibcs1(1)

   --
   -- An elliptic curve is specified by an OID.
   -- A type1curve is defined by the equation y^2 = x^3 + 1.
   --

-- -- 楕円曲線はOIDによって指定されます。 -- type1curveは方程式y^2=x^3+1によって定義されます。 --

   type1curve OBJECT IDENTIFIER ::= {
      ibcs1 curve-types(1) type1-curve(1)
   }

type1curve OBJECT IDENTIFIER:、:= ibcs1カーブタイプ(1)type1カーブ(1)

Boyen & Martin               Informational                     [Page 53]

RFC 5091                        IBCS #1                    December 2007

Boyenとマーチン[53ページ]情報のRFC5091IBCS#2007年12月1日

   --
   -- Supporting types
   --

-- -- タイプを支持します--

   --
   -- Encoding of a point on an elliptic curve E/F_p
   -- An FpPoint can either represent an element of
   -- F_p^2 or an element of (F_p)^2.

-- -- 楕円曲線E/F_pでのポイントのコード化--どちらかが要素を表すFpPoint缶--F_p^2か(F_p)^2の要素。

    FpPoint ::= SEQUENCE {
      x  INTEGER,
      y  INTEGER
   }

FpPoint:、:= 系列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-1----イド-sha1 OBJECT IDENTIFIER、:、:= --iso(1)の特定された組織(3)oiw(14)--secsig(3)アルゴリズム(2)hashAlgorithmIdentifier(26)--、--、--SHA-224----、イド-sha224 OBJECT IDENTIFIER:、:= --、(16) 共同iso-ituのt(2)国の私たち、(840)--組織(1)gov(101)--csor(3) nistAlgorithm(4) hashAlgs(2) sha224(4)--、--、--SHA-256----、イド-sha256 OBJECT IDENTIFIER:、:= --、(16) 共同iso-ituのt(2)国の私たち、(840)--組織(1)gov(101)--csor(3) nistAlgorithm(4) hashAlgs(2) sha256(1)--、--、--SHA-384----、イド-sha384 OBJECT IDENTIFIER:、:= --、(16) 共同iso-ituのt(2)国の私たち、(840)--組織(1)gov(101)--csor(3) nistAlgorithm(4) hashAlgs(2) sha384(2)--、--

Boyen & Martin               Informational                     [Page 54]

RFC 5091                        IBCS #1                    December 2007

Boyenとマーチン[54ページ]情報のRFC5091IBCS#2007年12月1日

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

-- SHA-512----イド-sha512 OBJECT IDENTIFIER、:、:= --、(16) 共同iso-ituのt(2)国の私たち、(840)--組織(1)gov(101)--csor(3) nistAlgorithm(4) hashAlgs(2) sha512(3)--、--、--、--アルゴリズム--

   ibe-algorithms OBJECT IDENTIFIER ::= {
      ibcs1 ibe-algorithms(2)
   }

ibe-アルゴリズムOBJECT IDENTIFIER:、:= ibcs1 ibeアルゴリズム(2)

   ---
   --- Boneh-Franklin IBE
   ---

--- --- Boneh-フランクリンIBE---

   bf OBJECT IDENTIFIER ::= { ibe-algorithms bf(1) }

bf OBJECT IDENTIFIER:、:= ibe-アルゴリズムbf(1)

   --
   -- Encoding of a BF public parameters block.
   -- The only version currently supported is version 2.
   -- The values p and q define a subgroup of E(F_p) of order q.
   --

-- -- BF公共のパラメタブロックはコード化されます。 -- 現在支持されている唯一のバージョンがバージョン2です。 -- 値pとqはオーダーqのE(F_p)のサブグループを定義します。 --

   BFPublicParameters ::= SEQUENCE {
      version     INTEGER { v2(2) },
      curve       OBJECT IDENTIFIER,
      p           INTEGER,
      q           INTEGER,
      pointP      FpPoint,
      pointPpub   FpPoint,
      hashfcn     OBJECT IDENTIFIER
   }

BFPublicParameters:、:= 系列バージョンINTEGER v2(2)、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.
   --

-- -- BF秘密鍵は楕円曲線(FpPointである)のポイントです。 -- 支持された唯一のバージョンがバージョン2です。 --

   BFPrivateKeyBlock ::= SEQUENCE {
      version     INTEGER { v2(2) },
      privateKey  FpPoint
   }

BFPrivateKeyBlock:、:= 系列バージョンINTEGER v2(2)、privateKey FpPoint

Boyen & Martin               Informational                     [Page 55]

RFC 5091                        IBCS #1                    December 2007

Boyenとマーチン[55ページ]情報のRFC5091IBCS#2007年12月1日

   --
   -- A BF master secret is an integer.
   -- The only version supported is version 2.
   --

-- -- BFマスター秘密は整数です。 -- 支持された唯一のバージョンがバージョン2です。 --

   BFMasterSecret ::= SEQUENCE {
      version        INTEGER {v2(2) },
      masterSecret   INTEGER
   }

BFMasterSecret:、:= 系列バージョンINTEGER v2(2)、masterSecret INTEGER

   --
   -- BF ciphertext block
   -- The only version supported is version 2.
   --

-- -- BF暗号文ブロック--支持された唯一のバージョンがバージョン2です。 --

   BFCiphertextBlock ::= SEQUENCE {
      version  INTEGER { v2(2) },
      u        FpPoint,
      v        OCTET STRING,
      w        OCTET STRING
   }

BFCiphertextBlock:、:= 系列バージョンINTEGER v2(2)、u FpPoint対OCTET STRING、w OCTET STRING

   --
   -- Boneh-Boyen (BB1) IBE
   --

-- -- Boneh-Boyen(BB1)IBE--

   bb1 OBJECT IDENTIFIER ::= { ibe-algorithms bb1(2) }

bb1 OBJECT IDENTIFIER:、:= ibe-アルゴリズムbb1(2)

   --
   -- Encoding of a BB1 public parameters block.
   -- The version is currently fixed to 2.
   --
   --

-- -- BB1公共のパラメタブロックはコード化されます。 -- バージョンは現在、2に固定されています。 -- --

   BB1PublicParameters ::= SEQUENCE {
      version     INTEGER { v2(2) },
      curve       OBJECT IDENTIFIER,
      p           INTEGER,
      q           INTEGER,
      pointP      FpPoint,
      pointP1     FpPoint,
      pointP2     FpPoint,
      pointP3     FpPoint,
      v           FpPoint,
      hashfcn     OBJECT IDENTIFIER
   }

BB1PublicParameters:、:= 系列バージョンINTEGER v2(2)、OBJECT IDENTIFIERを曲がらせてください、p INTEGER、q INTEGER、pointP FpPoint、pointP1 FpPoint、pointP2 FpPoint、pointP3 FpPoint、FpPointに対して、hashfcn OBJECT IDENTIFIER

Boyen & Martin               Informational                     [Page 56]

RFC 5091                        IBCS #1                    December 2007

Boyenとマーチン[56ページ]情報のRFC5091IBCS#2007年12月1日

   --
   -- BB1 master secret block
   -- The only version supported is version 2.
   --

-- -- BB1は秘密のブロックを習得します--支持された唯一のバージョンがバージョン2です。 --

   BB1MasterSecret ::= SEQUENCE {
      version  INTEGER { v2(2) },
      alpha    INTEGER,
      beta     INTEGER,
      gamma    INTEGER
   }

BB1MasterSecret:、:= 系列バージョンINTEGER v2(2)、アルファINTEGER、ベータINTEGER、ガンマINTEGER

   --
   -- BB1 private Key block
   -- The only version supported is version 2.
   --

-- -- BB1個人的なKeyブロック--支持された唯一のバージョンがバージョン2です。 --

   BB1PrivateKeyBlock ::= SEQUENCE {
      version  INTEGER { v2(2) },
      pointD0  FpPoint,
      pointD1  FpPoint
   }

BB1PrivateKeyBlock:、:= 系列バージョンINTEGER v2(2)、pointD0 FpPoint、pointD1 FpPoint

   --
   -- BB1 ciphertext block
   -- The only version supported is version 2.
   --

-- -- BB1暗号文ブロック--支持された唯一のバージョンがバージョン2です。 --

   BB1CiphertextBlock ::= SEQUENCE {
      version     INTEGER {v2(2) },
      pointChi0   FpPoint,
      pointChi1   FpPoint,
      nu          INTEGER,
      y           OCTET STRING
   }

BB1CiphertextBlock:、:= 系列バージョンINTEGER v2(2)、pointChi0 FpPoint、pointChi1 FpPoint、νINTEGER、y OCTET STRING

   END

終わり

Boyen & Martin               Informational                     [Page 57]

RFC 5091                        IBCS #1                    December 2007

Boyenとマーチン[57ページ]情報のRFC5091IBCS#2007年12月1日

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.

このドキュメントは暗号アルゴリズムを説明します。私たちは、そのようなアルゴリズムで提供されたセキュリティが完全に関連秘密鍵の秘密主義を当てにされて、敵がアルゴリズムで提供されたセキュリティを破るのに、彼が、秘密鍵を回復するために計算上徹底的なcryptanalytic攻撃を実行する必要であると思います。

   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.

私たちは、本書では説明されたアルゴリズムのユーザが暗号の強さの5つのレベルの1つを必要とすると思います: または、112ビットと、128ビットと、192ビット80ビットの同等物、256ビット。 80ビットのレベルは遺産アプリケーションとSHOULD NOTに適しています。使用されて、役に立つ人生が2010年の先間、だれのものを広げているかという情報を保護してください。 112ビットのレベルは、Triple-DESキーの主要な輸送における使用に適して、役に立つ人生がだれのものを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| subprime qのビットの数を表します。 このテーブルは、Type-1 supersingularカーブが使用されていると仮定します。

   Bits of Security   |p|    |q|
   80                 512    160
   112                1024   224
   128                1536   256
   192                3840   384
   256                7680   512

セキュリティのビット|p| |q| 80 512 160 112 1024 224 128 1536 256 192 3840 384 256 7680 512

   Table 1: Sizes of BF and BB1 Parameters Required to Attain Standard
   Levels of Bit Security [SP800-57].

テーブル1: BFとBB1パラメタのサイズが標準のレベルのビットセキュリティ[SP800-57]に達するのが必要です。

   If an IBE key is used to transport a symmetric key that provides more
   bits of security than the bit strength of the IBE key, users should
   understand that the security of the system is then limited by the
   strength of the weaker IBE key. So if an IBE key that provides 112
   bits of security is used to transport a 128-bit AES key, then the
   security provided is limited by the 112 bits of security of the IBE
   key.

IBEキーが提供される対称鍵を輸送するのに使用されるなら、IBEキーの噛み付いている強さ、ユーザよりセキュリティのビットは、次に、システムのセキュリティが、より弱いIBEキーの強さによって制限されるのを理解しているはずです。 それで、セキュリティはそれが112ビット提供するIBEキーであるなら128ビットのAESキーを輸送するのに使用されて、次に、提供されたセキュリティはIBEキーのセキュリティの112ビットによって制限されます。

Boyen & Martin               Informational                     [Page 58]

RFC 5091                        IBCS #1                    December 2007

Boyenとマーチン[58ページ]情報のRFC5091IBCS#2007年12月1日

   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.

このドキュメントがアルゴリズム[SHA]を論じ尽くしながら米国商務省標準技術局(NIST)の使用を指定することに注意して、楕円曲線のポイントか整数のどちらかへのアイデンティティを論じ尽くしてください。 SHA-1[SHA]に対する最近の攻撃は、2^80が論じ尽くす予想より少ない仕事との衝突を見つける方法がハッシュ関数の出力のサイズに基づいて単独で必要であると発見しました。 攻撃者が衝突を見つけることができるなら、彼らは、同じIBE秘密鍵を持っている2つのアイデンティティを作成するのに衝突している「前-イメージ」を使用するかもしれません。 しかしながら、そのような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]で説明されるEメールアドレスと、有効期間と、URIになるように定義されるかでIBEが使用されるなら、これは特に、本当です。 この場合、衝突の予測できない結果は、有効なアイデンティティの形式に非常に合いそうになくて、攻撃者にとって、その結果、無駄です。 どんなプロトコル使用IBE MUSTもハッシュ関数における衝突を攻撃者には本質的には役に立たなくする方法でアイデンティティを定義します。 無作為のストリングがアイデンティティとしてめったに使用されないので、この要件は実現させるのが過度に難しいはずがありません。

   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.

本書では説明されたアルゴリズムを使用するシステムの強さはPKGから秘密鍵を要求するユーザを認証するのに使用されるメカニズムの強さを当てにします、このドキュメントのセクション1.2のステップ2で説明されるように。 これはデジタル証明書[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

キーリカバリーのこととなったら、IBEシステムには他の非対称の暗合方式と異なった特性があることに注意してください。 マスター秘密が安全なPKGで維持されて、その時がPKGといずれかであるなら

Boyen & Martin               Informational                     [Page 59]

RFC 5091                        IBCS #1                    December 2007

Boyenとマーチン[59ページ]情報のRFC5091IBCS#2007年12月1日

   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.

アクセスの適正水準をもっている管理者は任意の秘密鍵を作成できて、すべての動作のそのような管理者と伐採の周りのコントロールがそのような管理者SHOULDで働いたための機能しているIBEシステムの一部になってください。

   On the other hand, it is also possible to create IBE private keys
   using a master secret and to then destroy the master secret, making
   any key recovery impossible.  If this property is not desired, an
   administrator of an IBE system SHOULD require that the format of the
   identity used by the system contain a component that is short-lived.
   The format of identity that is defined in [IBECMS], for example,
   contains information about the time period of validity of the key
   that will be calculated from the identity.  Such an identity can
   easily be changed to allow the rekeying of users if their IBE private
   key is somehow compromised.

他方では、また、マスター秘密を使用することでIBE秘密鍵を作成して、次に、マスター秘密を無効にするのも可能です、どんなキーリカバリーも不可能にして。 この特性が望まれていないなら、アイデンティティの形式がシステムで使用したSHOULDが必要とするIBEシステムの管理者は短命なコンポーネントを含みます。 例えば[IBECMS]で定義されるアイデンティティの形式はアイデンティティから計算されるキーの正当性の期間頃に情報を含みます。 どうにか彼らのIBE秘密鍵で妥協するなら、ユーザを「再-合わせ」ることを許すために容易にそのようなアイデンティティを変えることができます。

10.  Acknowledgments

10. 承認

   This document is based on the IBCS #1 v2 document of Voltage
   Security, Inc.  Any substantial use of material from this document
   should acknowledge Voltage Security, Inc.  as the source of the
   information.

このドキュメントはVoltage Security Inc.のIBCS#1v2ドキュメントに基づいています。このドキュメントからの材料のAnyのかなりの使用が情報の源として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.

[KEYWORDS]ブラドナー、S.、「Indicate Requirement LevelsへのRFCsにおける使用のためのキーワード」、BCP14、RFC2119、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.レスコラ、「トランスポート層セキュリティ(TLS)は2006年4月にバージョン1.1インチ、RFC4346について議定書の中で述べます」。

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] EUROCRYPT04、LNCS3027、ページについてD.BonehとX.Boyen、「効率的な選択しているID安全なアイデンティティは無作為の神託のない暗号化を基礎づけた」(In Proc)。 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.フランクリン、Procの「ウィル組み合わせからのアイデンティティベースの暗号化」、CRYPTO01、LNCS2139、ページ 213-229, 2001.

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

[cm] Housley、R.、「暗号のメッセージ構文(cm)」、RFC3852、2004年7月。

Boyen & Martin               Informational                     [Page 60]

RFC 5091                        IBCS #1                    December 2007

Boyenとマーチン[60ページ]情報のRFC5091IBCS#2007年12月1日

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

I.ブレーク、[ECC]G.Seroussi、N.賢い、「暗号の楕円曲線」、ケンブリッジ大学出版局、1999

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

[FIPS186-2]米国商務省標準技術局、「デジタル署名基準」、連邦情報処理基準186-2、2002年8月。

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

[IBEARCH] G.Appenzeller、L.マーチンとM.Schertler、「アイデンティティはEncryption Architectureを基礎づけた」ProgressのWork。

   [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.マーチンとM.Schertler、「Cryptographic Message Syntax(CMS)があるBoneh-フランクリンとBoneh-Boyenのアイデンティティベースの暗号化アルゴリズムを使用します」、ProgressのWork。

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

[MERKLE]R.Merkle、「速いソフトウェア片道ハッシュ関数」、Cryptology、Vol.3(1990)、ページのJournal 43-58.

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

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

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

[SP800-57] E.バーカー、W.バーカー、W.ばり、W.ポーク、およびM.スミート、「推薦、Key Management--第1部のために:、」 「一般(改訂される)」、NISTの特別な公表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]国家の研究所と技術(「安全な細切れ肉料理規格」、連邦政府の情報処理規格公表180-2、2002年8月)は変化で1に気付きます、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 Institut、「財政的のための公開鍵暗号は産業にサービスを提供します」。 「楕円曲線デジタル署名アルゴリズム(ECDSA)」、金融サービスX9.62-2005、2005年11月のための米国標準規格。

   [X.509]      ITU-T Recommendation X.509 (2000) | ISO/IEC 9594-8:2001,
                Information Technology - Open Systems Interconnection -
                The Directory:  Public-key and Attribute Certificate
                Frameworks.

[X.509]ITU-T推薦X.509(2000)| 情報技術--オープン・システム・インターコネクション--ISO/IEC9594-8:2001、ディレクトリ: 公開カギと属性は枠組みを証明します。

Boyen & Martin               Informational                     [Page 61]

RFC 5091                        IBCS #1                    December 2007

Boyenとマーチン[61ページ]情報のRFC5091IBCS#2007年12月1日

Authors' Addresses

作者のアドレス

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

パロアルト、ザビエルBoyen電圧セキュリティ1070Arastradero第Suite100カリフォルニア 94304

   EMail: xavier@voltage.com

メール: xavier@voltage.com

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

パロアルト、ルターマーチン電圧セキュリティ1070Arastradero第Suite100カリフォルニア 94304

   EMail: martin@voltage.com

メール: martin@voltage.com

Boyen & Martin               Informational                     [Page 62]

RFC 5091                        IBCS #1                    December 2007

Boyenとマーチン[62ページ]情報のRFC5091IBCS#2007年12月1日

Full Copyright Statement

完全な著作権宣言文

   Copyright (C) The IETF Trust (2007).

IETFが信じる著作権(C)(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.

このドキュメントはBCP78と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はどんなIntellectual Property Rightsの正当性か範囲、実現に関係すると主張されるかもしれない他の権利、本書では説明された技術の使用またはそのような権利の下におけるどんなライセンスも利用可能であるかもしれない、または利用可能でないかもしれない範囲に関しても立場を全く取りません。 または、それはそれを表しません。どんなそのような権利も特定するためのどんな独立している努力もしました。 BCP78とBCP79でRFCドキュメントの権利に関する手順に関する情報を見つけることができます。

   Copies of IPR disclosures made to the IETF Secretariat and any
   assurances of licenses to be made available, or the result of an
   attempt made to obtain a general license or permission for the use of
   such proprietary rights by implementers or users of this
   specification can be obtained from the IETF on-line IPR repository at
   http://www.ietf.org/ipr.

IPR公開のコピーが利用可能に作られるべきライセンスの保証、または一般的な免許を取得するのが作られた試みの結果をIETF事務局といずれにもしたか、または http://www.ietf.org/ipr のIETFのオンラインIPR倉庫からこの仕様のimplementersかユーザによるそのような所有権の使用のために許可を得ることができます。

   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に情報を記述してください。

Boyen & Martin               Informational                     [Page 63]

Boyenであって、マーチンInformationalです。[63ページ]

一覧

 RFC 1〜100  RFC 1401〜1500  RFC 2801〜2900  RFC 4201〜4300 
 RFC 101〜200  RFC 1501〜1600  RFC 2901〜3000  RFC 4301〜4400 
 RFC 201〜300  RFC 1601〜1700  RFC 3001〜3100  RFC 4401〜4500 
 RFC 301〜400  RFC 1701〜1800  RFC 3101〜3200  RFC 4501〜4600 
 RFC 401〜500  RFC 1801〜1900  RFC 3201〜3300  RFC 4601〜4700 
 RFC 501〜600  RFC 1901〜2000  RFC 3301〜3400  RFC 4701〜4800 
 RFC 601〜700  RFC 2001〜2100  RFC 3401〜3500  RFC 4801〜4900 
 RFC 701〜800  RFC 2101〜2200  RFC 3501〜3600  RFC 4901〜5000 
 RFC 801〜900  RFC 2201〜2300  RFC 3601〜3700  RFC 5001〜5100 
 RFC 901〜1000  RFC 2301〜2400  RFC 3701〜3800  RFC 5101〜5200 
 RFC 1001〜1100  RFC 2401〜2500  RFC 3801〜3900  RFC 5201〜5300 
 RFC 1101〜1200  RFC 2501〜2600  RFC 3901〜4000  RFC 5301〜5400 
 RFC 1201〜1300  RFC 2601〜2700  RFC 4001〜4100  RFC 5401〜5500 
 RFC 1301〜1400  RFC 2701〜2800  RFC 4101〜4200 

スポンサーリンク

画像を拡大縮小する方法

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る