[要約] RFC 2440は、OpenPGPメッセージフォーマットの仕様を定義しており、デジタル署名や暗号化などのセキュリティ機能を提供します。このRFCの目的は、セキュアな電子メールやファイル転送などの通信において、データの機密性と信頼性を確保することです。

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
        

OpenPGP Message Format

OpenPGPメッセージ形式

Status of this 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.

このドキュメントは、インターネットコミュニティのインターネット標準トラックプロトコルを指定し、改善のための議論と提案を要求します。このプロトコルの標準化状態とステータスについては、「インターネット公式プロトコル標準」(STD 1)の最新版を参照してください。このメモの配布は無制限です。

Copyright Notice

著作権表示

Copyright (C) The Internet Society (1998). All Rights Reserved.

Copyright(C)The Internet Society(1998)。全著作権所有。

IESG Note

IESG Note

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.

このドキュメントでは多くのタグ値を定義していますが、新しいタグを追加するためのメカニズム(新しい機能用)については説明していません。従来、Internet Assigned Numbers Authority(IANA)は、将来の拡張のために新しい値の割り当てを処理し、RFCは通常、IANAが使用する手順を定義します。ただし、このプロトコルでは、新機能と既存の機能の間で発生する可能性のある微妙な(微妙ではない)相互作用があり、すべてのセキュリティが大幅に低下します。したがって、このドキュメントでは拡張手順を定義していません。代わりに、新しいタグ値(たとえば、新しい暗号化アルゴリズムなど)を定義する要求は、検討のためにIESG Security Area Directorsに転送するか、検討のために適切な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, however, discuss implementation issues necessary to avoid security flaws.

このドキュメントは、OpenPGP形式に基づく相互運用可能なアプリケーションの開発に必要なすべての必要な情報を公開するために維持されています。アプリケーションを作成するための段階的なクックブックではありません。ネットワークを通過する適合パケットの読み取り、チェック、生成、および書き込みに必要なフォーマットとメソッドのみを説明しています。ストレージと実装に関する質問は扱いません。ただし、セキュリティ上の欠陥を回避するために必要な実装の問題については説明します。

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.

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

このメモのステータス1 IESG Note 1 Abstract 1目次2 1.はじめに4 1.1。用語5 2.一般機能5 2.1。暗号化による機密性5 2.2。デジタル署名による認証6 2.3。圧縮7 2.4。 Radix-64 7への変換2.5。署名のみのアプリケーション7 3.データ要素のフォーマット7 3.1。スカラー数8 3.2。多精度整数8 3.3。キーID 8 3.4。テキスト8 3.5。時間フィールド9 3.6。 String-to-key(S2K)指定子9 3.6.1。文字列からキー(S2k)指定子タイプ9 3.6.1.1。シンプルなS2K 9 3.6.1.2。ソルトS2K 10 3.6.1.3。反復および塩漬けS2K 10 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 4.3。パケットタグ15 5.パケットタイプ16 5.1。公開鍵暗号化セッションキーパケット(タグ1)16 5.2。署名パケット(タグ2)17 5.2.1。署名タイプ17 5.2.2。バージョン3署名パケット形式19 5.2.3。バージョン4署名パケット形式21 5.2.3.1。署名サブパケット仕様22 5.2.3.2。シグネチャサブパケットタイプ24 5.2.3.3。署名作成時間25 5.2.3.4。発行者25 5.2.3.5。キーの有効期限25 5.2.3.6。優先対称アルゴリズム25 5.2.3.7。優先ハッシュアルゴリズム25 5.2.3.8。推奨される圧縮アルゴリズム26 5.2.3.9。署名の有効期限26 5.2.3.10。エクスポート可能な認証26 5.2.3.11。取り消し可能27 5.2.3.12。信頼署名27 5.2.3.13。正規表現27 5.2.3.14。取り消しキー27 5.2.3.15。表記データ28 5.2.3.16.Keyサーバー設定28 5.2.3.17。優先キーサーバー29 5.2.3.18。プライマリユーザーID 29 5.2.3.19。ポリシーURL 29 5.2.3.20。キーフラグ29 5.2.3.21。署名者のユーザーID 30 5.2.3.22。失効の理由30 5.2 .4。署名の計算31 5.2.4.1。サブパケットヒント32 5.3。対称鍵暗号化セッション鍵パケット(タグ3)32 5.4。ワンパス署名パケット(タグ4)33 5.5。キーマテリアルパケット34 5.5.1。主要なパケットバリアント34 5.5.1.1。公開鍵パケット(タグ6)34 5.5.1.2。公開サブキーパケット(タグ14)34 5.5.1.3。秘密鍵パケット(タグ5)35 5.5.1.4。秘密のサブキーパケット(タグ7)35 5.5.2。公開鍵パケット形式35 5.5.3。秘密鍵パケットのフォーマット37 5.6。圧縮データパケット(タグ8)38 5.7。対称的に暗号化されたデータパケット(タグ9)39 5.8。マーカーパケット(廃止されたリテラルパケット)(タグ10)39 5.9。リテラルデータパケット(タグ11)40 5.10。信頼パケット(タグ12)40 5.11。ユーザーIDパケット(タグ13)41 6. Radix-64変換41 6.1。 「C」のCRC-24の実装42 6.2。 ASCIIアーマーの形成42 6.3。 Radix-64でのバイナリのエンコード44 6.4。 Radix-64のデコード46 6.5。 Radix-64の例46 6.6。 ASCII装甲メッセージの例47 7.クリアテキスト署名フレームワーク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。 RSA 56 12.5。 Elgamal 57 12.6。 DSA 58 12.7。予約済みアルゴリズム番号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が暗号化、復号化、署名、および鍵管理機能を提供するために使用するメッセージ交換パケット形式に関する情報を提供します。これは、RFC 1991「PGP Message Exchange Formats」で提供されている基盤に基づいています。

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.ジマーマンによって開発されたソフトウェアシステムのファミリです。

* 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のみを使用しました。このバージョンのPGPについて説明する情報RFC(RFC 1991)が作成されました。

* 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は、コミュニティおよびこのドキュメントの前身であるRFC 1991では以前「PGP 3」として知られていました。新しい形式があり、PGP 2.6.x設計の多くの問題を修正しています。このソフトウェアは「PGP 3」コードベースの最初のリリースだったため、ここではPGP 5.xと呼びます。

"PGP", "Pretty Good", and "Pretty Good Privacy" are trademarks of Network Associates, Inc. and are used with permission.

「PGP」、「Pretty Good」、および「Pretty Good Privacy」は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.

このドキュメントでは、RFC 2119で定義されている「MUST」、「SHOULD」、および「MAY」という用語を、これらの用語の否定形とともに使用します。

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. 暗号化による機密性

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

OpenPGPは2つの暗号化方式を使用して機密性を提供します。対称鍵暗号化と公開鍵暗号化です。公開鍵暗号化では、対称暗号化アルゴリズムを使用してオブジェクトが暗号化されます。各対称鍵は1回だけ使用されます。メッセージごとに新しい「セッションキー」が乱数として生成されます。これは1回だけ使用されるため、セッションキーはメッセージにバインドされて送信されます。キーを保護するために、受信者の公開キーで暗号化されます。シーケンスは次のとおりです。

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. デジタル署名による認証

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. バイナリ署名がメッセージに添付されます。

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実装は、署名を適用した後、暗号化する前にメッセージを圧縮してもよい(MAY)。

2.4. Conversion to Radix-64
2.4. Radix-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のネイティブの生のバイナリオクテットを生のバイナリデータに対して安全ではないチャネルを介して転送するには、これらのバイナリオクテットの印刷可能なエンコードが必要です。 OpenPGPは、生の8ビットバイナリオクテットストリームを、Radix-64エンコーディングまたはASCIIアーマーと呼ばれる印刷可能なASCII文字のストリームに変換するサービスを提供します。

Implementations SHOULD provide Radix-64 conversions.

実装は、Radix-64変換を提供する必要があります(SHOULD)。

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ドキュメント、RFC 2015で説明されているように、より高度な機能を必要とすることに注意してください。メッセージングにOpenPGPを実装するアプリケーションは、OpenPGP-MIMEを実装する必要があります。

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は、暗号化と署名の両方を使用するアプリケーション向けに設計されていますが、署名のみの実装によって解決される多くの問題があります。この仕様では暗号化と署名の両方が必要ですが、暗号化を省略しているという点でのみ非準拠であるサブセット実装が存在することは妥当です。

3. Data Element Formats
3. データ要素の形式

This section describes the data elements used by OpenPGP.

このセクションでは、OpenPGPで使用されるデータ要素について説明します。

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

スカラー番号は符号なしで、常にビッグエンディアン形式で格納されます。 n [k]を使用して解釈される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.

Multi-Precision Integer(MPIとも呼ばれます)は、暗号計算で使用される整数など、大きな整数を保持するために使用される符号なし整数です。

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つの部分で構成されています。2オクテットのスカラーで、ビット単位のMPIの後に、実際の整数を含むオクテットの文字列が続きます。

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 01 FF]は値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.

キーIDは、キーを識別する8オクテットのスカラーです。実装では、キーIDが一意であると想定しないでください。以下の「拡張キー形式」セクションでは、キーIDの形成方法について説明します。

3.4. Text
3.4. テキスト

The default character set for text is the UTF-8 [RFC2279] encoding of Unicode [ISO10646].

テキストのデフォルトの文字セットは、Unicode [ISO10646]のUTF-8 [RFC2279]エンコーディングです。

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の午前0時から経過した秒数を含む、符号なしの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つの場所で使用されています。秘密鍵リングの秘密鍵の秘密部分を暗号化することと、対称的に暗号化されたメッセージのパスフレーズを暗号鍵に変換することです。

3.6.1. String-to-key (S2k) specifier types
3.6.1. String-to-key(S2k)指定子タイプ

There are three types of S2K specifiers currently supported, as follows:

現在サポートされているS2K指定子には、次の3つのタイプがあります。

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:0x00オクテット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.

データはハッシュされるため、各ハッシュコンテキストに個別に与えられます。コンテキストは異なる方法で初期化されているため、コンテキストごとに異なるハッシュ出力が生成されます。パスフレーズがハッシュされると、複数のハッシュからの出力データが連結され、最初のハッシュが左端になり、右側の余分なオクテットが破棄されたキーデータが生成されます。

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:0x01オクテット1:ハッシュアルゴリズムオクテット2-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.

Salted S2KはSimple S2Kとまったく同じですが、ハッシュ関数への入力がS2K指定子からの8オクテットのsaltで構成され、その後にパスフレーズが続く点が異なります。

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:0x03オクテット1:ハッシュアルゴリズムオクテット2-9:8オクテットソルト値オクテット10:カウント、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);
        

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ビット整数の型、変数「c」はコード化されたカウント、オクテット10です。

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.

