RFC2440 日本語訳
2440 OpenPGP Message Format. J. Callas, L. Donnerhacke, H. Finney, R.Thayer. November 1998. (Format: TXT=141371 bytes) (Obsoleted by RFC4880) (Status: PROPOSED STANDARD)
プログラムでの自動翻訳です。
英語原文
Network Working Group J. Callas Request for Comments: 2440 Network Associates Category: Standards Track L. Donnerhacke IN-Root-CA Individual Network e.V. H. Finney Network Associates R. Thayer EIS Corporation November 1998
カラがコメントのために要求するワーキンググループJ.をネットワークでつないでください: 2440年のネットワークはカテゴリを関連づけます: 規格はR.セイヤーEIS社の1998年11月にRootカリフォルニアの個々のL.のe.V.H.フィニーネットワークDonnerhackeネットワーク関連を追跡します。
OpenPGP Message Format
OpenPGPメッセージ・フォーマット
Status of this Memo
このMemoの状態
This document specifies an Internet standards track protocol for the Internet community, and requests discussion and suggestions for improvements. Please refer to the current edition of the "Internet Official Protocol Standards" (STD 1) for the standardization state and status of this protocol. Distribution of this memo is unlimited.
このドキュメントは、インターネットコミュニティにインターネット標準化過程プロトコルを指定して、改良のために議論と提案を要求します。 このプロトコルの標準化状態と状態への「インターネット公式プロトコル標準」(STD1)の現行版を参照してください。 このメモの分配は無制限です。
Copyright Notice
版権情報
Copyright (C) The Internet Society (1998). All Rights Reserved.
Copyright(C)インターネット協会(1998)。 All rights reserved。
IESG Note
IESG注意
This document defines many tag values, yet it doesn't describe a mechanism for adding new tags (for new features). Traditionally the Internet Assigned Numbers Authority (IANA) handles the allocation of new values for future expansion and RFCs usually define the procedure to be used by the IANA. However, there are subtle (and not so subtle) interactions that may occur in this protocol between new features and existing features which result in a significant reduction in over all security. Therefore, this document does not define an extension procedure. Instead requests to define new tag values (say for new encryption algorithms for example) should be forwarded to the IESG Security Area Directors for consideration or forwarding to the appropriate IETF Working Group for consideration.
このドキュメントは多くのタグ値を定義します、しかし、それが新しいタグ(新機能のための)を加えるためにメカニズムについて説明しません。 伝統的に、インターネットAssigned民数記Authority(IANA)は今後の拡張のために新しい値の配分を扱います、そして、IANAによって使用されるように、通常、RFCsは手順を定義します。 しかしながら、それがすべてのセキュリティについてかなりの減少をもたらす新機能と既存の特徴の間のこのプロトコルで起こるかもしれない微妙で(あまりに微妙でない)の相互作用があります。 したがって、このドキュメントは拡張の手順を定義しません。 代わりに、新しいタグ値(例えば、新しい暗号化アルゴリズムのために、言う)を定義するという要求は、考慮のためにIESG Security Areaディレクターに送るべきであるか、または考慮のために適切なIETFに作業部会を送るべきです。
Abstract
要約
This document is maintained in order to publish all necessary information needed to develop interoperable applications based on the OpenPGP format. It is not a step-by-step cookbook for writing an application. It describes only the format and methods needed to read, check, generate, and write conforming packets crossing any network. It does not deal with storage and implementation questions. It does,
このドキュメントは、OpenPGP形式に基づく共同利用できるアプリケーションを開発するのに必要であるすべての必要事項を発表するために維持されます。 それは、アプリケーションを書くための段階的な料理の本ではありません。 それはどんなネットワークも越える従うパケットを読んで、チェックして、生成して、書くのに必要である形式とメソッドだけを説明します。 それはストレージと実装質問に対処しません。 それはそうします。
Callas, et. al. Standards Track [Page 1] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[1ページ]。
however, discuss implementation issues necessary to avoid security flaws.
しかしながら、セキュリティー・フローを避けるのに必要な導入問題について議論してください。
Open-PGP software uses a combination of strong public-key and symmetric cryptography to provide security services for electronic communications and data storage. These services include confidentiality, key management, authentication, and digital signatures. This document specifies the message formats used in OpenPGP.
開いているPGPソフトウェアは、電子通信とデータ保存のためのセキュリティー・サービスを提供するのに強い公開鍵と左右対称の暗号の組み合わせを使用します。 これらのサービスは秘密性、かぎ管理、認証、およびデジタル署名を含んでいます。 このドキュメントはOpenPGPで使用されるメッセージ・フォーマットを指定します。
Table of Contents
目次
Status of this Memo 1 IESG Note 1 Abstract 1 Table of Contents 2 1. Introduction 4 1.1. Terms 5 2. General functions 5 2.1. Confidentiality via Encryption 5 2.2. Authentication via Digital signature 6 2.3. Compression 7 2.4. Conversion to Radix-64 7 2.5. Signature-Only Applications 7 3. Data Element Formats 7 3.1. Scalar numbers 8 3.2. Multi-Precision Integers 8 3.3. Key IDs 8 3.4. Text 8 3.5. Time fields 9 3.6. String-to-key (S2K) specifiers 9 3.6.1. String-to-key (S2k) specifier types 9 3.6.1.1. Simple S2K 9 3.6.1.2. Salted S2K 10 3.6.1.3. Iterated and Salted S2K 10 3.6.2. String-to-key usage 11 3.6.2.1. Secret key encryption 11 3.6.2.2. Symmetric-key message encryption 11 4. Packet Syntax 12 4.1. Overview 12 4.2. Packet Headers 12 4.2.1. Old-Format Packet Lengths 13 4.2.2. New-Format Packet Lengths 13 4.2.2.1. One-Octet Lengths 14 4.2.2.2. Two-Octet Lengths 14 4.2.2.3. Five-Octet Lengths 14 4.2.2.4. Partial Body Lengths 14 4.2.3. Packet Length Examples 14
このMemo1IESG Note1 1つの抽象的な目次2 1の状態。 序論4 1.1。 用語5 2。 一般機能5 2.1。 Encryption5 2.2を通した秘密性。 Digital署名6 2.3を通した認証。 圧縮7 2.4。 基数-64 7への変換、2.5 署名だけアプリケーション7 3。 データ要素は3.1に7をフォーマットします。 スカラのNo.8 3.2。 マルチ精度整数8 3.3。 主要なID8 3.4。 テキスト8 3.5。 時間は3.6に9をさばきます。 .1に(S2K)特許説明書の作成書9 3.6をキーに結んでください。 ストリングからキーへの(S2k)特許説明書の作成書タイプ9 3.6.1.1。 簡単なS2K、9 3.6 .1 .2。 S2K10 3.6に塩味を付けられました。.1 .3。 S2K10 3.6に.2に繰り返されて、塩味を付けられます。 用法11をキーに結んでください。3.6 .2 .1。 秘密は暗号化11 3.6に.2に.2を合わせます。 対称鍵メッセージ暗号化11 4。 パケット構文12 4.1。 概要12 4.2。 パケットヘッダー12 4.2.1。 パケット長13 4.2に.2を老人と同じくらいフォーマットしてください。 新しい形式パケット長13 4.2、.2 .1。 1八重奏の長さ14の4.2、.2 .2。 2八重奏の長さ14の4.2、.2 .3。 5八重奏の長さ14の4.2、.2 .4。 部分的なボディー長さ14の4.2.3。 パケット長の例14
Callas, et. al. Standards Track [Page 2] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[2ページ]。
4.3. Packet Tags 15 5. Packet Types 16 5.1. Public-Key Encrypted Session Key Packets (Tag 1) 16 5.2. Signature Packet (Tag 2) 17 5.2.1. Signature Types 17 5.2.2. Version 3 Signature Packet Format 19 5.2.3. Version 4 Signature Packet Format 21 5.2.3.1. Signature Subpacket Specification 22 5.2.3.2. Signature Subpacket Types 24 5.2.3.3. Signature creation time 25 5.2.3.4. Issuer 25 5.2.3.5. Key expiration time 25 5.2.3.6. Preferred symmetric algorithms 25 5.2.3.7. Preferred hash algorithms 25 5.2.3.8. Preferred compression algorithms 26 5.2.3.9. Signature expiration time 26 5.2.3.10.Exportable Certification 26 5.2.3.11.Revocable 27 5.2.3.12.Trust signature 27 5.2.3.13.Regular expression 27 5.2.3.14.Revocation key 27 5.2.3.15.Notation Data 28 5.2.3.16.Key server preferences 28 5.2.3.17.Preferred key server 29 5.2.3.18.Primary user id 29 5.2.3.19.Policy URL 29 5.2.3.20.Key Flags 29 5.2.3.21.Signer's User ID 30 5.2.3.22.Reason for Revocation 30 5.2.4. Computing Signatures 31 5.2.4.1. Subpacket Hints 32 5.3. Symmetric-Key Encrypted Session-Key Packets (Tag 3) 32 5.4. One-Pass Signature Packets (Tag 4) 33 5.5. Key Material Packet 34 5.5.1. Key Packet Variants 34 5.5.1.1. Public Key Packet (Tag 6) 34 5.5.1.2. Public Subkey Packet (Tag 14) 34 5.5.1.3. Secret Key Packet (Tag 5) 35 5.5.1.4. Secret Subkey Packet (Tag 7) 35 5.5.2. Public Key Packet Formats 35 5.5.3. Secret Key Packet Formats 37 5.6. Compressed Data Packet (Tag 8) 38 5.7. Symmetrically Encrypted Data Packet (Tag 9) 39 5.8. Marker Packet (Obsolete Literal Packet) (Tag 10) 39 5.9. Literal Data Packet (Tag 11) 40 5.10. Trust Packet (Tag 12) 40 5.11. User ID Packet (Tag 13) 41 6. Radix-64 Conversions 41
4.3. パケットは5に15にタグ付けをします。 パケットは5.1に16をタイプします。 公開鍵は5.2にセッションの主要なパケット(タグ1)16を暗号化しました。 署名パケット(タグ2)17 5.2.1。 署名は5.2に.2に17をタイプします。 バージョン3署名パケットは5.2に.3に19をフォーマットします。 バージョン4署名パケットは21をフォーマットします。5.2 .3 .1。 署名Subpacket仕様22 5.2.3.2。 署名Subpacketはタイプします。24 5.2 .3 .3。 署名作成時間25 5.2.3.4。 発行人、25 5.2 .3 .5。 .6に満了時間25 5.2.3を合わせてください。 左右対称のアルゴリズム25 5.2に好まれました。.3 .7。 好まれて、アルゴリズム25 5.2に.8に.3を論じ尽くしてください。 圧縮アルゴリズム26 5.2に好まれました。.3 .9。 Revocationのための主要な署名の5.2.3.18.Primaryユーザイド29 5.2.3.19.Policy満了時間26 5.2.3.10.Exportable Certification26 5.2.3.11.Revocable27 5.2.3.12.Trust27の署名5.2.3.13.Regular式27の5.2.3.14.Revocationの主要な27 5.2.3.15.Notation Data28 5.2.3.16.Keyサーバ好み28の5.2.3.17.Preferredサーバ29URL29 5.2.3.20.Key Flags29 5.2.3.21.SignerのUser ID30 5.2.3.22.Reason、30、5.2、.4 署名31 5.2に、.1に.4を計算します。 Subpacketは5.3に32をほのめかします。 対称鍵は5.4にセッション主要なパケット(タグ3)32を暗号化しました。 署名パケット(タグ4)33 5.5を1つ通過してください。 物質的なパケット34 5.5に.1を合わせてください。 .1にパケット異形34 5.5.1を合わせてください。 公開鍵パケット(タグ6)34 5.5.1.2。 公共のサブキーパケット(タグ14)34 5.5.1.3。 秘密は.4にパケット(タグ5)35 5.5.1を合わせます。 秘密のサブキーパケット(タグ7)35 5.5.2。 公開鍵パケット・フォーマット35 5.5.3。 秘密鍵パケット・フォーマット37 5.6。 5.7にデータ・パケット(タグ8)38を圧縮しました。 対称的に、5.8にデータ・パケット(タグ9)39を暗号化しました。 マーカーパケット(時代遅れの文字通りのパケット)(タグ10)39 5.9。 文字通りのデータ・パケット(タグ11)40 5.10。 パケット(タグ12)40 5.11を信じてください。 ユーザIDパケット(タグ13)41 6。 基数-64の変換41
Callas, et. al. Standards Track [Page 3] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[3ページ]。
6.1. An Implementation of the CRC-24 in "C" 42 6.2. Forming ASCII Armor 42 6.3. Encoding Binary in Radix-64 44 6.4. Decoding Radix-64 46 6.5. Examples of Radix-64 46 6.6. Example of an ASCII Armored Message 47 7. Cleartext signature framework 47 7.1. Dash-Escaped Text 47 8. Regular Expressions 48 9. Constants 49 9.1. Public Key Algorithms 49 9.2. Symmetric Key Algorithms 49 9.3. Compression Algorithms 50 9.4. Hash Algorithms 50 10. Packet Composition 50 10.1. Transferable Public Keys 50 10.2. OpenPGP Messages 52 10.3. Detached Signatures 52 11. Enhanced Key Formats 52 11.1. Key Structures 52 11.2. Key IDs and Fingerprints 53 12. Notes on Algorithms 54 12.1. Symmetric Algorithm Preferences 54 12.2. Other Algorithm Preferences 55 12.2.1. Compression Preferences 56 12.2.2. Hash Algorithm Preferences 56 12.3. Plaintext 56 12.4. RSA 56 12.5. Elgamal 57 12.6. DSA 58 12.7. Reserved Algorithm Numbers 58 12.8. OpenPGP CFB mode 58 13. Security Considerations 59 14. Implementation Nits 60 15. Authors and Working Group Chair 62 16. References 63 17. Full Copyright Statement 65
6.1. 「C」42 6.2におけるCRC-24の実装。 ASCIIよろいかぶと42 6.3を形成します。 基数-64 44 6.4におけるバイナリーをコード化します。 基数-64 46 6.5を解読します。 基数-64 46 6.6に関する例。 ASCIIの武具のメッセージ47 7に関する例。 Cleartext署名フレームワーク47 7.1。 ダッシュで逃げられたテキスト47 8。 正規表現48 9。 定数49 9.1。 公開鍵アルゴリズム49 9.2。 対称鍵アルゴリズム49 9.3。 圧縮アルゴリズム50 9.4。 アルゴリズム50 10を論じ尽くしてください。 パケット構成50 10.1。 移転可能な公開鍵50 10.2。 OpenPGPメッセージ52 10.3。 離れている署名52 11。 主要な形式52 11.1を高めました。 主要な構造52 11.2。 主要なIDと指紋53 12。 アルゴリズム54 12.1に関する注。 左右対称のアルゴリズム好み54 12.2。 他のアルゴリズム好み55 12.2の.1。 圧縮好み56 12.2の.2。 アルゴリズム好み56 12.3を論じ尽くしてください。 平文56 12.4。 RSA56 12.5。 Elgamal57 12.6。 DSA58 12.7。 予約されたアルゴリズムNo.58 12.8。 OpenPGP CFBモード58 13。 セキュリティ問題59 14。 実装夜60 15。 作者とワーキンググループ議長62 16。 参照63 17。 完全な著作権宣言文65
1. Introduction
1. 序論
This document provides information on the message-exchange packet formats used by OpenPGP to provide encryption, decryption, signing, and key management functions. It builds on the foundation provided in RFC 1991 "PGP Message Exchange Formats."
このドキュメントは暗号化、復号化、署名、およびかぎ管理機能を提供するのにOpenPGPによって使用された交換処理パケット・フォーマットの情報を提供します。 それはRFC1991「PGP交換処理形式」に提供された基礎に建てられます。
Callas, et. al. Standards Track [Page 4] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[4ページ]。
1.1. Terms
1.1. 用語
* OpenPGP - This is a definition for security software that uses PGP 5.x as a basis.
* OpenPGP--これは基礎としてPGP 5.xを使用する機密保護ソフトウェアのための定義です。
* PGP - Pretty Good Privacy. PGP is a family of software systems developed by Philip R. Zimmermann from which OpenPGP is based.
* PGP--プリティ・グッド・プライバシ。 PGPはOpenPGPが基づいているフィリップR.Zimmermannによって開発されたソフトウェア・システムのファミリーです。
* PGP 2.6.x - This version of PGP has many variants, hence the term PGP 2.6.x. It used only RSA, MD5, and IDEA for its cryptographic transforms. An informational RFC, RFC 1991, was written describing this version of PGP.
* PGP 2.6.x--PGPのこのバージョンには、多くの異形、したがって、用語PGP 2.6.xがあります。 それは暗号の変換にRSA、MD5、およびIDEAだけを使用しました。情報のRFC(RFC1991)は、PGPのこのバージョンについて説明しながら、書かれました。
* PGP 5.x - This version of PGP is formerly known as "PGP 3" in the community and also in the predecessor of this document, RFC 1991. It has new formats and corrects a number of problems in the PGP 2.6.x design. It is referred to here as PGP 5.x because that software was the first release of the "PGP 3" code base.
* PGP 5.x、--、以前PGPのこのバージョンとして知られている「PGP、共同体とこのドキュメント(RFC1991インチ)の前任者でも3インチ それは、PGP 2.6.xデザインで新しい形式を持って、多くの問題を修正します。 そのソフトウェアが「3インチのPGPコードベース」の最初のリリースであったので、それはPGP 5.xとしてここと呼ばれます。
"PGP", "Pretty Good", and "Pretty Good Privacy" are trademarks of Network Associates, Inc. and are used with permission.
"PGP"、「きれいな利益」、および「プリティ・グッド・プライバシ」は、Network Associates Inc.の商標であり、許可と共に使用されます。
This document uses the terms "MUST", "SHOULD", and "MAY" as defined in RFC 2119, along with the negated forms of those terms.
このドキュメントはRFC2119で定義されるように用語“MUST"、“SHOULD"、および「5月」を使用します、それらの用語の否定フォームと共に。
2. General functions
2. 一般機能
OpenPGP provides data integrity services for messages and data files by using these core technologies:
OpenPGPはこれらの核の技術を使用することによって、メッセージとデータファイルのためのデータ保全サービスを提供します:
- digital signatures
- デジタル署名
- encryption
- 暗号化
- compression
- 圧縮
- radix-64 conversion
- 基数-64変換
In addition, OpenPGP provides key management and certificate services, but many of these are beyond the scope of this document.
さらに、OpenPGPはかぎ管理と証明書サービスを提供しますが、これらの多くがこのドキュメントの範囲を超えています。
2.1. Confidentiality via Encryption
2.1. Encryptionを通した秘密性
OpenPGP uses two encryption methods to provide confidentiality: symmetric-key encryption and public key encryption. With public-key encryption, the object is encrypted using a symmetric encryption algorithm. Each symmetric key is used only once. A new "session key" is generated as a random number for each message. Since it is used
OpenPGPは秘密性を提供する2つの暗号化メソッドを使用します: 共通鍵暗号と公開鍵暗号化。 公開鍵暗号化で、オブジェクトは、左右対称の暗号化アルゴリズムを使用することで暗号化されています。 各対称鍵は一度だけ使用されます。 新しい「セッションキー」は各メッセージのための乱数として生成されます。 それが使用されているので
Callas, et. al. Standards Track [Page 5] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[5ページ]。
only once, the session key is bound to the message and transmitted with it. To protect the key, it is encrypted with the receiver's public key. The sequence is as follows:
セッションキーは、一度だけ、メッセージに縛られて、それで送られます。 キーを保護するために、それは受信機の公開鍵で暗号化されます。 系列は以下の通りです:
1. The sender creates a message.
1. 送付者はメッセージを作成します。
2. The sending OpenPGP generates a random number to be used as a session key for this message only.
2. 発信しているOpenPGPは、このメッセージだけに、主要なセッションとして使用されるために乱数を生成します。
3. The session key is encrypted using each recipient's public key. These "encrypted session keys" start the message.
3. セッションキーは、各受取人の公開鍵を使用することで暗号化されています。 これらの「暗号化されたセッションキー」はメッセージを始めます。
4. The sending OpenPGP encrypts the message using the session key, which forms the remainder of the message. Note that the message is also usually compressed.
4. 発信しているOpenPGPは、セッションキー(メッセージの残りを形成する)を使用することでメッセージを暗号化します。 また、通常、メッセージが圧縮されることに注意してください。
5. The receiving OpenPGP decrypts the session key using the recipient's private key.
5. 受信OpenPGPは、受取人の秘密鍵を使用することでセッションキーを解読します。
6. The receiving OpenPGP decrypts the message using the session key. If the message was compressed, it will be decompressed.
6. 受信OpenPGPは、セッションキーを使用することでメッセージを解読します。 メッセージが圧縮されたなら、それは減圧されるでしょう。
With symmetric-key encryption, an object may be encrypted with a symmetric key derived from a passphrase (or other shared secret), or a two-stage mechanism similar to the public-key method described above in which a session key is itself encrypted with a symmetric algorithm keyed from a shared secret.
暗号化、対称鍵によるオブジェクトは対称鍵で左右対称のアルゴリズムが共有秘密キーから合わせられている状態でセッションキーが暗号化される上で説明された公開鍵メソッドと同様のパスフレーズ(または、他の共有秘密キー)、または2ステージのメカニズムから派生していた状態で暗号化されるかもしれません。
Both digital signature and confidentiality services may be applied to the same message. First, a signature is generated for the message and attached to the message. Then, the message plus signature is encrypted using a symmetric session key. Finally, the session key is encrypted using public-key encryption and prefixed to the encrypted block.
デジタル署名と秘密性サービスの両方が同じメッセージに適用されるかもしれません。 まず最初に、署名は、メッセージのために生成されて、メッセージに付けられます。 そして、メッセージプラス署名は、左右対称のセッションキーを使用することで暗号化されています。 最終的に、セッションキーは、公開鍵暗号化を使用することで暗号化されて、暗号化されたブロックへ前に置かれています。
2.2. Authentication via Digital signature
2.2. Digital署名を通した認証
The digital signature uses a hash code or message digest algorithm, and a public-key signature algorithm. The sequence is as follows:
デジタル署名はハッシュコードかメッセージダイジェストアルゴリズムと、公開鍵署名アルゴリズムを使用します。 系列は以下の通りです:
1. The sender creates a message.
1. 送付者はメッセージを作成します。
2. The sending software generates a hash code of the message.
2. 送付ソフトウェアは、ハッシュがメッセージのコードであると生成します。
3. The sending software generates a signature from the hash code using the sender's private key.
3. 送付ソフトウェアは、ハッシュコードから送付者の秘密鍵を使用することで署名を生成します。
4. The binary signature is attached to the message.
4. 2進の署名はメッセージに付けられています。
Callas, et. al. Standards Track [Page 6] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[6ページ]。
5. The receiving software keeps a copy of the message signature.
5. 受信ソフトウェアはメッセージ署名の写しを取っておきます。
6. The receiving software generates a new hash code for the received message and verifies it using the message's signature. If the verification is successful, the message is accepted as authentic.
6. 受信ソフトウェアは、受信されたメッセージのために新しいハッシュがコードであると生成して、メッセージの署名を使用することでそれについて確かめます。 検証がうまくいくなら、メッセージは正統であるとして認められます。
2.3. Compression
2.3. 圧縮
OpenPGP implementations MAY compress the message after applying the signature but before encryption.
OpenPGP実装は署名を適用した後にもかかわらず、暗号化の前にメッセージを圧縮するかもしれません。
2.4. Conversion to Radix-64
2.4. 基数-64への変換
OpenPGP's underlying native representation for encrypted messages, signature certificates, and keys is a stream of arbitrary octets. Some systems only permit the use of blocks consisting of seven-bit, printable text. For transporting OpenPGP's native raw binary octets through channels that are not safe to raw binary data, a printable encoding of these binary octets is needed. OpenPGP provides the service of converting the raw 8-bit binary octet stream to a stream of printable ASCII characters, called Radix-64 encoding or ASCII Armor.
OpenPGPの暗号化メッセージ、署名証明書、およびキーの基本的な固有の表現は任意の八重奏のストリームです。 いくつかのシステムが7ビットの、そして、印刷可能なテキストから成るブロックの使用を可能にするだけです。 生のバイナリ・データに安全でないチャンネルによるOpenPGPのネイティブの生の2進の八重奏を輸送するのにおいて、これらの2進の八重奏の印刷可能なコード化が必要です。 Radix-64コード化かASCII Armorが、OpenPGPが生の8ビットの2進の八重奏ストリームを印刷可能なASCII文字の流れに変換するサービスを提供すると呼びました。
Implementations SHOULD provide Radix-64 conversions.
実装SHOULDは変換をRadix-64に供給します。
Note that many applications, particularly messaging applications, will want more advanced features as described in the OpenPGP-MIME document, RFC 2015. An application that implements OpenPGP for messaging SHOULD implement OpenPGP-MIME.
OpenPGP-MIMEドキュメント、RFC2015で説明されるように多くのアプリケーション(特にメッセージングアプリケーション)が、より高度な特徴が欲しくなることに注意してください。 メッセージングSHOULD道具OpenPGP-MIMEのためにOpenPGPを実装するアプリケーション。
2.5. Signature-Only Applications
2.5. 署名だけアプリケーション
OpenPGP is designed for applications that use both encryption and signatures, but there are a number of problems that are solved by a signature-only implementation. Although this specification requires both encryption and signatures, it is reasonable for there to be subset implementations that are non-comformant only in that they omit encryption.
OpenPGPは暗号化と署名の両方を使用するアプリケーションのために設計されていますが、署名だけ実装によって解決されている多くの問題があります。 この仕様は暗号化と署名の両方を必要としますが、そこに、単に暗号化を省略するので非comformantである部分集合実装であることは妥当です。
3. Data Element Formats
3. データ要素形式
This section describes the data elements used by OpenPGP.
このセクションはOpenPGPによって使用されたデータ要素について説明します。
Callas, et. al. Standards Track [Page 7] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[7ページ]。
3.1. Scalar numbers
3.1. スカラの数
Scalar numbers are unsigned, and are always stored in big-endian format. Using n[k] to refer to the kth octet being interpreted, the value of a two-octet scalar is ((n[0] << 8) + n[1]). The value of a four-octet scalar is ((n[0] << 24) + (n[1] << 16) + (n[2] << 8) + n[3]).
スカラの数は、未署名であり、ビッグエンディアン形式でいつも保存されます。 解釈されるkth八重奏について言及するのにn[k]を使用して、2八重奏のスカラの値は(n[0]<<8)+n[1])です。 4八重奏のスカラの値は(n[0]<<24)です。+ + + (n[1]<<16)(n[2]<<8)n[3])。
3.2. Multi-Precision Integers
3.2. マルチ精度整数
Multi-Precision Integers (also called MPIs) are unsigned integers used to hold large integers such as the ones used in cryptographic calculations.
マルチPrecision Integers(また、MPIsと呼ばれる)は暗号の計算に使用されるものなどの大きい整数を保持するのに使用される符号のない整数です。
An MPI consists of two pieces: a two-octet scalar that is the length of the MPI in bits followed by a string of octets that contain the actual integer.
MPIは2つの断片から成ります: 実際の整数を含む一連の八重奏でビットのMPIの長さである2八重奏のスカラは続きました。
These octets form a big-endian number; a big-endian number can be made into an MPI by prefixing it with the appropriate length.
これらの八重奏はビッグエンディアン番号を形成します。 適切な長さでそれを前に置くことによって、ビッグエンディアン番号をMPIにすることができます。
Examples:
例:
(all numbers are in hexadecimal)
(16進にはすべての数があります)
The string of octets [00 01 01] forms an MPI with the value 1. The string [00 09 01 FF] forms an MPI with the value of 511.
八重奏[00 01 01]のストリングは値1でMPIを形成します。 ストリング[00 09 01FF]は511の値でMPIを形成します。
Additional rules:
付則:
The size of an MPI is ((MPI.length + 7) / 8) + 2 octets.
MPIのサイズは((MPI.length+7)/8)+2つの八重奏です。
The length field of an MPI describes the length starting from its most significant non-zero bit. Thus, the MPI [00 02 01] is not formed correctly. It should be [00 01 01].
MPIの長さの分野は始まらせる中で非ゼロ・ビット最も重要である長さについて説明します。 したがって、MPI[00 02 01]は正しく形成されません。 それは[00 01 01]であるべきです。
3.3. Key IDs
3.3. 主要なID
A Key ID is an eight-octet scalar that identifies a key. Implementations SHOULD NOT assume that Key IDs are unique. The section, "Enhanced Key Formats" below describes how Key IDs are formed.
Key IDはキーを特定する8八重奏のスカラです。 実装SHOULD NOTは、Key IDがユニークであると仮定します。 セクション、以下の「高められた主要な形式」はKey IDがどう形成されるかを説明します。
3.4. Text
3.4. テキスト
The default character set for text is the UTF-8 [RFC2279] encoding of Unicode [ISO10646].
テキストのためのデフォルト文字集合はユニコード[ISO10646]のUTF-8[RFC2279]コード化です。
Callas, et. al. Standards Track [Page 8] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[8ページ]。
3.5. Time fields
3.5. 時間分野
A time field is an unsigned four-octet number containing the number of seconds elapsed since midnight, 1 January 1970 UTC.
時間分野は真夜中、1970年1月1日UTC以来秒数を含む未署名の4八重奏の数が経過したということです。
3.6. String-to-key (S2K) specifiers
3.6. ストリングからキー(S2K)への特許説明書の作成書
String-to-key (S2K) specifiers are used to convert passphrase strings into symmetric-key encryption/decryption keys. They are used in two places, currently: to encrypt the secret part of private keys in the private keyring, and to convert passphrases to encryption keys for symmetrically encrypted messages.
ストリングからキー(S2K)への特許説明書の作成書は、共通鍵暗号/復号化キーにパスフレーズストリングを変換するのに使用されます。 それらは現在、2つの場所に使用されます: 個人的なkeyringにおける秘密鍵の秘密の部分を暗号化して、対称的に暗号化されたメッセージのために暗号化キーにパスフレーズを変換するために。
3.6.1. String-to-key (S2k) specifier types
3.6.1. ストリングからキー(S2k)への特許説明書の作成書タイプ
There are three types of S2K specifiers currently supported, as follows:
現在以下の通りサポートされている3つのタイプのS2K特許説明書の作成書があります:
3.6.1.1. Simple S2K
3.6.1.1. 簡単なS2K
This directly hashes the string to produce the key data. See below for how this hashing is done.
これは直接重要なデータを作り出すストリングを論じ尽くします。 この論じ尽くすことがどう完了しているように以下を見てくださいか。
Octet 0: 0x00 Octet 1: hash algorithm
八重奏0: 0×00 八重奏1: ハッシュアルゴリズム
Simple S2K hashes the passphrase to produce the session key. The manner in which this is done depends on the size of the session key (which will depend on the cipher used) and the size of the hash algorithm's output. If the hash size is greater than or equal to the session key size, the high-order (leftmost) octets of the hash are used as the key.
簡単なS2Kはセッションキーを生産するパスフレーズを論じ尽くします。 これが行われる方法はセッションキー(暗号に使用されるよる)のサイズとハッシュアルゴリズムの出力のサイズに依存します。 ハッシュサイズがそう以上なら、セッションはサイズを合わせて、ハッシュの高位(一番左)八重奏はキーとして使用されます。
If the hash size is less than the key size, multiple instances of the hash context are created -- enough to produce the required key data. These instances are preloaded with 0, 1, 2, ... octets of zeros (that is to say, the first instance has no preloading, the second gets preloaded with 1 octet of zero, the third is preloaded with two octets of zeros, and so forth).
ハッシュサイズが主要なサイズより少ないなら、ハッシュ文脈の複数のインスタンスが作成されます--必要な重要なデータを作り出すためには十分。 これらのインスタンスは0、1、2でプレロードされます… ゼロ(最初のインスタンスには、すなわち、プレロードでないのがあって、2番目はゼロの1つの八重奏によってプレロードされて、3番目はゼロなどの2つの八重奏によってプレロードされる)の八重奏。
As the data is hashed, it is given independently to each hash context. Since the contexts have been initialized differently, they will each produce different hash output. Once the passphrase is hashed, the output data from the multiple hashes is concatenated, first hash leftmost, to produce the key data, with any excess octets on the right discarded.
データを論じ尽くすとき、独自にそれぞれのハッシュ文脈にそれを与えます。 文脈が異なって初期化されたので、それらはそれぞれ異なったハッシュ出力を起こすでしょう。 一度、パスフレーズは論じ尽くされて、複数のハッシュからの出力データは連結されます、最初のハッシュ。一番左では、どんな過剰八重奏も進行中で重要なデータを作り出すために、権利は捨てられました。
Callas, et. al. Standards Track [Page 9] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[9ページ]。
3.6.1.2. Salted S2K
3.6.1.2. 塩漬けにしたS2K
This includes a "salt" value in the S2K specifier -- some arbitrary data -- that gets hashed along with the passphrase string, to help prevent dictionary attacks.
これは辞書攻撃を防ぐのを助けるためにパスフレーズストリングと共に論じ尽くされるS2K特許説明書の作成書(いくつかの任意のデータ)に「塩」値を含んでいます。
Octet 0: 0x01 Octet 1: hash algorithm Octets 2-9: 8-octet salt value
八重奏0: 0×01 八重奏1: アルゴリズムOctets2-9を論じ尽くしてください: 8八重奏の塩の値
Salted S2K is exactly like Simple S2K, except that the input to the hash function(s) consists of the 8 octets of salt from the S2K specifier, followed by the passphrase.
塩漬けにしたS2KはちょうどSimple S2Kに似ています、ハッシュ関数への入力がパスフレーズがあとに続いたS2K特許説明書の作成書からの塩の8つの八重奏から成るのを除いて。
3.6.1.3. Iterated and Salted S2K
3.6.1.3. 繰り返されて塩漬けにしたS2K
This includes both a salt and an octet count. The salt is combined with the passphrase and the resulting value is hashed repeatedly. This further increases the amount of work an attacker must do to try dictionary attacks.
これは塩と八重奏カウントの両方を含んでいます。 塩はパスフレーズに混ぜられます、そして、結果として起こる値は繰り返して論じ尽くされます。 これはさらに、攻撃者が辞書攻撃を試みるためにしなければならない仕事量を増強します。
Octet 0: 0x03 Octet 1: hash algorithm Octets 2-9: 8-octet salt value Octet 10: count, a one-octet, coded value
八重奏0: 0×03 八重奏1: アルゴリズムOctets2-9を論じ尽くしてください: 8八重奏の塩の値のOctet10: カウント(1八重奏)は値をコード化しました。
The count is coded into a one-octet number using the following formula:
カウントは以下の公式を使用することで1八重奏の数にコード化されます:
#define EXPBIAS 6 count = ((Int32)16 + (c & 15)) << ((c >> 4) + EXPBIAS);
#EXPBIAS6カウント=((Int32)16+(cと15))<<(+ (c>>4)EXPBIAS)を定義してください。
The above formula is in C, where "Int32" is a type for a 32-bit integer, and the variable "c" is the coded count, Octet 10.
上の公式がCにあります。そこでの「Int32"は32ビットの整数のためのタイプです、そして、Octet10、変数「c」はコード化されたカウントです」。
Iterated-Salted S2K hashes the passphrase and salt data multiple times. The total number of octets to be hashed is specified in the encoded count in the S2K specifier. Note that the resulting count value is an octet count of how many octets will be hashed, not an iteration count.
繰り返されて塩漬けにしたS2Kは複数の回パスフレーズと塩のデータを論じ尽くします。 論じ尽くされるべき八重奏の総数はS2K特許説明書の作成書でコード化されたカウントで指定されます。 結果として起こるカウント値が繰り返しカウントではなく、いくつの八重奏が論じ尽くされるかに関する八重奏カウントであることに注意してください。
Initially, one or more hash contexts are set up as with the other S2K algorithms, depending on how many octets of key data are needed. Then the salt, followed by the passphrase data is repeatedly hashed until the number of octets specified by the octet count has been hashed. The one exception is that if the octet count is less than the size of the salt plus passphrase, the full salt plus passphrase will be hashed even though that is greater than the octet count.
初めは、1つ以上のハッシュ文脈が他のS2Kアルゴリズムで開業されます、重要なデータのいくつの八重奏が必要であるかよって。 次に、塩、続かれて、八重奏カウントで指定される八重奏の数が論じ尽くされるまで、パスフレーズデータは繰り返して論じ尽くされます。 1つの例外はそれが八重奏カウントよりすばらしいのですが、完全な塩とパスフレーズが八重奏カウントが塩とパスフレーズのサイズ以下であるなら、論じ尽くされるということです。
Callas, et. al. Standards Track [Page 10] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[10ページ]。
After the hashing is done the data is unloaded from the hash context(s) as with the other S2K algorithms.
論じ尽くすことが完了していた後に、データは他のS2Kアルゴリズムのようにハッシュ文脈から降ろされます。
3.6.2. String-to-key usage
3.6.2. ストリングからキーへの用法
Implementations SHOULD use salted or iterated-and-salted S2K specifiers, as simple S2K specifiers are more vulnerable to dictionary attacks.
純真なS2K特許説明書の作成書が辞書攻撃により被害を受け易いので、実装SHOULD使用は、S2K特許説明書の作成書を塩味を付けたか、繰り返して、または塩味を付けさせました。
3.6.2.1. Secret key encryption
3.6.2.1. 秘密鍵暗号化
An S2K specifier can be stored in the secret keyring to specify how to convert the passphrase to a key that unlocks the secret data. Older versions of PGP just stored a cipher algorithm octet preceding the secret data or a zero to indicate that the secret data was unencrypted. The MD5 hash function was always used to convert the passphrase to a key for the specified cipher algorithm.
機密データをアンロックするキーにパスフレーズを変換する方法を指定するために秘密のkeyringでS2K特許説明書の作成書を保存できます。 PGPの旧式のバージョンはただ機密データが非暗号化されたのを示すために機密データかゼロに先行する暗号アルゴリズム八重奏を保存しました。 MD5ハッシュ関数は指定された暗号アルゴリズムのためにパスフレーズをキーに変換するのにおいていつも使用されていました。
For compatibility, when an S2K specifier is used, the special value 255 is stored in the position where the hash algorithm octet would have been in the old data structure. This is then followed immediately by a one-octet algorithm identifier, and then by the S2K specifier as encoded above.
S2K特許説明書の作成書が使用されているとき、互換性において、特別な値255は古いデータ構造にはハッシュアルゴリズム八重奏があった位置に保存されます。 そして、これはすぐ1八重奏のアルゴリズム識別子、およびそして、上でコード化されるS2K特許説明書の作成書によって続かれています。
Therefore, preceding the secret data there will be one of these possibilities:
したがって、そこで機密データに先行するのはこれらの可能性の1つになるでしょう:
0: secret data is unencrypted (no pass phrase) 255: followed by algorithm octet and S2K specifier Cipher alg: use Simple S2K algorithm using MD5 hash
0: 機密データは非暗号化されます。(いいえは句) 255を通過します: アルゴリズム八重奏とS2K特許説明書の作成書Cipher algによって続かれています: MD5が論じ尽くすSimple S2Kアルゴリズム使用を使用してください。
This last possibility, the cipher algorithm number with an implicit use of MD5 and IDEA, is provided for backward compatibility; it MAY be understood, but SHOULD NOT be generated, and is deprecated.
この最後の可能性(MD5とIDEAの暗黙の使用がある暗号アルゴリズム番号)を後方の互換性に提供します。 それが理解されるかもしれませんが、SHOULD NOTは生成されて、推奨しないです。
These are followed by an 8-octet Initial Vector for the decryption of the secret values, if they are encrypted, and then the secret key values themselves.
これらは秘密の値の復号化のために8八重奏のInitial Vectorによって続かれています、それらが暗号化されていて、次に、秘密鍵が自分たちを評価するなら。
3.6.2.2. Symmetric-key message encryption
3.6.2.2. 対称鍵メッセージ暗号化
OpenPGP can create a Symmetric-key Encrypted Session Key (ESK) packet at the front of a message. This is used to allow S2K specifiers to be used for the passphrase conversion or to create messages with a mix of symmetric-key ESKs and public-key ESKs. This allows a message to be decrypted either with a passphrase or a public key.
OpenPGPはメッセージの前部でSymmetric主要なEncrypted Session Key(ESK)パケットを作成できます。 これは、S2K特許説明書の作成書がパスフレーズ変換に使用されるか、または対称鍵のESKsと公開鍵ESKsのミックスでメッセージを作成するのを許容するのに使用されます。 これはパスフレーズか公開鍵で解読されるべきメッセージを許容します。
Callas, et. al. Standards Track [Page 11] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[11ページ]。
PGP 2.X always used IDEA with Simple string-to-key conversion when encrypting a message with a symmetric algorithm. This is deprecated, but MAY be used for backward-compatibility.
左右対称のアルゴリズムでメッセージを暗号化するとき、PGP 2.XはいつもSimpleのストリングからキー変換があるIDEAを使用しました。 これは、推奨しないのですが、後方の互換性に使用されるかもしれません。
4. Packet Syntax
4. パケット構文
This section describes the packets used by OpenPGP.
このセクションはOpenPGPによって使用されたパケットについて説明します。
4.1. Overview
4.1. 概要
An OpenPGP message is constructed from a number of records that are traditionally called packets. A packet is a chunk of data that has a tag specifying its meaning. An OpenPGP message, keyring, certificate, and so forth consists of a number of packets. Some of those packets may contain other OpenPGP packets (for example, a compressed data packet, when uncompressed, contains OpenPGP packets).
OpenPGPメッセージは伝統的にパケットと呼ばれる多くの記録から構成されます。 パケットはタグが意味を指定するデータの塊です。 OpenPGPメッセージ、keyring、証明書などは多くのパケットから成ります。 それらのいくつかのパケットが他のOpenPGPパケットを含むかもしれません(例えば、解凍されると、圧縮されたデータ・パケットはOpenPGPパケットを含んでいます)。
Each packet consists of a packet header, followed by the packet body. The packet header is of variable length.
各パケットはパケットボディーがあとに続いたパケットのヘッダーから成ります。 パケットのヘッダーは可変長のものです。
4.2. Packet Headers
4.2. パケットのヘッダー
The first octet of the packet header is called the "Packet Tag." It determines the format of the header and denotes the packet contents. The remainder of the packet header is the length of the packet.
パケットのヘッダーの最初の八重奏は「パケットタグ」と呼ばれます。 それは、ヘッダーの形式を決定して、パケットコンテンツを指示します。 パケットのヘッダーの残りはパケットの長さです。
Note that the most significant bit is the left-most bit, called bit 7. A mask for this bit is 0x80 in hexadecimal.
最も重要なビットがビット7と呼ばれる最も左のビットであることに注意してください。 このビットマスクは16進の0×80です。
+---------------+ PTag |7 6 5 4 3 2 1 0| +---------------+ Bit 7 -- Always one Bit 6 -- New packet format if set
+---------------+ PTag|7 6 5 4 3 2 1 0| +---------------+ 設定されるなら新しいパケットがフォーマットするビット7(いつも1Bit6)
PGP 2.6.x only uses old format packets. Thus, software that interoperates with those versions of PGP must only use old format packets. If interoperability is not an issue, either format may be used. Note that old format packets have four bits of content tags, and new format packets have six; some features cannot be used and still be backward-compatible.
PGP 2.6.xは古い方式パケットを使用するだけです。 したがって、PGPのそれらのバージョンで共同利用するソフトウェアは古い方式パケットを使用するだけでよいです。 相互運用性が問題でないなら、形式は使用されるかもしれません。 古い方式パケットには満足しているタグの4ビットがあることに注意してください。そうすれば、新しい形式パケットは6を持っています。 いくつかの特徴は、使用されて、まだ互換性があるはずがありません後方の。
Old format packets contain:
古い方式パケットは以下を含んでいます。
Bits 5-2 -- content tag Bits 1-0 - length-type
ビット5-2--内容タグBits1-0--長さタイプ
Callas, et. al. Standards Track [Page 12] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[12ページ]。
New format packets contain:
新しい形式パケットは以下を含んでいます。
Bits 5-0 -- content tag
ビット5-0--満足しているタグ
4.2.1. Old-Format Packet Lengths
4.2.1. 古い方式パケット長
The meaning of the length-type in old-format packets is:
古い方式パケットの長さタイプの意味は以下の通りです。
0 - The packet has a one-octet length. The header is 2 octets long.
0--パケットには、1八重奏の長さがあります。 長い間、ヘッダーは2つの八重奏です。
1 - The packet has a two-octet length. The header is 3 octets long.
1--パケットには、2八重奏の長さがあります。 長い間、ヘッダーは3つの八重奏です。
2 - The packet has a four-octet length. The header is 5 octets long.
2--パケットには、4八重奏の長さがあります。 長い間、ヘッダーは5つの八重奏です。
3 - The packet is of indeterminate length. The header is 1 octet long, and the implementation must determine how long the packet is. If the packet is in a file, this means that the packet extends until the end of the file. In general, an implementation SHOULD NOT use indeterminate length packets except where the end of the data will be clear from the context, and even then it is better to use a definite length, or a new-format header. The new-format headers described below have a mechanism for precisely encoding data of indeterminate length.
3--パケットは不確定の長さのものです。 長い間、ヘッダーは1つの八重奏です、そして、実装はパケットがどれくらい長いかを決定しなければなりません。 パケットがファイルにあるなら、これは、パケットがファイルの端まで広がることを意味します。 一般に、SHOULD NOTがデータの終わりがあるところで不確定の長さのパケットを使用する実装は文脈からクリアされます、そして、その時でさえ、明確な長さ、または新しい形式ヘッダーを使用しているほうがよいです。 以下で説明された新しい形式ヘッダーは正確に不確定の長さに関するデータをコード化するためのメカニズムを持っています。
4.2.2. New-Format Packet Lengths
4.2.2. 新しい形式パケット長
New format packets have four possible ways of encoding length:
新しい形式パケットには、長さをコード化する4つの可能な方法があります:
1. A one-octet Body Length header encodes packet lengths of up to 191 octets.
1. 1八重奏のBody Lengthヘッダーは最大191の八重奏のパケット長をコード化します。
2. A two-octet Body Length header encodes packet lengths of 192 to 8383 octets.
2. 2八重奏のBody Lengthヘッダーは192〜8383の八重奏のパケット長をコード化します。
3. A five-octet Body Length header encodes packet lengths of up to 4,294,967,295 (0xFFFFFFFF) octets in length. (This actually encodes a four-octet scalar number.)
3. 5八重奏のBody Lengthヘッダーは長さにおける、最大42億9496万7295(0xFFFFFFFF)の八重奏のパケット長をコード化します。 (これは実際に4八重奏のスカラの数をコード化します。)
4. When the length of the packet body is not known in advance by the issuer, Partial Body Length headers encode a packet of indeterminate length, effectively making it a stream.
4. パケットボディーの長さがあらかじめ発行人によって知られていないと、Partial Body Lengthヘッダーは不確定の長さのパケットをコード化します、事実上それをストリームにして。
Callas, et. al. Standards Track [Page 13] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[13ページ]。
4.2.2.1. One-Octet Lengths
4.2.2.1. 1八重奏の長さ
A one-octet Body Length header encodes a length of from 0 to 191 octets. This type of length header is recognized because the one octet value is less than 192. The body length is equal to:
1八重奏のBody Lengthヘッダーは0〜191の八重奏の長さをコード化します。 1つの八重奏値が192未満であるので、このタイプの長さのヘッダーは見分けられます。 ボディーの長さは以下と等しいです。
bodyLen = 1st_octet;
bodyLenは最初の_八重奏と等しいです。
4.2.2.2. Two-Octet Lengths
4.2.2.2. 2八重奏の長さ
A two-octet Body Length header encodes a length of from 192 to 8383 octets. It is recognized because its first octet is in the range 192 to 223. The body length is equal to:
2八重奏のBody Lengthヘッダーは192〜8383の八重奏の長さをコード化します。 最初の八重奏が範囲に192〜223にあるので、それは認識されます。 ボディーの長さは以下と等しいです。
bodyLen = ((1st_octet - 192) << 8) + (2nd_octet) + 192
bodyLen=(最初の_八重奏--192)<<8) + (第2_八重奏)+192
4.2.2.3. Five-Octet Lengths
4.2.2.3. 5八重奏の長さ
A five-octet Body Length header consists of a single octet holding the value 255, followed by a four-octet scalar. The body length is equal to:
5八重奏のBody Lengthヘッダーは4八重奏のスカラがあとに続いていて、値255を保持するただ一つの八重奏から成ります。 ボディーの長さは以下と等しいです。
bodyLen = (2nd_octet << 24) | (3rd_octet << 16) | (4th_octet << 8) | 5th_octet
bodyLenは(第2_八重奏<<24)と等しいです。| (第3_八重奏<<16) | (第4_八重奏<<8) | 5番目の_八重奏
4.2.2.4. Partial Body Lengths
4.2.2.4. 部分的なボディーの長さ
A Partial Body Length header is one octet long and encodes the length of only part of the data packet. This length is a power of 2, from 1 to 1,073,741,824 (2 to the 30th power). It is recognized by its one octet value that is greater than or equal to 224, and less than 255. The partial body length is equal to:
Partial Body Lengthヘッダーは、長い間の1つの八重奏であり、データ・パケットの一部だけの長さをコード化します。 この長さは1〜10億7374万1824までの2(2の30乗)のパワーです。 それは224以上である1つの八重奏値、および255未満によって認識されます。 部分的なボディーの長さは以下と等しいです。
partialBodyLen = 1 << (1st_octet & 0x1f);
partialBodyLenは1<<(最初の_八重奏と0x1f)と等しいです。
Each Partial Body Length header is followed by a portion of the packet body data. The Partial Body Length header specifies this portion's length. Another length header (of one of the three types -- one octet, two-octet, or partial) follows that portion. The last length header in the packet MUST NOT be a partial Body Length header. Partial Body Length headers may only be used for the non-final parts of the packet.
パケットボディーデータの部分はそれぞれのPartial Body Lengthヘッダーのあとに続いています。 Partial Body Lengthヘッダーはこの部分の長さを指定します。 別の長さのヘッダー(2八重奏の1つの八重奏の、または、部分的な3つのタイプのひとりの)はその部分の後をつけます。 パケットにおける最後の長さのヘッダーは部分的なBody Lengthヘッダーであるはずがありません。 部分的なBody Lengthヘッダーはパケットの非最終な部分に使用されるだけであるかもしれません。
4.2.3. Packet Length Examples
4.2.3. パケット長の例
These examples show ways that new-format packets might encode the packet lengths.
これらの例は、新しい形式パケットがパケット長をコード化するかもしれないのを道に示します。
Callas, et. al. Standards Track [Page 14] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[14ページ]。
A packet with length 100 may have its length encoded in one octet: 0x64. This is followed by 100 octets of data.
長さ100があるパケットで、1つの八重奏で長さをコード化するかもしれません: 0×64。 データの100の八重奏がこれのあとに続いています。
A packet with length 1723 may have its length coded in two octets: 0xC5, 0xFB. This header is followed by the 1723 octets of data.
長さ1723があるパケットで、2つの八重奏で長さをコード化するかもしれません: 0xC5、0xFB。 1723年のデータの八重奏はこのヘッダーのあとに続いています。
A packet with length 100000 may have its length encoded in five octets: 0xFF, 0x00, 0x01, 0x86, 0xA0.
長さ100000があるパケットで、5つの八重奏で長さをコード化するかもしれません: 0xFF、0×00、0×01、0×86、0xA0。
It might also be encoded in the following octet stream: 0xEF, first 32768 octets of data; 0xE1, next two octets of data; 0xE0, next one octet of data; 0xF0, next 65536 octets of data; 0xC5, 0xDD, last 1693 octets of data. This is just one possible encoding, and many variations are possible on the size of the Partial Body Length headers, as long as a regular Body Length header encodes the last portion of the data. Note also that the last Body Length header can be a zero-length header.
また、それは以下の八重奏ストリームでコード化されるかもしれません: 0xEF、最初に、データの32768の八重奏。 0xE1、データの次の2つの八重奏。 0xE0、データの次の1つの八重奏。 0xF0、データの次の65536の八重奏。 0xC5(0xDD)はデータの1693の八重奏が続きます。 レギュラーのBody Lengthヘッダーがデータの語尾をコード化するとき、これはただコード化して、多くの変化がPartial Body Lengthヘッダーのサイズで同じくらい可能であって、同じくらい長いのが可能な1つです。 また、最後のBody Lengthヘッダーがゼロ・レングスヘッダーであるかもしれないことに注意してください。
An implementation MAY use Partial Body Lengths for data packets, be they literal, compressed, or encrypted. The first partial length MUST be at least 512 octets long. Partial Body Lengths MUST NOT be used for any other packet types.
それらが文字通り、圧縮された、または暗号化されていたなら、実装はデータ・パケットにPartial Body Lengthsを使用するかもしれません。 長い間、最初の部分的な長さは少なくとも512の八重奏であるに違いありません。 いかなる他のパケットタイプにも部分的なBody Lengthsを使用してはいけません。
Please note that in all of these explanations, the total length of the packet is the length of the header(s) plus the length of the body.
これらの説明のすべてでは、パケットの全長は、ヘッダーの長さとボディーの長さです。
4.3. Packet Tags
4.3. パケットタグ
The packet tag denotes what type of packet the body holds. Note that old format headers can only have tags less than 16, whereas new format headers can have tags as great as 63. The defined tags (in decimal) are:
パケットタグはボディーが保持するパケットのすべてのタイプを指示します。 ヘッダーが持つことができるだけである古い方式が16未満にタグ付けをしますが、新しい形式ヘッダーがタグを63と同じくらいすばらしくすることができることに注意してください。 定義されたタグ(小数における)は以下の通りです。
0 -- Reserved - a packet tag must not have this value 1 -- Public-Key Encrypted Session Key Packet 2 -- Signature Packet 3 -- Symmetric-Key Encrypted Session Key Packet 4 -- One-Pass Signature Packet 5 -- Secret Key Packet 6 -- Public Key Packet 7 -- Secret Subkey Packet 8 -- Compressed Data Packet 9 -- Symmetrically Encrypted Data Packet 10 -- Marker Packet 11 -- Literal Data Packet 12 -- Trust Packet
この値1--公共に主要なEncrypted Session Key Packet2--署名Packet3(左右対称に主要なEncrypted Session Key Packet4)がパケットタグからSignature Packet5を1つ渡してはいけない0(予約されます)--秘密のKey Packet6--公共のKey Packet7(秘密のSubkey Packet8)はData Packet9--対称的にEncrypted Data Packet10(マーカーPacket11)文字通りのData Packet12--信頼Packetを圧縮しました。
Callas, et. al. Standards Track [Page 15] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[15ページ]。
13 -- User ID Packet 14 -- Public Subkey Packet 60 to 63 -- Private or Experimental Values
13--ユーザIDパケット14--公共のサブキーパケット60〜63--個人的であるか実験している値
5. Packet Types
5. パケットタイプ
5.1. Public-Key Encrypted Session Key Packets (Tag 1)
5.1. 公開鍵の暗号化されたセッション主要なパケット(タグ1)
A Public-Key Encrypted Session Key packet holds the session key used to encrypt a message. Zero or more Encrypted Session Key packets (either Public-Key or Symmetric-Key) may precede a Symmetrically Encrypted Data Packet, which holds an encrypted message. The message is encrypted with the session key, and the session key is itself encrypted and stored in the Encrypted Session Key packet(s). The Symmetrically Encrypted Data Packet is preceded by one Public-Key Encrypted Session Key packet for each OpenPGP key to which the message is encrypted. The recipient of the message finds a session key that is encrypted to their public key, decrypts the session key, and then uses the session key to decrypt the message.
Public主要なEncrypted Session Keyパケットは、セッションキーがメッセージを暗号化するのに使用されるままにします。 ゼロか、より多くのEncrypted Session Keyパケット(Public主要であるかSymmetric主要な)がSymmetrically Encrypted Data Packetに先行するかもしれません。(Symmetrically Encrypted Data Packetは暗号化メッセージを保持します)。 メッセージがセッションキーで暗号化されて、セッションキーは、Encrypted Session Keyパケットに暗号化されて、保存されます。 メッセージが暗号化されているそれぞれのOpenPGPキーあたり1つのPublic主要なEncrypted Session KeyパケットがSymmetrically Encrypted Data Packetに先行します。 メッセージの受取人は、それらの公開鍵に暗号化されて、セッションキーを解読して、次にセッションを使用するセッションキーがメッセージを解読するために主要であることがわかります。
The body of this packet consists of:
このパケットのボディーは以下から成ります。
- A one-octet number giving the version number of the packet type. The currently defined value for packet version is 3. An implementation should accept, but not generate a version of 2, which is equivalent to V3 in all other respects.
- パケットタイプのバージョン番号を与える1八重奏の数。 パケットバージョンのための現在定義された値は3です。 他のすべての点におけるV3に同等な2のバージョンを生成しないのを除いて、実装は受け入れるべきです。
- An eight-octet number that gives the key ID of the public key that the session key is encrypted to.
- セッションキーが暗号化される公開鍵を主要なIDに与える8八重奏の数。
- A one-octet number giving the public key algorithm used.
- 公開鍵アルゴリズムを使用されているのに与える1八重奏の数。
- A string of octets that is the encrypted session key. This string takes up the remainder of the packet, and its contents are dependent on the public key algorithm used.
- 暗号化されたセッションキーである一連の八重奏。 このストリングはパケットの残りを始めます、そして、内容は使用される公開鍵アルゴリズムに依存しています。
Algorithm Specific Fields for RSA encryption
RSA暗号化のためのアルゴリズムSpecificフィールズ
- multiprecision integer (MPI) of RSA encrypted value m**e mod n.
- RSAの多倍精度整数(MPI)は値m**eモッズnを暗号化しました。
Algorithm Specific Fields for Elgamal encryption:
Elgamal暗号化のためのアルゴリズムSpecificフィールズ:
- MPI of Elgamal (Diffie-Hellman) value g**k mod p.
- Elgamal(ディフィー-ヘルマン)値g**kモッズpのMPI。
- MPI of Elgamal (Diffie-Hellman) value m * y**k mod p.
- Elgamal(ディフィー-ヘルマン)値のm*y**kモッズpのMPI。
Callas, et. al. Standards Track [Page 16] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[16ページ]。
The value "m" in the above formulas is derived from the session key as follows. First the session key is prefixed with a one-octet algorithm identifier that specifies the symmetric encryption algorithm used to encrypt the following Symmetrically Encrypted Data Packet. Then a two-octet checksum is appended which is equal to the sum of the preceding session key octets, not including the algorithm identifier, modulo 65536. This value is then padded as described in PKCS-1 block type 02 [RFC2313] to form the "m" value used in the formulas above.
以下のセッションキーから上の定石による値の「m」を得ます。 まず最初に、セッションキーは以下のSymmetrically Encrypted Data Packetを暗号化するのに使用される左右対称の暗号化アルゴリズムを指定する1八重奏のアルゴリズム識別子で前に置かれています。 次に前のセッション主要な八重奏の合計と等しい2八重奏のチェックサムを追加します、アルゴリズム識別子(法65536)を含んでいなくて そして、この値はPKCS-1ゴシック体02[RFC2313]で上の定石で使用される「m」値を形成するために説明されるように水増しされます。
Note that when an implementation forms several PKESKs with one session key, forming a message that can be decrypted by several keys, the implementation MUST make new PKCS-1 padding for each key.
数個のキーで解読することができるメッセージを形成して、実装が1個のセッションキーで数個のPKESKsを形成するとき、実装が各キーのためにそっと歩く新しいPKCS-1を作らなければならないことに注意してください。
An implementation MAY accept or use a Key ID of zero as a "wild card" or "speculative" Key ID. In this case, the receiving implementation would try all available private keys, checking for a valid decrypted session key. This format helps reduce traffic analysis of messages.
実装は、「ワイルドカード」か「投機的な」Key IDとしてゼロのKey IDを認めるか、または使用するかもしれません。 この場合、有効な解読されたセッションキーがないかどうかチェックして、受信実装はすべての利用可能な秘密鍵を試みるでしょう。 この形式は、メッセージのトラヒック分析を抑えるのを助けます。
5.2. Signature Packet (Tag 2)
5.2. 署名パケット(タグ2)
A signature packet describes a binding between some public key and some data. The most common signatures are a signature of a file or a block of text, and a signature that is a certification of a user ID.
署名パケットは何らかの公開鍵といくつかのデータの間の結合について説明します。 最も一般的な署名は、ファイルの署名か1ブロックのテキストと、ユーザIDの証明である署名です。
Two versions of signature packets are defined. Version 3 provides basic signature information, while version 4 provides an expandable format with subpackets that can specify more information about the signature. PGP 2.6.x only accepts version 3 signatures.
署名パケットの2つのバージョンが定義されます。 バージョン3は基本の署名情報を提供します、バージョン4は署名に関する詳しい情報を指定できる「副-パケット」を拡張可能な形式に提供しますが。 PGP 2.6.xはバージョン3署名を受け入れるだけです。
Implementations MUST accept V3 signatures. Implementations SHOULD generate V4 signatures. Implementations MAY generate a V3 signature that can be verified by PGP 2.6.x.
実装はV3署名を受け入れなければなりません。 実装SHOULDはV4に署名を生成します。 実装はPGP 2.6.xが確かめることができるV3署名を生成するかもしれません。
Note that if an implementation is creating an encrypted and signed message that is encrypted to a V3 key, it is reasonable to create a V3 signature.
実装がV3キーに暗号化される暗号化されて署名しているメッセージを作成しているなら、V3署名を作成するのが妥当であることに注意してください。
5.2.1. Signature Types
5.2.1. 署名タイプ
There are a number of possible meanings for a signature, which are specified in a signature type octet in any given signature. These meanings are:
署名のための多くの可能な意味があります。(意味はどんな与えられた署名でも署名タイプ八重奏で指定されます)。 これらの意味は以下の通りです。
0x00: Signature of a binary document. Typically, this means the signer owns it, created it, or certifies that it has not been modified.
0×00: 2進のドキュメントの署名。 通常、これは、署名者が、それを所有しているか、それを作成するか、またはそれが変更されていないのを公認することを意味します。
Callas, et. al. Standards Track [Page 17] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[17ページ]。
0x01: Signature of a canonical text document. Typically, this means the signer owns it, created it, or certifies that it has not been modified. The signature is calculated over the text data with its line endings converted to <CR><LF> and trailing blanks removed.
0×01: 正準なテキストドキュメントの署名。 通常、これは、署名者が、それを所有しているか、それを作成するか、またはそれが変更されていないのを公認することを意味します。 署名は<CR><LF>に系列結末を変換して、引きずっている空白を取り除いているテキストデータに関して計算されます。
0x02: Standalone signature. This signature is a signature of only its own subpacket contents. It is calculated identically to a signature over a zero-length binary document. Note that it doesn't make sense to have a V3 standalone signature.
0×02: スタンドアロン署名。 この署名はそれ自身だけの「副-パケット」コンテンツの署名です。 それは同様にゼロ・レングスバイナリードキュメントの上の署名に計算されます。 V3スタンドアロン署名を持つ意味にならないことに注意してください。
0x10: Generic certification of a User ID and Public Key packet. The issuer of this certification does not make any particular assertion as to how well the certifier has checked that the owner of the key is in fact the person described by the user ID. Note that all PGP "key signatures" are this type of certification.
0×10: User IDとPublic Keyパケットのジェネリック証明。 この証明の発行人は証明することが、事実上、キーの所有者がユーザIDによって説明された人であることをどれくらいよくチェックしたかに関して少しの特定の主張もしません。 すべてのPGP「調号」がこのタイプの証明であることに注意してください。
0x11: Persona certification of a User ID and Public Key packet. The issuer of this certification has not done any verification of the claim that the owner of this key is the user ID specified.
0×11: User IDとPublic Keyパケットの人格証明。 この証明の発行人はこのキーの所有者がIDが指定したユーザであるというクレームの少しの検証もしていません。
0x12: Casual certification of a User ID and Public Key packet. The issuer of this certification has done some casual verification of the claim of identity.
0×12: User IDとPublic Keyパケットのカジュアルな証明。 この証明の発行人はアイデンティティのクレームの何らかのカジュアルな検証をしました。
0x13: Positive certification of a User ID and Public Key packet. The issuer of this certification has done substantial verification of the claim of identity.
0×13: User IDとPublic Keyパケットの積極的な証明。 この証明の発行人はアイデンティティのクレームのかなりの検証をしました。
Please note that the vagueness of these certification claims is not a flaw, but a feature of the system. Because PGP places final authority for validity upon the receiver of a certification, it may be that one authority's casual certification might be more rigorous than some other authority's positive certification. These classifications allow a certification authority to issue fine-grained claims.
これらの証明クレームのあいまいさは欠点ではなく、システムの特徴です。 PGPが正当性のために最終的な権威を証明の受信機に置くので、多分、1つの権威のカジュアルな証明はある他の権威の積極的な証明より厳しいかもしれません。 これらの分類はきめ細かに粒状のクレームを発行する証明権威を許容します。
0x18: Subkey Binding Signature This signature is a statement by the top-level signing key indicates that it owns the subkey. This signature is calculated directly on the subkey itself, not on any User ID or other packets.
0×18: サブキーBinding Signature This署名はトップレベル署名キーによる声明が、サブキーを所有しているのを示すということです。 この署名はどんなUser IDや他のパケットの上でも計算されるのではなく、サブキー自体の直接上に計算されます。
Callas, et. al. Standards Track [Page 18] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[18ページ]。
0x1F: Signature directly on a key This signature is calculated directly on a key. It binds the information in the signature subpackets to the key, and is appropriate to be used for subpackets that provide information about the key, such as the revocation key subpacket. It is also appropriate for statements that non-self certifiers want to make about the key itself, rather than the binding between a key and a name.
0x1F: 直接主要なThis署名の署名はキーの直接上に計算されます。 キーの情報を提供する「副-パケット」に使用されるのは、署名「副-パケット」における情報をキーに縛って、適切です、取消しの主要な「副-パケット」などのように。 また、それはキーと名前の間の結合よりむしろ非自己証明することがキー自体の周りで作りたがっている適切な繰り返し文です。
0x20: Key revocation signature The signature is calculated directly on the key being revoked. A revoked key is not to be used. Only revocation signatures by the key being revoked, or by an authorized revocation key, should be considered valid revocation signatures.
0×20: 取消し署名を合わせてください。署名は、キーの直接上に取り消されながら、計算されます。 取り消されたキーは使用されていることになっていません。 取り消されるキー、または認可された取消しキーによる取消し署名だけが有効な取消し署名であると考えられるべきです。
0x28: Subkey revocation signature The signature is calculated directly on the subkey being revoked. A revoked subkey is not to be used. Only revocation signatures by the top-level signature key that is bound to this subkey, or by an authorized revocation key, should be considered valid revocation signatures.
0×28: サブキー取消し署名、署名は取り消されるサブキーの直接上に計算されます。 取り消されたサブキーは使用されていることになっていません。 このサブキーに縛られるトップレベル署名キー、または認可された取消しキーによる取消し署名だけが有効な取消し署名であると考えられるべきです。
0x30: Certification revocation signature This signature revokes an earlier user ID certification signature (signature class 0x10 through 0x13). It should be issued by the same key that issued the revoked signature or an authorized revocation key The signature should have a later creation date than the signature it revokes.
0×30: 証明取消し署名This署名は以前のユーザID証明署名(署名クラス0×10から0x13)を取り消します。 それは署名が持つべきである取り消された署名か認可された取消しキーにそれが取り消す署名より遅い作成日付を発行したのと同じキーによって発行されるべきです。
0x40: Timestamp signature. This signature is only meaningful for the timestamp contained in it.
0×40: タイムスタンプ署名。 それに含まれたタイムスタンプだけに、この署名は重要です。
5.2.2. Version 3 Signature Packet Format
5.2.2. バージョン3署名パケット・フォーマット
The body of a version 3 Signature Packet contains:
バージョン3Signature Packetのボディーは以下を含みます。
- One-octet version number (3).
- 1八重奏のバージョン番号(3)。
- One-octet length of following hashed material. MUST be 5.
- 1八重奏の長さについて論じ尽くされた材料に続くこと。 5はそうであるに違いありませんか?
- One-octet signature type.
- 1八重奏の署名タイプ。
- Four-octet creation time.
- 4八重奏の作成時間。
- Eight-octet key ID of signer.
- 署名者の8八重奏の主要なID。
- One-octet public key algorithm.
- 1八重奏の公開鍵アルゴリズム。
Callas, et. al. Standards Track [Page 19] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[19ページ]。
- One-octet hash algorithm.
- 1八重奏のハッシュアルゴリズム。
- Two-octet field holding left 16 bits of signed hash value.
- 2八重奏の分野把持は署名しているハッシュ値の16ビットを残しました。
- One or more multi-precision integers comprising the signature. This portion is algorithm specific, as described below.
- 署名を包括する1つ以上のマルチ精度整数。 この部分は以下で説明されるとして特定のアルゴリズムです。
The data being signed is hashed, and then the signature type and creation time from the signature packet are hashed (5 additional octets). The resulting hash value is used in the signature algorithm. The high 16 bits (first two octets) of the hash are included in the signature packet to provide a quick test to reject some invalid signatures.
署名されるデータは論じ尽くされます、そして、次に、署名パケットからの署名タイプと作成時間は論じ尽くされます(5つの追加八重奏)。 結果として起こるハッシュ値は署名アルゴリズムで使用されます。 ハッシュの高い16ビット(最初の2つの八重奏)は、いくつかの無効の署名を拒絶するために迅速なテストを提供するために署名パケットに含まれています。
Algorithm Specific Fields for RSA signatures:
RSA署名のためのアルゴリズムSpecificフィールズ:
- multiprecision integer (MPI) of RSA signature value m**d.
- RSA署名値のm**dの多倍精度整数(MPI)。
Algorithm Specific Fields for DSA signatures:
DSA署名のためのアルゴリズムSpecificフィールズ:
- MPI of DSA value r.
- DSA価値rのMPI。
- MPI of DSA value s.
- DSA価値sのMPI。
The signature calculation is based on a hash of the signed data, as described above. The details of the calculation are different for DSA signature than for RSA signatures.
署名計算は上で説明されるように署名しているデータのハッシュに基づいています。 DSA署名において、計算の詳細はRSA署名より異なっています。
With RSA signatures, the hash value is encoded as described in PKCS-1 section 10.1.2, "Data encoding", producing an ASN.1 value of type DigestInfo, and then padded using PKCS-1 block type 01 [RFC2313]. This requires inserting the hash value as an octet string into an ASN.1 structure. The object identifier for the type of hash being used is included in the structure. The hexadecimal representations for the currently defined hash algorithms are:
RSA署名で、ハッシュ値はPKCS-1部10.1の.2、「zデータの符号化」で説明されるようにコード化されます、タイプDigestInfoのASN.1値を生産して、次に、そっと歩いている使用PKCS-1ゴシック体01[RFC2313]を生産して。 これは、八重奏ストリングとしてASN.1構造にハッシュ値を挿入するのを必要とします。 使用されるハッシュのタイプへのオブジェクト識別子は構造に含まれています。 現在定義されたハッシュアルゴリズムの16進表現は以下の通りです。
- MD2: 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x02, 0x02
- MD2: 0x2A、0×86 0×48 0×86 0xF7、0x0D、0×02、0×02
- MD5: 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x02, 0x05
- MD5: 0x2A、0×86 0×48 0×86 0xF7、0x0D、0×02、0×05
- RIPEMD-160: 0x2B, 0x24, 0x03, 0x02, 0x01
- RIPEMD-160: 0x2B、0×24、0×03、0×02、0×01
- SHA-1: 0x2B, 0x0E, 0x03, 0x02, 0x1A
- SHA-1: 0x2B、0x0E、0×03、0×02、0x1A
Callas, et. al. Standards Track [Page 20] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[20ページ]。
The ASN.1 OIDs are:
ASN.1OIDsは以下の通りです。
- MD2: 1.2.840.113549.2.2
- MD2: 1.2.840.113549.2.2
- MD5: 1.2.840.113549.2.5
- MD5: 1.2.840.113549.2.5
- RIPEMD-160: 1.3.36.3.2.1
- RIPEMD-160: 1.3.36.3.2.1
- SHA-1: 1.3.14.3.2.26
- SHA-1: 1.3.14.3.2.26
The full hash prefixes for these are:
これらのための完全なハッシュ接頭語は以下の通りです。
MD2: 0x30, 0x20, 0x30, 0x0C, 0x06, 0x08, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x02, 0x02, 0x05, 0x00, 0x04, 0x10
MD2: 0×30 0×20 0×30 0x0C、0×06、0×08、0x2A、0×86、0×48、0×86、0xF7、0x0D、0×02、0×02、0×05、0×00、0×04、0×10
MD5: 0x30, 0x20, 0x30, 0x0C, 0x06, 0x08, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x02, 0x05, 0x05, 0x00, 0x04, 0x10
MD5: 0×30 0×20 0×30 0x0C、0×06、0×08、0x2A、0×86、0×48、0×86、0xF7、0x0D、0×02、0×05、0×05、0×00、0×04、0×10
RIPEMD-160: 0x30, 0x21, 0x30, 0x09, 0x06, 0x05, 0x2B, 0x24, 0x03, 0x02, 0x01, 0x05, 0x00, 0x04, 0x14
RIPEMD-160: 0×30、0×21、0×30、0×09、0×06、0×05、0x2B、0×24、0×03、0×02、0×01、0×05、0×00、0×04、0×14
SHA-1: 0x30, 0x21, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0E, 0x03, 0x02, 0x1A, 0x05, 0x00, 0x04, 0x14
SHA-1: 0×30 0×21 0×30 0×09 0×06 0×05 0x2b、0x0E、0×03、0×02、0x1A、0×05、0×00、0×04、0×14
DSA signatures MUST use hashes with a size of 160 bits, to match q, the size of the group generated by the DSA key's generator value. The hash function result is treated as a 160 bit number and used directly in the DSA signature algorithm.
DSA署名はqを合わせるのに160ビットのサイズがあるハッシュを使用しなければなりません、DSAキーのジェネレータ値によって作られたグループのサイズ。 ハッシュ関数結果は、160ビットの数として扱われて、直接DSA署名アルゴリズムで使用されます。
5.2.3. Version 4 Signature Packet Format
5.2.3. バージョン4署名パケット・フォーマット
The body of a version 4 Signature Packet contains:
バージョン4Signature Packetのボディーは以下を含みます。
- One-octet version number (4).
- 1八重奏のバージョン番号(4)。
- One-octet signature type.
- 1八重奏の署名タイプ。
- One-octet public key algorithm.
- 1八重奏の公開鍵アルゴリズム。
- One-octet hash algorithm.
- 1八重奏のハッシュアルゴリズム。
- Two-octet scalar octet count for following hashed subpacket data. Note that this is the length in octets of all of the hashed subpackets; a pointer incremented by this number will skip over the hashed subpackets.
- 論じ尽くされた「副-パケット」データに従うための2八重奏のスカラの八重奏カウント。 これが論じ尽くされた「副-パケット」のすべての八重奏で長さであることに注意してください。 この数によって増加された指針は論じ尽くされた「副-パケット」を飛ばすでしょう。
Callas, et. al. Standards Track [Page 21] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[21ページ]。
- Hashed subpacket data. (zero or more subpackets)
- 「副-パケット」データを論じ尽くしました。 (ゼロか、より多くの「副-パケット」)
- Two-octet scalar octet count for following unhashed subpacket data. Note that this is the length in octets of all of the unhashed subpackets; a pointer incremented by this number will skip over the unhashed subpackets.
- unhashed subpacketデータに従うための2八重奏のスカラの八重奏カウント。 これがunhashed subpacketsのすべての八重奏で長さであることに注意してください。 この数によって増加された指針はunhashed subpacketsを飛ばすでしょう。
- Unhashed subpacket data. (zero or more subpackets)
- Unhashed subpacketデータ。 (ゼロか、より多くの「副-パケット」)
- Two-octet field holding left 16 bits of signed hash value.
- 2八重奏の分野把持は署名しているハッシュ値の16ビットを残しました。
- One or more multi-precision integers comprising the signature. This portion is algorithm specific, as described above.
- 署名を包括する1つ以上のマルチ精度整数。 この部分は上で説明されるとして特定のアルゴリズムです。
The data being signed is hashed, and then the signature data from the version number through the hashed subpacket data (inclusive) is hashed. The resulting hash value is what is signed. The left 16 bits of the hash are included in the signature packet to provide a quick test to reject some invalid signatures.
署名されるデータは論じ尽くされます、そして、次に、バージョン番号から論じ尽くされた「副-パケット」データ(包括的な)の署名データは論じ尽くされます。 結果として起こるハッシュ値は署名されることです。 ハッシュの左の16ビットは、いくつかの無効の署名を拒絶するために迅速なテストを提供するために署名パケットに含まれています。
There are two fields consisting of signature subpackets. The first field is hashed with the rest of the signature data, while the second is unhashed. The second set of subpackets is not cryptographically protected by the signature and should include only advisory information.
署名「副-パケット」から成る2つの分野があります。 署名データの残りに従って、最初の分野は論じ尽くされますが、2番目は「非-論じ尽く」されます。 「副-パケット」の2番目のセットは、署名で暗号で保護されないで、顧問情報だけを含むべきです。
The algorithms for converting the hash function result to a signature are described in a section below.
ハッシュ関数結果を署名に変換するためのアルゴリズムは下のセクションで説明されます。
5.2.3.1. Signature Subpacket Specification
5.2.3.1. 署名Subpacket仕様
The subpacket fields consist of zero or more signature subpackets. Each set of subpackets is preceded by a two-octet scalar count of the length of the set of subpackets.
「副-パケット」分野はゼロか、より多くの署名「副-パケット」から成ります。 「副-パケット」のセットの長さの2八重奏のスカラのカウントで「副-パケット」の各セットは先行されています。
Each subpacket consists of a subpacket header and a body. The header consists of:
各「副-パケット」は「副-パケット」ヘッダーとボディーから成ります。 ヘッダーは以下から成ります。
- the subpacket length (1, 2, or 5 octets)
- 「副-パケット」の長さ(1、2、または5つの八重奏)
- the subpacket type (1 octet)
- 「副-パケット」タイプ(1つの八重奏)
and is followed by the subpacket specific data.
そして、「副-パケット」の特定のデータはあとに続いています。
The length includes the type octet but not this length. Its format is similar to the "new" format packet header lengths, but cannot have partial body lengths. That is:
長さは、タイプ八重奏を含んでいますが、この長さに含んでいるというわけではありません。 形式は、「新しい」形式パケットヘッダ長と同様ですが、部分的なボディーの長さを持つことができません。 それは以下の通りです。
Callas, et. al. Standards Track [Page 22] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[22ページ]。
if the 1st octet < 192, then lengthOfLength = 1 subpacketLen = 1st_octet
if the 1st octet < 192, then lengthOfLength = 1 subpacketLen = 1st_octet
if the 1st octet >= 192 and < 255, then lengthOfLength = 2 subpacketLen = ((1st_octet - 192) << 8) + (2nd_octet) + 192
if the 1st octet >= 192 and < 255, then lengthOfLength = 2 subpacketLen = ((1st_octet - 192) << 8) + (2nd_octet) + 192
if the 1st octet = 255, then lengthOfLength = 5 subpacket length = [four-octet scalar starting at 2nd_octet]
if the 1st octet = 255, then lengthOfLength = 5 subpacket length = [four-octet scalar starting at 2nd_octet]
The value of the subpacket type octet may be:
The value of the subpacket type octet may be:
2 = signature creation time 3 = signature expiration time 4 = exportable certification 5 = trust signature 6 = regular expression 7 = revocable 9 = key expiration time 10 = placeholder for backward compatibility 11 = preferred symmetric algorithms 12 = revocation key 16 = issuer key ID 20 = notation data 21 = preferred hash algorithms 22 = preferred compression algorithms 23 = key server preferences 24 = preferred key server 25 = primary user id 26 = policy URL 27 = key flags 28 = signer's user id 29 = reason for revocation 100 to 110 = internal or user-defined
2 = signature creation time 3 = signature expiration time 4 = exportable certification 5 = trust signature 6 = regular expression 7 = revocable 9 = key expiration time 10 = placeholder for backward compatibility 11 = preferred symmetric algorithms 12 = revocation key 16 = issuer key ID 20 = notation data 21 = preferred hash algorithms 22 = preferred compression algorithms 23 = key server preferences 24 = preferred key server 25 = primary user id 26 = policy URL 27 = key flags 28 = signer's user id 29 = reason for revocation 100 to 110 = internal or user-defined
An implementation SHOULD ignore any subpacket of a type that it does not recognize.
An implementation SHOULD ignore any subpacket of a type that it does not recognize.
Bit 7 of the subpacket type is the "critical" bit. If set, it denotes that the subpacket is one that is critical for the evaluator of the signature to recognize. If a subpacket is encountered that is marked critical but is unknown to the evaluating software, the evaluator SHOULD consider the signature to be in error.
Bit 7 of the subpacket type is the "critical" bit. If set, it denotes that the subpacket is one that is critical for the evaluator of the signature to recognize. If a subpacket is encountered that is marked critical but is unknown to the evaluating software, the evaluator SHOULD consider the signature to be in error.
Callas, et. al. Standards Track [Page 23] RFC 2440 OpenPGP Message Format November 1998
Callas, et. al. Standards Track [Page 23] RFC 2440 OpenPGP Message Format November 1998
An evaluator may "recognize" a subpacket, but not implement it. The purpose of the critical bit is to allow the signer to tell an evaluator that it would prefer a new, unknown feature to generate an error than be ignored.
An evaluator may "recognize" a subpacket, but not implement it. The purpose of the critical bit is to allow the signer to tell an evaluator that it would prefer a new, unknown feature to generate an error than be ignored.
Implementations SHOULD implement "preferences".
Implementations SHOULD implement "preferences".
5.2.3.2. Signature Subpacket Types
5.2.3.2. Signature Subpacket Types
A number of subpackets are currently defined. Some subpackets apply to the signature itself and some are attributes of the key. Subpackets that are found on a self-signature are placed on a user id certification made by the key itself. Note that a key may have more than one user id, and thus may have more than one self-signature, and differing subpackets.
A number of subpackets are currently defined. Some subpackets apply to the signature itself and some are attributes of the key. Subpackets that are found on a self-signature are placed on a user id certification made by the key itself. Note that a key may have more than one user id, and thus may have more than one self-signature, and differing subpackets.
A self-signature is a binding signature made by the key the signature refers to. There are three types of self-signatures, the certification signatures (types 0x10-0x13), the direct-key signature (type 0x1f), and the subkey binding signature (type 0x18). For certification self-signatures, each user ID may have a self- signature, and thus different subpackets in those self-signatures. For subkey binding signatures, each subkey in fact has a self- signature. Subpackets that appear in a certification self-signature apply to the username, and subpackets that appear in the subkey self-signature apply to the subkey. Lastly, subpackets on the direct key signature apply to the entire key.
A self-signature is a binding signature made by the key the signature refers to. There are three types of self-signatures, the certification signatures (types 0x10-0x13), the direct-key signature (type 0x1f), and the subkey binding signature (type 0x18). For certification self-signatures, each user ID may have a self- signature, and thus different subpackets in those self-signatures. For subkey binding signatures, each subkey in fact has a self- signature. Subpackets that appear in a certification self-signature apply to the username, and subpackets that appear in the subkey self-signature apply to the subkey. Lastly, subpackets on the direct key signature apply to the entire key.
Implementing software should interpret a self-signature's preference subpackets as narrowly as possible. For example, suppose a key has two usernames, Alice and Bob. Suppose that Alice prefers the symmetric algorithm CAST5, and Bob prefers IDEA or Triple-DES. If the software locates this key via Alice's name, then the preferred algorithm is CAST5, if software locates the key via Bob's name, then the preferred algorithm is IDEA. If the key is located by key id, then algorithm of the default user id of the key provides the default symmetric algorithm.
Implementing software should interpret a self-signature's preference subpackets as narrowly as possible. For example, suppose a key has two usernames, Alice and Bob. Suppose that Alice prefers the symmetric algorithm CAST5, and Bob prefers IDEA or Triple-DES. If the software locates this key via Alice's name, then the preferred algorithm is CAST5, if software locates the key via Bob's name, then the preferred algorithm is IDEA. If the key is located by key id, then algorithm of the default user id of the key provides the default symmetric algorithm.
A subpacket may be found either in the hashed or unhashed subpacket sections of a signature. If a subpacket is not hashed, then the information in it cannot be considered definitive because it is not part of the signature proper.
A subpacket may be found either in the hashed or unhashed subpacket sections of a signature. If a subpacket is not hashed, then the information in it cannot be considered definitive because it is not part of the signature proper.
Callas, et. al. Standards Track [Page 24] RFC 2440 OpenPGP Message Format November 1998
Callas, et. al. Standards Track [Page 24] RFC 2440 OpenPGP Message Format November 1998
5.2.3.3. Signature creation time
5.2.3.3. Signature creation time
(4 octet time field)
(4 octet time field)
The time the signature was made.
The time the signature was made.
MUST be present in the hashed area.
MUST be present in the hashed area.
5.2.3.4. Issuer
5.2.3.4. Issuer
(8 octet key ID)
(8 octet key ID)
The OpenPGP key ID of the key issuing the signature.
The OpenPGP key ID of the key issuing the signature.
5.2.3.5. Key expiration time
5.2.3.5. Key expiration time
(4 octet time field)
(4 octet time field)
The validity period of the key. This is the number of seconds after the key creation time that the key expires. If this is not present or has a value of zero, the key never expires. This is found only on a self-signature.
The validity period of the key. This is the number of seconds after the key creation time that the key expires. If this is not present or has a value of zero, the key never expires. This is found only on a self-signature.
5.2.3.6. Preferred symmetric algorithms
5.2.3.6. Preferred symmetric algorithms
(sequence of one-octet values)
(sequence of one-octet values)
Symmetric algorithm numbers that indicate which algorithms the key holder prefers to use. The subpacket body is an ordered list of octets with the most preferred listed first. It is assumed that only algorithms listed are supported by the recipient's software. Algorithm numbers in section 9. This is only found on a self- signature.
Symmetric algorithm numbers that indicate which algorithms the key holder prefers to use. The subpacket body is an ordered list of octets with the most preferred listed first. It is assumed that only algorithms listed are supported by the recipient's software. Algorithm numbers in section 9. This is only found on a self- signature.
5.2.3.7. Preferred hash algorithms
5.2.3.7. Preferred hash algorithms
(array of one-octet values)
(array of one-octet values)
Message digest algorithm numbers that indicate which algorithms the key holder prefers to receive. Like the preferred symmetric algorithms, the list is ordered. Algorithm numbers are in section 6. This is only found on a self-signature.
Message digest algorithm numbers that indicate which algorithms the key holder prefers to receive. Like the preferred symmetric algorithms, the list is ordered. Algorithm numbers are in section 6. This is only found on a self-signature.
Callas, et. al. Standards Track [Page 25] RFC 2440 OpenPGP Message Format November 1998
Callas, et. al. Standards Track [Page 25] RFC 2440 OpenPGP Message Format November 1998
5.2.3.8. Preferred compression algorithms
5.2.3.8. Preferred compression algorithms
(array of one-octet values)
(array of one-octet values)
Compression algorithm numbers that indicate which algorithms the key holder prefers to use. Like the preferred symmetric algorithms, the list is ordered. Algorithm numbers are in section 6. If this subpacket is not included, ZIP is preferred. A zero denotes that uncompressed data is preferred; the key holder's software might have no compression software in that implementation. This is only found on a self-signature.
Compression algorithm numbers that indicate which algorithms the key holder prefers to use. Like the preferred symmetric algorithms, the list is ordered. Algorithm numbers are in section 6. If this subpacket is not included, ZIP is preferred. A zero denotes that uncompressed data is preferred; the key holder's software might have no compression software in that implementation. This is only found on a self-signature.
5.2.3.9. Signature expiration time
5.2.3.9. Signature expiration time
(4 octet time field)
(4 octet time field)
The validity period of the signature. This is the number of seconds after the signature creation time that the signature expires. If this is not present or has a value of zero, it never expires.
The validity period of the signature. This is the number of seconds after the signature creation time that the signature expires. If this is not present or has a value of zero, it never expires.
5.2.3.10. Exportable Certification
5.2.3.10. Exportable Certification
(1 octet of exportability, 0 for not, 1 for exportable)
(1 octet of exportability, 0 for not, 1 for exportable)
This subpacket denotes whether a certification signature is "exportable", to be used by other users than the signature's issuer. The packet body contains a boolean flag indicating whether the signature is exportable. If this packet is not present, the certification is exportable; it is equivalent to a flag containing a 1.
This subpacket denotes whether a certification signature is "exportable", to be used by other users than the signature's issuer. The packet body contains a boolean flag indicating whether the signature is exportable. If this packet is not present, the certification is exportable; it is equivalent to a flag containing a 1.
Non-exportable, or "local", certifications are signatures made by a user to mark a key as valid within that user's implementation only. Thus, when an implementation prepares a user's copy of a key for transport to another user (this is the process of "exporting" the key), any local certification signatures are deleted from the key.
Non-exportable, or "local", certifications are signatures made by a user to mark a key as valid within that user's implementation only. Thus, when an implementation prepares a user's copy of a key for transport to another user (this is the process of "exporting" the key), any local certification signatures are deleted from the key.
The receiver of a transported key "imports" it, and likewise trims any local certifications. In normal operation, there won't be any, assuming the import is performed on an exported key. However, there are instances where this can reasonably happen. For example, if an implementation allows keys to be imported from a key database in addition to an exported key, then this situation can arise.
The receiver of a transported key "imports" it, and likewise trims any local certifications. In normal operation, there won't be any, assuming the import is performed on an exported key. However, there are instances where this can reasonably happen. For example, if an implementation allows keys to be imported from a key database in addition to an exported key, then this situation can arise.
Some implementations do not represent the interest of a single user (for example, a key server). Such implementations always trim local certifications from any key they handle.
Some implementations do not represent the interest of a single user (for example, a key server). Such implementations always trim local certifications from any key they handle.
Callas, et. al. Standards Track [Page 26] RFC 2440 OpenPGP Message Format November 1998
Callas, et. al. Standards Track [Page 26] RFC 2440 OpenPGP Message Format November 1998
5.2.3.11. Revocable
5.2.3.11. Revocable
(1 octet of revocability, 0 for not, 1 for revocable)
(1 octet of revocability, 0 for not, 1 for revocable)
Signature's revocability status. Packet body contains a boolean flag indicating whether the signature is revocable. Signatures that are not revocable have any later revocation signatures ignored. They represent a commitment by the signer that he cannot revoke his signature for the life of his key. If this packet is not present, the signature is revocable.
Signature's revocability status. Packet body contains a boolean flag indicating whether the signature is revocable. Signatures that are not revocable have any later revocation signatures ignored. They represent a commitment by the signer that he cannot revoke his signature for the life of his key. If this packet is not present, the signature is revocable.
5.2.3.12. Trust signature
5.2.3.12. Trust signature
(1 octet "level" (depth), 1 octet of trust amount)
(1 octet "level" (depth), 1 octet of trust amount)
Signer asserts that the key is not only valid, but also trustworthy, at the specified level. Level 0 has the same meaning as an ordinary validity signature. Level 1 means that the signed key is asserted to be a valid trusted introducer, with the 2nd octet of the body specifying the degree of trust. Level 2 means that the signed key is asserted to be trusted to issue level 1 trust signatures, i.e. that it is a "meta introducer". Generally, a level n trust signature asserts that a key is trusted to issue level n-1 trust signatures. The trust amount is in a range from 0-255, interpreted such that values less than 120 indicate partial trust and values of 120 or greater indicate complete trust. Implementations SHOULD emit values of 60 for partial trust and 120 for complete trust.
Signer asserts that the key is not only valid, but also trustworthy, at the specified level. Level 0 has the same meaning as an ordinary validity signature. Level 1 means that the signed key is asserted to be a valid trusted introducer, with the 2nd octet of the body specifying the degree of trust. Level 2 means that the signed key is asserted to be trusted to issue level 1 trust signatures, i.e. that it is a "meta introducer". Generally, a level n trust signature asserts that a key is trusted to issue level n-1 trust signatures. The trust amount is in a range from 0-255, interpreted such that values less than 120 indicate partial trust and values of 120 or greater indicate complete trust. Implementations SHOULD emit values of 60 for partial trust and 120 for complete trust.
5.2.3.13. Regular expression
5.2.3.13. Regular expression
(null-terminated regular expression)
(null-terminated regular expression)
Used in conjunction with trust signature packets (of level > 0) to limit the scope of trust that is extended. Only signatures by the target key on user IDs that match the regular expression in the body of this packet have trust extended by the trust signature subpacket. The regular expression uses the same syntax as the Henry Spencer's "almost public domain" regular expression package. A description of the syntax is found in a section below.
Used in conjunction with trust signature packets (of level > 0) to limit the scope of trust that is extended. Only signatures by the target key on user IDs that match the regular expression in the body of this packet have trust extended by the trust signature subpacket. The regular expression uses the same syntax as the Henry Spencer's "almost public domain" regular expression package. A description of the syntax is found in a section below.
5.2.3.14. Revocation key
5.2.3.14. Revocation key
(1 octet of class, 1 octet of algid, 20 octets of fingerprint)
(1 octet of class, 1 octet of algid, 20 octets of fingerprint)
Authorizes the specified key to issue revocation signatures for this key. Class octet must have bit 0x80 set. If the bit 0x40 is set, then this means that the revocation information is sensitive. Other bits are for future expansion to other kinds of authorizations. This
Authorizes the specified key to issue revocation signatures for this key. Class octet must have bit 0x80 set. If the bit 0x40 is set, then this means that the revocation information is sensitive. Other bits are for future expansion to other kinds of authorizations. This
Callas, et. al. Standards Track [Page 27] RFC 2440 OpenPGP Message Format November 1998
Callas, et. al. Standards Track [Page 27] RFC 2440 OpenPGP Message Format November 1998
is found on a self-signature.
is found on a self-signature.
If the "sensitive" flag is set, the keyholder feels this subpacket contains private trust information that describes a real-world sensitive relationship. If this flag is set, implementations SHOULD NOT export this signature to other users except in cases where the data needs to be available: when the signature is being sent to the designated revoker, or when it is accompanied by a revocation signature from that revoker. Note that it may be appropriate to isolate this subpacket within a separate signature so that it is not combined with other subpackets that need to be exported.
If the "sensitive" flag is set, the keyholder feels this subpacket contains private trust information that describes a real-world sensitive relationship. If this flag is set, implementations SHOULD NOT export this signature to other users except in cases where the data needs to be available: when the signature is being sent to the designated revoker, or when it is accompanied by a revocation signature from that revoker. Note that it may be appropriate to isolate this subpacket within a separate signature so that it is not combined with other subpackets that need to be exported.
5.2.3.15. Notation Data
5.2.3.15. Notation Data
(4 octets of flags, 2 octets of name length (M), 2 octets of value length (N), M octets of name data, N octets of value data)
(4 octets of flags, 2 octets of name length (M), 2 octets of value length (N), M octets of name data, N octets of value data)
This subpacket describes a "notation" on the signature that the issuer wishes to make. The notation has a name and a value, each of which are strings of octets. There may be more than one notation in a signature. Notations can be used for any extension the issuer of the signature cares to make. The "flags" field holds four octets of flags.
This subpacket describes a "notation" on the signature that the issuer wishes to make. The notation has a name and a value, each of which are strings of octets. There may be more than one notation in a signature. Notations can be used for any extension the issuer of the signature cares to make. The "flags" field holds four octets of flags.
All undefined flags MUST be zero. Defined flags are:
All undefined flags MUST be zero. Defined flags are:
First octet: 0x80 = human-readable. This note is text, a note from one person to another, and has no meaning to software. Other octets: none.
First octet: 0x80 = human-readable. This note is text, a note from one person to another, and has no meaning to software. Other octets: none.
5.2.3.16. Key server preferences
5.2.3.16. Key server preferences
(N octets of flags)
(N octets of flags)
This is a list of flags that indicate preferences that the key holder has about how the key is handled on a key server. All undefined flags MUST be zero.
This is a list of flags that indicate preferences that the key holder has about how the key is handled on a key server. All undefined flags MUST be zero.
First octet: 0x80 = No-modify the key holder requests that this key only be modified or updated by the key holder or an administrator of the key server.
First octet: 0x80 = No-modify the key holder requests that this key only be modified or updated by the key holder or an administrator of the key server.
This is found only on a self-signature.
This is found only on a self-signature.
Callas, et. al. Standards Track [Page 28] RFC 2440 OpenPGP Message Format November 1998
Callas, et. al. Standards Track [Page 28] RFC 2440 OpenPGP Message Format November 1998
5.2.3.17. Preferred key server
5.2.3.17. Preferred key server
(String)
(String)
This is a URL of a key server that the key holder prefers be used for updates. Note that keys with multiple user ids can have a preferred key server for each user id. Note also that since this is a URL, the key server can actually be a copy of the key retrieved by ftp, http, finger, etc.
This is a URL of a key server that the key holder prefers be used for updates. Note that keys with multiple user ids can have a preferred key server for each user id. Note also that since this is a URL, the key server can actually be a copy of the key retrieved by ftp, http, finger, etc.
5.2.3.18. Primary user id
5.2.3.18. Primary user id
(1 octet, boolean)
(1 octet, boolean)
This is a flag in a user id's self signature that states whether this user id is the main user id for this key. It is reasonable for an implementation to resolve ambiguities in preferences, etc. by referring to the primary user id. If this flag is absent, its value is zero. If more than one user id in a key is marked as primary, the implementation may resolve the ambiguity in any way it sees fit.
This is a flag in a user id's self signature that states whether this user id is the main user id for this key. It is reasonable for an implementation to resolve ambiguities in preferences, etc. by referring to the primary user id. If this flag is absent, its value is zero. If more than one user id in a key is marked as primary, the implementation may resolve the ambiguity in any way it sees fit.
5.2.3.19. Policy URL
5.2.3.19. Policy URL
(String)
(String)
This subpacket contains a URL of a document that describes the policy that the signature was issued under.
This subpacket contains a URL of a document that describes the policy that the signature was issued under.
5.2.3.20. Key Flags
5.2.3.20. Key Flags
(Octet string)
(Octet string)
This subpacket contains a list of binary flags that hold information about a key. It is a string of octets, and an implementation MUST NOT assume a fixed size. This is so it can grow over time. If a list is shorter than an implementation expects, the unstated flags are considered to be zero. The defined flags are:
This subpacket contains a list of binary flags that hold information about a key. It is a string of octets, and an implementation MUST NOT assume a fixed size. This is so it can grow over time. If a list is shorter than an implementation expects, the unstated flags are considered to be zero. The defined flags are:
First octet:
First octet:
0x01 - This key may be used to certify other keys.
0x01 - This key may be used to certify other keys.
0x02 - This key may be used to sign data.
0x02 - This key may be used to sign data.
0x04 - This key may be used to encrypt communications.
0x04 - This key may be used to encrypt communications.
0x08 - This key may be used to encrypt storage.
0x08 - This key may be used to encrypt storage.
Callas, et. al. Standards Track [Page 29] RFC 2440 OpenPGP Message Format November 1998
Callas, et. al. Standards Track [Page 29] RFC 2440 OpenPGP Message Format November 1998
0x10 - The private component of this key may have been split by a secret-sharing mechanism.
0x10 - The private component of this key may have been split by a secret-sharing mechanism.
0x80 - The private component of this key may be in the possession of more than one person.
0x80 - The private component of this key may be in the possession of more than one person.
Usage notes:
Usage notes:
The flags in this packet may appear in self-signatures or in certification signatures. They mean different things depending on who is making the statement -- for example, a certification signature that has the "sign data" flag is stating that the certification is for that use. On the other hand, the "communications encryption" flag in a self-signature is stating a preference that a given key be used for communications. Note however, that it is a thorny issue to determine what is "communications" and what is "storage." This decision is left wholly up to the implementation; the authors of this document do not claim any special wisdom on the issue, and realize that accepted opinion may change.
The flags in this packet may appear in self-signatures or in certification signatures. They mean different things depending on who is making the statement -- for example, a certification signature that has the "sign data" flag is stating that the certification is for that use. On the other hand, the "communications encryption" flag in a self-signature is stating a preference that a given key be used for communications. Note however, that it is a thorny issue to determine what is "communications" and what is "storage." This decision is left wholly up to the implementation; the authors of this document do not claim any special wisdom on the issue, and realize that accepted opinion may change.
The "split key" (0x10) and "group key" (0x80) flags are placed on a self-signature only; they are meaningless on a certification signature. They SHOULD be placed only on a direct-key signature (type 0x1f) or a subkey signature (type 0x18), one that refers to the key the flag applies to.
The "split key" (0x10) and "group key" (0x80) flags are placed on a self-signature only; they are meaningless on a certification signature. They SHOULD be placed only on a direct-key signature (type 0x1f) or a subkey signature (type 0x18), one that refers to the key the flag applies to.
5.2.3.21. Signer's User ID
5.2.3.21. Signer's User ID
This subpacket allows a keyholder to state which user id is responsible for the signing. Many keyholders use a single key for different purposes, such as business communications as well as personal communications. This subpacket allows such a keyholder to state which of their roles is making a signature.
This subpacket allows a keyholder to state which user id is responsible for the signing. Many keyholders use a single key for different purposes, such as business communications as well as personal communications. This subpacket allows such a keyholder to state which of their roles is making a signature.
5.2.3.22. Reason for Revocation
5.2.3.22. Reason for Revocation
(1 octet of revocation code, N octets of reason string)
(1 octet of revocation code, N octets of reason string)
This subpacket is used only in key revocation and certification revocation signatures. It describes the reason why the key or certificate was revoked.
This subpacket is used only in key revocation and certification revocation signatures. It describes the reason why the key or certificate was revoked.
The first octet contains a machine-readable code that denotes the reason for the revocation:
The first octet contains a machine-readable code that denotes the reason for the revocation:
Callas, et. al. Standards Track [Page 30] RFC 2440 OpenPGP Message Format November 1998
Callas, et. al. Standards Track [Page 30] RFC 2440 OpenPGP Message Format November 1998
0x00 - No reason specified (key revocations or cert revocations) 0x01 - Key is superceded (key revocations) 0x02 - Key material has been compromised (key revocations) 0x03 - Key is no longer used (key revocations) 0x20 - User id information is no longer valid (cert revocations)
0x00 - No reason specified (key revocations or cert revocations) 0x01 - Key is superceded (key revocations) 0x02 - Key material has been compromised (key revocations) 0x03 - Key is no longer used (key revocations) 0x20 - User id information is no longer valid (cert revocations)
Following the revocation code is a string of octets which gives information about the reason for revocation in human-readable form (UTF-8). The string may be null, that is, of zero length. The length of the subpacket is the length of the reason string plus one.
Following the revocation code is a string of octets which gives information about the reason for revocation in human-readable form (UTF-8). The string may be null, that is, of zero length. The length of the subpacket is the length of the reason string plus one.
5.2.4. Computing Signatures
5.2.4. Computing Signatures
All signatures are formed by producing a hash over the signature data, and then using the resulting hash in the signature algorithm.
All signatures are formed by producing a hash over the signature data, and then using the resulting hash in the signature algorithm.
The signature data is simple to compute for document signatures (types 0x00 and 0x01), for which the document itself is the data. For standalone signatures, this is a null string.
The signature data is simple to compute for document signatures (types 0x00 and 0x01), for which the document itself is the data. For standalone signatures, this is a null string.
When a signature is made over a key, the hash data starts with the octet 0x99, followed by a two-octet length of the key, and then body of the key packet. (Note that this is an old-style packet header for a key packet with two-octet length.) A subkey signature (type 0x18) then hashes the subkey, using the same format as the main key. Key revocation signatures (types 0x20 and 0x28) hash only the key being revoked.
When a signature is made over a key, the hash data starts with the octet 0x99, followed by a two-octet length of the key, and then body of the key packet. (Note that this is an old-style packet header for a key packet with two-octet length.) A subkey signature (type 0x18) then hashes the subkey, using the same format as the main key. Key revocation signatures (types 0x20 and 0x28) hash only the key being revoked.
A certification signature (type 0x10 through 0x13) hashes the user id being bound to the key into the hash context after the above data. A V3 certification hashes the contents of the name packet, without any header. A V4 certification hashes the constant 0xb4 (which is an old-style packet header with the length-of-length set to zero), a four-octet number giving the length of the username, and then the username data.
A certification signature (type 0x10 through 0x13) hashes the user id being bound to the key into the hash context after the above data. A V3 certification hashes the contents of the name packet, without any header. A V4 certification hashes the constant 0xb4 (which is an old-style packet header with the length-of-length set to zero), a four-octet number giving the length of the username, and then the username data.
Once the data body is hashed, then a trailer is hashed. A V3 signature hashes five octets of the packet body, starting from the signature type field. This data is the signature type, followed by the four-octet signature time. A V4 signature hashes the packet body starting from its first field, the version number, through the end of the hashed subpacket data. Thus, the fields hashed are the signature version, the signature type, the public key algorithm, the hash algorithm, the hashed subpacket length, and the hashed subpacket body.
Once the data body is hashed, then a trailer is hashed. A V3 signature hashes five octets of the packet body, starting from the signature type field. This data is the signature type, followed by the four-octet signature time. A V4 signature hashes the packet body starting from its first field, the version number, through the end of the hashed subpacket data. Thus, the fields hashed are the signature version, the signature type, the public key algorithm, the hash algorithm, the hashed subpacket length, and the hashed subpacket body.
Callas, et. al. Standards Track [Page 31] RFC 2440 OpenPGP Message Format November 1998
Callas, et. al. Standards Track [Page 31] RFC 2440 OpenPGP Message Format November 1998
V4 signatures also hash in a final trailer of six octets: the version of the signature packet, i.e. 0x04; 0xFF; a four-octet, big-endian number that is the length of the hashed data from the signature packet (note that this number does not include these final six octets.
V4 signatures also hash in a final trailer of six octets: the version of the signature packet, i.e. 0x04; 0xFF; a four-octet, big-endian number that is the length of the hashed data from the signature packet (note that this number does not include these final six octets.
After all this has been hashed, the resulting hash field is used in the signature algorithm, and placed at the end of the signature packet.
After all this has been hashed, the resulting hash field is used in the signature algorithm, and placed at the end of the signature packet.
5.2.4.1. Subpacket Hints
5.2.4.1. Subpacket Hints
An implementation SHOULD put the two mandatory subpackets, creation time and issuer, as the first subpackets in the subpacket list, simply to make it easier for the implementer to find them.
An implementation SHOULD put the two mandatory subpackets, creation time and issuer, as the first subpackets in the subpacket list, simply to make it easier for the implementer to find them.
It is certainly possible for a signature to contain conflicting information in subpackets. For example, a signature may contain multiple copies of a preference or multiple expiration times. In most cases, an implementation SHOULD use the last subpacket in the signature, but MAY use any conflict resolution scheme that makes more sense. Please note that we are intentionally leaving conflict resolution to the implementer; most conflicts are simply syntax errors, and the wishy-washy language here allows a receiver to be generous in what they accept, while putting pressure on a creator to be stingy in what they generate.
It is certainly possible for a signature to contain conflicting information in subpackets. For example, a signature may contain multiple copies of a preference or multiple expiration times. In most cases, an implementation SHOULD use the last subpacket in the signature, but MAY use any conflict resolution scheme that makes more sense. Please note that we are intentionally leaving conflict resolution to the implementer; most conflicts are simply syntax errors, and the wishy-washy language here allows a receiver to be generous in what they accept, while putting pressure on a creator to be stingy in what they generate.
Some apparent conflicts may actually make sense -- for example, suppose a keyholder has an V3 key and a V4 key that share the same RSA key material. Either of these keys can verify a signature created by the other, and it may be reasonable for a signature to contain an issuer subpacket for each key, as a way of explicitly tying those keys to the signature.
Some apparent conflicts may actually make sense -- for example, suppose a keyholder has an V3 key and a V4 key that share the same RSA key material. Either of these keys can verify a signature created by the other, and it may be reasonable for a signature to contain an issuer subpacket for each key, as a way of explicitly tying those keys to the signature.
5.3. Symmetric-Key Encrypted Session-Key Packets (Tag 3)
5.3. Symmetric-Key Encrypted Session-Key Packets (Tag 3)
The Symmetric-Key Encrypted Session Key packet holds the symmetric- key encryption of a session key used to encrypt a message. Zero or more Encrypted Session Key packets and/or Symmetric-Key Encrypted Session Key packets may precede a Symmetrically Encrypted Data Packet that holds an encrypted message. The message is encrypted with a session key, and the session key is itself encrypted and stored in the Encrypted Session Key packet or the Symmetric-Key Encrypted Session Key packet.
The Symmetric-Key Encrypted Session Key packet holds the symmetric- key encryption of a session key used to encrypt a message. Zero or more Encrypted Session Key packets and/or Symmetric-Key Encrypted Session Key packets may precede a Symmetrically Encrypted Data Packet that holds an encrypted message. The message is encrypted with a session key, and the session key is itself encrypted and stored in the Encrypted Session Key packet or the Symmetric-Key Encrypted Session Key packet.
If the Symmetrically Encrypted Data Packet is preceded by one or more Symmetric-Key Encrypted Session Key packets, each specifies a passphrase that may be used to decrypt the message. This allows a
If the Symmetrically Encrypted Data Packet is preceded by one or more Symmetric-Key Encrypted Session Key packets, each specifies a passphrase that may be used to decrypt the message. This allows a
Callas, et. al. Standards Track [Page 32] RFC 2440 OpenPGP Message Format November 1998
Callas, et. al. Standards Track [Page 32] RFC 2440 OpenPGP Message Format November 1998
message to be encrypted to a number of public keys, and also to one or more pass phrases. This packet type is new, and is not generated by PGP 2.x or PGP 5.0.
message to be encrypted to a number of public keys, and also to one or more pass phrases. This packet type is new, and is not generated by PGP 2.x or PGP 5.0.
The body of this packet consists of:
The body of this packet consists of:
- A one-octet version number. The only currently defined version is 4.
- A one-octet version number. The only currently defined version is 4.
- A one-octet number describing the symmetric algorithm used.
- A one-octet number describing the symmetric algorithm used.
- A string-to-key (S2K) specifier, length as defined above.
- A string-to-key (S2K) specifier, length as defined above.
- Optionally, the encrypted session key itself, which is decrypted with the string-to-key object.
- Optionally, the encrypted session key itself, which is decrypted with the string-to-key object.
If the encrypted session key is not present (which can be detected on the basis of packet length and S2K specifier size), then the S2K algorithm applied to the passphrase produces the session key for decrypting the file, using the symmetric cipher algorithm from the Symmetric-Key Encrypted Session Key packet.
If the encrypted session key is not present (which can be detected on the basis of packet length and S2K specifier size), then the S2K algorithm applied to the passphrase produces the session key for decrypting the file, using the symmetric cipher algorithm from the Symmetric-Key Encrypted Session Key packet.
If the encrypted session key is present, the result of applying the S2K algorithm to the passphrase is used to decrypt just that encrypted session key field, using CFB mode with an IV of all zeros. The decryption result consists of a one-octet algorithm identifier that specifies the symmetric-key encryption algorithm used to encrypt the following Symmetrically Encrypted Data Packet, followed by the session key octets themselves.
If the encrypted session key is present, the result of applying the S2K algorithm to the passphrase is used to decrypt just that encrypted session key field, using CFB mode with an IV of all zeros. The decryption result consists of a one-octet algorithm identifier that specifies the symmetric-key encryption algorithm used to encrypt the following Symmetrically Encrypted Data Packet, followed by the session key octets themselves.
Note: because an all-zero IV is used for this decryption, the S2K specifier MUST use a salt value, either a Salted S2K or an Iterated- Salted S2K. The salt value will insure that the decryption key is not repeated even if the passphrase is reused.
Note: because an all-zero IV is used for this decryption, the S2K specifier MUST use a salt value, either a Salted S2K or an Iterated- Salted S2K. The salt value will insure that the decryption key is not repeated even if the passphrase is reused.
5.4. One-Pass Signature Packets (Tag 4)
5.4. One-Pass Signature Packets (Tag 4)
The One-Pass Signature packet precedes the signed data and contains enough information to allow the receiver to begin calculating any hashes needed to verify the signature. It allows the Signature Packet to be placed at the end of the message, so that the signer can compute the entire signed message in one pass.
The One-Pass Signature packet precedes the signed data and contains enough information to allow the receiver to begin calculating any hashes needed to verify the signature. It allows the Signature Packet to be placed at the end of the message, so that the signer can compute the entire signed message in one pass.
A One-Pass Signature does not interoperate with PGP 2.6.x or earlier.
A One-Pass Signature does not interoperate with PGP 2.6.x or earlier.
The body of this packet consists of:
The body of this packet consists of:
Callas, et. al. Standards Track [Page 33] RFC 2440 OpenPGP Message Format November 1998
Callas, et. al. Standards Track [Page 33] RFC 2440 OpenPGP Message Format November 1998
- A one-octet version number. The current version is 3.
- A one-octet version number. The current version is 3.
- A one-octet signature type. Signature types are described in section 5.2.1.
- A one-octet signature type. Signature types are described in section 5.2.1.
- A one-octet number describing the hash algorithm used.
- A one-octet number describing the hash algorithm used.
- A one-octet number describing the public key algorithm used.
- A one-octet number describing the public key algorithm used.
- An eight-octet number holding the key ID of the signing key.
- An eight-octet number holding the key ID of the signing key.
- A one-octet number holding a flag showing whether the signature is nested. A zero value indicates that the next packet is another One-Pass Signature packet that describes another signature to be applied to the same message data.
- A one-octet number holding a flag showing whether the signature is nested. A zero value indicates that the next packet is another One-Pass Signature packet that describes another signature to be applied to the same message data.
Note that if a message contains more than one one-pass signature, then the signature packets bracket the message; that is, the first signature packet after the message corresponds to the last one-pass packet and the final signature packet corresponds to the first one- pass packet.
Note that if a message contains more than one one-pass signature, then the signature packets bracket the message; that is, the first signature packet after the message corresponds to the last one-pass packet and the final signature packet corresponds to the first one- pass packet.
5.5. Key Material Packet
5.5. Key Material Packet
A key material packet contains all the information about a public or private key. There are four variants of this packet type, and two major versions. Consequently, this section is complex.
キー材料パケットは公衆か秘密鍵のすべての情報を含んでいます。 このパケットタイプの4つの異形、および2つの主要なバージョンがあります。 その結果、このセクションは複雑です。
5.5.1. Key Packet Variants
5.5.1. 主要なパケット異形
5.5.1.1. Public Key Packet (Tag 6)
5.5.1.1. 公開鍵パケット(タグ6)
A Public Key packet starts a series of packets that forms an OpenPGP key (sometimes called an OpenPGP certificate).
Public KeyパケットはOpenPGPキー(時々OpenPGP証明書と呼ばれる)を形成する一連のパケットを始めます。
5.5.1.2. Public Subkey Packet (Tag 14)
5.5.1.2. 公共のサブキーパケット(タグ14)
A Public Subkey packet (tag 14) has exactly the same format as a Public Key packet, but denotes a subkey. One or more subkeys may be associated with a top-level key. By convention, the top-level key provides signature services, and the subkeys provide encryption services.
Public Subkeyパケット(タグ14)は、まさにPublic Keyパケットと同じ形式を持っていますが、サブキーを指示します。 1個以上のサブキーがトップレベルキーに関連しているかもしれません。 コンベンションで、トップレベルキーは署名サービスを提供します、そして、サブキーは暗号化サービスを提供します。
Note: in PGP 2.6.x, tag 14 was intended to indicate a comment packet. This tag was selected for reuse because no previous version of PGP ever emitted comment packets but they did properly ignore them. Public Subkey packets are ignored by PGP 2.6.x and do not cause it to fail, providing a limited degree of backward compatibility.
以下に注意してください。 PGP 2.6.xでは、タグ14がコメントパケットを示すことを意図しました。 PGPのどんな旧バージョンも今までに、コメントパケットを放ちませんでしたが、彼らが適切にそれらを無視したので、このタグは再利用のために選択されました。 公共のSubkeyパケットは、PGP 2.6.xによって無視されて、失敗されません、限られた度合いの後方の互換性を提供して。
Callas, et. al. Standards Track [Page 34] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[34ページ]。
5.5.1.3. Secret Key Packet (Tag 5)
5.5.1.3. 秘密鍵パケット(タグ5)
A Secret Key packet contains all the information that is found in a Public Key packet, including the public key material, but also includes the secret key material after all the public key fields.
Secret Keyパケットは、公開鍵の材料を含むPublic Keyパケットで見つけられるすべての情報を含んでいますが、すべての公開鍵分野の後に秘密鍵の材料をまた含んでいます。
5.5.1.4. Secret Subkey Packet (Tag 7)
5.5.1.4. 秘密のサブキーパケット(タグ7)
A Secret Subkey packet (tag 7) is the subkey analog of the Secret Key packet, and has exactly the same format.
Secret Subkeyパケット(タグ7)は、Secret Keyパケットのサブキーアナログであり、まさに同じ形式を持っています。
5.5.2. Public Key Packet Formats
5.5.2. 公開鍵パケット・フォーマット
There are two versions of key-material packets. Version 3 packets were first generated by PGP 2.6. Version 2 packets are identical in format to Version 3 packets, but are generated by PGP 2.5 or before. V2 packets are deprecated and they MUST NOT be generated. PGP 5.0 introduced version 4 packets, with new fields and semantics. PGP 2.6.x will not accept key-material packets with versions greater than 3.
主要な材料パケットの2つのバージョンがあります。 バージョン3パケットは最初に、PGP2.6によって生成されました。 バージョン2パケットは、形式がバージョン3パケットと同じですが、2.5か以前、PGPによって生成されます。 V2パケットは推奨しないです、そして、それらは生成されてはいけません。 PGP5.0は新しい分野と意味論でバージョン4パケットを導入しました。 バージョンが3よりすばらしい状態でPGP 2.6.xは主要な材料パケットを受け入れないでしょう。
OpenPGP implementations SHOULD create keys with version 4 format. An implementation MAY generate a V3 key to ensure interoperability with old software; note, however, that V4 keys correct some security deficiencies in V3 keys. These deficiencies are described below. An implementation MUST NOT create a V3 key with a public key algorithm other than RSA.
OpenPGP実装SHOULDはバージョン4形式でキーを作成します。 実装は古いソフトウェアで相互運用性を確実にするために主要なV3を生成するかもしれません。 しかしながら、V4キーがV3キーのいくつかのセキュリティ欠乏を修正することに注意してください。 これらの欠乏は以下で説明されます。 実装はRSA以外の公開鍵アルゴリズムで主要なV3を作成してはいけません。
A version 3 public key or public subkey packet contains:
バージョン3公開鍵か公共のサブキーパケットが以下を含んでいます。
- A one-octet version number (3).
- 1八重奏のバージョン番号(3)。
- A four-octet number denoting the time that the key was created.
- キーが作成された時間を指示する4八重奏の数。
- A two-octet number denoting the time in days that this key is valid. If this number is zero, then it does not expire.
- 何日もの時にこのキーが有効であることを指示する2八重奏の数。 この数がゼロであるなら、それは期限が切れません。
- A one-octet number denoting the public key algorithm of this key
- このキーの公開鍵アルゴリズムを指示する1八重奏の数
- A series of multi-precision integers comprising the key material:
- 主要な材料を含む一連のマルチ精度整数:
- a multiprecision integer (MPI) of RSA public modulus n;
- RSAの公共の係数nの多倍精度整数(MPI)。
- an MPI of RSA public encryption exponent e.
- RSAの公共の暗号化解説者eのMPI。
Callas, et. al. Standards Track [Page 35] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[35ページ]。
V3 keys SHOULD only be used for backward compatibility because of three weaknesses in them. First, it is relatively easy to construct a V3 key that has the same key ID as any other key because the key ID is simply the low 64 bits of the public modulus. Secondly, because the fingerprint of a V3 key hashes the key material, but not its length, which increases the opportunity for fingerprint collisions. Third, there are minor weaknesses in the MD5 hash algorithm that make developers prefer other algorithms. See below for a fuller discussion of key IDs and fingerprints.
V3はSHOULDを合わせます。それらの3つの弱点のために後方の互換性に単に使用されてください。 まず最初に、主要なIDが単に公共の係数の低64ビットであるのでいかなる他のキーとも同じ主要なIDを持っているV3キーを組み立てるのは比較的簡単です。 V3キーの指紋が主要な材料を論じ尽くすので第二に長さだけでない。(その長さは指紋衝突の機会を増強します)。 3番目に、開発者が他のアルゴリズムを好むMD5ハッシュアルゴリズムによる小さい方の弱点があります。主要なIDと指紋の、よりふくよかな議論に関して以下を見てください。
The version 4 format is similar to the version 3 format except for the absence of a validity period. This has been moved to the signature packet. In addition, fingerprints of version 4 keys are calculated differently from version 3 keys, as described in section "Enhanced Key Formats."
バージョン4形式は有効期間の不在以外のバージョン3形式と同様です。 これは署名パケットに動かされました。 さらに、バージョン4キーの指紋はバージョン3キーと異なって計算されます、「主要な形式を高める」というセクションで説明されるように。
A version 4 packet contains:
バージョン4パケットは以下を含んでいます。
- A one-octet version number (4).
- 1八重奏のバージョン番号(4)。
- A four-octet number denoting the time that the key was created.
- キーが作成された時間を指示する4八重奏の数。
- A one-octet number denoting the public key algorithm of this key
- このキーの公開鍵アルゴリズムを指示する1八重奏の数
- A series of multi-precision integers comprising the key material. This algorithm-specific portion is:
- 主要な材料を含む一連のマルチ精度整数。 このアルゴリズム特定部位は以下の通りです。
Algorithm Specific Fields for RSA public keys:
RSA公開鍵のためのアルゴリズムSpecificフィールズ:
- multiprecision integer (MPI) of RSA public modulus n;
- RSAの公共の係数nの多倍精度整数(MPI)。
- MPI of RSA public encryption exponent e.
- RSAの公共の暗号化解説者eのMPI。
Algorithm Specific Fields for DSA public keys:
DSA公開鍵のためのアルゴリズムSpecificフィールズ:
- MPI of DSA prime p;
- DSA第1pのMPI。
- MPI of DSA group order q (q is a prime divisor of p-1);
- DSA共同注文q(qはp-1の主要な除数です)のMPI。
- MPI of DSA group generator g;
- DSAグループジェネレータgのMPI。
- MPI of DSA public key value y (= g**x where x is secret).
- DSA公開鍵価値y(xが秘密であるg**xと等しいです)のMPI。
Algorithm Specific Fields for Elgamal public keys:
Elgamal公開鍵のためのアルゴリズムSpecificフィールズ:
- MPI of Elgamal prime p;
- Elgamal第1pのMPI。
- MPI of Elgamal group generator g;
- ElgamalグループジェネレータgのMPI。
Callas, et. al. Standards Track [Page 36] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[36ページ]。
- MPI of Elgamal public key value y (= g**x where x is secret).
- Elgamal公開鍵価値y(xが秘密であるg**xと等しいです)のMPI。
5.5.3. Secret Key Packet Formats
5.5.3. 秘密鍵パケット・フォーマット
The Secret Key and Secret Subkey packets contain all the data of the Public Key and Public Subkey packets, with additional algorithm- specific secret key data appended, in encrypted form.
Secret KeyとSecret SubkeyパケットはPublic KeyとPublic Subkeyパケットに関するすべてのデータを含んでいます、追加アルゴリズム特定の秘密鍵データを追加していて、暗号化されたフォームで。
The packet contains:
パケットは以下を含んでいます。
- A Public Key or Public Subkey packet, as described above
- 上で説明されるとしてのPublic KeyかPublic Subkeyパケット
- One octet indicating string-to-key usage conventions. 0 indicates that the secret key data is not encrypted. 255 indicates that a string-to-key specifier is being given. Any other value is a symmetric-key encryption algorithm specifier.
- ストリングから重要への用法コンベンションを示す1つの八重奏。 0 秘密鍵データが暗号化されていないのを示します。 255 ストリングからキーへの特許説明書の作成書が与えられているのを示します。 いかなる他の値も共通鍵暗号アルゴリズム特許説明書の作成書です。
- [Optional] If string-to-key usage octet was 255, a one-octet symmetric encryption algorithm.
- [任意の] ストリングからキーへの用法八重奏が255、1八重奏の左右対称の暗号化アルゴリズムであったなら。
- [Optional] If string-to-key usage octet was 255, a string-to-key specifier. The length of the string-to-key specifier is implied by its type, as described above.
- [任意の] ストリングからキーへの用法八重奏がストリングからキーへの255、特許説明書の作成書であったなら。 ストリングからキーへの特許説明書の作成書の長さは上で説明されるようにタイプによって暗示されます。
- [Optional] If secret data is encrypted, eight-octet Initial Vector (IV).
- [任意]の、しかし、秘密のデータは暗号化されて、8八重奏のInitial Vector(IV)です。
- Encrypted multi-precision integers comprising the secret key data. These algorithm-specific fields are as described below.
- 秘密鍵データを包括する暗号化されたマルチ精度整数。 以下で説明されるとしてこれらのアルゴリズム特有の分野があります。
- Two-octet checksum of the plaintext of the algorithm-specific portion (sum of all octets, mod 65536).
- アルゴリズム特定部位(すべての八重奏の合計、モッズ風の65536)の平文の2八重奏のチェックサム。
Algorithm Specific Fields for RSA secret keys:
RSA秘密鍵のためのアルゴリズムSpecificフィールズ:
- multiprecision integer (MPI) of RSA secret exponent d.
- RSAの秘密の解説者dの多倍精度整数(MPI)。
- MPI of RSA secret prime value p.
- RSAの秘密の主要な価値pのMPI。
- MPI of RSA secret prime value q (p < q).
- RSAの秘密の主要な価値q(p<q)のMPI。
- MPI of u, the multiplicative inverse of p, mod q.
- uのMPI、pの乗法的な逆、モッズq。
Algorithm Specific Fields for DSA secret keys:
DSA秘密鍵のためのアルゴリズムSpecificフィールズ:
- MPI of DSA secret exponent x.
- DSAの秘密の解説者xのMPI。
Callas, et. al. Standards Track [Page 37] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[37ページ]。
Algorithm Specific Fields for Elgamal secret keys:
Elgamal秘密鍵のためのアルゴリズムSpecificフィールズ:
- MPI of Elgamal secret exponent x.
- Elgamalの秘密の解説者xのMPI。
Secret MPI values can be encrypted using a passphrase. If a string- to-key specifier is given, that describes the algorithm for converting the passphrase to a key, else a simple MD5 hash of the passphrase is used. Implementations SHOULD use a string-to-key specifier; the simple hash is for backward compatibility. The cipher for encrypting the MPIs is specified in the secret key packet.
パスフレーズを使用することで秘密のMPI値を暗号化できます。 キーへのストリング特許説明書の作成書を与えるなら、それはパスフレーズをキーに変換するためのアルゴリズムを説明して、ほかに、パスフレーズの簡単なMD5ハッシュは使用されています。 実装SHOULDはストリングからキーへの特許説明書の作成書を使用します。 簡単なハッシュは後方の互換性のためのものです。 MPIsを暗号化するための暗号は秘密鍵パケットで指定されます。
Encryption/decryption of the secret data is done in CFB mode using the key created from the passphrase and the Initial Vector from the packet. A different mode is used with V3 keys (which are only RSA) than with other key formats. With V3 keys, the MPI bit count prefix (i.e., the first two octets) is not encrypted. Only the MPI non- prefix data is encrypted. Furthermore, the CFB state is resynchronized at the beginning of each new MPI value, so that the CFB block boundary is aligned with the start of the MPI data.
パスフレーズとInitial Vectorからパケットから作成されたキーを使用しながら、CFBモードで機密データの暗号化/復号化をします。 他の主要な形式と異なったモードはV3キー(RSAにすぎない)と共に使用されます。 V3キーで、MPIビットカウント接頭語(すなわち、最初の2つの八重奏)は暗号化されていません。 MPIの非接頭語のデータだけが暗号化されています。 その上、CFB状態はそれぞれの新しいMPI価値の始めに再連動します、CFBブロック境界がMPIデータの始まりに並べられるように。
With V4 keys, a simpler method is used. All secret MPI values are encrypted in CFB mode, including the MPI bitcount prefix.
V4キーで、より簡単なメソッドは使用されています。 すべての秘密のMPI値がMPI bitcount接頭語を含むCFBモードで暗号化されます。
The 16-bit checksum that follows the algorithm-specific portion is the algebraic sum, mod 65536, of the plaintext of all the algorithm- specific octets (including MPI prefix and data). With V3 keys, the checksum is stored in the clear. With V4 keys, the checksum is encrypted like the algorithm-specific data. This value is used to check that the passphrase was correct.
アルゴリズム特定部位に続く16ビットのチェックサムは代数和、すべてのアルゴリズムの特定の八重奏の65536のモッズ風の平文(MPI接頭語とデータを含んでいて)です。 V3キーで、チェックサムは明確に保存されます。 V4キーで、チェックサムはアルゴリズム特有のデータのように暗号化されます。 この値は、パスフレーズが正しかったのをチェックするのに使用されます。
5.6. Compressed Data Packet (Tag 8)
5.6. 圧縮されたデータ・パケット(タグ8)
The Compressed Data packet contains compressed data. Typically, this packet is found as the contents of an encrypted packet, or following a Signature or One-Pass Signature packet, and contains literal data packets.
Compressed Dataパケットは圧縮されたデータを含んでいます。 このパケットは、通常、暗号化されたパケットのコンテンツとして見つけられるか、またはSignatureかOne-パスSignatureパケットに続いていて、文字通りのデータ・パケットを含んでいます。
The body of this packet consists of:
このパケットのボディーは以下から成ります。
- One octet that gives the algorithm used to compress the packet.
- アルゴリズムを与える1つの八重奏が以前はよくパケットを圧縮していました。
- The remainder of the packet is compressed data.
- パケットの残りは圧縮されたデータです。
A Compressed Data Packet's body contains an block that compresses some set of packets. See section "Packet Composition" for details on how messages are formed.
Compressed Data Packetのボディーは何らかのセットのパケットを圧縮するブロックを含みます。 メッセージがどう形成されるかに関する詳細のための「パケット構成」というセクションを見てください。
Callas, et. al. Standards Track [Page 38] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[38ページ]。
ZIP-compressed packets are compressed with raw RFC 1951 DEFLATE blocks. Note that PGP V2.6 uses 13 bits of compression. If an implementation uses more bits of compression, PGP V2.6 cannot decompress it.
ZIPによって圧縮されたパケットは生のRFCと共に1951DEFLATEブロック圧縮されます。 PGP V2.6が圧縮の13ビットを使用することに注意してください。 実装が圧縮の、より多くのビットを使用するなら、PGP V2.6はそれを減圧できません。
ZLIB-compressed packets are compressed with RFC 1950 ZLIB-style blocks.
ZLIBによって圧縮されたパケットはRFCと共に1950ZLIB-スタイルブロック圧縮されます。
5.7. Symmetrically Encrypted Data Packet (Tag 9)
5.7. 対称的に暗号化されたデータ・パケット(タグ9)
The Symmetrically Encrypted Data packet contains data encrypted with a symmetric-key algorithm. When it has been decrypted, it will typically contain other packets (often literal data packets or compressed data packets).
Symmetrically Encrypted Dataパケットは対称鍵アルゴリズムで暗号化されたデータを含んでいます。 解読されたとき、それは他のパケット(しばしば文字通りのデータ・パケットか圧縮されたデータ・パケット)を通常含むでしょう。
The body of this packet consists of:
このパケットのボディーは以下から成ります。
- Encrypted data, the output of the selected symmetric-key cipher operating in PGP's variant of Cipher Feedback (CFB) mode.
- 暗号化されたデータ、PGPのCipher Feedback(CFB)モードの異形での選択された対称鍵暗号作動の出力。
The symmetric cipher used may be specified in an Public-Key or Symmetric-Key Encrypted Session Key packet that precedes the Symmetrically Encrypted Data Packet. In that case, the cipher algorithm octet is prefixed to the session key before it is encrypted. If no packets of these types precede the encrypted data, the IDEA algorithm is used with the session key calculated as the MD5 hash of the passphrase.
使用される左右対称の暗号はSymmetrically Encrypted Data Packetに先行するPublic主要であるかSymmetric主要なEncrypted Session Keyパケットで指定されるかもしれません。 その場合、それが暗号化されている前に暗号アルゴリズム八重奏はセッションキーへ前に置かれています。 これらのタイプのどんなパケットも暗号化されたデータに先行しないなら、IDEAアルゴリズムはパスフレーズのMD5ハッシュとして計算されるセッションキーと共に使用されます。
The data is encrypted in CFB mode, with a CFB shift size equal to the cipher's block size. The Initial Vector (IV) is specified as all zeros. Instead of using an IV, OpenPGP prefixes a 10-octet string to the data before it is encrypted. The first eight octets are random, and the 9th and 10th octets are copies of the 7th and 8th octets, respectively. After encrypting the first 10 octets, the CFB state is resynchronized if the cipher block size is 8 octets or less. The last 8 octets of ciphertext are passed through the cipher and the block boundary is reset.
データは暗号のブロック・サイズと等しいCFBシフトサイズでCFBモードで暗号化されます。 Initial Vector(IV)はすべてのゼロとして指定されます。 IVを使用することの代わりに、それが暗号化されている前にOpenPGPは10八重奏のストリングをデータへ前に置きます。 最初の8つの八重奏が無作為です、そして、9番目と10番目の八重奏はそれぞれ7番目と8番目の八重奏のコピーです。 最初の10の八重奏を暗号化した後に、CFB状態は暗号ブロック・サイズが8つ以下の八重奏であるなら再連動します。 暗号文のベスト8八重奏は暗号を通り抜けます、そして、ブロック境界はリセットされます。
The repetition of 16 bits in the 80 bits of random data prefixed to the message allows the receiver to immediately check whether the session key is incorrect.
メッセージへ前に置かれた80ビットの無作為のデータにおける、16ビットの反復で、受信機は、すぐに、セッションキーが不正確であるかどうかチェックできます。
5.8. Marker Packet (Obsolete Literal Packet) (Tag 10)
5.8. マーカーパケット(時代遅れの文字通りのパケット)(タグ10)
An experimental version of PGP used this packet as the Literal packet, but no released version of PGP generated Literal packets with this tag. With PGP 5.x, this packet has been re-assigned and is reserved for use as the Marker packet.
Literalパケットが生成しますが、PGPのどんなリリースされたバージョンもこのタグでLiteralにパケットを生成しなかったとき、PGPの実験バージョンはこのパケットを使用しました。 このパケットは、PGP 5.xと共に、再選任されて、使用のためにMarkerパケットとして予約されます。
Callas, et. al. Standards Track [Page 39] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[39ページ]。
The body of this packet consists of:
このパケットのボディーは以下から成ります。
- The three octets 0x50, 0x47, 0x50 (which spell "PGP" in UTF-8).
- 3つの八重奏0×50、0×47、0x50(UTF-8のどのスペル"PGP")。
Such a packet MUST be ignored when received. It may be placed at the beginning of a message that uses features not available in PGP 2.6.x in order to cause that version to report that newer software is necessary to process the message.
受け取ると、そのようなパケットを無視しなければなりません。 それはそのバージョンが、より新しいソフトウェアがメッセージを処理するのに必要であると報告することを引き起こすのにPGP 2.6.xで利用可能でない特徴を使用するメッセージの始めに置かれるかもしれません。
5.9. Literal Data Packet (Tag 11)
5.9. 文字通りのデータ・パケット(タグ11)
A Literal Data packet contains the body of a message; data that is not to be further interpreted.
Literal Dataパケットはメッセージのボディーを含んでいます。 さらに解釈してはいけないデータ。
The body of this packet consists of:
このパケットのボディーは以下から成ります。
- A one-octet field that describes how the data is formatted.
- データがどうフォーマットされるかを説明する1八重奏の分野。
If it is a 'b' (0x62), then the literal packet contains binary data. If it is a 't' (0x74), then it contains text data, and thus may need line ends converted to local form, or other text-mode changes. RFC 1991 also defined a value of 'l' as a 'local' mode for machine-local conversions. This use is now deprecated.
それが'b'(0×62)であるなら、文字通りのパケットはバイナリ・データを含んでいます。 ''(0×74)でないなら、それは、テキストデータを含んでいて、その結果、地方で変えられる列の最後尾のフォーム、または他のテキストモード変化を必要とするかもしれません。 また、RFC1991はマシン地方の変換のための'地方'のモードと'l'の値を定義しました。 この使用は現在、推奨しないです。
- File name as a string (one-octet length, followed by file name), if the encrypted data should be saved as a file.
- ストリング(ファイル名があとに続いた1八重奏の長さ)として名前をファイルしてください、暗号化されたデータがファイルとして保存されるなら。
If the special name "_CONSOLE" is used, the message is considered to be "for your eyes only". This advises that the message data is unusually sensitive, and the receiving program should process it more carefully, perhaps avoiding storing the received data to disk, for example.
「」 コンソールという特別な名前_です」、使用されていて、メッセージが「あなたの目専用」のためにあると考えられます。 これは、メッセージデータが異常に機密であり、受信プログラムが、より慎重にそれを処理するはずであると忠告します、恐らく例えば、ディスクとして受信データを保存するのを避けて
- A four-octet number that indicates the modification date of the file, or the creation time of the packet, or a zero that indicates the present time.
- ファイルの変更日付、またはパケットの作成時間を示す4八重奏の数、または現在を示すゼロ。
- The remainder of the packet is literal data.
- パケットの残りは文字通りのデータです。
Text data is stored with <CR><LF> text endings (i.e. network-normal line endings). These should be converted to native line endings by the receiving software.
テキストデータは<CR><LF>テキスト結末(すなわち、ネットワーク正常な系列結末)で保存されます。 これらは受信ソフトウェアによって自然な系列結末に変換されるべきです。
5.10. Trust Packet (Tag 12)
5.10. 信頼パケット(タグ12)
The Trust packet is used only within keyrings and is not normally exported. Trust packets contain data that record the user's specifications of which key holders are trustworthy introducers,
Trustパケットは、keyringsだけの中で使用されて、通常、エクスポートされません。 信頼パケットはユーザのそれの主要な所有者の仕様が信頼できる誘導子であるそんなに記録的なデータを含んでいます。
Callas, et. al. Standards Track [Page 40] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[40ページ]。
along with other information that implementing software uses for trust information.
ソフトウェアを実装すると情報が信頼に使用されるという他の情報と共に。
Trust packets SHOULD NOT be emitted to output streams that are transferred to other users, and they SHOULD be ignored on any input other than local keyring files.
パケットSHOULD NOTが他のユーザに移される出力ストリームに放たれていると信じてください、彼ら、SHOULD、ローカルのkeyringファイル以外のあらゆる入力のときに、無視されてください。
5.11. User ID Packet (Tag 13)
5.11. ユーザIDパケット(タグ13)
A User ID packet consists of data that is intended to represent the name and email address of the key holder. By convention, it includes an RFC 822 mail name, but there are no restrictions on its content. The packet length in the header specifies the length of the user id. If it is text, it is encoded in UTF-8.
User IDパケットは主要な所有者の名前とEメールアドレスを表すことを意図するデータから成ります。 コンベンションで、RFC822メール名を含んでいますが、制限が全く内容にありません。 ヘッダーのパケット長はユーザイドの長さを指定します。 テキストであるなら、それはUTF-8でコード化されます。
6. Radix-64 Conversions
6. 基数-64の変換
As stated in the introduction, OpenPGP's underlying native representation for objects is a stream of arbitrary octets, and some systems desire these objects to be immune to damage caused by character set translation, data conversions, etc.
序論、OpenPGPがオブジェクトの固有の表現の基礎となる際に述べられているのが、任意の八重奏のストリームであり、いくつかのシステムが、これらのオブジェクトは文字集合翻訳でもたらされた損害に免疫があることを望んでいるので、データ変換しますなど。
In principle, any printable encoding scheme that met the requirements of the unsafe channel would suffice, since it would not change the underlying binary bit streams of the native OpenPGP data structures. The OpenPGP standard specifies one such printable encoding scheme to ensure interoperability.
原則として、危険なチャンネルに関する必要条件を満たしたどんな印刷可能なコード化体系も十分でしょう、固有のOpenPGPデータ構造の基本的な2進のビットストリームを変えないでしょう、したがって。 OpenPGP規格は、相互運用性を確実にするためにそのような体系の印刷可能なコード化1つを指定します。
OpenPGP's Radix-64 encoding is composed of two parts: a base64 encoding of the binary data, and a checksum. The base64 encoding is identical to the MIME base64 content-transfer-encoding [RFC2231, Section 6.8]. An OpenPGP implementation MAY use ASCII Armor to protect the raw binary data.
OpenPGPのRadix-64コード化は2つの部品で構成されます: バイナリ・データ、およびチェックサムをコード化するbase64。 base64コード化はMIMEのbase64の満足している転送コード化[RFC2231、セクション6.8]と同じです。 OpenPGP実装は、生のバイナリ・データを保護するのにASCII Armorを使用するかもしれません。
The checksum is a 24-bit CRC converted to four characters of radix-64 encoding by the same MIME base64 transformation, preceded by an equals sign (=). The CRC is computed by using the generator 0x864CFB and an initialization of 0xB704CE. The accumulation is done on the data before it is converted to radix-64, rather than on the converted data. A sample implementation of this algorithm is in the next section.
チェックサムは等号(=)が先行した同じMIMEでbase64をコード化する基数-64変換の4つのキャラクタに変換された24ビットのCRCです。 CRCは、ジェネレータ0x864CFBと0xB704CEの初期化を使用することによって、計算されます。 データでは、変換されたデータに関してというよりむしろ基数-64にそれを変換する前に蓄積します。 このアルゴリズムのサンプル実装が次のセクションにあります。
The checksum with its leading equal sign MAY appear on the first line after the Base64 encoded data.
Base64がデータを暗号化した後に主な等号があるチェックサムは最初の系列に現れるかもしれません。
Rationale for CRC-24: The size of 24 bits fits evenly into printable base64. The nonzero initialization can detect more errors than a zero initialization.
CRC-24のための原理: 24ビットのサイズは均等に印刷可能なbase64に収まります。 非零初期化はaゼロ初期化より多くの誤りを検出できます。
Callas, et. al. Standards Track [Page 41] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[41ページ]。
6.1. An Implementation of the CRC-24 in "C"
6.1. 「C」のCRC-24の実装
#define CRC24_INIT 0xb704ceL #define CRC24_POLY 0x1864cfbL
#定義、CRC24_INIT 0xb704ceL#はCRC24_POLY 0x1864cfbLを定義します。
typedef long crc24; crc24 crc_octets(unsigned char *octets, size_t len) { crc24 crc = CRC24_INIT; int i;
typedefの長いcrc24。 crc24 crc_八重奏(未署名の炭*八重奏、サイズ_t len)、crc24 crcはCRC24_INITと等しいです; int i
while (len--) { crc ^= (*octets++) << 16; for (i = 0; i < 8; i++) { crc <<= 1; if (crc & 0x1000000) crc ^= CRC24_POLY; } } return crc & 0xffffffL; }
(len--、)、(iは0と等しいです; i<8; i++) crc<<=1(crcと0×1000000)が^=CRC24_POLYをcrcするなら}というリターンcrcと0xffffffLのためのcrc^=(*八重奏++)<<16 }
6.2. Forming ASCII Armor
6.2. ASCIIよろいかぶとを形成します。
When OpenPGP encodes data into ASCII Armor, it puts specific headers around the data, so OpenPGP can reconstruct the data later. OpenPGP informs the user what kind of data is encoded in the ASCII armor through the use of the headers.
OpenPGPがASCII Armorにデータを暗号化するとき、データの周りの特定のヘッダーを置くので、OpenPGPは後でデータを再建できます。 OpenPGPは、どういうデータがASCIIよろいかぶとでヘッダーの使用でコード化されるかをユーザに知らせます。
Concatenating the following data creates ASCII Armor:
以下のデータを連結すると、ASCII Armorは作成されます:
- An Armor Header Line, appropriate for the type of data
- データのタイプに、適切なArmor Header線
- Armor Headers
- よろいかぶとヘッダー
- A blank (zero-length, or containing only whitespace) line
- 空白(ゼロ・レングス、または空白だけを含む)の系列
- The ASCII-Armored data
- ASCII武具のデータ
- An Armor Checksum
- よろいかぶとチェックサム
- The Armor Tail, which depends on the Armor Header Line.
- Armor Tail。(そのArmor TailはArmor Header線に依存します)。
An Armor Header Line consists of the appropriate header line text surrounded by five (5) dashes ('-', 0x2D) on either side of the header line text. The header line text is chosen based upon the type of data that is being encoded in Armor, and how it is being encoded. Header line texts include the following strings:
Armor Header線は5(5)ダッシュ('--'、0x2D)でヘッダー系列テキストのどちらの側でも囲まれた適切なヘッダー系列テキストから成ります。 ヘッダー系列テキストはArmorでコード化されているデータと、それがどうコード化されるかに関するタイプに基づいた状態で選ばれています。 ヘッダー系列テキストは以下のストリングを含んでいます:
Callas, et. al. Standards Track [Page 42] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[42ページ]。
BEGIN PGP MESSAGE Used for signed, encrypted, or compressed files.
署名しているか、暗号化されたか、圧縮されたファイルのためのBEGIN PGP MESSAGE Used。
BEGIN PGP PUBLIC KEY BLOCK Used for armoring public keys
装甲公開鍵のためのBEGIN PGP PUBLIC KEY BLOCK Used
BEGIN PGP PRIVATE KEY BLOCK Used for armoring private keys
装甲秘密鍵のためのBEGIN PGP PRIVATE KEY BLOCK Used
BEGIN PGP MESSAGE, PART X/Y Used for multi-part messages, where the armor is split amongst Y parts, and this is the Xth part out of Y.
BEGIN PGP MESSAGE、複合メッセージのためのPART X/Y Used(よろいかぶとはYの部品の中で分けられて、これはXthである)はYから離れています。
BEGIN PGP MESSAGE, PART X Used for multi-part messages, where this is the Xth part of an unspecified number of parts. Requires the MESSAGE-ID Armor Header to be used.
BEGIN PGP MESSAGE、複合メッセージのためのPART X Used。そこでは、これが不特定の数の一部分のXth部分です。 MESSAGE-ID Armor Headerが使用されるのが必要です。
BEGIN PGP SIGNATURE Used for detached signatures, OpenPGP/MIME signatures, and natures following clearsigned messages. Note that PGP 2.x s BEGIN PGP MESSAGE for detached signatures.
離れている署名、OpenPGP/MIME署名、およびclearsignedメッセージに従う自然のためのBEGIN PGP SIGNATURE Used。 離れている署名によってそのPGP 2.x s BEGIN PGP MESSAGEに注意してください。
The Armor Headers are pairs of strings that can give the user or the receiving OpenPGP implementation some information about how to decode or use the message. The Armor Headers are a part of the armor, not a part of the message, and hence are not protected by any signatures applied to the message.
Armor Headersはメッセージを解読するか、またはどう使用するかの何らかの情報をユーザか受信OpenPGP実装に教えることができる組のストリングです。 Armor Headersはメッセージの一部ではなく、よろいかぶとの一部であり、したがって、メッセージに適用されたどんな署名でも保護されません。
The format of an Armor Header is that of a key-value pair. A colon (':' 0x38) and a single space (0x20) separate the key and value. OpenPGP should consider improperly formatted Armor Headers to be corruption of the ASCII Armor. Unknown keys should be reported to the user, but OpenPGP should continue to process the message.
Armor Headerの形式は1キー値組のものです。 コロン(':'0×38)とシングルスペース(0×20)はキーと値を切り離します。 OpenPGPは、不適切にフォーマットされたArmor HeadersがASCII Armorの不正であると考えるはずです。 未知のキーはユーザに報告されるべきですが、OpenPGPは、メッセージを処理し続けているはずです。
Currently defined Armor Header Keys are:
現在定義されたArmor Headerキーズは以下の通りです。
- "Version", that states the OpenPGP Version used to encode the message.
- それは、OpenPGPバージョンが、メッセージをコード化するのに「バージョン」と使用したと述べます。
- "Comment", a user-defined comment.
- 「コメント」、ユーザによって定義されたコメント。
- "MessageID", a 32-character string of printable characters. The string must be the same for all parts of a multi-part message that uses the "PART X" Armor Header. MessageID strings should be
- "MessageID"、印刷可能なキャラクタの32文字列。 「部分X」よろいかぶとヘッダーを使用する複合メッセージのすべての部分に、ストリングは同じであるに違いありません。 MessageIDストリングはそうであるべきです。
Callas, et. al. Standards Track [Page 43] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[43ページ]。
unique enough that the recipient of the mail can associate all the parts of a message with each other. A good checksum or cryptographic hash function is sufficient.
メールの受取人がメッセージのすべての部分を互いに関連づけることができるくらいユニークです。 良いチェックサムか暗号のハッシュ関数が十分です。
- "Hash", a comma-separated list of hash algorithms used in this message. This is used only in clear-signed messages.
- ハッシュアルゴリズムのコンマで切り離されたリストは、このメッセージで「ハッシュ」と使用しました。 これははっきりと署名しているメッセージだけで使用されます。
- "Charset", a description of the character set that the plaintext is in. Please note that OpenPGP defines text to be in UTF-8 by default. An implementation will get best results by translating into and out of UTF-8. However, there are many instances where this is easier said than done. Also, there are communities of users who have no need for UTF-8 because they are all happy with a character set like ISO Latin-5 or a Japanese character set. In such instances, an implementation MAY override the UTF-8 default by using this header key. An implementation MAY implement this key and any translations it cares to; an implementation MAY ignore it and assume all text is UTF-8.
- "Charset"、平文がある文字集合の記述。 OpenPGPは、デフォルトでUTF-8にあるようにテキストを定義します。 実装は、UTF-8の中と、そして、UTF-8から翻訳することによって、最も良い結果を得るでしょう。 しかしながら、多くのインスタンスがこれが言うは易く,行うは難しであるところにあります。 また、彼らが皆、ISOラテン語-5や日本の文字集合のような文字集合に満足であるのでUTF-8の必要性を全く持っていないユーザの共同体があります。 そういった場合には、実装は、このヘッダーキーを使用することによって、UTF-8デフォルトをくつがえすかもしれません。 実装はそれが気にかけるこのキーとどんな翻訳も実装するかもしれません。 実装は、それを無視して、すべてのテキストがUTF-8であると仮定するかもしれません。
The MessageID SHOULD NOT appear unless it is in a multi-part message. If it appears at all, it MUST be computed from the finished (encrypted, signed, etc.) message in a deterministic fashion, rather than contain a purely random value. This is to allow the legitimate recipient to determine that the MessageID cannot serve as a covert means of leaking cryptographic key information.
それが複合メッセージにない場合、MessageID SHOULDは現れません。 少しでも現れるなら、純粋に無作為の値を含んでいるより決定論的なファッションによる終わっている(暗号化されて、署名しているなど)メッセージからそれをむしろ計算しなければなりません。 これは、決定するおおいが意味するようにMessageIDが役立つことができない漏出の正統の受取人に暗号の主要な情報を許容するためのものです。
The Armor Tail Line is composed in the same manner as the Armor Header Line, except the string "BEGIN" is replaced by the string "END."
Armor Header線と同じ方法でArmor Tail線を構成して、ストリングを除いて、ストリング「終わり」までに「始まってください」を取り替えます。
6.3. Encoding Binary in Radix-64
6.3. 基数-64におけるバイナリーをコード化します。
The encoding process represents 24-bit groups of input bits as output strings of 4 encoded characters. Proceeding from left to right, a 24-bit input group is formed by concatenating three 8-bit input groups. These 24 bits are then treated as four concatenated 6-bit groups, each of which is translated into a single digit in the Radix-64 alphabet. When encoding a bit stream with the Radix-64 encoding, the bit stream must be presumed to be ordered with the most-significant-bit first. That is, the first bit in the stream will be the high-order bit in the first 8-bit octet, and the eighth bit will be the low-order bit in the first 8-bit octet, and so on.
4の出力ストリングがキャラクタをコード化したので、コード化プロセスは入力ビットの24ビットのグループを代表します。 左から右まで続いて、24ビットの入力グループは、3つの8ビットの入力グループを連結することによって、結成されます。 そして、4が6ビットのグループ(それのそれぞれがRadix-64アルファベットの一桁に翻訳される)を連結したので、これらの24ビットは扱われます。 Radix-64コード化でストリームを少しコード化するとき、ビットストリームは最初に、あえて最も重要なビットで命令されなければなりません。 すなわち、ストリームにおける最初のビットは最初の8ビット・オクテットで高位のビットになるでしょう、そして、8番目のビットは最初の8ビット・オクテット、などに下位のビットになるでしょう。
Callas, et. al. Standards Track [Page 44] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[44ページ]。
+--first octet--+-second octet--+--third octet--+ |7 6 5 4 3 2 1 0|7 6 5 4 3 2 1 0|7 6 5 4 3 2 1 0| +-----------+---+-------+-------+---+-----------+ |5 4 3 2 1 0|5 4 3 2 1 0|5 4 3 2 1 0|5 4 3 2 1 0| +--1.index--+--2.index--+--3.index--+--4.index--+
+--最初の八重奏--+-第2八重奏--+--3番目の八重奏--+|7 6 5 4 3 2 1 0|7 6 5 4 3 2 1 0|7 6 5 4 3 2 1 0| +-----------+---+-------+-------+---+-----------+ |5 4 3 2 1 0|5 4 3 2 1 0|5 4 3 2 1 0|5 4 3 2 1 0| +--1.index--+--2.index--+--3.index--+--4.index--+
Each 6-bit group is used as an index into an array of 64 printable characters from the table below. The character referenced by the index is placed in the output string.
それぞれの6ビットのグループはインデックスとして以下のテーブルから64の印刷可能なキャラクタの配列に使用されます。 インデックスによって参照をつけられるキャラクタは出力ストリングに置かれます。
Value Encoding Value Encoding Value Encoding Value Encoding 0 A 17 R 34 i 51 z 1 B 18 S 35 j 52 0 2 C 19 T 36 k 53 1 3 D 20 U 37 l 54 2 4 E 21 V 38 m 55 3 5 F 22 W 39 n 56 4 6 G 23 X 40 o 57 5 7 H 24 Y 41 p 58 6 8 I 25 Z 42 q 59 7 9 J 26 a 43 r 60 8 10 K 27 b 44 s 61 9 11 L 28 c 45 t 62 + 12 M 29 d 46 u 63 / 13 N 30 e 47 v 14 O 31 f 48 w (pad) = 15 P 32 g 49 x 16 Q 33 h 50 y
評価..18秒間..C..44秒間..パッド..33時間
The encoded output stream must be represented in lines of no more than 76 characters each.
それぞれ76未満のキャラクタの系列でコード化された出力ストリームを表さなければなりません。
Special processing is performed if fewer than 24 bits are available at the end of the data being encoded. There are three possibilities:
24ビット未満がコード化されるデータの終わりで有効であるなら、特別な処理は実行されます。 3つの可能性があります:
1. The last data group has 24 bits (3 octets). No special processing is needed.
1. 最後のデータグループには、24ビット(3つの八重奏)があります。 どんな特別な処理も必要ではありません。
2. The last data group has 16 bits (2 octets). The first two 6-bit groups are processed as above. The third (incomplete) data group has two zero-value bits added to it, and is processed as above. A pad character (=) is added to the output.
2. 最後のデータグループには、16ビット(2つの八重奏)があります。 最初の2つの6ビットのグループが同じくらい上に処理されます。 3番目の(不完全)のデータグループは、2無価値のビットをそれに加えさせて、同じくらい上に処理されます。 パッド文字(=)は出力に加えられます。
3. The last data group has 8 bits (1 octet). The first 6-bit group is processed as above. The second (incomplete) data group has four zero-value bits added to it, and is processed as above. Two pad characters (=) are added to the output.
3. 最後のデータグループには、8ビット(1つの八重奏)があります。 最初の6ビットのグループは同じくらい上に処理されます。 2番目の(不完全)のデータグループは、4無価値のビットをそれに加えさせて、同じくらい上に処理されます。 2つのパッド文字(=)が出力に加えられます。
Callas, et. al. Standards Track [Page 45] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[45ページ]。
6.4. Decoding Radix-64
6.4. 基数-64を解読します。
Any characters outside of the base64 alphabet are ignored in Radix-64 data. Decoding software must ignore all line breaks or other characters not found in the table above.
base64アルファベットにおける外部のどんなキャラクタもRadix-64データで無視されます。 ソフトウェアを解読すると、上のテーブルで見つけられなかったすべてのラインブレイクか他のキャラクタが無視されなければなりません。
In Radix-64 data, characters other than those in the table, line breaks, and other white space probably indicate a transmission error, about which a warning message or even a message rejection might be appropriate under some circumstances.
Radix-64データでは、テーブルのそれら以外のキャラクタ、ラインブレイク、および他の余白はたぶん伝送エラーを示します。(警告メッセージかメッセージ拒絶さえそれに関していくつかの状況で適切であるかもしれません)。
Because it is used only for padding at the end of the data, the occurrence of any "=" characters may be taken as evidence that the end of the data has been reached (without truncation in transit). No such assurance is possible, however, when the number of octets transmitted was a multiple of three and no "=" characters are present.
それがデータの終わりでそっと歩くのにだけ使用されるので、どんな「=」キャラクタの発生もデータの端に達したという(トランジットにおけるトランケーションなしで)証拠としてみなされるかもしれません。 そのようなどんな保証も可能でない、しかしながら、八重奏の数が3が倍数があって、いいえと伝えたとき、「=」キャラクタは出席しています。
6.5. Examples of Radix-64
6.5. 基数-64に関する例
Input data: 0x14fb9c03d97e Hex: 1 4 f b 9 c | 0 3 d 9 7 e 8-bit: 00010100 11111011 10011100 | 00000011 11011001 11111110 6-bit: 000101 001111 101110 011100 | 000000 111101 100111 111110 Decimal: 5 15 46 28 0 61 37 62 Output: F P u c A 9 l +
データを入力してください: 0x14fb9c03d97e十六進法: 1 4、f b9c| 0 3、d eの9 7 8ビット: 00010100 11111011 10011100 | 00000011 11011001 11111110 6ビット: 000101 001111 101110 011100 | 000000 111101 100111 111110小数: 5、15 46 28、0 61 37 62出力: F P u c A9l+
Input data: 0x14fb9c03d9 Hex: 1 4 f b 9 c | 0 3 d 9 8-bit: 00010100 11111011 10011100 | 00000011 11011001 pad with 00 6-bit: 000101 001111 101110 011100 | 000000 111101 100100 Decimal: 5 15 46 28 0 61 36 pad with = Output: F P u c A 9 k =
データを入力してください: 0x14fb9c03d9十六進法: 1 4、f b9c| 0 3、d9 8ビット: 00010100 11111011 10011100 | 00000011 11011001は00 6ビットでそっと歩きます: 000101 001111 101110 011100 | 000000 111101 100100小数: 5、15 46 28、0 61 36は=出力でそっと歩きます: F P u c A9k=
Input data: 0x14fb9c03 Hex: 1 4 f b 9 c | 0 3 8-bit: 00010100 11111011 10011100 | 00000011 pad with 0000 6-bit: 000101 001111 101110 011100 | 000000 110000 Decimal: 5 15 46 28 0 48 pad with = = Output: F P u c A w = =
データを入力してください: 0x14fb9c03十六進法: 1 4、f b9c| 0 3 8ビット: 00010100 11111011 10011100 | 00000011 0000 6ビットで、そっと歩いてください: 000101 001111 101110 011100 | 000000 110000小数: 5 =がある15 46 28 0 48パッドは出力と等しいです: F P u c A wは=と等しいです。
Callas, et. al. Standards Track [Page 46] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[46ページ]。
6.6. Example of an ASCII Armored Message
6.6. ASCIIの武具のメッセージに関する例
-----BEGIN PGP MESSAGE----- Version: OpenPrivacy 0.99
-----PGPメッセージを始めてください。----- バージョン: OpenPrivacy0.99
yDgBO22WxBHv7O8X7O/jygAEzol56iUKiXmV+XmpCtmpqQUKiQrFqclFqUDBovzS vBSFjNSiVHsuAA== =njUN -----END PGP MESSAGE-----
yDgBO22WxBHv7O8X7O/jygAEzol56iUKiXmV+XmpCtmpqQUKiQrFqclFqUDBovzS vBSFjNSiVHsuAA== =njUN-----終わりのPGPメッセージ-----
Note that this example is indented by two spaces.
この例が2つの空間によって字下がりにされることに注意してください。
7. Cleartext signature framework
7. Cleartext署名フレームワーク
It is desirable to sign a textual octet stream without ASCII armoring the stream itself, so the signed text is still readable without special software. In order to bind a signature to such a cleartext, this framework is used. (Note that RFC 2015 defines another way to clear sign messages for environments that support MIME.)
署名しているテキストが特別なソフトウェアなしでまだ読み込み可能であることで、ASCII装甲のない原文の八重奏ストリームがストリーム自体であると署名するのは望ましいです。 そのようなcleartextに署名を縛るために、このフレームワークは使用されています。 (RFC2015がMIMEをサポートする環境へのサインメッセージをクリアする別の方法を定義することに注意してください。)
The cleartext signed message consists of:
メッセージであると署名されるcleartextは以下から成ります。
- The cleartext header '-----BEGIN PGP SIGNED MESSAGE-----' on a single line,
- 'cleartextヘッダー'-----メッセージであると署名されるPGPを始めてください。-----'シングルでは、立ち並んでください'
- One or more "Hash" Armor Headers,
- ものか以上がArmor Headersを「論じ尽くします」。
- Exactly one empty line not included into the message digest,
- まさにメッセージダイジェストに含められなかった、1つの空の系列
- The dash-escaped cleartext that is included into the message digest,
- メッセージダイジェストに含まれている、ダッシュで逃げられたcleartext
- The ASCII armored signature(s) including the '-----BEGIN PGP SIGNATURE-----' Armor Header and Armor Tail Lines.
- 'ASCIIの武具の署名が包含する、'-----PGP署名を始めてください。-----'よろいかぶとヘッダーとよろいかぶとは線に尾を付けます'。
If the "Hash" armor header is given, the specified message digest algorithm is used for the signature. If there are no such headers, MD5 is used, an implementation MAY omit them for V2.x compatibility. If more than one message digest is used in the signature, the "Hash" armor header contains a comma-delimited list of used message digests.
「ハッシュ」よろいかぶとヘッダーを与えるなら、署名に指定されたメッセージダイジェストアルゴリズムを使用します。 どれかそのようなヘッダーがなければ、MD5が使用されている、実装はV2.xの互換性のために彼らを省略するかもしれません。 1つ以上のメッセージダイジェストが署名に使用されるなら、「ハッシュ」よろいかぶとヘッダーは中古のメッセージダイジェストのコンマで区切られたリストを含んでいます。
Current message digest names are described below with the algorithm IDs.
現在のメッセージダイジェスト名は以下でアルゴリズムIDで説明されます。
7.1. Dash-Escaped Text
7.1. ダッシュで逃げられたテキスト
The cleartext content of the message must also be dash-escaped.
また、メッセージのcleartext内容もダッシュで逃げなければなりません。
Callas, et. al. Standards Track [Page 47] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[47ページ]。
Dash escaped cleartext is the ordinary cleartext where every line starting with a dash '-' (0x2D) is prefixed by the sequence dash '-' (0x2D) and space ' ' (0x20). This prevents the parser from recognizing armor headers of the cleartext itself. The message digest is computed using the cleartext itself, not the dash escaped form.
ダッシュの逃げられたcleartextは系列ダッシュ'--'(0x2D)によってダッシュ'--'(0x2D)から始まるあらゆる系列が前に置かれている普通のcleartextであり、スペースは''(0×20)'です。 これはcleartext自身のよろいかぶとヘッダーを見分けるのからのパーサを防ぎます。 メッセージダイジェストはcleartext自身を使用することで計算されて、いずれのダッシュもフォームから逃げませんでした。
As with binary signatures on text documents, a cleartext signature is calculated on the text using canonical <CR><LF> line endings. The line ending (i.e. the <CR><LF>) before the '-----BEGIN PGP SIGNATURE-----' line that terminates the signed text is not considered part of the signed text.
テキストドキュメントにおける2進の署名のように、cleartext署名は、テキストで正準な<の><LF>系列CR結末を使用することで計算されます。 '系列が以前(すなわち、<CR><LF>)を終わらせる、'-----PGP署名を始めてください。-----'署名しているテキストを終える系列は署名しているテキストの一部であると考えられません'。
Also, any trailing whitespace (spaces, and tabs, 0x09) at the end of any line is ignored when the cleartext signature is calculated.
また、cleartext署名が計算されるとき、どんな行の終わりのどんな引きずっている空白(空間、およびタブ、0×09)も無視されます。
8. Regular Expressions
8. 正規表現
A regular expression is zero or more branches, separated by '|'. It matches anything that matches one of the branches.
'正規表現はゼロであるか切り離されて、以上は分岐します'|'. それはブランチの1つに合っている何にでも合っています。
A branch is zero or more pieces, concatenated. It matches a match for the first, followed by a match for the second, etc.
連結されて、ブランチは、ゼロか、より多くの断片です。 それはマッチが2番目などのために支えた1番目のためのマッチに合っています。
A piece is an atom possibly followed by '*', '+', or '?'. An atom followed by '*' matches a sequence of 0 or more matches of the atom. An atom followed by '+' matches a sequence of 1 or more matches of the atom. An atom followed by '?' matches a match of the atom, or the null string.
断片はことによると'+ ''*'、'?'によっていうことになられた原子です。 '*'があとに続いた原子は原子の0個以上のマッチの系列に合っています。 原子は'+'1以上の系列が合っている原子のマッチで続きました。 '?'によって続かれた原子は原子のマッチ、またはヌルストリングに合っています。
An atom is a regular expression in parentheses (matching a match for the regular expression), a range (see below), '.' (matching any single character), '^' (matching the null string at the beginning of the input string), '$' (matching the null string at the end of the input string), a '\' followed by a single character (matching that character), or a single character with no other significance (matching that character).
'\'は、単独のキャラクタ(そのキャラクタを合わせる)、または単独のキャラクタで他の意味なしで'原子が括弧(正規表現のためのマッチを合わせる)、範囲(以下を見る)、'. '(どんな単独のキャラクタも合わせます)、'^'(入力ストリングの始めにヌルストリングを合わせる)'の正規表現です、$'(入力ストリングの端にヌルストリングを合わせて)に続きました(そのキャラクタを合わせて)。
A range is a sequence of characters enclosed in '[]'. It normally matches any single character from the sequence. If the sequence begins with '^', it matches any single character not from the rest of the sequence. If two characters in the sequence are separated by '-', this is shorthand for the full list of ASCII characters between them (e.g. '[0-9]' matches any decimal digit). To include a literal ']' in the sequence, make it the first character (following a possible '^'). To include a literal '-', make it the first or last character.
範囲は'[]'に同封されたキャラクタの系列です。 通常、それは系列からどんな単独のキャラクタにも合っています。 系列が'^'で始まるなら、それは系列のいずれの残りからもどんな単独のキャラクタにも合っていません。 系列の2つのキャラクタが'--'によって切り離されるなら、これは彼らの間のASCII文字の完全リストのための速記(例えば、'[0-9]'はどんな10進数字にも合っている)です。 'リテラルを含んでいる'] '系列では、それを最初のキャラクタにしてください(可能な'^'に続いて)。 文字通りの'--'を含むには、それを1番目か最後のキャラクタにしてください。
Callas, et. al. Standards Track [Page 48] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[48ページ]。
9. Constants
9. 定数
This section describes the constants used in OpenPGP.
このセクションはOpenPGPで使用される定数について説明します。
Note that these tables are not exhaustive lists; an implementation MAY implement an algorithm not on these lists.
これらのテーブルが完全なりストでないことに注意してください。 実装はどんなこれらのリストでもアルゴリズムを実装しないかもしれません。
See the section "Notes on Algorithms" below for more discussion of the algorithms.
アルゴリズムの、より多くの議論に関して以下の「アルゴリズムに関する注」というセクションを見てください。
9.1. Public Key Algorithms
9.1. 公開鍵アルゴリズム
ID Algorithm -- --------- 1 - RSA (Encrypt or Sign) 2 - RSA Encrypt-Only 3 - RSA Sign-Only 16 - Elgamal (Encrypt-Only), see [ELGAMAL] 17 - DSA (Digital Signature Standard) 18 - Reserved for Elliptic Curve 19 - Reserved for ECDSA 20 - Elgamal (Encrypt or Sign)
IDアルゴリズム----------- または、1 --RSA、(暗号化、Sign) 2--RSA Encryptだけ3--RSA Signだけ16--、Elgamal、(暗号化、-単に、)、[ELGAMAL]17(DSA(デジタル署名基準)18)がElliptic Curve19(ECDSA20のために、予約されます)のためにElgamalを予約したのを確実にしてください。(暗号化するか、または署名します)
21 - Reserved for Diffie-Hellman (X9.42, as defined for IETF-S/MIME) 100 to 110 - Private/Experimental algorithm.
ディフィー-ヘルマンのために、予約されました。21--、(IETF-S/MIME) 100〜110--個人的であるか実験しているアルゴリズムのために定義されるようなX9.42。
Implementations MUST implement DSA for signatures, and Elgamal for encryption. Implementations SHOULD implement RSA keys. Implementations MAY implement any other algorithm.
実装は、署名のためにDSAを実装して、暗号化のためにElgamalを実装しなければなりません。 実装SHOULDはRSAにキーを実装します。 実装はいかなる他のアルゴリズムも実装するかもしれません。
9.2. Symmetric Key Algorithms
9.2. 対称鍵アルゴリズム
ID Algorithm -- --------- 0 - Plaintext or unencrypted data 1 - IDEA [IDEA] 2 - Triple-DES (DES-EDE, as per spec - 168 bit key derived from 192) 3 - CAST5 (128 bit key, as per RFC 2144) 4 - Blowfish (128 bit key, 16 rounds) [BLOWFISH] 5 - SAFER-SK128 (13 rounds) [SAFER] 6 - Reserved for DES/SK 7 - Reserved for AES with 128-bit key
IDアルゴリズム----------- 0--平文か非暗号化されたデータ1--IDEA[IDEA]2--三重のDES(仕様に従ってDES-EDE--192から引き出された168ビットのキー)3--CAST5(RFC2144に従って主要な128ビット)4--フグ(128はキーに噛み付きました、16ラウンド)[BLOWFISH]5--AESのために128ビットのキーで予約されたSAFER-SK128(13ラウンド)[SAFER]6(DES/SK7のために、予約されます)
Callas, et. al. Standards Track [Page 49] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[49ページ]。
8 - Reserved for AES with 192-bit key 9 - Reserved for AES with 256-bit key 100 to 110 - Private/Experimental algorithm.
8--AESのために、192ビットの主要な9で、予約されました--AESのために、256ビットの主要な100で、110--個人的であるか実験しているアルゴリズムに予約されます。
Implementations MUST implement Triple-DES. Implementations SHOULD implement IDEA and CAST5.Implementations MAY implement any other algorithm.
実装はTriple-DESを実装しなければなりません。 実装SHOULDはIDEAを実装します、そして、CAST5.Implementationsはいかなる他のアルゴリズムも実装するかもしれません。
9.3. Compression Algorithms
9.3. 圧縮アルゴリズム
ID Algorithm -- --------- 0 - Uncompressed 1 - ZIP (RFC 1951) 2 - ZLIB (RFC 1950) 100 to 110 - Private/Experimental algorithm.
IDアルゴリズム----------- 0--解凍された1--郵便番号(RFC1951)2--ZLIB(RFC1950)の100〜110--個人的であるか実験しているアルゴリズム。
Implementations MUST implement uncompressed data. Implementations SHOULD implement ZIP. Implementations MAY implement ZLIB.
実装は解凍されたデータを実装しなければなりません。 実装SHOULDはZIPを実装します。 実装はZLIBを実装するかもしれません。
9.4. Hash Algorithms
9.4. ハッシュアルゴリズム
ID Algorithm Text Name -- --------- ---- ---- 1 - MD5 "MD5" 2 - SHA-1 "SHA1" 3 - RIPE-MD/160 "RIPEMD160" 4 - Reserved for double-width SHA (experimental) 5 - MD2 "MD2" 6 - Reserved for TIGER/192 "TIGER192" 7 - Reserved for HAVAL (5 pass, 160-bit) "HAVAL-5-160" 100 to 110 - Private/Experimental algorithm.
IDアルゴリズム原文名----------- ---- ---- 1 --MD5、「MD5"2--、SHA-1、」 SHA1"3--熟しているMD/160"RIPEMD160"4--ダブル幅のSHAの(実験的)の5のために、予約されます--MD2、「MD2"6(タイガー/192"TIGER192"7のために、予約されます)はHAVAL(5は終わります、160ビットである)のために"HAVAL-5-160"100〜110--個人的であるか実験しているアルゴリズムを予約しました」。
Implementations MUST implement SHA-1. Implementations SHOULD implement MD5.
実装はSHA-1を実装しなければなりません。 実装SHOULDはMD5を実装します。
10. Packet Composition
10. パケット構成
OpenPGP packets are assembled into sequences in order to create messages and to transfer keys. Not all possible packet sequences are meaningful and correct. This describes the rules for how packets should be placed into sequences.
OpenPGPパケットは、メッセージを作成して、キーを移すために系列に組み立てられます。 すべての可能なパケット系列が、どんな重要であって、正しいというわけではありません。 これは、パケットがどう系列に置かれるべきであるかために規則について説明します。
10.1. Transferable Public Keys
10.1. 移転可能な公開鍵
OpenPGP users may transfer public keys. The essential elements of a transferable public key are:
OpenPGPユーザは公開鍵を移すかもしれません。 移転可能な公開鍵の必須元素は以下の通りです。
Callas, et. al. Standards Track [Page 50] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[50ページ]。
- One Public Key packet
- 1つのPublic Keyパケット
- Zero or more revocation signatures
- ゼロか、より多くの取消し署名
- One or more User ID packets
- 1つ以上のUser IDパケット
- After each User ID packet, zero or more signature packets (certifications)
- それぞれのUser IDパケット、ゼロまたは、より多くの署名パケットの後に(証明)
- Zero or more Subkey packets
- ゼロか、より多くのSubkeyパケット
- After each Subkey packet, one signature packet, optionally a revocation.
- 後それぞれのSubkeyパケット、任意にある署名パケット、取消し。
The Public Key packet occurs first. Each of the following User ID packets provides the identity of the owner of this public key. If there are multiple User ID packets, this corresponds to multiple means of identifying the same unique individual user; for example, a user may have more than one email address, and construct a User ID for each one.
Public Keyパケットは最初に、起こります。 それぞれの以下のUser IDパケットはこの公開鍵の所有者のアイデンティティを提供します。 複数のUser IDパケットがあれば、これは同じユニークな個々のユーザを特定する複数の手段に対応しています。 例えば、ユーザは、1つ以上のEメールアドレスを持って、それぞれのためにUser IDを組み立てるかもしれません。
Immediately following each User ID packet, there are zero or more signature packets. Each signature packet is calculated on the immediately preceding User ID packet and the initial Public Key packet. The signature serves to certify the corresponding public key and user ID. In effect, the signer is testifying to his or her belief that this public key belongs to the user identified by this user ID.
すぐにそれぞれのUser IDパケットに続いて、ゼロか、より多くの署名パケットがあります。 それぞれの署名パケットはすぐに前のUser IDパケットと初期のPublic Keyパケットの上で計算されます。 署名は、対応する公開鍵とユーザがIDであることを公認するのに役立ちます。 事実上、署名者はこの公開鍵がこのユーザIDによって特定されたユーザのものであるというその人の信念に証言しています。
After the User ID packets there may be one or more Subkey packets. In general, subkeys are provided in cases where the top-level public key is a signature-only key. However, any V4 key may have subkeys, and the subkeys may be encryption-only keys, signature-only keys, or general-purpose keys.
User IDパケットの後に、1つ以上のSubkeyパケットがあるかもしれません。 一般に、トップレベル公開鍵が署名だけキーであるケースの中にサブキーを提供します。 サブキーは、しかしながら、どんなV4キーにも、サブキーがあるかもしれなくて、暗号化だけキー、署名だけキー、または汎用キーであるかもしれません。
Each Subkey packet must be followed by one Signature packet, which should be a subkey binding signature issued by the top level key.
1つのSignatureパケットがそれぞれのSubkeyパケットのあとに続かなければなりません。(それは、拘束力がある署名がトップ平らなキーで支給したサブキーであるべきです)。
Subkey and Key packets may each be followed by a revocation Signature packet to indicate that the key is revoked. Revocation signatures are only accepted if they are issued by the key itself, or by a key that is authorized to issue revocations via a revocation key subpacket in a self-signature by the top level key.
取消しSignatureパケットはそれぞれサブキーとKeyパケットのあとに続いて、キーが取り消されるのを示すかもしれません。 キー自体、または自己署名における取消し主要な「副-パケット」を通してトップ平らなキーで取消しを発行するのが認可されるキーでそれらを発行する場合にだけ、取消し署名を受け入れます。
Transferable public key packet sequences may be concatenated to allow transferring multiple public keys in one operation.
移転可能な公開鍵パケット系列は、一挙に複数の公開鍵を移すのを許容するために連結されるかもしれません。
Callas, et. al. Standards Track [Page 51] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[51ページ]。
10.2. OpenPGP Messages
10.2. OpenPGPメッセージ
An OpenPGP message is a packet or sequence of packets that corresponds to the following grammatical rules (comma represents sequential composition, and vertical bar separates alternatives):
OpenPGPメッセージは、以下の文法規則に対応するパケットのパケットか系列(コンマは連続した構成を表します、そして、縦棒は代替手段を切り離す)です:
OpenPGP Message :- Encrypted Message | Signed Message | Compressed Message | Literal Message.
OpenPGPメッセージ:-暗号化メッセージ| メッセージであると署名されます。| 圧縮されたメッセージ| 文字通りのメッセージ。
Compressed Message :- Compressed Data Packet.
圧縮されたメッセージ:-はデータ・パケットを圧縮しました。
Literal Message :- Literal Data Packet.
文字通りのメッセージ:-文字通りのデータ・パケット。
ESK :- Public Key Encrypted Session Key Packet | Symmetric-Key Encrypted Session Key Packet.
ESK:-公開鍵はセッションの主要なパケットを暗号化しました。| 対称鍵はセッションの主要なパケットを暗号化しました。
ESK Sequence :- ESK | ESK Sequence, ESK.
ESK系列:-ESK| ESK系列、ESK。
Encrypted Message :- Symmetrically Encrypted Data Packet | ESK Sequence, Symmetrically Encrypted Data Packet.
暗号化メッセージ:-は対称的にデータ・パケットを暗号化しました。| ESK系列、対称的に暗号化されたデータ・パケット。
One-Pass Signed Message :- One-Pass Signature Packet, OpenPGP Message, Corresponding Signature Packet.
1パスが、メッセージの:-の1パスの署名パケット、OpenPGPメッセージが対応する署名パケットであると署名しました。
Signed Message :- Signature Packet, OpenPGP Message | One-Pass Signed Message.
メッセージ:-署名パケット、OpenPGPメッセージであると署名されます。| 1パスがメッセージに署名しました。
In addition, decrypting a Symmetrically Encrypted Data packet and
そしてSymmetrically Encrypted Dataパケットを解読する追加。
decompressing a Compressed Data packet must yield a valid OpenPGP Message.
Compressed Dataパケットを減圧すると、有効なOpenPGP Messageはもたらされなければなりません。
10.3. Detached Signatures
10.3. 離れている署名
Some OpenPGP applications use so-called "detached signatures." For example, a program bundle may contain a file, and with it a second file that is a detached signature of the first file. These detached signatures are simply a signature packet stored separately from the data that they are a signature of.
いくつかのOpenPGPアプリケーションがいわゆる「離れている署名」を使用します。 例えば、プログラムバンドルはファイル、およびそれによる最初のファイルの離れている署名である2番目のファイルを含むかもしれません。 これらの離れている署名が単に別々にデータから保存された署名パケットである、署名
11. Enhanced Key Formats
11. 高められた主要な形式
11.1. Key Structures
11.1. 主要な構造
The format of an OpenPGP V3 key is as follows. Entries in square brackets are optional and ellipses indicate repetition.
OpenPGP V3キーの形式は以下の通りです。 角括弧におけるエントリーは任意です、そして、楕円は反復を示します。
Callas, et. al. Standards Track [Page 52] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[52ページ]。
RSA Public Key [Revocation Self Signature] User ID [Signature ...] [User ID [Signature ...] ...]
RSA公開鍵[取消し自己署名]ユーザID[署名…] [ユーザID[署名…]]
Each signature certifies the RSA public key and the preceding user ID. The RSA public key can have many user IDs and each user ID can have many signatures.
各署名は、RSA公開鍵と前のユーザがIDであることを公認します。 RSA公開鍵は多くのユーザIDを持つことができます、そして、それぞれのユーザIDは多くの署名を持つことができます。
The format of an OpenPGP V4 key that uses two public keys is similar except that the other keys are added to the end as 'subkeys' of the primary key.
他のキーが主キーの'サブキー'として終わりに加えられるのを除いて、2つの公開鍵を使用するOpenPGP V4キーの形式は同様です。
Primary-Key [Revocation Self Signature] [Direct Key Self Signature...] User ID [Signature ...] [User ID [Signature ...] ...] [[Subkey [Binding-Signature-Revocation] Primary-Key-Binding-Signature] ...]
主キー[取消し自己署名][ダイレクト主要な自己署名…] ユーザID[署名…] [ユーザID[署名…]] [[サブキー[拘束力がある署名取消し]のプライマリ主要な拘束力がある署名]]
A subkey always has a single signature after it that is issued using the primary key to tie the two keys together. This binding signature may be in either V3 or V4 format, but V4 is preferred, of course.
サブキーには、それの後の2個のキーを結びつけるのに主キーを使用することで発行される単記署名がいつもあります。 V3かV4形式のどちらかにはこの拘束力がある署名があるかもしれませんが、V4が好まれる、もちろん。
In the above diagram, if the binding signature of a subkey has been revoked, the revoked binding signature may be removed, leaving only one signature.
上のダイヤグラムで、サブキーの拘束力がある署名を取り消したなら、取り消された拘束力がある署名を取り除くかもしれません、1つの署名だけを残して。
In a key that has a main key and subkeys, the primary key MUST be a key capable of signing. The subkeys may be keys of any other type. There may be other constructions of V4 keys, too. For example, there may be a single-key RSA key in V4 format, a DSA primary key with an RSA encryption key, or RSA primary key with an Elgamal subkey, etc.
メインキーとサブキーを持っているキーでは、主キーは署名ができるキーであるに違いありません。 サブキーはいかなる他のタイプのキーであるかもしれません。 V4キーについても他の構造があるかもしれません。 例えば、V4形式で主要な単一に主要なRSA、RSA暗号化キーがあるDSA主キー、またはElgamalサブキーなどがあるRSA主キーがあるかもしれません。
It is also possible to have a signature-only subkey. This permits a primary key that collects certifications (key signatures) but is used only used for certifying subkeys that are used for encryption and signatures.
また、署名だけサブキーを持っているのも可能です。 これは暗号化と署名に使用されるサブキーを公認するのに証明(調号)を集めますが、使用されていただけである状態で使用される主キーを可能にします。
11.2. Key IDs and Fingerprints
11.2. 主要なIDと指紋
For a V3 key, the eight-octet key ID consists of the low 64 bits of the public modulus of the RSA key.
V3キーに関しては、8八重奏の主要なIDはRSAキーの公共の係数の低64ビットから成ります。
The fingerprint of a V3 key is formed by hashing the body (but not the two-octet length) of the MPIs that form the key material (public modulus n, followed by exponent e) with MD5.
V3キーの指紋は、MD5と共に主要な材料(解説者eによって従われた公共の係数n)を形成するMPIsのボディー(しかし、2八重奏の長さでない)を論じ尽くすことによって、形成されます。
Callas, et. al. Standards Track [Page 53] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[53ページ]。
A V4 fingerprint is the 160-bit SHA-1 hash of the one-octet Packet Tag, followed by the two-octet packet length, followed by the entire Public Key packet starting with the version field. The key ID is the low order 64 bits of the fingerprint. Here are the fields of the hash material, with the example of a DSA key:
V4指紋は2八重奏のパケット長があとに続いたPacket Tagがバージョン野原から始まる全体のPublic Keyパケットを続けた1八重奏の160ビットのSHA-1ハッシュです。 主要なIDは指紋の下位64ビットです。 ここに、ハッシュの材料の分野がDSAキーに関する例と共にあります:
a.1) 0x99 (1 octet)
a.1) 0×99(1つの八重奏)
a.2) high order length octet of (b)-(f) (1 octet)
a.2) (b)--(f)の高位長さの八重奏 (1つの八重奏)
a.3) low order length octet of (b)-(f) (1 octet)
a.3) (b)--(f)の下位の長さの八重奏 (1つの八重奏)
b) version number = 4 (1 octet);
4(1つの八重奏)のb)バージョン番号=。
c) time stamp of key creation (4 octets);
主要な作成(4つの八重奏)のc)タイムスタンプ。
d) algorithm (1 octet): 17 = DSA (example);
d)アルゴリズム(1つの八重奏): 17はDSA(例)と等しいです。
e) Algorithm specific fields.
e) アルゴリズムの特定の分野。
Algorithm Specific Fields for DSA keys (example):
DSAキー(例)のためのアルゴリズムSpecificフィールズ:
e.1) MPI of DSA prime p;
e.1) DSA第1pのMPI。
e.2) MPI of DSA group order q (q is a prime divisor of p-1);
e.2) DSA共同注文q(qはp-1の主要な除数です)のMPI。
e.3) MPI of DSA group generator g;
e.3) DSAグループジェネレータgのMPI。
e.4) MPI of DSA public key value y (= g**x where x is secret).
e.4) DSA公開鍵価値y(xが秘密であるg**xと等しいです)のMPI。
Note that it is possible for there to be collisions of key IDs -- two different keys with the same key ID. Note that there is a much smaller, but still non-zero probability that two different keys have the same fingerprint.
そこに、主要なIDの衝突であることが可能であることに注意してください--同じ主要なIDがある2個の異なったキー。 2個の異なったキーには同じ指紋があるというはるかに小さい、しかし、まだ非ゼロの確率があることに注意してください。
Also note that if V3 and V4 format keys share the same RSA key material, they will have different key ids as well as different fingerprints.
また、V3とV4形式キーが同じRSAの主要な材料を共有すると、それらには異なった指紋と同様に異なった主要なイドがあることに注意してください。
12. Notes on Algorithms
12. アルゴリズムに関する注
12.1. Symmetric Algorithm Preferences
12.1. 左右対称のアルゴリズム好み
The symmetric algorithm preference is an ordered list of algorithms that the keyholder accepts. Since it is found on a self-signature, it is possible that a keyholder may have different preferences. For example, Alice may have TripleDES only specified for "alice@work.com" but CAST5, Blowfish, and TripleDES specified for "alice@home.org".
左右対称のアルゴリズム好みはkeyholderが受け入れるアルゴリズムの規則正しいリストです。 それが自己署名に見つけられるので、keyholderには異なった好みがあるのは、可能です。 例えば、アリスは" alice@work.com "にTripleDESを指定させるだけであるかもしれませんが、CAST5、フグ、およびTripleDESは" alice@home.org "に指定しました。
Callas, et. al. Standards Track [Page 54] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[54ページ]。
Note that it is also possible for preferences to be in a subkey's binding signature.
また、好みがサブキーの拘束力がある署名中であるのも、可能であることに注意してください。
Since TripleDES is the MUST-implement algorithm, if it is not explicitly in the list, it is tacitly at the end. However, it is good form to place it there explicitly. Note also that if an implementation does not implement the preference, then it is implicitly a TripleDES-only implementation.
リストでは、明らかでなく、それは暗にそうです。以来TripleDESがそうである、-、道具、アルゴリズム、それがそう、終わりにそうしなければなりません。 しかしながら、それは明らかにそれをそこに置くちゃんとした行儀作法です。 また、実装が好みを実装しないならそれがそれとなくそうであることに注意してください。TripleDESだけ実装。
An implementation MUST not use a symmetric algorithm that is not in the recipient's preference list. When encrypting to more than one recipient, the implementation finds a suitable algorithm by taking the intersection of the preferences of the recipients. Note that the MUST-implement algorithm, TripleDES, ensures that the intersection is not null. The implementation may use any mechanism to pick an algorithm in the intersection.
実装は受取人の好みのリストにない左右対称のアルゴリズムを使用してはいけません。 1人以上の受取人に暗号化するとき、実装は、受取人の好みの交差点を取ることによって、適当なアルゴリズムを見つけます。 それに注意してください、-、道具、アルゴリズム(TripleDES)は交差点が確実にヌルにならないようにしなければなりません。 実装は、交差点でアルゴリズムを選ぶのにどんなメカニズムも使用するかもしれません。
If an implementation can decrypt a message that a keyholder doesn't have in their preferences, the implementation SHOULD decrypt the message anyway, but MUST warn the keyholder than protocol has been violated. (For example, suppose that Alice, above, has software that implements all algorithms in this specification. Nonetheless, she prefers subsets for work or home. If she is sent a message encrypted with IDEA, which is not in her preferences, the software warns her that someone sent her an IDEA-encrypted message, but it would ideally decrypt it anyway.)
実装がメッセージを解読することができるなら、keyholderが彼らの好み、実装でSHOULDを持っていないのが、プロトコルに違反してあるよりとにかくメッセージを解読しますが、keyholderに警告しなければなりません。 (例えば、アリスがこの仕様に上にすべてのアルゴリズムを実装するソフトウェアを持っていると仮定してください。 それにもかかわらず、彼女は仕事かホームとして部分集合を好みます。 彼女の好み中でないIDEAと共に暗号化されたメッセージを彼女に送るなら、ソフトウェアは、だれかがIDEA-暗号化メッセージを彼女に送ったと彼女に警告しますが、それは理想的にとにかくそれを解読するでしょう。)
An implementation that is striving for backward compatibility MAY consider a V3 key with a V3 self-signature to be an implicit preference for IDEA, and no ability to do TripleDES. This is technically non-compliant, but an implementation MAY violate the above rule in this case only and use IDEA to encrypt the message, provided that the message creator is warned. Ideally, though, the implementation would follow the rule by actually generating two messages, because it is possible that the OpenPGP user's implementation does not have IDEA, and thus could not read the message. Consequently, an implementation MAY, but SHOULD NOT use IDEA in an algorithm conflict with a V3 key.
後方の互換性を求めて努力している実装は、IDEAにおける暗黙の優先にもかかわらず、V3自己署名によって主要なV3がTripleDESをする能力でないと考えるかもしれません。 これが技術的に不従順ですが、実装は、この場合、上の規則だけに違反して、メッセージを暗号化するのにIDEAを使用するかもしれません、メッセージクリエイターが注意されれば。 理想的に、もっとも、実際に2つのメッセージを生成することによって、実装は規則に従うでしょう、OpenPGPユーザの実装がIDEAを持たないで、その結果、メッセージを読むことができなかったのが、可能であるので。 その結果、実装は使用するかもしれませんが、SHOULD NOTはV3キーとのアルゴリズム闘争にIDEAを使用します。
12.2. Other Algorithm Preferences
12.2. 他のアルゴリズム好み
Other algorithm preferences work similarly to the symmetric algorithm preference, in that they specify which algorithms the keyholder accepts. There are two interesting cases that other comments need to be made about, though, the compression preferences and the hash preferences.
keyholderがどのアルゴリズムを受け入れるかを指定するので、他のアルゴリズム好みは同様に左右対称のアルゴリズム好みに取り組みます。 他のコメントがもっとも、ほとんど作られているために必要とする2つのおもしろいケース、圧縮好み、およびハッシュ好みがあります。
Callas, et. al. Standards Track [Page 55] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[55ページ]。
12.2.1. Compression Preferences
12.2.1. 圧縮好み
Compression has been an integral part of PGP since its first days. OpenPGP and all previous versions of PGP have offered compression. And in this specification, the default is for messages to be compressed, although an implementation is not required to do so. Consequently, the compression preference gives a way for a keyholder to request that messages not be compressed, presumably because they are using a minimal implementation that does not include compression. Additionally, this gives a keyholder a way to state that it can support alternate algorithms.
圧縮は初日以来のPGPの不可欠の部分です。 OpenPGPとPGPのすべての旧バージョンが圧縮を提供しました。 そして、この仕様には、デフォルトが圧縮されるべきメッセージのためにあります、実装はそうするのに必要ではありませんが。 その結果、圧縮好みはkeyholderが、メッセージが圧縮されないよう要求する方法を与えます、おそらく圧縮を含んでいない最小限の器具を使用しているので。 さらに、これは代替のアルゴリズムをサポートすることができると述べる方法をkeyholderに与えます。
Like the algorithm preferences, an implementation MUST NOT use an algorithm that is not in the preference vector. If the preferences are not present, then they are assumed to be [ZIP(1), UNCOMPRESSED(0)].
アルゴリズム好みのように、実装は好みのベクトルにはないアルゴリズムを使用してはいけません。 好みが存在していないなら、それらは想定されます。[郵便番号(1)、UNCOMPRESSED(0)]。
12.2.2. Hash Algorithm Preferences
12.2.2. ハッシュアルゴリズム好み
Typically, the choice of a hash algorithm is something the signer does, rather than the verifier, because a signer does not typically know who is going to be verifying the signature. This preference, though, allows a protocol based upon digital signatures ease in negotiation.
ハッシュアルゴリズムの選択は通常、署名者が検証よりむしろすることです、署名者が、だれが署名について確かめるかを通常知らないので。 もっとも、この好みは交渉におけるデジタル署名の容易さに基づくプロトコルを許容します。
Thus, if Alice is authenticating herself to Bob with a signature, it makes sense for her to use a hash algorithm that Bob's software uses. This preference allows Bob to state in his key which algorithms Alice may use.
したがって、アリスが署名のボブに自分を認証しているなら、彼女のために、ボブのソフトウェアが使用するハッシュアルゴリズムを使用するのは理解できます。 この好みで、ボブは、彼のキーにアリスがどのアルゴリズムを使用するかもしれないかを述べることができます。
12.3. Plaintext
12.3. 平文
Algorithm 0, "plaintext", may only be used to denote secret keys that are stored in the clear. Implementations must not use plaintext in Symmetrically Encrypted Data Packets; they must use Literal Data Packets to encode unencrypted or literal data.
「平文」というアルゴリズム0は、明確に保存される秘密鍵を指示するのに使用されるだけであるかもしれません。 実装はSymmetrically Encrypted Data Packetsで平文を使用してはいけません。 彼らは、非暗号化されたか文字通りのデータをコード化するのにLiteral Data Packetsを使用しなければなりません。
12.4. RSA
12.4. RSA
There are algorithm types for RSA-signature-only, and RSA-encrypt- only keys. These types are deprecated. The "key flags" subpacket in a signature is a much better way to express the same idea, and generalizes it to all algorithms. An implementation SHOULD NOT create such a key, but MAY interpret it.
アルゴリズムがあります。キーだけをRSA署名だけのためにタイプして、RSA暗号化します。 これらのタイプは推奨しないです。 署名における「主要な旗」「副-パケット」は、同じ考えを表すのにおいてはるかにふさわしい方法であり、すべてのアルゴリズムにそれを一般化します。実装SHOULD NOTはそのようなキーを作成しますが、それを解釈するかもしれません。
An implementation SHOULD NOT implement RSA keys of size less than 768 bits.
SHOULD NOTが768ビット未満のサイズのRSAキーであると実装する実装。
Callas, et. al. Standards Track [Page 56] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[56ページ]。
It is permissible for an implementation to support RSA merely for backward compatibility; for example, such an implementation would support V3 keys with IDEA symmetric cryptography. Note that this is an exception to the other MUST-implement rules. An implementation that supports RSA in V4 keys MUST implement the MUST-implement features.
実装が単に後方の互換性のためにRSAをサポートするのは、許されています。 例えば、そのような実装はIDEAの左右対称の暗号でV3にキーを支えるでしょう。 これがもう片方への例外であることに注意してください、-、道具、規則でなければならない。 キーが実装しなければならないV4でRSAをサポートする実装、-、道具、特徴でなければならない。
12.5. Elgamal
12.5. Elgamal
If an Elgamal key is to be used for both signing and encryption, extra care must be taken in creating the key.
署名と暗号化の両方にElgamalキーを使用するつもりであるなら、キーを作成しながら、付加的な注意を中に入れなければなりません。
An ElGamal key consists of a generator g, a prime modulus p, a secret exponent x, and a public value y = g^x mod p.
ElGamalキーはジェネレータg(g^x主要な係数p、秘密の解説者x、および公共の値y=モッズp)から成ります。
The generator and prime must be chosen so that solving the discrete log problem is intractable. The group g should generate the multiplicative group mod p-1 or a large subgroup of it, and the order of g should have at least one large prime factor. A good choice is to use a "strong" Sophie-Germain prime in choosing p, so that both p and (p-1)/2 are primes. In fact, this choice is so good that implementors SHOULD do it, as it avoids a small subgroup attack.
ジェネレータと第1を選ばなければならないので、離散的なログ問題を解決するのは手に負えません。 グループgは乗法群のモッズ風のp-1かそれの大きいサブグループを発生させるべきです、そして、gの注文には、少なくとも1つの大きい主要因があるべきです。 良い選択はpを選ぶのにおいて主要な「強い」ソフィー-ジェルマンを使用することです、pと(p-1)/2の両方が盛りであるように。 この選択が非常に良いので、小さいサブグループ攻撃を避けるとき、事実上、作成者SHOULDはそれをします。
In addition, a result of Bleichenbacher [BLEICHENBACHER] shows that if the generator g has only small prime factors, and if g divides the order of the group it generates, then signatures can be forged. In particular, choosing g=2 is a bad choice if the group order may be even. On the other hand, a generator of 2 is a fine choice for an encryption-only key, as this will make the encryption faster.
さらに、Bleichenbacher[BLEICHENBACHER]の結果は、ジェネレータgで小さい主要因しかなくて、gがそれが作るグループの注文を分割するなら署名を鍛造できるのを示します。 共同注文が同等であるかもしれないなら、g=2を選ぶのは、特に、下手な選択です。 他方では、2のジェネレータは暗号化だけキーのためのよい選択です、暗号化がこれで、より速くなるとき。
While verifying Elgamal signatures, note that it is important to test that r and s are less than p. If this test is not done then signatures can be trivially forged by using large r values of approximately twice the length of p. This attack is also discussed in the Bleichenbacher paper.
Elgamal署名について確かめている間、rとsがp以下であることがテストするために重要であることに注意してください。 このテストが完了していないなら、pの長さのおよそ2倍の大きいr値を使用することによって、署名を些細なことに鍛造できます。 また、Bleichenbacher紙でこの攻撃について議論します。
Details on safe use of Elgamal signatures may be found in [MENEZES], which discusses all the weaknesses described above.
Elgamal署名の安全な使用に関する詳細は[メネゼス]で見つけられるかもしれません。(それは、上で説明されたすべての弱点について議論します)。
If an implementation allows Elgamal signatures, then it MUST use the algorithm identifier 20 for an Elgamal public key that can sign.
実現がElgamalに署名を許容するなら、それはそれがサインできるElgamal公開鍵にアルゴリズム識別子20を使用しなければなりません。
An implementation SHOULD NOT implement Elgamal keys of size less than 768 bits. For long-term security, Elgamal keys should be 1024 bits or longer.
768ビット未満のサイズの実現SHOULD NOT道具Elgamalキー。 長期のセキュリティのために、Elgamalキーは1024ビットであるべきです。
Callas, et. al. Standards Track [Page 57] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[57ページ]。
12.6. DSA
12.6. DSA
An implementation SHOULD NOT implement DSA keys of size less than 768 bits. Note that present DSA is limited to a maximum of 1024 bit keys, which are recommended for long-term use.
768ビット未満のサイズの実現SHOULD NOT道具DSAキー。 現在のDSAが最大1024年のビットのキーに制限されることに注意してください。(キーは長期の使用のために推薦されます)。
12.7. Reserved Algorithm Numbers
12.7. 予約されたアルゴリズム番号
A number of algorithm IDs have been reserved for algorithms that would be useful to use in an OpenPGP implementation, yet there are issues that prevent an implementor from actually implementing the algorithm. These are marked in the Public Algorithms section as "(reserved for)".
多くのアルゴリズムIDがOpenPGP実現に使用するために役に立つアルゴリズムのために予約されましたが、作成者が実際にアルゴリズムを実行できない問題があります。 これらは「(予約される)」としてPublic Algorithms部でマークされます。
The reserved public key algorithms, Elliptic Curve (18), ECDSA (19), and X9.42 (21) do not have the necessary parameters, parameter order, or semantics defined.
予約された公開鍵アルゴリズム、Elliptic Curve(18)、ECDSA(19)、およびX9.42(21)には、必要なパラメタ、パラメタオーダー、または定義された意味論がありません。
The reserved symmetric key algorithm, DES/SK (6), does not have semantics defined.
予約された対称鍵アルゴリズム(DES/SK(6))には、定義された意味論がありません。
The reserved hash algorithms, TIGER192 (6), and HAVAL-5-160 (7), do not have OIDs. The reserved algorithm number 4, reserved for a double-width variant of SHA1, is not presently defined.
予約された細切れ肉料理アルゴリズム(TIGER192(6)、およびHAVAL-5-160(7))には、OIDsがありません。 SHA1のダブル幅異形のために予約された予約されたアルゴリズムNo.4は現在、定義されません。
We have reserver three algorithm IDs for the US NIST's Advanced Encryption Standard. This algorithm will work with (at least) 128, 192, and 256-bit keys. We expect that this algorithm will be selected from the candidate algorithms in the year 2000.
私たちには、US NISTのエー・イー・エスのための「再-サーバ」threeアルゴリズムIDがあります。 このアルゴリズムは(少なくとも)の128、192、および256ビットのキーで利くでしょう。 私たちは、このアルゴリズムが2000年の間候補アルゴリズムから選択されると予想します。
12.8. OpenPGP CFB mode
12.8. OpenPGP CFBモード
OpenPGP does symmetric encryption using a variant of Cipher Feedback Mode (CFB mode). This section describes the procedure it uses in detail. This mode is what is used for Symmetrically Encrypted Data Packets; the mechanism used for encrypting secret key material is similar, but described in those sections above.
OpenPGPは、Cipher Feedback Mode(CFBモード)の異形を使用することで左右対称の暗号化をします。 このセクションはそれが詳細に用いる手順について説明します。 このモードはSymmetrically Encrypted Data Packetsに使用されることです。 秘密鍵の材料をコード化するのに使用されるメカニズムは、同様ですが、上のそれらのセクションで説明されています。
OpenPGP CFB mode uses an initialization vector (IV) of all zeros, and prefixes the plaintext with ten octets of random data, such that octets 9 and 10 match octets 7 and 8. It does a CFB "resync" after encrypting those ten octets.
OpenPGP CFBモードは、すべてのゼロの初期化ベクトル(IV)を使用して、無作為のデータの10の八重奏がある平文を前に置きます、八重奏9と10が八重奏7と8に合うように。 それらの10の八重奏をコード化した後に、それはCFB"「再-同時性」"をします。
Note that for an algorithm that has a larger block size than 64 bits, the equivalent function will be done with that entire block. For example, a 16-octet block algorithm would operate on 16 octets, and then produce two octets of check, and then work on 16-octet blocks.
64ビットより大きいブロック・サイズを持っているアルゴリズムにおいてその全体のブロックで同等な機能をすることに注意してください。 例えば、次に、16八重奏のブロックアルゴリズムは、16八重奏のブロックに16の八重奏を作動させて、チェックの2つの八重奏を起こして、次に、仕事を起こすでしょう。
Callas, et. al. Standards Track [Page 58] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[58ページ]。
Step by step, here is the procedure:
一歩一歩、ここに、手順があります:
1. The feedback register (FR) is set to the IV, which is all zeros.
1. フィードバック・レジスタ(FR)はIVに設定されます。(それは、すべてゼロです)。
2. FR is encrypted to produce FRE (FR Encrypted). This is the encryption of an all-zero value.
2. FRは、FRE(FR Encrypted)を生産するためにコード化されます。 これはオールゼロ価値の暗号化です。
3. FRE is xored with the first 8 octets of random data prefixed to the plaintext to produce C1-C8, the first 8 octets of ciphertext.
3. 無作為のデータの最初の8つの八重奏が平文へ前に置かれている状態で、FREは、C1-C8(暗号文の最初の8つの八重奏)を生産するためにxoredされます。
4. FR is loaded with C1-C8.
4. FRをC1-C8に積みます。
5. FR is encrypted to produce FRE, the encryption of the first 8 octets of ciphertext.
5. FRは、FRE、暗号文の最初の8つの八重奏の暗号化を起こすためにコード化されます。
6. The left two octets of FRE get xored with the next two octets of data that were prefixed to the plaintext. This produces C9-C10, the next two octets of ciphertext.
6. FREの左の2つの八重奏が平文へ前に置かれたデータの次の2つの八重奏でxoredされます。 これはC9-C10、暗号文の次の2つの八重奏を起こします。
7. (The resync step) FR is loaded with C3-C10.
7. (「再-同時性」ステップ) FRをC3-C10に積みます。
8. FR is encrypted to produce FRE.
8. FRは、FREを生産するためにコード化されます。
9. FRE is xored with the first 8 octets of the given plaintext, now that we have finished encrypting the 10 octets of prefixed data. This produces C11-C18, the next 8 octets of ciphertext.
9. FREは与えられた平文の最初の8つの八重奏でxoredされます、私たちが、前に置かれたデータの10の八重奏をコード化し終えたので。 これはC11-C18、暗号文の次の8つの八重奏を起こします。
10. FR is loaded with C11-C18
10. FRをC11-C18に積みます。
11. FR is encrypted to produce FRE.
11. FRは、FREを生産するためにコード化されます。
12. FRE is xored with the next 8 octets of plaintext, to produce the next 8 octets of ciphertext. These are loaded into FR and the process is repeated until the plaintext is used up.
12. FREは平文の次の8つの八重奏でxoredされて、暗号文の次の8つの八重奏を起こします。 これらはFRにロードされます、そして、平文が使いきられるまで、過程は繰り返されます。
13. Security Considerations
13. セキュリティ問題
As with any technology involving cryptography, you should check the current literature to determine if any algorithms used here have been found to be vulnerable to attack.
どんな技術の意味ありげな暗号ならも、あなたは、何かここで使用されたアルゴリズムが攻撃するのにおいて傷つきやすいのがわかったかどうか決定するために現在の文学をチェックするべきです。
This specification uses Public Key Cryptography technologies. Possession of the private key portion of a public-private key pair is assumed to be controlled by the proper party or parties.
この仕様はPublic Key Cryptography技術を使用します。 1公共の秘密鍵組の秘密鍵一部の所有物は適切なパーティーかパーティーによって制御されると思われます。
Certain operations in this specification involve the use of random numbers. An appropriate entropy source should be used to generate these numbers. See RFC 1750.
この仕様に基づく、ある操作は乱数の使用にかかわります。 適切なエントロピーソースは、これらの数を発生させるのに使用されるべきです。 RFC1750を見てください。
Callas, et. al. Standards Track [Page 59] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[59ページ]。
The MD5 hash algorithm has been found to have weaknesses (pseudo- collisions in the compress function) that make some people deprecate its use. They consider the SHA-1 algorithm better.
MD5細切れ肉料理アルゴリズムは何人かの人々が使用を非難する弱点(湿布機能における疑似衝突)を持っているのがわかりました。 彼らは、SHA-1アルゴリズムが、より良いと考えます。
Many security protocol designers think that it is a bad idea to use a single key for both privacy (encryption) and integrity (signatures). In fact, this was one of the motivating forces behind the V4 key format with separate signature and encryption keys. If you as an implementor promote dual-use keys, you should at least be aware of this controversy.
多くのセキュリティプロトコルデザイナーが、プライバシー(暗号化)と保全(署名)の両方に単一のキーを使用するのが、悪い考えであると考えます。 事実上、これは別々の署名と暗号化キーがあるV4の主要な形式の後ろの原動力の1つでした。 作成者としてのあなたが二元的な使用キーを促進するなら、あなたはこの論争を少なくとも意識しているべきです。
The DSA algorithm will work with any 160-bit hash, but it is sensitive to the quality of the hash algorithm, if the hash algorithm is broken, it can leak the secret key. The Digital Signature Standard (DSS) specifies that DSA be used with SHA-1. RIPEMD-160 is considered by many cryptographers to be as strong. An implementation should take care which hash algorithms are used with DSA, as a weak hash can not only allow a signature to be forged, but could leak the secret key. These same considerations about the quality of the hash algorithm apply to Elgamal signatures.
細切れ肉料理アルゴリズムが壊れているなら細切れ肉料理アルゴリズムの品質に敏感である、DSAアルゴリズムはどんな160ビットの細切れ肉料理でも利くでしょうが、それは秘密鍵を漏らすことができます。 デジタル署名基準(DSS)は、DSAがSHA-1と共に使用されると指定します。 RIPEMD-160が同じくらい強いと多くの暗号使用者によって考えられます。 実現は、どれがアルゴリズムを論じ尽くすかが、薄い細切れ肉料理が、署名が鍛造されるのを許容できるだけではなくてDSAと共に使用されますが、秘密鍵を漏らすかもしれないことに注意するべきです。 細切れ肉料理アルゴリズムの品質に関するこれらの同じ問題はElgamal署名に適用されます。
If you are building an authentication system, the recipient may specify a preferred signing algorithm. However, the signer would be foolish to use a weak algorithm simply because the recipient requests it.
あなたが認証システムを構築しているなら、受取人は都合のよい調印アルゴリズムを指定するかもしれません。 しかしながら、署名者は、単に受取人がそれを要求するので弱いアルゴリズムを使用するために愚かでしょう。
Some of the encryption algorithms mentioned in this document have been analyzed less than others. For example, although CAST5 is presently considered strong, it has been analyzed less than Triple- DES. Other algorithms may have other controversies surrounding them.
本書では言及された暗号化アルゴリズムのいくつかが他のものほど分析されていません。 例えば、CAST5が現在強いと考えられますが、それはTriple- DESほど分析されていません。 他のアルゴリズムには、それらを囲む他の論争があるかもしれません。
Some technologies mentioned here may be subject to government control in some countries.
ここに言及されたいくつかの技術がいくつかの国での公共的支配を受けることがあるかもしれません。
14. Implementation Nits
14. 実現夜
This section is a collection of comments to help an implementer, particularly with an eye to backward compatibility. Previous implementations of PGP are not OpenPGP-compliant. Often the differences are small, but small differences are frequently more vexing than large differences. Thus, this list of potential problems and gotchas for a developer who is trying to be backward-compatible.
このセクションは特に目のimplementerを後方の互換性に助けるコメントの収集です。 PGPの前の実現はOpenPGP対応しません。 しばしば、違いは小さいのですが、小さい違いは頻繁に大きな違いより多くの困らせることです。 その結果、互換性があるのを後方の試みている開発者のための潜在的な問題とgotchasのこのリスト。
* PGP 5.x does not accept V4 signatures for anything other than key material.
* PGP 5.xは主要な材料以外の何のためのもV4署名も受け入れません。
* PGP 5.x does not recognize the "five-octet" lengths in new-format headers or in signature subpacket lengths.
* PGP 5.xは新しい形式ヘッダーか署名「副-パケット」の長さにおける「5八重奏」の長さを認識しません。
Callas, et. al. Standards Track [Page 60] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[60ページ]。
* PGP 5.0 rejects an encrypted session key if the keylength differs from the S2K symmetric algorithm. This is a bug in its validation function.
* keylengthがS2Kの左右対称のアルゴリズムと異なっているなら、PGP5.0はコード化されたセッションキーを拒絶します。 これは合法化機能でバグです。
* PGP 5.0 does not handle multiple one-pass signature headers and trailers. Signing one will compress the one-pass signed literal and prefix a V3 signature instead of doing a nested one-pass signature.
* PGP5.0は複数の1パスの署名ヘッダーとトレーラを扱いません。 調印1は、文字通りでサインされた1パスを圧縮して、入れ子にされた1パスの署名をすることの代わりにV3署名を前に置くでしょう。
* When exporting a private key, PGP 2.x generates the header "BEGIN PGP SECRET KEY BLOCK" instead of "BEGIN PGP PRIVATE KEY BLOCK". All previous versions ignore the implied data type, and look directly at the packet data type.
* 秘密鍵を輸出するとき、PGP 2.xはヘッダー「PGP秘密鍵ブロックを始めてください」の代わりに「PGP秘密のキー・ブロックを始めてください」を発生させます。 すべての旧バージョンが、暗示しているデータ型を無視して、直接パケットデータ型を見ます。
* In a clear-signed signature, PGP 5.0 will figure out the correct hash algorithm if there is no "Hash:" header, but it will reject a mismatch between the header and the actual algorithm used. The "standard" (i.e. Zimmermann/Finney/et al.) version of PGP 2.x rejects the "Hash:" header and assumes MD5. There are a number of enhanced variants of PGP 2.6.x that have been modified for SHA-1 signatures.
* はっきりとサインされた署名では、PGP5.0は、そこであるなら正しい細切れ肉料理アルゴリズムがいいえが「以下を論じ尽くす」ということであることを理解するでしょう。 ヘッダー、それだけがヘッダーと使用される実際のアルゴリズムの間のミスマッチを拒絶するでしょう。 PGP 2.x廃棄物の「標準(すなわち、Zimmermann/フィニー/他)」のバージョン、「細切れ肉料理:」 そして、ヘッダー、MD5であると仮定します。 SHA-1署名のために変更されたPGP 2.6.xの多くの高められた異形があります。
* PGP 5.0 can read an RSA key in V4 format, but can only recognize it with a V3 keyid, and can properly use only a V3 format RSA key.
* PGP5.0はV4形式で主要なRSAを読むことができます、V3 keyidと共にそれを認識できるだけであって、適切にV3形式RSAキーだけを使用できるのを除いて。
* Neither PGP 5.x nor PGP 6.0 recognize Elgamal Encrypt and Sign keys. They only handle Elgamal Encrypt-only keys.
* PGP 5.xもPGP6.0もElgamal EncryptとSignキーを認識しません。 彼らはElgamal Encryptだけキーを扱うだけです。
* There are many ways possible for two keys to have the same key material, but different fingerprints (and thus key ids). Perhaps the most interesting is an RSA key that has been "upgraded" to V4 format, but since a V4 fingerprint is constructed by hashing the key creation time along with other things, two V4 keys created at different times, yet with the same key material will have different fingerprints.
* 2個のキーには同じ主要な物質的な、しかし、異なった指紋(そして、その結果、主要なイド)があるのにおいて可能な多くの道があります。 恐らく最もおもしろいのが、V4形式に「アップグレードした」RSAキーですが、V4指紋が他のものに伴う主要な創造時間を論じ尽くすことによって組み立てられるので、V4キーがいろいろな時間にまだ同じ主要な材料で作成した2は異なった指紋を持つでしょう。
* If an implementation is using zlib to interoperate with PGP 2.x, then the "windowBits" parameter should be set to -13.
* 実現がPGP 2.xと共に共同利用するのにzlibを使用しているなら、「windowBits」パラメタは-13に設定されるべきです。
Callas, et. al. Standards Track [Page 61] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[61ページ]。
15. Authors and Working Group Chair
15. 作者とワーキンググループ議長
The working group can be contacted via the current chair:
現在のいすを通してワーキンググループに連絡できます:
John W. Noerenberg, II Qualcomm, Inc 6455 Lusk Blvd San Diego, CA 92131 USA
ジョンW.Noerenberg、IIクアルコム、Inc6455ラスク・Blvdサンディエゴ、カリフォルニア92131米国
Phone: +1 619-658-3510 EMail: jwn2@qualcomm.com
以下に電話をしてください。 +1 619-658-3510 メールしてください: jwn2@qualcomm.com
The principal authors of this memo are:
このメモの共著の中心となる著者は以下の通りです。
Jon Callas Network Associates, Inc. 3965 Freedom Circle Santa Clara, CA 95054, USA
ジョンカラネットワークは円のサンタクララ、Inc.3965Freedomカリフォルニア 95054、米国を関連づけます。
Phone: +1 408-346-5860 EMail: jon@pgp.com, jcallas@nai.com
以下に電話をしてください。 +1 408-346-5860 メールしてください: jon@pgp.com 、jcallas@nai.com
Lutz Donnerhacke IKS GmbH Wildenbruchstr. 15 07745 Jena, Germany
ルッツDonnerhacke IKS GmbH Wildenbruchstr。 15 07745イエナ(ドイツ)
Phone: +49-3641-675642 EMail: lutz@iks-jena.de
以下に電話をしてください。 +49-3641-675642はメールされます: lutz@iks-jena.de
Hal Finney Network Associates, Inc. 3965 Freedom Circle Santa Clara, CA 95054, USA
ハルフィニーネットワークは円のサンタクララ、Inc.3965Freedomカリフォルニア 95054、米国を関連づけます。
EMail: hal@pgp.com
メール: hal@pgp.com
Rodney Thayer EIS Corporation Clearwater, FL 33767, USA
ロドニー・セイヤー・EIS社のクリアウォーター、フロリダ 33767、米国
EMail: rodney@unitran.com
メール: rodney@unitran.com
Callas, et. al. Standards Track [Page 62] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[62ページ]。
This memo also draws on much previous work from a number of other authors who include: Derek Atkins, Charles Breed, Dave Del Torto, Marc Dyksterhouse, Gail Haspert, Gene Hoffman, Paul Hoffman, Raph Levien, Colin Plumb, Will Price, William Stallings, Mark Weaver, and Philip R. Zimmermann.
また、このメモはである:多くの他の作者から前の多くの仕事を利用します。 デリック・アトキンス、チャールズBreed、デーヴデルTorto、マークDyksterhouse、ゲイルHaspert、Geneホフマン、ポール・ホフマン、Raphレヴィエン、垂直なコリンウィルPrice、ウィリアムStallingsはウィーバー、およびフィリップR.Zimmermannをマークします。
16. References
16. 参照
[BLEICHENBACHER] Bleichenbacher, Daniel, "Generating ElGamal signatures without knowing the secret key," Eurocrypt 96. Note that the version in the proceedings has an error. A revised version is available at the time of writing from <ftp://ftp.inf.ethz.ch/pub/publications/papers/ti/isc /ElGamal.ps>
[BLEICHENBACHER] Bleichenbacher、ダニエル、「秘密鍵を知らないで、ElGamal署名を発生させます」、Eurocrypt96。 議事におけるバージョンには誤りがあることに注意してください。 改訂版は<ftp://ftp.inf.ethz.ch/パブ/刊行物/書類/ti/isc/ElGamal.ps>から書く時点で、利用可能です。
[BLOWFISH] Schneier, B. "Description of a New Variable-Length Key, 64-Bit Block Cipher (Blowfish)" Fast Software Encryption, Cambridge Security Workshop Proceedings (December 1993), Springer-Verlag, 1994, pp191-204
[BLOWFISH]シュナイアー、B.「新しい可変長のキー、64ビットのブロック暗号(フグ)の記述」Fast Software Encryption、ケンブリッジSecurity Workshop Proceedings(1993年12月)Springer-Verlag、1994、pp191-204
<http://www.counterpane.com/bfsverlag.html>
<http://www.counterpane.com/bfsverlag.html>。
[DONNERHACKE] Donnerhacke, L., et. al, "PGP263in - an improved international version of PGP", ftp://ftp.iks- jena.de/mitarb/lutz/crypt/software/pgp/
et[DONNERHACKE]Donnerhacke、L.、アル、「PGP263in--、PGPの改良された国際的なバージョン、」、 ftp://ftp.iks- jena.de/mitarb/lutz/crypt/software/pgp/
[ELGAMAL] T. ElGamal, "A Public-Key Cryptosystem and a Signature Scheme Based on Discrete Logarithms," IEEE Transactions on Information Theory, v. IT-31, n. 4, 1985, pp. 469-472.
[ELGAMAL]T.ElGamal、「公開カギ暗号系と署名は離散対数に基づいて計画する」情報Theory、vのIEEE Transactions。 IT-31、n。 4 1985、ページ 469-472.
[IDEA] Lai, X, "On the design and security of block ciphers", ETH Series in Information Processing, J.L. Massey (editor), Vol. 1, Hartung-Gorre Verlag Knostanz, Technische Hochschule (Zurich), 1992
[IDEA]レイ、情報Processingの「ブロック暗号のデザインとセキュリティ」のX ETH Series、J.L.マッシー(エディタ)、Vol.1、ハルトゥング-Gorre Verlag Knostanz、Technische Hochschule(チューリッヒ)1992
[ISO-10646] ISO/IEC 10646-1:1993. International Standard -- Information technology -- Universal Multiple-Octet Coded Character Set (UCS) -- Part 1: Architecture and Basic Multilingual Plane. UTF-8 is described in Annex R, adopted but not yet published. UTF-16 is described in Annex Q, adopted but not yet published.
[ISO-10646]ISO/IEC10646-1:1993。 国際規格--情報技術--普遍的なMultiple-八重奏Coded文字コード(UCS)--第1部: 構造と基本多言語水準。 UTF-8はAnnex Rで説明されますが、採用されますが、まだ発行されていません。 UTF-16はAnnex Qで説明されますが、採用されますが、まだ発行されていません。
[MENEZES] Alfred Menezes, Paul van Oorschot, and Scott Vanstone, "Handbook of Applied Cryptography," CRC Press, 1996.
[メネゼス]アルフレッド・メネゼス、ポールバンOorschotとスコットVanstone、「適用された暗号のハンドブック」CRC Press、1996。
Callas, et. al. Standards Track [Page 63] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[63ページ]。
[RFC822] Crocker, D., "Standard for the format of ARPA Internet text messages", STD 11, RFC 822, August 1982.
[RFC822] クロッカー、D.、「ARPAインターネット・テキスト・メッセージの形式の規格」、STD11、RFC822、1982年8月。
[RFC1423] Balenson, D., "Privacy Enhancement for Internet Electronic Mail: Part III: Algorithms, Modes, and Identifiers", RFC 1423, October 1993.
[RFC1423]Balenson、D.、「インターネット電子メールのためのプライバシー増進:」 パートIII: 「アルゴリズム、モード、および識別子」、RFC1423、10月1993日
[RFC1641] Goldsmith, D. and M. Davis, "Using Unicode with MIME", RFC 1641, July 1994.
[RFC1641] ゴールドスミスとD.とM.デイヴィス、「MIMEがあるユニコードを使用します」、RFC1641、1994年7月。
[RFC1750] Eastlake, D., Crocker, S. and J. Schiller, "Randomness Recommendations for Security", RFC 1750, December 1994.
[RFC1750] イーストレークとD.とクロッカーとS.とJ.シラー、「セキュリティのための偶発性推薦」、RFC1750、1994年12月。
[RFC1951] Deutsch, P., "DEFLATE Compressed Data Format Specification version 1.3.", RFC 1951, May 1996.
ドイツ語、[RFC1951]P.、「DEFLATE Compressed Data Format Specificationバージョン1.3」 1996年5月のRFC1951。
[RFC1983] Malkin, G., "Internet Users' Glossary", FYI 18, RFC 1983, August 1996.
[RFC1983] マルキン、G.、「インターネットユーザの用語集」、FYI18、RFC1983、1996年8月。
[RFC1991] Atkins, D., Stallings, W. and P. Zimmermann, "PGP Message Exchange Formats", RFC 1991, August 1996.
[RFC1991] アトキンスとD.とストーリングズとW.とP.Zimmermann、「PGP交換処理形式」、RFC1991、1996年8月。
[RFC2015] Elkins, M., "MIME Security with Pretty Good Privacy (PGP)", RFC 2015, October 1996.
[RFC2015]エルキンズ、M.、「プリティ・グッド・プライバシ(PGP)があるMIMEセキュリティ」、RFC2015、1996年10月。
[RFC2231] Borenstein, N. and N. Freed, "Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies.", RFC 2231, November 1996.
解放された[RFC2231]Borenstein、N.、およびN.、「マルチパーパスインターネットメールエクステンション(MIME)は1つを分けます」。 「インターネットメッセージ本体の形式」、RFC2231、11月1996日
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Level", BCP 14, RFC 2119, March 1997.
[RFC2119] ブラドナー、S.、「Indicate Requirement LevelへのRFCsにおける使用のためのキーワード」、BCP14、RFC2119、1997年3月。
[RFC2144] Adams, C., "The CAST-128 Encryption Algorithm", RFC 2144, May 1997.
[RFC2144]アダムス(C.、「キャスト-128暗号化アルゴリズム」、RFC2144)は1997がそうするかもしれません。
[RFC2279] Yergeau., F., "UTF-8, a transformation format of Unicode and ISO 10646", RFC 2279, January 1998.
[RFC2279]Yergeau、1998年1月のF.、「UTF-8、ユニコードとISO10646の変化形式」RFC2279。
[RFC2313] Kaliski, B., "PKCS #1: RSA Encryption Standard version 1.5", RFC 2313, March 1998.
[RFC2313]Kaliski、B.、「PKCS#1:」 RSA Encryption Standard、バージョン1.5インチ、RFC2313、3月1998日
[SAFER] Massey, J.L. "SAFER K-64: One Year Later", B. Preneel, editor, Fast Software Encryption, Second International Workshop (LNCS 1008) pp212-241, Springer-Verlag 1995
[より安全]のマッシー、J.L.、「より安全なK-64:」 「1つのYear Later」、B.Preneel、エディタ、Fast Software Encryption、Secondの国際Workshop(LNCS1008)pp212-241、Springer-Verlag1995
Callas, et. al. Standards Track [Page 64] RFC 2440 OpenPGP Message Format November 1998
etカラス、アル。 規格はOpenPGPメッセージ・フォーマット1998年11月にRFC2440を追跡します[64ページ]。
17. Full Copyright Statement
17. 完全な著作権宣言文
Copyright (C) The Internet Society (1998). All Rights Reserved.
Copyright(C)インターネット協会(1998)。 All rights reserved。
This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English.
それに関するこのドキュメントと翻訳は、コピーして、それが批評するか、またはそうでなければわかる他のもの、および派生している作品に提供するか、または準備されているかもしれなくて、コピーされて、発行されて、全体か一部広げられた実現を助けるかもしれません、どんな種類の制限なしでも、上の版権情報とこのパラグラフがそのようなすべてのコピーと派生している作品の上に含まれていれば。 しかしながら、このドキュメント自体は何らかの方法で変更されないかもしれません、インターネット協会か他のインターネット組織の版権情報か参照を取り除くのなどように、それを英語以外の言語に翻訳するのが著作権のための手順がインターネットStandardsの過程で定義したどのケースに従わなければならないか、必要に応じてさもなければ、インターネット標準を開発する目的に必要であるのを除いて。
The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns.
上に承諾された限られた許容は、永久であり、インターネット協会、後継者または案配によって取り消されないでしょう。
This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS 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.
このドキュメントとそして、「そのままで」という基礎とインターネットの振興発展を目的とする組織に、インターネット・エンジニアリング・タスク・フォースが速達の、または、暗示しているすべての保証を放棄するかどうかというここにことであり、他を含んでいて、含まれて、情報の使用がここに侵害しないどんな保証も少しもまっすぐになるという情報か市場性か特定目的への適合性のどんな黙示的な保証。
Callas, et. al. Standards Track [Page 65]
etカラス、アル。 標準化過程[65ページ]
一覧
スポンサーリンク