Iterated-Salted 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つの例外は、オクテットカウントがソルトとパスフレーズのサイズより小さい場合、オクテットカウントよりも大きくても、完全なソルトとパスフレーズがハッシュされることです。

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指定子は辞書攻撃に対してより脆弱であるため、実装では、ソルト付きまたは反復および塩入れ済みのS2K指定子を使用する必要があります(SHOULD)。

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.

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:

したがって、秘密データの前に、次のいずれかの可能性があります。

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ハッシュを使用した単純な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を暗黙的に使用する暗号アルゴリズム番号は、下位互換性のために提供されています。それは理解されるかもしれませんが、生成されるべきではなく、非推奨です。

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オクテットの初期ベクトルと、シークレットキー値自体が続きます。

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は、メッセージの前に対称鍵暗号化セッションキー(ESK)パケットを作成できます。これは、パスフレーズ変換にS2K指定子を使用できるようにするため、または対称鍵ESKと公開鍵ESKが混在するメッセージを作成するために使用されます。これにより、メッセージをパスフレーズまたは公開鍵で解読できます。

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は、対称アルゴリズムでメッセージを暗号化するときに、常に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メッセージ、キーリング、証明書などは、いくつかのパケットで構成されています。これらのパケットの一部には、他の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進数で0x80です。

              +---------------+
         PTag |7 6 5 4 3 2 1 0|
              +---------------+
         Bit 7 -- Always one
         Bit 6 -- New packet format if set
        

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-コンテンツタグビット1-0-長さタイプ

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ヘッダーは、最大4,294,967,295(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ヘッダーは長さが不定のパケットをエンコードし、事実上ストリームにします。

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 = 1st_octet;

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
        
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ヘッダーは、値が255の単一オクテットと、それに続く4オクテットスカラーで構成されます。ボディの長さは次と等しくなります。

       bodyLen = (2nd_octet << 24) | (3rd_octet << 16) |
                 (4th_octet << 8)  | 5th_octet
        
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オクテット長で、データパケットの一部のみの長さをエンコードします。この長さは2の累乗で、1から1,073,741,824(2の30乗)です。 224以上255未満の1オクテット値で認識されます。部分的な本体の長さは次の値に等しくなります。

       partialBodyLen = 1 << (1st_octet & 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ヘッダーは、この部分の長さを指定します。 (3つのタイプの1つのオクテット、2オクテット、または部分的な)別の長さヘッダーがその部分の後に続きます。パケットの最後の長さのヘッダは、部分的なボディの長さのヘッダであってはなりません。 Partial Body Lengthヘッダーは、パケットの非最終部分にのみ使用できます。

4.2.3. Packet Length Examples
4.2.3. パケット長の例

These examples show ways that new-format packets might encode the packet lengths.

これらの例は、新しい形式のパケットがパケット長をエンコードする方法を示しています。

A packet with length 100 may have its length encoded in one octet: 0x64. This is followed by 100 octets of data.

長さが100のパケットは、その長さが1オクテットでエンコードされる場合があります:0x64。この後に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、0x00、0x01、0x86、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オクテットのデータ。これは可能なエンコードの1つにすぎず、通常のBody Lengthヘッダーがデータの最後の部分をエンコードする限り、Partial Body Lengthヘッダーのサイズに多くのバリエーションが可能です。最後の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.

実装では、リテラル、圧縮、暗号化のいずれの場合でも、データパケットに部分的なボディ長を使用できます。最初の部分的な長さは少なくとも512オクテットの長さでなければなりません。部分的なボディ長は、他のパケットタイプには使用しないでください。

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ものタグを含めることができます。定義されているタグ(10進数)は次のとおりです。

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 13 -- User ID Packet 14 -- Public Subkey Packet 60 to 63 -- Private or Experimental Values

0-予約済み-パケットタグにこの値があってはなりません1-公開鍵暗号化セッションキーパケット2-署名パケット3-対称鍵暗号化セッションキーパケット4-ワンパス署名パケット5-秘密キーパケット6-公開キーパケット7-シークレットサブキーパケット8-圧縮データパケット9-対称的に暗号化されたデータパケット10-マーカーパケット11-リテラルデータパケット12-信頼パケット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.

公開鍵暗号化セッションキーパケットは、メッセージの暗号化に使用されるセッションキーを保持します。ゼロ以上の暗号化されたセッションキーパケット(公開キーまたは対称キー)は、暗号化されたメッセージを保持する対称的に暗号化されたデータパケットに先行する場合があります。メッセージはセッションキーで暗号化され、セッションキー自体が暗号化されて、暗号化されたセッションキーパケットに格納されます。対称的に暗号化されたデータパケットの前には、メッセージが暗号化されるOpenPGPキーごとに1つの公開キー暗号化セッションキーパケットがあります。メッセージの受信者は、公開鍵で暗号化されたセッションキーを見つけ、セッションキーを復号化してから、セッションキーを使用してメッセージを復号化します。

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暗号化のアルゴリズム固有のフィールド

- multiprecision integer (MPI) of RSA encrypted value m**e mod n.

- RSA暗号化値m ** e mod nの多精度整数(MPI)。

Algorithm Specific Fields for Elgamal encryption:

Elgamal暗号化のアルゴリズム固有のフィールド:

- MPI of Elgamal (Diffie-Hellman) value g**k mod p.

- Elgamal(Diffie-Hellman)値のMPI値g ** k mod p。

- MPI of Elgamal (Diffie-Hellman) value m * y**k mod p.

- Elgamal(Diffie-Hellman)値m * y ** k mod pのMPI。

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」は、次のようにセッションキーから導出されます。最初に、セッションキーの前に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つのセッションキーで複数のPKESKを形成し、複数のキーで復号化できるメッセージを形成する場合、実装はキーごとに新しい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.

実装は、ゼロのキーIDを「ワイルドカード」または「投機的」キー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.

署名パケットは、いくつかの公開鍵といくつかのデータの間のバインディングを記述します。最も一般的な署名は、ファイルまたはテキストのブロックの署名と、ユーザー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署名を受け入れる必要があります。実装はV4署名を生成する必要があります(SHOULD)。実装は、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.

0x00:バイナリドキュメントの署名。通常、これは、署名者がそれを所有、作成、または変更されていないことを証明することを意味します。

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.

0x01:正規のテキストドキュメントの署名。通常、これは、署名者がそれを所有、作成、または変更されていないことを証明することを意味します。署名はテキストデータに対して計算され、その行末は<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.

0x02:スタンドアロンシグネチャ。このシグニチャは、独自のサブパケットコンテンツのみのシグニチャです。長さゼロのバイナリドキュメントの署名と同じように計算されます。 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.

0x10:ユーザーIDと公開鍵パケットの一般的な認証。この証明書の発行者は、キーの所有者が実際にユーザー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.

0x11:ユーザーIDと公開鍵パケットのペルソナ認証。この証明書の発行者は、このキーの所有者が指定されたユーザー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.

0x12:ユーザーIDと公開鍵パケットのカジュアルな認証。この認証の発行者は、身元の主張について何気なく検証を行っています。

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.

0x13:ユーザーIDと公開鍵パケットの肯定的な認証。この認証の発行者は、身元の主張の実質的な検証を行いました。

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は認証の受信者に有効性の最終的な権限を与えるため、ある機関のカジュアルな認証が他の機関の肯定的な認証よりも厳格になる可能性があります。これらの分類により、証明機関はきめの細かいクレームを発行できます。

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.

0x18:サブキーバインディング署名この署名は、トップレベルの署名キーによるステートメントであり、サブキーを所有していることを示します。この署名は、ユーザーIDやその他のパケットではなく、サブキー自体で直接計算されます。

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:鍵に直接署名この署名は、鍵に直接計算されます。署名サブパケット内の情報をキーにバインドし、失効キーサブパケットなど、キーに関する情報を提供するサブパケットに使用するのに適しています。また、非自己認証者がキーと名前の間のバインディングではなく、キー自体について作成することを望むステートメントにも適しています。

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.

0x20:鍵失効署名署名は、失効する鍵で直接計算されます。取り消された鍵は使用されません。取り消されるキーまたは承認された取り消しキーによる取り消し署名のみが、有効な取り消し署名と見なされます。

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.

0x28:サブキー失効署名署名は失効するサブキーで直接計算されます。取り消されたサブキーは使用されません。このサブキーにバインドされている最上位の署名キーによる、または承認された失効キーによる失効署名のみが、有効な失効署名と見なされます。

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.

0x30:証明書失効署名この署名は、以前のユーザーID証明書署名(署名クラス0x10〜0x13)を取り消します。失効した署名または承認された失効鍵を発行したのと同じ鍵で発行する必要があります。署名には、失効した署名よりも後の作成日が必要です。

0x40: Timestamp signature. This signature is only meaningful for the timestamp contained in it.

0x40:タイムスタンプ署名。この署名は、それに含まれるタイムスタンプに対してのみ意味があります。

5.2.2. Version 3 Signature Packet Format
5.2.2. バージョン3署名パケット形式

The body of a version 3 Signature Packet contains:

バージョン3の署名パケットの本文には、次のものが含まれます。

- 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オクテットの公開鍵アルゴリズム。

- One-octet hash algorithm.

- 1オクテットハッシュアルゴリズム。

- Two-octet field holding left 16 bits of signed hash value.

- 署名されたハッシュ値の左16ビットを保持する2オクテットのフィールド。

- 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署名のアルゴリズム固有のフィールド:

- multiprecision integer (MPI) of RSA signature value m**d.

- RSA署名値m ** dの多精度整数(MPI)。

Algorithm Specific Fields for DSA signatures:

DSA署名のアルゴリズム固有のフィールド:

- MPI of DSA value r.

- DSA値のMPI r。

- MPI of DSA value s.

- DSA値の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、「データエンコーディング」で説明されているようにエンコードされ、タイプDigestInfoのASN.1値が生成され、PKCS-1ブロックタイプ01 [RFC2313]を使用してパディングされます。これには、ハッシュ値をオクテット文字列としてASN.1構造に挿入する必要があります。使用されているハッシュのタイプのオブジェクト識別子は、構造に含まれています。現在定義されているハッシュアルゴリズムの16進数表現は次のとおりです。

- MD2: 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x02, 0x02

- MD2:0x2A、0x86、0x48、0x86、0xF7、0x0D、0x02、0x02

- MD5: 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x02, 0x05

- MD5:0x2A、0x86、0x48、0x86、0xF7、0x0D、0x02、0x05

- RIPEMD-160: 0x2B, 0x24, 0x03, 0x02, 0x01

- RIPEMD-160:0x2B、0x24、0x03、0x02、0x01

- SHA-1: 0x2B, 0x0E, 0x03, 0x02, 0x1A

- SHA-1:0x2B、0x0E、0x03、0x02、0x1A

The ASN.1 OIDs are:

ASN.1 OIDは次のとおりです。

- MD2: 1.2.840.113549.2.2

- 照らされた:1.840.113549。米国

- MD5: 1.2.840.113549.2.5

- 入り口:1,840.113549.A.K。

- RIPEMD-160: 1.3.36.3.2.1

- RIPEMD-160:1.3.36.3.2.1

- SHA-1: 1.3.14.3.2.26

- しゃー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:0x30、0x20、0x30、0x0C、0x06、0x08、0x2A、0x86、0x48、0x86、0xF7、0x0D、0x02、0x02、0x05、0x00、0x04、0x10

MD5: 0x30, 0x20, 0x30, 0x0C, 0x06, 0x08, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x02, 0x05, 0x05, 0x00, 0x04, 0x10

MD5:0x30、0x20、0x30、0x0C、0x06、0x08、0x2A、0x86、0x48、0x86、0xF7、0x0D、0x02、0x05、0x05、0x00、0x04、0x10

RIPEMD-160: 0x30, 0x21, 0x30, 0x09, 0x06, 0x05, 0x2B, 0x24, 0x03, 0x02, 0x01, 0x05, 0x00, 0x04, 0x14

RIPEMD-160:0x30、0x21、0x30、0x09、0x06、0x05、0x2B、0x24、0x03、0x02、0x01、0x05、0x00、0x04、0x14

SHA-1: 0x30, 0x21, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0E, 0x03, 0x02, 0x1A, 0x05, 0x00, 0x04, 0x14

SHA-1:0x30、0x21、0x30、0x09、0x06、0x05、0x2b、0x0E、0x03、0x02、0x1A、0x05、0x00、0x04、0x14

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署名は、160ビットのサイズのハッシュを使用して、DSAキーのジェネレータ値によって生成されるグループのサイズであるqと一致する必要があります。ハッシュ関数の結果は160ビットの数値として扱われ、DSA署名アルゴリズムで直接使用されます。

5.2.3. Version 4 Signature Packet Format
5.2.3. バージョン4署名パケット形式

The body of a version 4 Signature Packet contains:

バージョン4の署名パケットの本文には以下が含まれます。

- 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オクテットスカラーオクテットカウント。これは、ハッシュされたすべてのサブパケットの長さ(オクテット単位)であることに注意してください。この数だけインクリメントされたポインタは、ハッシュされたサブパケットをスキップします。

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

- ハッシュされていないサブパケットデータを追跡するための2オクテットのスカラーオクテットカウント。これは、ハッシュされていないすべてのサブパケットの長さ(オクテット単位)であることに注意してください。この数だけインクリメントされたポインターは、ハッシュされていないサブパケットをスキップします。

- Unhashed subpacket data. (zero or more subpackets)

- ハッシュ化されていないサブパケットデータ。 (ゼロ以上のサブパケット)

- Two-octet field holding left 16 bits of signed hash value.

- 署名されたハッシュ値の左16ビットを保持する2オクテットのフィールド。

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

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.

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. 署名サブパケット仕様

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.

サブパケットフィールドは、0個以上の署名サブパケットで構成されます。サブパケットの各セットの前には、サブパケットのセットの長さの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:

長さにはタイプオクテットが含まれますが、この長さは含まれません。その形式は「新しい」形式のパケットヘッダー長に似ていますが、部分的なボディ長を持つことはできません。あれは:

if the 1st octet < 192, then lengthOfLength = 1 subpacketLen = 1st_octet

1番目のオクテットが192未満の場合、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 = 255, then
           lengthOfLength = 5
           subpacket length = [four-octet scalar starting at 2nd_octet]
        

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 =署名作成時間3 =署名有効期限4 =エクスポート可能な証明書5 =信頼署名6 =正規表現7 =取り消し可能9 =鍵の有効期限10 =下位互換性のためのプレースホルダー11 =優先対称アルゴリズム12 =取り消し鍵16 =発行者鍵ID 20 =表記データ21 =優先ハッシュアルゴリズム22 =優先圧縮アルゴリズム23 =鍵サーバー設定24 =優先鍵サーバー25 =プライマリユーザーID 26 =ポリシーURL 27 =鍵フラグ28 =署名者のユーザーID 29 =取り消しの理由100から110 =内部またはユーザー定義

An implementation SHOULD ignore any subpacket of a type that it does not recognize.

実装は、認識しないタイプのサブパケットを無視する必要があります(SHOULD)。

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.

サブパケットタイプのビット7は「クリティカル」ビットです。設定されている場合、それはサブパケットが署名の評価者が認識するために重要なものであることを示します。クリティカルとしてマークされているが、評価ソフトウェアにとって未知のサブパケットが検出された場合、評価者は、署名にエラーがあると見なすべきである(SHOULD)。

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

実装は、「設定」を実装する必要があります(SHOULD)。

5.2.3.2. Signature Subpacket Types
5.2.3.2. シグニチャサブパケットタイプ

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.

現在、いくつかのサブパケットが定義されています。一部のサブパケットは署名自体に適用され、一部はキーの属性です。自己署名で見つかったサブパケットは、キー自体によって作成されたユーザーID証明書に配置されます。キーには複数のユーザーIDがあり、したがって複数の自己署名と異なるサブパケットを持つ場合があることに注意してください。

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.

自己署名は、署名が参照するキーによって作成されたバインディング署名です。自己署名には、証明書署名(タイプ0x10-0x13)、直接鍵署名(タイプ0x1f)、およびサブキーバインディング署名(タイプ0x18)の3つのタイプがあります。証明書の自己署名の場合、各ユーザーIDに自己署名があり、そのため、これらの自己署名に異なるサブパケットがある場合があります。サブキーバインディング署名の場合、実際には各サブキーに自己署名があります。証明書の自己署名に表示されるサブパケットはユーザー名に適用され、サブキーの自己署名に表示されるサブパケットはサブキーに適用されます。最後に、ダイレクトキーシグネチャのサブパケットはキー全体に適用されます。

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.

ソフトウェアの実装では、自己署名の設定サブパケットを可能な限り狭く解釈する必要があります。たとえば、鍵に2つのユーザー名、AliceとBobがあるとします。 Aliceが対称アルゴリズムCAST5を好み、BobがIDEAまたはTriple-DESを好みます。ソフトウェアがこのキーをアリスの名前で見つけた場合、推奨されるアルゴリズムはCAST5で、ソフトウェアがボブの名前でキーを見つけた場合、推奨されるアルゴリズムはIDEAです。キーがキーIDによって特定されている場合、キーのデフォルトのユーザーIDのアルゴリズムは、デフォルトの対称アルゴリズムを提供します。

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.

サブパケットは、シグニチャのハッシュ化された、またはハッシュ化されていないサブパケットセクションのいずれかにあります。サブパケットがハッシュされていない場合、その中の情報は適切な署名の一部ではないため、決定的なものとは見なされません。

5.2.3.3. Signature creation time
5.2.3.3. 署名作成時間

(4 octet time field)

(4オクテットの時間フィールド)

The time the signature was made.

署名が行われた時刻。

MUST be present in the hashed area.

ハッシュされた領域に存在する必要があります。

5.2.3.4. Issuer
5.2.3.4. Issuer

(8 octet key ID)

(8オクテットキー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. キーの有効期限

(4 octet time field)

(4オクテットの時間フィールド)

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. 優先対称アルゴリズム

(sequence of one-octet values)

(1オクテットの値のシーケンス)

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.

鍵保有者が使用することを好むアルゴリズムを示す対称アルゴリズム番号。サブパケットの本体は、最も優先されるものが最初にリストされているオクテットの順序付きリストです。リストされているアルゴリズムのみが受信者のソフトウェアでサポートされていると想定されています。セクション9のアルゴリズム番号。これは自己署名でのみ見つかります。

5.2.3.7. Preferred hash algorithms
5.2.3.7. 優先ハッシュアルゴリズム

(array of one-octet values)

(1オクテット値の配列)

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.

キーホルダーが受信することを好むアルゴリズムを示すメッセージダイジェストアルゴリズム番号。優先対称アルゴリズムと同様に、リストは順序付けられています。アルゴリズム番号はセクション6にあります。これは自己署名でのみ見つかります。

5.2.3.8. Preferred compression algorithms
5.2.3.8. 推奨される圧縮アルゴリズム

(array of one-octet values)

(1オクテット値の配列)

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.

キーホルダーが使用することを好むアルゴリズムを示す圧縮アルゴリズム番号。優先対称アルゴリズムと同様に、リストは順序付けられています。アルゴリズム番号はセクション6にあります。このサブパケットが含まれていない場合は、ZIPが推奨されます。ゼロは、非圧縮データが優先されることを示します。鍵の所有者のソフトウェアには、その実装に圧縮ソフトウェアがない場合があります。これは自己署名でのみ見つかります。

5.2.3.9. Signature expiration time
5.2.3.9. 署名の有効期限

(4 octet time field)

(4オクテットの時間フィールド)

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. 輸出可能な認証

(1 octet of exportability, 0 for not, 1 for exportable)

(1オクテットのエクスポート可能、0はエクスポート不可、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.

このサブパケットは、証明書の署名が「エクスポート可能」であるかどうかを示し、署名の発行者以外のユーザーが使用します。パケット本体には、署名がエクスポート可能かどうかを示すブールフラグが含まれています。このパケットが存在しない場合、証明書はエクスポート可能です。これは、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.

エクスポートできない、つまり「ローカル」証明書は、ユーザーがそのユーザーの実装内でのみキーを有効としてマークするために作成した署名です。したがって、実装が別のユーザーに転送するためにユーザーのキーのコピーを準備するとき(これはキーを「エクスポートする」プロセスです)、ローカル証明書の署名はキーから削除されます。

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.

一部の実装は、単一のユーザー(たとえば、鍵サーバー)の関心を表していない。このような実装では、ローカル証明書を、処理するすべてのキーから常にトリミングします。

5.2.3.11. Revocable
5.2.3.11. 取消可能

(1 octet of revocability, 0 for not, 1 for revocable)

(1オクテットの取り消し可能、0は取り消し不可、1は取り消し可能)

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. 信頼署名

(1 octet "level" (depth), 1 octet of trust amount)

(1オクテットの「レベル」(深さ)、1オクテットの信頼量)

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.

署名者は、キーが指定されたレベルで有効であるだけでなく信頼できるとも主張します。レベル0は、通常の有効性署名と同じ意味です。レベル1は、本体の2番目のオクテットが信頼度を指定して、署名された鍵が有効な信頼できる紹介者であると断言されることを意味します。レベル2は、署名された鍵がレベル1の信頼署名を発行するために信頼されていることをアサートすること、つまり「メタイントロデューサ」であることを意味します。一般に、レベルnの信頼署名は、鍵がレベルn-1の信頼署名を発行するために信頼されていることを表明します。信頼量は0〜255の範囲で、120未満の値は部分的な信頼を示し、120以上の値は完全な信頼を示すと解釈されます。実装は、部分信頼の場合は60、完全信頼の場合は120の値を発行する必要があります(SHOULD)。

5.2.3.13. Regular expression
5.2.3.13. 正規表現

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

拡張される信頼の範囲を制限するために、信頼署名パケット(レベル> 0)と組み合わせて使用​​されます。このパケットの本文の正規表現に一致するユーザーIDのターゲットキーによる署名のみが、信頼署名サブパケットによって拡張された信頼を持ちます。正規表現は、ヘンリースペンサーの「ほぼパブリックドメイン」の正規表現パッケージと同じ構文を使用します。構文の説明は、以下のセクションにあります。

5.2.3.14. Revocation key
5.2.3.14. 失効鍵

(1 octet of class, 1 octet of algid, 20 octets of fingerprint)

(1オクテットのクラス、1オクテットのアルジッド、20オクテットの指紋)

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 is found on a self-signature.

指定されたキーに対して、このキーの失効署名を発行することを承認します。クラスオクテットにはビット0x80が設定されている必要があります。ビット0x40が設定されている場合、これは失効情報が機密であることを意味します。他のビットは、他の種類の承認への将来の拡張用です。これは自己署名に記載されています。

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.

「sensitive」フラグが設定されている場合、キーホルダーは、このサブパケットに実世界の機密関係を説明するプライベート信頼情報が含まれていると感じます。このフラグが設定されている場合、実装は、データを使用可能にする必要がある場合を除いて、この署名を他のユーザーにエクスポートしないでください。署名が指定された取り消し者に送信されるとき、またはその取り消し者からの取り消し署名が伴う場合。エクスポートする必要がある他のサブパケットと組み合わされないように、このサブパケットを別のシグネチャ内に分離することが適切な場合があることに注意してください。

5.2.3.15. Notation Data
5.2.3.15. 表記データ

(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オクテットのフラグ、2オクテットの名前の長さ(M)、2オクテットの値の長さ(N)、Mオクテットの名前データ、Nオクテットの値データ)

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.

このサブパケットは、発行者が作成したい署名の「表記」を記述します。表記には名前と値があり、それぞれオクテットの文字列です。署名には複数の表記がある場合があります。表記は、署名の発行者が作成する必要のある任意の拡張子に使用できます。 「フラグ」フィールドは、フラグの4オクテットを保持します。

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.

最初のオクテット:0x80 =人間が読める形式。このメモはテキストであり、人から人へのメモであり、ソフトウェアには意味がありません。その他のオクテット:なし。

5.2.3.16. Key server preferences
5.2.3.16. 主要なサーバー設定

(N octets of flags)

(フラグのNオクテット)

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.

最初のオクテット:0x80 = No-modifyキーホルダーは、このキーをキーホルダーまたはキーサーバーの管理者のみが変更または更新することを要求します。

This is found only on a self-signature.

これは自己署名でのみ見つかります。

5.2.3.17. Preferred key server
5.2.3.17. 優先キーサーバー

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

これは、キーホルダーが更新に使用することを希望するキーサーバーのURLです。複数のユーザーIDを持つキーには、ユーザーIDごとに優先キーサーバーを設定できることに注意してください。これはURLであるため、キーサーバーは実際にはftp、http、fingerなどによって取得されたキーのコピーである場合もあります。

5.2.3.18. Primary user id
5.2.3.18. プライマリユーザーID

(1 octet, boolean)

(1オクテット、ブール)

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.

これは、このユーザーIDがこのキーのメインユーザーIDであるかどうかを示すユーザーIDの自己署名のフラグです。実装では、プライマリユーザーIDを参照して、設定などのあいまいさを解決するのが妥当です。このフラグが存在しない場合、その値はゼロです。キー内の複数のユーザーIDがプライマリーとしてマークされている場合、実装はあいまいさを解決するかもしれません。

5.2.3.19. Policy URL
5.2.3.19. ポリシーURL

(String)

(ストリング)

This subpacket contains a URL of a document that describes the policy that the signature was issued under.

このサブパケットには、署名の発行に使用されたポリシーを説明するドキュメントのURLが含まれています。

5.2.3.20. Key Flags
5.2.3.20. 主なフラグ

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

このサブパケットには、キーに関する情報を保持するバイナリフラグのリストが含まれています。これはオクテットの文字列であり、実装は固定サイズを想定してはなりません。これは、時間とともに成長できるようにするためです。リストが実装で期待されているよりも短い場合、明記されていないフラグはゼロと見なされます。定義されているフラグは次のとおりです。

First octet:

First octet:

0x01 - This key may be used to certify other keys.

0x01-このキーは、他のキーを認証するために使用できます。

0x02 - This key may be used to sign data.

0x02-このキーはデータの署名に使用できます。

0x04 - This key may be used to encrypt communications.

0x04-このキーは通信の暗号化に使用できます。

0x08 - This key may be used to encrypt storage.

0x08-このキーはストレージの暗号化に使用できます。

0x10 - The private component of this key may have been split by a secret-sharing mechanism.

0x10-この鍵の秘密コンポーネントは、秘密共有メカニズムによって分割された可能性があります。

0x80 - The private component of this key may be in the possession of more than one person.

0x80-この鍵の秘密コンポーネントは複数の人が所有している可能性があります。

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.

「分割キー」(0x10)および「グループキー」(0x80)フラグは、自己署名にのみ配置されます。証明書の署名では意味がありません。それらは、フラグが適用されるキーを参照するダイレクトキーシグネチャ(タイプ0x1f)またはサブキーシグネチャ(タイプ0x18)にのみ配置する必要があります。

5.2.3.21. Signer's User ID
5.2.3.21. 署名者のユーザー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.

このサブパケットにより、キーホルダーは署名を担当するユーザーIDを指定できます。多くのキーホルダーは、ビジネスコミュニケーションやパーソナルコミュニケーションなど、さまざまな目的で単一のキーを使用します。このサブパケットにより、そのようなキーホルダーは、どの役割が署名を行っているかを示すことができます。

5.2.3.22. Reason for Revocation
5.2.3.22. 取消の理由

(1 octet of revocation code, N octets of reason string)

(1オクテットの失効コード、Nオクテットの理由文字列)

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:

最初のオクテットには、取り消しの理由を示す機械可読コードが含まれています。

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-理由が指定されていない(鍵の失効または証明書の失効)0x01-鍵が優先される(鍵の失効)0x02-鍵の素材が危険にさらされている(鍵の失効)0x03-鍵が使用されなくなった(鍵の失効)0x20-ユーザーID情報がありません有効期間が長くなりました(証明書の失効)

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.

失効コードの後に​​は、人間が読める形式(UTF-8)で失効の理由に関する情報を提供するオクテットの文字列があります。文字列はnull、つまり長さがゼロの場合があります。サブパケットの長さは、理由文字列の長さに1を加えたものです。

5.2.4. Computing Signatures
5.2.4. 署名の計算

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.

署名が鍵を介して作成される場合、ハッシュデータはオクテット0x99で始まり、2オクテットの長さの鍵が続き、次に鍵パケットの本体が続きます。 (これは2オクテット長のキーパケットの古いスタイルのパケットヘッダーであることに注意してください。)サブキー署名(タイプ0x18)は、メインキーと同じ形式を使用してサブキーをハッシュします。鍵取り消し署名(タイプ0x20および0x28)は、取り消される鍵のみをハッシュします。

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.

証明書署名(タイプ0x10〜0x13)は、上記のデータの後に、キーにバインドされているユーザーIDをハッシュコンテキストにハッシュします。 V3認定は、ヘッダーなしで名前パケットの内容をハッシュします。 V4証明書は、定数0xb4(長さの長さがゼロに設定された古いスタイルのパケットヘッダー)、ユーザー名の長さを示す4オクテットの数値、ユーザー名のデータをハッシュします。

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.

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署名も6オクテットの最後のトレーラーでハッシュされます。署名パケットのバージョン、つまり0x04。 0xFF;署名パケットからのハッシュデータの長さである4オクテットのビッグエンディアン数(この数には、これらの最後の6オクテットは含まれないことに注意してください)

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. サブパケットヒント

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.

実装は、2つの必須サブパケット、作成時間と発行者をサブパケットリストの最初のサブパケットとして配置する必要があります。これは、実装者がそれらを見つけやすくするためです。

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.

署名がサブパケットに矛盾する情報を含むことは確かに可能です。たとえば、シグニチャには、プリファレンスの複数のコピーまたは複数の有効期限が含まれる場合があります。ほとんどの場合、実装は署名の最後のサブパケットを使用する必要があります(SHOULD)が、より意味のある競合解決スキームを使用してもかまいません(MAY)。意図的に競合の解決を実装者に任せていることに注意してください。ほとんどの衝突は単に構文エラーであり、ここでの希望に満ちた言語は、レシーバーが受け入れるものに寛大であり、クリエーターが生成するものにけちをするよう圧力をかけることを可能にします。

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.

一部の明らかな競合は実際に意味をなす場合があります。たとえば、キーホルダーに同じRSAキーマテリアルを共有するV3キーとV4キーがあるとします。これらのキーのいずれかは、他のキーによって作成された署名を検証できます。これらのキーを署名に明示的に結び付ける方法として、署名に各キーの発行者サブパケットを含めるのが妥当な場合があります。

5.3. Symmetric-Key Encrypted Session-Key Packets (Tag 3)
5.3. 対称鍵暗号化セッション鍵パケット(タグ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.

対称鍵暗号化セッション鍵パケットは、メッセージの暗号化に使用されるセッション鍵の対称鍵暗号化を保持します。ゼロ以上の暗号化セッションキーパケットおよび/または対称キー暗号化セッションキーパケットが、暗号化メッセージを保持する対称暗号化データパケットの前にある場合があります。メッセージはセッションキーで暗号化され、セッションキー自体が暗号化されて、暗号化セッションキーパケットまたは対称キー暗号化セッションキーパケットに格納されます。

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

対称的に暗号化されたデータパケットの前に1つ以上の対称鍵で暗号化されたセッションキーパケットがある場合、それぞれがメッセージの復号化に使用できるパスフレーズを指定します。これにより、メッセージをいくつかの公開鍵および1つ以上のパスフレーズに暗号化できます。このパケットタイプは新しく、PGP 2.xまたはPGP 5.0では生成されません。

The body of this packet consists of:

このパケットの本体は、次のもので構成されています。

- A one-octet version number. The only currently defined version is 4.

- 1オクテットのバージョン番号。現在定義されている唯一のバージョンは4です。

- A one-octet number describing the symmetric algorithm used.

- 使用される対称アルゴリズムを表す1オクテットの数値。

- A string-to-key (S2K) specifier, length as defined above.

- string-to-key(S2K)指定子、上記で定義された長さ。

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

暗号化されたセッションキーが存在しない場合(パケット長とS2K指定子サイズに基づいて検出可能)、パスフレーズに適用されたS2Kアルゴリズムは、対称からの対称暗号アルゴリズムを使用して、ファイルを復号化するためのセッションキーを生成します。 -Key暗号化セッションキーパケット。

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.

暗号化されたセッションキーが存在する場合、パスフレーズにS2Kアルゴリズムを適用した結果を使用して、IVがすべて0のCFBモードを使用して、その暗号化されたセッションキーフィールドのみが復号化されます。復号化の結果は、次の対称暗号化データパケットの暗号化に使用される対称キー暗号化アルゴリズムを指定する1オクテットのアルゴリズム識別子と、それに続くセッションキーオクテット自体で構成されます。

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.

注:この復号にはすべてゼロのIVが使用されるため、S2K指定子は、Salted S2KまたはIterated-Salted S2Kのいずれかのsalt値を使用する必要があります。 salt値は、パスフレーズが再利用された場合でも、復号化キーが繰り返されないことを保証します。

5.4. One-Pass Signature Packets (Tag 4)
5.4. ワンパス署名パケット(タグ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.

ワンパス署名パケットは、署名されたデータの前にあり、署名を検証するために必要なハッシュの計算を受信者が開始できるようにするのに十分な情報が含まれています。これにより、署名パケットをメッセージの最後に配置できるため、署名者は署名されたメッセージ全体を1回のパスで計算できます。

A One-Pass Signature does not interoperate with PGP 2.6.x or earlier.

ワンパス署名は、PGP 2.6.x以前とは相互運用できません。

The body of this packet consists of:

The body of this packet consists of:

- A one-octet version number. The current version is 3.

- 1オクテットのバージョン番号。現在のバージョンは3です。

- A one-octet signature type. Signature types are described in section 5.2.1.

- 1オクテットの署名タイプ。署名タイプについては、セクション5.2.1で説明します。

- A one-octet number describing the hash algorithm used.

- 使用されるハッシュアルゴリズムを表す1オクテットの数値。

- A one-octet number describing the public key algorithm used.

- 使用される公開鍵アルゴリズムを表す1オクテットの数値。

- An eight-octet number holding the key ID of the signing key.

- 署名鍵の鍵IDを保持する8オクテットの数値。

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

- 署名がネストされているかどうかを示すフラグを保持する1オクテットの数値。ゼロの値は、次のパケットが、同じメッセージデータに適用される別の署名を記述する別のワンパス署名パケットであることを示します。

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. キーマテリアルパケット

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

公開鍵パケットは、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.

公開サブキーパケット(タグ14)の形式は公開キーパケットとまったく同じですが、サブキーを示します。 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ではコメントパケットが出力されなかったため、このタグは再利用のために選択されましたが、それらは適切に無視されました。公開サブキーパケットはPGP 2.6.xによって無視され、失敗することはないため、ある程度の下位互換性があります。

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.

秘密鍵パケットには、公開鍵マテリアルを含む公開鍵パケット内のすべての情報が含まれますが、すべての公開鍵フィールドの後に秘密鍵マテリアルも含まれます。

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.

シークレットサブキーパケット(タグ7)は、シークレットキーパケットのサブキーアナログであり、形式はまったく同じです。

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のパケットは、最初にPGP 2.6で生成されました。バージョン2パケットは、バージョン3パケットと形式は同じですが、PGP 2.5以前で生成されます。 V2パケットは非推奨であり、生成してはなりません(MUST NOT)。 PGP 5.0では、新しいフィールドとセマンティクスを備えたバージョン4パケットが導入されました。 PGP 2.6.xは、バージョン3以降のキーマテリアルパケットを受け入れません。

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実装は、バージョン4形式で鍵を作成する必要があります(SHOULD)。実装は、古いソフトウェアとの相互運用性を保証するためにV3キーを生成してもよい(MAY)。ただし、V4キーはV3キーの一部のセキュリティの欠陥を修正することに注意してください。これらの欠陥について以下に説明します。実装は、RSA以外の公開鍵アルゴリズムを使用してV3鍵を作成してはなりません(MUST NOT)。

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 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公開暗号化指数のMPI e。

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キーには3つの弱点があるため、下位互換性のためにのみ使用する必要があります(SHOULD)。第1に、キー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公開鍵のアルゴリズム固有のフィールド:

- multiprecision integer (MPI) of RSA public modulus n;

- RSAパブリックモジュラスnの多精度整数(MPI)。

- MPI of RSA public encryption exponent e.

- RSA公開暗号化指数のMPI e。

Algorithm Specific Fields for DSA public keys:

DSA公開鍵のアルゴリズム固有のフィールド:

- MPI of DSA prime p;

- DSAプライムpのMPI。

- MPI of DSA group order q (q is a prime divisor of p-1);

- DSAグループ次数qのMPI(qはp-1の素数)。

- MPI of DSA group generator g;

- DSAグループジェネレーターのMPI g;

- MPI of DSA public key value y (= g**x where x is secret).

- DSA公開鍵値y(= g ** x、xは秘密)のMPI。

Algorithm Specific Fields for Elgamal public keys:

Elgamal公開鍵のアルゴリズム固有のフィールド:

- MPI of Elgamal prime p;

- Elgamal素数pのMPI。

- MPI of Elgamal group generator g;

- ElgamalグループジェネレーターのMPI g;

- MPI of Elgamal public key value y (= g**x where x is secret).

- Elgamal公開鍵の値y(= g ** x、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.

秘密鍵と秘密サブキーのパケットには、公開鍵と公開サブキーのパケットのすべてのデータが、暗号化された形式で追加されたアルゴリズム固有の秘密鍵のデータとともに含まれています。

The packet contains:

パケットに含まれるもの:

- A Public Key or Public Subkey packet, as described above

- 上記の公開キーまたは公開サブキーパケット

- 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オクテットの初期ベクトル(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).

- アルゴリズム固有部分の平文の2オクテットチェックサム(すべてのオクテットの合計、mod 65536)。

Algorithm Specific Fields for RSA secret keys:

RSA秘密鍵のアルゴリズム固有のフィールド:

- multiprecision integer (MPI) of RSA secret exponent d.

- RSA秘密指数の多重精度整数(MPI)d。

- 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の乗法逆数、mod q。

Algorithm Specific Fields for DSA secret keys:

DSA秘密鍵のアルゴリズム固有のフィールド:

- MPI of DSA secret exponent x.

- DSA秘密指数xのMPI。

Algorithm Specific Fields for Elgamal secret keys:

Elgamal秘密鍵のアルゴリズム固有のフィールド:

- 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)。単純なハッシュは下位互換性のためです。 MPIを暗号化するための暗号は、秘密鍵パケットで指定されます。

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.

秘密データの暗号化/復号化は、パスフレーズから作成されたキーとパケットからの初期ベクトルを使用して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ビットカウントプレフィックスを含め、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ビットのチェックサムは、アルゴリズム固有のすべてのオクテット(MPIプレフィックスとデータを含む)の平文の代数和、mod 65536です。 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.

圧縮データパケットには圧縮データが含まれています。通常、このパケットは、暗号化されたパケットのコンテンツとして、または署名またはワンパス署名パケットの後に見つかり、リテラルデータパケットを含みます。

The body of this packet consists of:

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.

圧縮データパケットの本体には、パケットのセットを圧縮するブロックが含まれています。メッセージの形成方法の詳細については、「パケットの構成」を参照してください。

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 1951 DEFLATEブロックで圧縮されます。 PGP V2.6は13ビットの圧縮を使用することに注意してください。実装でより多くの圧縮ビットを使用する場合、PGP V2.6は圧縮を解凍できません。

ZLIB-compressed packets are compressed with RFC 1950 ZLIB-style blocks.

ZLIBで圧縮されたパケットは、RFC 1950のZLIBスタイルのブロックで圧縮されます。

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

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

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.

使用される対称暗号は、対称暗号化データパケットの前にある公開鍵または対称鍵暗号化セッションキーパケットで指定できます。その場合、暗号化アルゴリズムのオクテットは、暗号化される前にセッションキーの前に付加されます。暗号化されたデータの前にこれらのタイプのパケットがない場合、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シフトサイズは暗号のブロックサイズと同じです。初期ベクトル(IV)はすべてゼロとして指定されます。 IVを使用する代わりに、OpenPGPは暗号化される前にデータに10オクテットの文字列をプレフィックスします。最初の8つのオクテットはランダムで、9番目と10番目のオクテットはそれぞれ7番目と8番目のオクテットのコピーです。最初の10オクテットを暗号化した後、暗号ブロックサイズが8オクテット以下の場合、CFB状態は再同期されます。暗号文の最後の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.

PGPの実験的なバージョンでは、このパケットをリテラルパケットとして使用していましたが、リリースされたバージョンのPGPは、このタグ付きのリテラルパケットを生成していません。 PGP 5.xでは、このパケットは再割り当てされ、マーカーパケットとして使用するために予約されています。

The body of this packet consists of:

このパケットの本体は、次のもので構成されています。

- The three octets 0x50, 0x47, 0x50 (which spell "PGP" in UTF-8).

- 3つのオクテット0x50、0x47、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.

リテラルデータパケットには、メッセージの本文が含まれます。これ以上解釈されないデータ。

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」(0x62)の場合、リテラルパケットにはバイナリデータが含まれます。 't'(0x74)の場合は、テキストデータが含まれているため、行末をローカルフォームに変換するか、他のテキストモードを変更する必要があります。 RFC 1991では、マシンローカル変換の「ローカル」モードとして「l」の値も定義されています。この使用法は廃止されました。

- File name as a string (one-octet length, followed by file name), if the encrypted data should be saved as a file.

- File name as a string (one-octet length, followed by file name), if the encrypted data should be saved as a file.

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.

特別な名前「_CONSOLE」が使用されている場合、メッセージは「あなたの目だけのためのもの」と見なされます。これは、メッセージデータは非常に機密性が高いため、受信プログラムはより慎重に処理する必要があることを示しています。たとえば、受信したデータをディスクに保存しないようにします。

- 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, along with other information that implementing software uses for trust information.

Trustパケットはキーリング内でのみ使用され、通常はエクスポートされません。信頼パケットには、キーホルダーが信頼できる紹介者であるというユーザーの仕様を記録するデータと、実装ソフトウェアが信頼情報に使用する他の情報が含まれています。

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

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.

ユーザーIDパケットは、キーホルダーの名前と電子メールアドレスを表すためのデータで構成されています。慣例により、RFC 822メール名が含まれていますが、その内容に制限はありません。ヘッダーのパケット長は、ユーザーIDの長さを指定します。テキストの場合、UTF-8でエンコードされます。

6. Radix-64 Conversions
6. Radix-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データ構造の基礎となるバイナリビットストリームを変更しないため、安全でないチャネルの要件を満たす印刷可能なエンコーディングスキームで十分です。 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エンコーディングは、バイナリデータのbase64エンコーディングとチェックサムの2つの部分で構成されています。 base64エンコーディングは、MIME base64 content-transfer-encoding [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.

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.

6.1. An Implementation of the CRC-24 in "C"
6.1. An Implementation of the CRC-24 in "C"

#define CRC24_INIT 0xb704ceL #define CRC24_POLY 0x1864cfbL

#define CRC24_INIT 0xb704ceL #define CRC24_POLY 0x1864cfbL

       typedef long crc24;
       crc24 crc_octets(unsigned char *octets, size_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;
       }
        
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アーマーにエンコードすると、特定のヘッダーがデータの周囲に配置されるため、OpenPGPは後でデータを再構築できます。 OpenPGPは、ヘッダーを使用して、ASCIIアーマーでエンコードされているデータの種類をユーザーに通知します。

Concatenating the following data creates ASCII Armor:

次のデータを連結すると、ASCIIアーマーが作成されます。

- An Armor Header Line, appropriate for the type of data

- データのタイプに適した鎧ヘッダー行

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

- アーマーテールはアーマーヘッダーラインに依存します。

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: BEGIN PGP MESSAGE Used for signed, encrypted, or compressed files.

アーマーヘッダーラインは、ヘッダーラインテキストの両側にある5つのダッシュ( '-'、0x2D)で囲まれた適切なヘッダーラインテキストで構成されます。ヘッダー行のテキストは、Armorでエンコードされるデータのタイプと、そのエンコード方法に基づいて選択されます。ヘッダー行のテキストには、次の文字列が含まれます。BEGIN PGP MESSAGE署名、暗号化、または圧縮されたファイルに使用されます。

BEGIN PGP PUBLIC KEY BLOCK Used for armoring public keys

BEGIN PGP PUBLIC KEY BLOCK公開鍵の防御に使用

BEGIN PGP PRIVATE KEY BLOCK Used for armoring private keys

BEGIN PGP PRIVATE KEY BLOCK秘密鍵の防御に使用

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マルチパートメッセージに使用されます。鎧はYパーツ間で分割され、これはYからX番目のパーツです。

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マルチパートメッセージに使用されます。これは、指定されていない数のパートのX番目のパートです。 MESSAGE-IDアーマーヘッダーを使用する必要があります。

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.

BEGIN PGP SIGNATURE分離署名、OpenPGP / MIME署名、およびクリア署名されたメッセージに続く性質に使用されます。 PGP 2.xでは、切り離された署名の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.

アーマーヘッダーは、ユーザーまたは受信OpenPGP実装にメッセージのデコードまたは使用方法に関する情報を提供できる文字列のペアです。アーマーヘッダーはアーマーの一部であり、メッセージの一部ではないため、メッセージに適用された署名によって保護されません。

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.

アーマーヘッダーの形式は、キーと値のペアの形式です。コロン( ':' 0x38)と単一のスペース(0x20)は、キーと値を区切ります。 OpenPGPは、不適切にフォーマットされたアーマーヘッダーをASCIIアーマーの破損と見なす必要があります。不明なキーはユーザーに報告されますが、OpenPGPはメッセージの処理を続行する必要があります。

Currently defined Armor Header Keys are:

現在定義されているアーマーヘッダーキーは次のとおりです。

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

-「MessageID」、32文字の印刷可能な文字列。文字列は、 "PART X"アーマーヘッダーを使用するマルチパートメッセージのすべてのパートで同じである必要があります。 MessageID文字列は、メールの受信者がメッセージのすべての部分を互いに関連付けることができるように十分に一意である必要があります。適切なチェックサムまたは暗号化ハッシュ関数で十分です。

- "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 Latin-5のような文字セットや日本語の文字セットに満足しているため、UTF-8を必要としないユーザーのコミュニティもあります。このような場合、実装はこのヘッダーキーを使用してUTF-8のデフォルトをオーバーライドできます(MAY)。実装はこのキーとそれが気にする翻訳を実装してもよい(MAY)。実装はそれを無視して、すべてのテキストがUTF-8であると想定してもよい(MAY)。

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は、マルチパートメッセージ内にある場合を除き、表示しないでください。まったく表示される場合は、完全にランダムな値を含めるのではなく、完成した(暗号化、署名などの)メッセージから決定論的な方法で計算する必要があります。これは、正当な受信者が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."

アーマーテールラインは、アーマーヘッダーラインと同じ方法で構成されますが、「BEGIN」という文字列は「END」という文字列に置き換えられます。

6.3. Encoding Binary in Radix-64
6.3. Radix-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.

エンコードプロセスは、24ビットの入力ビットのグループを4つのエンコードされた文字の出力文字列として表します。左から右へと進み、24ビット入力グループは、3つの8ビット入力グループを連結することによって形成されます。これらの24ビットは、4つの連結された6ビットグループとして扱われ、それぞれがRadix-64アルファベットの1桁に変換されます。 Radix-64エンコーディングを使用してビットストリームをエンコードする場合、ビットストリームは最上位ビットが最初に並べられると想定する必要があります。つまり、ストリームの最初のビットは最初の8ビットオクテットの上位ビットになり、8番目のビットは最初の8ビットオクテットの下位ビットになります。

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

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

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(パッド)= 15 P 32 g 49 x 16 Q 33 h 50 y

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つの埋め込み文字(=)が出力に追加されます。

6.4. Decoding Radix-64
6.4. Radix-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. Radix-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 16進数:1 4 f b 9 c | 0 3 d 9 7 e 8ビット:00010100 11111011 10011100 | 00000011 11011001 11111110 6ビット:000101 001111 101110 011100 | 000000 111101 100111 111110 10進数:5 15 46 28 0 61 37 62出力:F P u c A 9 l +

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 Hex:1 4 f b 9 c | 0 3 d 9 8ビット:00010100 11111011 10011100 | 00000011 11011001パッド、00 6ビット:000101 001111 101110 011100 | 000000 111101 100100 10進数:5 15 46 28 0 61 36パッド= =出力:F P u c A 9 k =

       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      =      =
        
6.6. Example of an ASCII Armored Message
6.6. ASCII装甲メッセージの例
  -----BEGIN PGP MESSAGE-----
  Version: OpenPrivacy 0.99
        
  yDgBO22WxBHv7O8X7O/jygAEzol56iUKiXmV+XmpCtmpqQUKiQrFqclFqUDBovzS
  vBSFjNSiVHsuAA==
  =njUN
  -----END PGP MESSAGE-----
        

Note that this example is indented by two spaces.

この例は2つのスペースでインデントされていることに注意してください。

7. Cleartext signature framework
7. クリアテキスト署名フレームワーク

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ストリーム自体を改造せずにテキストのオクテットストリームに署名することが望ましいので、特別なソフトウェアがなくても署名されたテキストを読み取ることができます。署名をこのようなクリアテキストにバインドするために、このフレームワークが使用されます。 (RFC 2015では、MIMEをサポートする環境の署名メッセージをクリアする別の方法が定義されていることに注意してください。)

The cleartext signed message consists of:

クリアテキストで署名されたメッセージは、次のもので構成されます。

- The cleartext header '-----BEGIN PGP SIGNED MESSAGE-----' on a single line,

- クリアテキストヘッダー '----- BEGIN PGP SIGNED MESSAGE -----'(1行)

- One or more "Hash" Armor Headers,

- 1つ以上の「ハッシュ」アーマーヘッダー、

- Exactly one empty line not included into the message digest,

- メッセージダイジェストに含まれていない1行の空行

- The dash-escaped cleartext that is included into the message digest,

- メッセージダイジェストに含まれるダッシュエスケープされたクリアテキスト、

- The ASCII armored signature(s) including the '-----BEGIN PGP SIGNATURE-----' Armor Header and Armor Tail Lines.

- '----- BEGIN PGP SIGNATURE -----'アーマーヘッダーおよびアーマーテールラインを含むASCII装甲署名。

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互換性のためにそれらを省略してもよいものとします。署名で複数のメッセージダイジェストが使用されている場合、「ハッシュ」アーマーヘッダーには、使用されたメッセージダイジェストのカンマ区切りのリストが含まれます。

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.

メッセージのクリアテキストコンテンツもダッシュエスケープする必要があります。

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.

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.

   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.
        

Also, any trailing whitespace (spaces, and tabs, 0x09) at the end of any line is ignored when the cleartext signature is calculated.

また、クリアテキストの署名が計算されるとき、行末の末尾の空白(スペース、タブ、0x09)は無視されます。

8. Regular Expressions
8. 正規表現

A regular expression is zero or more branches, separated by '|'. It matches anything that matches one of the branches.

正規表現は、 '|'で区切られた0個以上のブランチです。これは、ブランチの1つに一致するすべてのものに一致します。

A branch is zero or more pieces, concatenated. It matches a match for the first, followed by a match for the second, etc.

ブランチは連結された0個以上のピースです。最初の一致に一致し、2番目の一致が続く、など。

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つ以上の一致のシーケンスと一致します。アトムの後に「?」アトムの一致、またはnull文字列に一致します。

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

アトムは、括弧内の正規表現(正規表現の一致に一致)、範囲(下記を参照)、「。」 (任意の1文字に一致)、 '^'(入力文字列の先頭にあるnull文字列に一致)、 '$'(入力文字列の末尾にあるnull文字列に一致)、 '\'の後に1文字が続く(その文字に一致する)、または他の重要性のない単一の文字(その文字に一致する)。

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.

範囲は、[]で囲まれた文字のシーケンスです。通常、シーケンスの任意の1文字と一致します。シーケンスが「^」で始まる場合は、シーケンスの残りの文字以外の任意の1文字と一致します。シーケンス内の2つの文字が「-」で区切られている場合、これはそれらの間のASCII文字の完全なリストの省略形です(たとえば、「[0-9]」は任意の10進数と一致します)。シーケンスにリテラル ']'を含めるには、それを最初の文字にします(可能な '^'の後)。リテラル「-」を含めるには、最初または最後の文字にします。

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.

これらの表は完全なリストではないことに注意してください。実装はこれらのリストにないアルゴリズムを実装してもよい(MAY)。

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)
        

21 - Reserved for Diffie-Hellman (X9.42, as defined for IETF-S/MIME) 100 to 110 - Private/Experimental algorithm.

21-Diffie-Hellman(X9.42、IETF-S / MIMEで定義)用に予約済み100〜110-プライベート/実験的アルゴリズム。

Implementations MUST implement DSA for signatures, and Elgamal for encryption. Implementations SHOULD implement RSA keys. Implementations MAY implement any other algorithm.

実装は、署名にはDSAを実装し、暗号化にはElgamalを実装する必要があります。実装はRSAキーを実装する必要があります(SHOULD)。実装は他のアルゴリズムを実装してもよい(MAY)。

9.2. Symmetric Key Algorithms
9.2. Symmetric Key Algorithms
       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
       8          - Reserved for AES with 192-bit key
       9          - Reserved for AES with 256-bit key
       100 to 110 - Private/Experimental algorithm.
        

Implementations MUST implement Triple-DES. Implementations SHOULD implement IDEA and CAST5.Implementations MAY implement any other algorithm.

実装はTriple-DESを実装する必要があります。実装はIDEAとCAST5を実装する必要があります。実装は他のアルゴリズムを実装してもかまいません(MAY)。

9.3. Compression Algorithms
9.3. 圧縮アルゴリズム
       ID           Algorithm
       --           ---------
       0          - Uncompressed
       1          - ZIP (RFC 1951)
       2          - ZLIB (RFC 1950)
       100 to 110 - Private/Experimental algorithm.
        

Implementations MUST implement uncompressed data. Implementations SHOULD implement ZIP. Implementations MAY implement ZLIB.

実装では、非圧縮データを実装する必要があります。実装はZIPを実装する必要があります(SHOULD)。実装はZLIBを実装してもよい(MAY)。

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.
        

Implementations MUST implement SHA-1. Implementations SHOULD implement MD5.

実装はSHA-1を実装する必要があります。実装はMD5を実装する必要があります(SHOULD)。

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ユーザーは公開鍵を転送できます。転送可能な公開鍵の重要な要素は次のとおりです。

- One Public Key packet

- 1つの公開鍵パケット

- Zero or more revocation signatures

- ゼロ以上の失効署名

- One or more User ID packets

- 1つ以上のユーザーIDパケット

- After each User ID packet, zero or more signature packets (certifications)

- After each User ID packet, zero or more signature packets (certifications)

- Zero or more Subkey packets

- 0個以上のサブキーパケット

- After each Subkey packet, one signature packet, optionally a revocation.

- 各サブキーパケットの後、1つの署名パケット、オプションで失効。

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.

公開鍵パケットが最初に発生します。次の各ユーザーIDパケットは、この公開鍵の所有者のIDを提供します。複数のユーザーIDパケットがある場合、これは同じ一意の個々のユーザーを識別する複数の手段に対応します。たとえば、ユーザーが複数のメールアドレスを持っている場合、それぞれにユーザー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.

各ユーザーIDパケットの直後に、0個以上の署名パケットがあります。各署名パケットは、直前のユーザーIDパケットと最初の公開鍵パケットで計算されます。署名は、対応する公開鍵とユーザー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.

ユーザーIDパケットの後に、1つ以上のサブキーパケットがある場合があります。一般に、トップレベルの公開キーが署名のみのキーである場合、サブキーが提供されます。ただし、どのV4キーにもサブキーがあり、サブキーは暗号化のみのキー、署名のみのキー、または汎用のキーである場合があります。

Each Subkey packet must be followed by one Signature packet, which should be a subkey binding signature issued by the top level key.

Each Subkey packet must be followed by one Signature packet, which should be a subkey binding signature issued by the top level key.

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.

サブキーパケットとキーパケットのそれぞれの後に、キーが失効したことを示す失効署名パケットが続く場合があります。失効署名は、鍵自体、またはトップレベルの鍵による自己署名の失効鍵サブパケットを介して失効を発行する権限がある鍵によって発行された場合にのみ受け入れられます。

Transferable public key packet sequences may be concatenated to allow transferring multiple public keys in one operation.

転送可能な公開鍵パケットシーケンスを連結して、1回の操作で複数の公開鍵を転送できます。

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 :- Public Key Encrypted Session Key Packet | Symmetric-Key Encrypted Session Key Packet.

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.

One-Pass Signed Message :- One-Pass Signature Packet, OpenPGP Message, Corresponding Signature Packet.

Signed Message :- Signature Packet, OpenPGP Message | One-Pass Signed Message.

署名付きメッセージ:-署名パケット、OpenPGPメッセージ|ワンパス署名メッセージ。

In addition, decrypting a Symmetrically Encrypted Data packet and

さらに、対称的に暗号化されたデータパケットを復号化し、

decompressing a Compressed Data packet must yield a valid OpenPGP Message.

圧縮データパケットを解凍すると、有効なOpenPGPメッセージが生成される必要があります。

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鍵の形式は次のとおりです。大括弧内の項目はオプションであり、省略記号は繰り返しを示します。

           RSA Public Key
              [Revocation Self Signature]
               User ID [Signature ...]
              [User ID [Signature ...] ...]
        

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.

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.

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

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つのキーを結合して発行された後、常に1つの署名を持っています。このバインディング署名は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キーのフィンガープリントは、キーマテリアル(パブリックモジュラスn、指数e)を形成するMPIの本体(2オクテット長ではない)をMD5でハッシュすることによって形成されます。

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:

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:

a.1) 0x99 (1 octet)

a.1)0x99(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);

b) バージョン番号= 4(1オクテット);

c) time stamp of key creation (4 octets);

c) 鍵作成のタイムスタンプ(4オクテット);

    d) algorithm (1 octet): 17 = DSA (example);
        

e) Algorithm specific fields.

e) アルゴリズム固有のフィールド。

Algorithm Specific Fields for DSA keys (example):

DSAキーのアルゴリズム固有のフィールド(例):

e.1) MPI of DSA prime p;

e.1)DSA素数pのMPI。

e.2) MPI of DSA group order q (q is a prime divisor of p-1);

e.2)DSAグループ次数qのMPI(qはp-1の素数)。

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(= g ** x、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キーマテリアルを共有している場合、キーIDとフィンガープリントが異なることに注意してください。

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

対称アルゴリズム設定は、キーホルダーが受け入れるアルゴリズムの順序付きリストです。自己署名に記載されているため、キーホルダーの好みが異なる可能性があります。たとえば、アリスは、「alice@work.com」に対してのみ指定されたTripleDESを持つことができますが、「alice@home.org」に対して指定されたCAST5、Blowfish、およびTripleDESを持つことができます。

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.

実装は、受信者の優先リストにない対称アルゴリズムを使用してはなりません(MUST NOT)。複数の受信者に対して暗号化する場合、実装は受信者の設定の共通部分をとることによって適切なアルゴリズムを見つけます。 MUST実装アルゴリズムであるTripleDESは、交差がnullではないことを保証することに注意してください。実装では、任意のメカニズムを使用して、交差点でアルゴリズムを選択できます。

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

実装がキーホルダーの設定にないメッセージを復号化できる場合、実装はとにかくメッセージを復号化する必要がありますが、プロトコルに違反していることをキーホルダーに警告する必要があります。 (たとえば、上記のアリスがこの仕様のすべてのアルゴリズムを実装するソフトウェアを持っていると仮定します。それでも、彼女は仕事や家のためにサブセットを好みます。彼女が自分の好みではない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.

下位互換性を追求する実装は、V3自己署名付きのV3キーをIDEAの暗黙的な設定であり、TripleDESを実行できないと見なす場合があります。これは技術的には非準拠ですが、メッセージの作成者に警告されている場合、実装はこの場合のみ上記のルールに違反し、IDEAを使用してメッセージを暗号化できます。ただし、理想的には、OpenPGPユーザーの実装にIDEAがないためにメッセージを読み取れなかった可能性があるため、実装は実際に2つのメッセージを生成することによって規則に従います。その結果、実装はMAYですが、V3キーと競合するアルゴリズムでIDEAを使用してはなりません(SHOULD NOT)。

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.

他のアルゴリズムの設定は、対称アルゴリズムの設定と同様に機能し、キーホルダーが受け入れるアルゴリズムを指定します。ただし、他のコメントについては、圧縮設定とハッシュ設定の2つの興味深いケースがあります。

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は圧縮を提供しています。そして、この仕様では、デフォルトではメッセージが圧縮されますが、実装で圧縮する必要はありません。その結果、圧縮プリファレンスは、キーホルダーがメッセージを圧縮しないように要求する方法を提供します。これはおそらく、圧縮を含まない最小限の実装を使用しているためです。さらに、これにより、キーホルダーは代替アルゴリズムをサポートできることを示すことができます。

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

アルゴリズム設定と同様に、実装は設定ベクトルにないアルゴリズムを使用してはなりません(MUST NOT)。プリファレンスが存在しない場合、[ZIP(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、「プレーンテキスト」は、平文で保存されている秘密鍵を示すためにのみ使用できます。実装では、対称的に暗号化されたデータパケットでプレーンテキストを使用しないでください。暗号化されていないデータまたはリテラルデータをエンコードするには、リテラルデータパケットを使用する必要があります。

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暗号化のみの鍵には、アルゴリズムタイプがあります。これらのタイプは非推奨です。シグネチャ内の「キーフラグ」サブパケットは、同じアイデアを表現するためのより優れた方法であり、それをすべてのアルゴリズムに一般化します。実装はそのようなキーを作成すべきではありませんが、それを解釈してもよいものです(MAY)。

An implementation SHOULD NOT implement RSA keys of size less than 768 bits.

実装は、768ビット未満のサイズのRSA鍵を実装してはなりません(SHOULD NOT)。

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をサポートする実装は、MUST-実装機能を実装する必要があります。

12.5. Elgamal
12.5. エルガマル

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、素数係数p、秘密指数x、および公開値y = g ^ x mod 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.

ジェネレータと素数は、離散対数問題の解決が困難になるように選択する必要があります。グループgは、乗法グループmod p-1またはその大きなサブグループを生成する必要があり、gの次数には少なくとも1つの大きな素因数が必要です。良い選択は、pを選択する際に「強い」ソフィージェルマン素数を使用することです。これにより、pと(p-1)/ 2の両方が素数になります。実際、この選択は非常に優れているため、小さなサブグループ攻撃を回避できるため、実装者はこれを行う必要があります。

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]の結果は、ジェネレータ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値を使用することで簡単に偽造できます。この攻撃については、ブライヒェンバッハーの論文でも説明されています。

Details on safe use of Elgamal signatures may be found in [MENEZES], which discusses all the weaknesses described above.

Elgamal署名の安全な使用に関する詳細は、上記のすべての弱点について説明している[MENEZES]にあります。

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ビット未満のサイズのElgamal鍵を実装してはなりません(SHOULD NOT)。長期的なセキュリティのために、Elgamalキーは1024ビット以上である必要があります。

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ビット未満のサイズのDSA鍵を実装してはなりません(SHOULD NOT)。現在の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実装での使用に役立つアルゴリズム用に予約されていますが、実装者が実際にアルゴリズムを実装できない問題があります。これらは「公開アルゴリズム」セクションで「(予約済み)」としてマークされています。

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.

予約済みの公開鍵アルゴリズムである楕円曲線(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)にはOIDがありません。 SHA1の倍幅バリアント用に予約されている予約済みアルゴリズム番号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のAdvanced Encryption Standard用に3つのアルゴリズム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は、暗号フィードバックモード(CFBモード)のバリアントを使用して対称暗号化を行います。このセクションでは、使用する手順について詳しく説明します。このモードは、対称的に暗号化されたデータパケットに使用されるものです。秘密鍵素材の暗号化に使用されるメカニズムは似ていますが、上記のセクションで説明されています。

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)を使用し、オクテット9と10がオクテット7と8に一致するように、プレーンテキストに10オクテットのランダムデータをプレフィックスします。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オクテットで動作し、2オクテットのチェックを生成し、16オクテットブロックで動作します。

Step by step, here is the procedure:

ステップバイステップ、これが手順です:

1. The feedback register (FR) is set to the IV, which is all zeros.

1. フィードバックレジスタ(FR)はIVに設定されます。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. FREは、プレーンテキストの前に付けられたランダムデータの最初の8オクテットでxorされて、暗号文の最初の8オクテットであるC1-C8を生成します。

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は暗号化されて、暗号文の最初の8オクテットの暗号化であるFREが生成されます。

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オクテットのデータとxorされます。これにより、暗号文の次の2オクテットであるC9-C10が生成されます。

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は、プレフィックス付きデータの10オクテットの暗号化を完了したので、指定された平文の最初の8オクテットでxorされます。これにより、暗号文の次の8オクテットであるC11-C18が生成されます。

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オクテットとxorされて、暗号テキストの次の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.

この仕様では、公開鍵暗号化技術を使用しています。公開鍵と秘密鍵のペアの秘密鍵部分の所持は、適切な当事者によって制御されると想定されています。

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.

この仕様の特定の操作には、乱数の使用が含まれます。これらの数値を生成するには、適切なエントロピーソースを使用する必要があります。 RFC 1750を参照してください。

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ハッシュアルゴリズムには、一部の人々がその使用を非推奨にする弱点(compress関数の疑似衝突)があることが判明しています。彼らは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. 実装のNit

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.

このセクションは、特に下位互換性を考慮して実装者を支援するコメントのコレクションです。 PGPの以前の実装はOpenPGPに準拠していません。多くの場合、違いはわずかですが、小さな違いは大きな違いよりもしばしば厄介です。したがって、下位互換性を維持しようとする開発者にとって、この潜在的な問題と落とし穴のリストです。

* 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オクテット」の長さを認識しません。

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

* PGP 5.0は、キーの長さがS2K対称アルゴリズムと異なる場合、暗号化されたセッションキーを拒否します。これは検証機能のバグです。

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

* PGP 5.0は、複数のワンパス署名ヘッダーおよびトレーラーを処理しません。署名すると、ネストされたワンパス署名を行う代わりに、ワンパス署名されたリテラルを圧縮し、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は「BEGIN PGP PRIVATE KEY BLOCK」ではなく「BEGIN PGP SECRET KEY BLOCK」というヘッダーを生成します。以前のバージョンはすべて暗黙のデータタイプを無視し、パケットデータタイプを直接調べます。

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

* クリア署名の署名では、「Hash:」ヘッダーがない場合、PGP 5.0は正しいハッシュアルゴリズムを見つけますが、ヘッダーと実際に使用されているアルゴリズムとの不一致を拒否します。 PGP 2.xの「標準」(Zimmermann / Finney / et al。)バージョンは、「Hash:」ヘッダーを拒否し、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.

* PGP 5.0はV4形式のRSAキーを読み取ることができますが、V3キーIDでのみそれを認識でき、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もPGP 6.0もElgamal暗号化および署名鍵を認識しません。 Elgamal暗号化専用キーのみを処理します。

* 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つのキーが同じキーマテリアルを持ち、フィンガープリント(およびキーID)が異なるようにする方法は多数あります。おそらく最も興味深いのは、V4形式に「アップグレード」されたRSAキーですが、V4フィンガープリントはキーの作成時間を他のものと一緒にハッシュすることによって構築されるため、2つのV4キーは異なる時間に作成されますが、同じキーマテリアルを使用します指紋が異なります。

* If an implementation is using zlib to interoperate with PGP 2.x, then the "windowBits" parameter should be set to -13.

* 実装がzlibを使用してPGP 2.xと相互運用する場合、「windowBits」パラメーターを-13に設定する必要があります。

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

John W. Noerenberg、II Qualcomm、Inc 6455 Lusk Blvd San Diego、CA 92131 USA

   Phone: +1 619-658-3510
   EMail: jwn2@qualcomm.com
        

The principal authors of this memo are:

このメモの主な著者は次のとおりです。

Jon Callas Network Associates, Inc. 3965 Freedom Circle Santa Clara, CA 95054, USA

Jon Callas Network Associates、Inc. 3965 Freedom Circle Santa Clara、CA 95054、USA

   Phone: +1 408-346-5860
   EMail: jon@pgp.com, jcallas@nai.com
        

Lutz Donnerhacke IKS GmbH Wildenbruchstr. 15 07745 Jena, Germany

Lutz Donnerhacke IKS GmbH Wildenbruchstr。 15 07745イェーナ、ドイツ

   Phone: +49-3641-675642
   EMail: lutz@iks-jena.de
        

Hal Finney Network Associates, Inc. 3965 Freedom Circle Santa Clara, CA 95054, USA

Hal Finney Network Associates、Inc. 3965 Freedom Circle Santa Clara、CA 95054、USA

   EMail: hal@pgp.com
        

Rodney Thayer EIS Corporation Clearwater, FL 33767, USA

Rodney Thayer EIS Corporation Clearwater、FL 33767、USA

EMail: rodney@unitran.com 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.

EMail:rodney@unitran.comこのメモは、他の多くの著者からの以前の多くの作品を利用しています: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、Philip 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>
        

[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ビットブロック暗号(Blowfish)」Fast Software Encryption、Cambridge Security Workshop Proceedings(1993年12月)、Springer-Verlag、1994、pp191-204

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

[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、「公開鍵暗号システムと離散対数に基づく署名方式」、IEEE Transactions on Information Theory、v。IT-31、n。 4、1985、pp。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] Lai、X、「ブロック暗号の設計とセキュリティについて」、情報処理のETHシリーズ、J.L。Massey(編集者)、Vol。 1、Hartung-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 / IEC 10646-1:1993。国際標準-情報技術-ユニバーサル複数オクテットコード化文字セット(UCS)-パート1:アーキテクチャと基本的な多言語プレーン。 UTF-8はAnnex Rで説明されており、採用されていますがまだ公開されていません。 UTF-16は付録Qで説明されており、採用されていますがまだ公開されていません。

[MENEZES] Alfred Menezes, Paul van Oorschot, and Scott Vanstone, "Handbook of Applied Cryptography," CRC Press, 1996.

[MENEZES] Alfred Menezes、Paul van Oorschot、Scott Vanstone、「Handbook of Applied Cryptography」、CRC Press、1996。

[RFC822] Crocker, D., "Standard for the format of ARPA Internet text messages", STD 11, RFC 822, August 1982.

[RFC822] Crocker、D。、「ARPAインターネットテキストメッセージのフォーマットの標準」、STD 11、RFC 822、1982年8月。

[RFC1423] Balenson, D., "Privacy Enhancement for Internet Electronic Mail: Part III: Algorithms, Modes, and Identifiers", RFC 1423, October 1993.

[RFC1423]バレンソン、D。、「インターネット電子メールのプライバシー強化:パートIII:アルゴリズム、モード、および識別子」、RFC 1423、1993年10月。

[RFC1641] Goldsmith, D. and M. Davis, "Using Unicode with MIME", RFC 1641, July 1994.

[RFC1641] Goldsmith、D。およびM. Davis、「Using Unicode with MIME」、RFC 1641、1994年7月。

[RFC1750] Eastlake, D., Crocker, S. and J. Schiller, "Randomness Recommendations for Security", RFC 1750, December 1994.

[RFC1750] Eastlake、D.、Crocker、S。およびJ. Schiller、「Randomness Recommendations for Security」、RFC 1750、1994年12月。

[RFC1951] Deutsch, P., "DEFLATE Compressed Data Format Specification version 1.3.", RFC 1951, May 1996.

[RFC1951] Deutsch、P。、「DEFLATE Compressed Data Format Specification version 1.3。」、RFC 1951、1996年5月。

[RFC1983] Malkin, G., "Internet Users' Glossary", FYI 18, RFC 1983, August 1996.

[RFC1983] Malkin、G。、「Internet Users 'Glossary」、FYI 18、RFC 1983、1996年8月。

[RFC1991] Atkins, D., Stallings, W. and P. Zimmermann, "PGP Message Exchange Formats", RFC 1991, August 1996.

[RFC1991] Atkins、D.、Stallings、W. and P. Zimmermann、 "PGP Message Exchange Formats"、RFC 1991、August 1996。

[RFC2015] Elkins, M., "MIME Security with Pretty Good Privacy (PGP)", RFC 2015, October 1996.

[RFC2015] Elkins、M。、「MIME Security with Pretty Good Privacy(PGP)」、RFC 2015、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. Freed、「Multipurpose Internet Mail Extensions(MIME)Part One:Format of Internet Message Bodies。」、RFC 2231、1996年11月。

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

[RFC2119] Bradner、S。、「要件レベルを示すためにRFCで使用するキーワード」、BCP 14、RFC 2119、1997年3月。

[RFC2144] Adams, C., "The CAST-128 Encryption Algorithm", RFC 2144, May 1997.

[RFC2144] Adams、C。、「CAST-128暗号化アルゴリズム」、RFC 2144、1997年5月。

[RFC2279] Yergeau., F., "UTF-8, a transformation format of Unicode and ISO 10646", RFC 2279, January 1998.

[RFC2279] Yergeau。、F。、「UTF-8、UnicodeおよびISO 10646の変換フォーマット」、RFC 2279、1998年1月。

[RFC2313] Kaliski, B., "PKCS #1: RSA Encryption Standard version 1.5", RFC 2313, March 1998.

[RFC2313] Kaliski、B。、「PKCS#1:RSA Encryption Standard version 1.5」、RFC 2313、1998年3月。

[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

[SAFER] J.L. Massey、「SAFER K-64:1年後」、B。Preneel、編集者、高速ソフトウェア暗号化、第2回国際ワークショップ(LNCS 1008)pp212-241、Springer-Verlag 1995

17. 完全な著作権表示

Copyright (C) The Internet Society (1998). All Rights Reserved.

Copyright(C)The Internet Society(1998)。全著作権所有。

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.

このドキュメントとその翻訳はコピーして他のユーザーに提供することができ、コメントまたはその他の方法で説明したり、その実装を支援する二次的著作物は、いかなる種類の制限なしに、全体または一部を準備、コピー、公開、および配布することができます。ただし、上記の著作権表示とこの段落は、そのようなすべてのコピーと派生物に含まれています。ただし、この文書自体は、著作権に関する通知を削除したり、インターネットソサエティや他のインターネット組織への参照を削除したりするなど、いかなる方法でも変更できません。ただし、インターネット標準を開発する目的で必要な場合は除きます。インターネット標準のプロセスに従うか、または必要に応じて、それを英語以外の言語に翻訳する必要があります。

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.

このドキュメントとここに含まれる情報は「現状有姿」で提供され、インターネット社会およびインターネット技術タスクフォースは、明示または黙示を問わず、ここに記載されている情報の使用が保証するものに限定されない一切の保証を含みません。商品性または特定の目的への適合性に関する権利または黙示の保証を侵害すること。