用語と定義

次に、一般的に使用されている暗号化用語とその定義を示します。

認証

通信している相手側の識別情報を確認するプロセスです。

証明書

デジタル署名付きの文で、あるエンティティ(人や会社など)の識別情報および公開キーの内容を保証します。証明書は、自己署名されるか証明書発行局(CA)(他のエンティティのために有効な証明書を発行する信頼されているエンティティ)によって発行されます。よく知られているCAには、Comodo、EntrustおよびGoDaddyなどがあります。X509は証明書の一般的な形式であり、JDKのkeytoolで管理できます。

暗号化方式群

暗号化パラメータの組合わせで、認証、キー合意、暗号化および整合性保護に使用するセキュリティ・アルゴリズムおよびキーのサイズを定義します。

暗号化ハッシュ関数

データの任意のブロックから比較的小さな固定サイズのビットの文字列(ハッシュと呼ばれる)を生成するために使われるアルゴリズム。暗号化ハッシュ関数はチェックサムに似ており、3つの主な特性があります。一方向の関数であるため、ハッシュからオリジナル・データを生成することはできません。オリジナル・データをわずかに変更しても、結果となるハッシュでは大きな変更になります。暗号化キーは必要ありません。

暗号化サービス・プロバイダ(CSP)

短縮形としてプロバイダとだけ呼ばれることもあり、Java暗号化アーキテクチャ(JCA)ではそれを、特定の暗号化アルゴリズムの1つまたは複数のエンジン・クラスを実装するパッケージ(または一連のパッケージ)と定義しています。エンジン・クラスは、具体的な実装のない抽象的な方法で暗号化サービスを定義します。

Datagram Transport Layer Security (DTLS)プロトコル

クライアントとサーバーの認証、データ整合性、およびUDPなどの信頼できないトランスポート・チャネルに基づいたクライアントとサーバーとの間の暗号化通信を管理するプロトコルです。

復号化

暗号化/復号化を参照してください。

デジタル署名

デジタル署名とは、手書きの署名のデジタル版です。これは、ネットワークで伝送されるデータが、それを送信したと主張する人物からのものであり、送信中にデータが変更されていないことを保証するものです。たとえば、RSAベースのデジタル署名を計算するには、まずデータの暗号化ハッシュを計算し、次に送信者の秘密キーでハッシュを暗号化します。

暗号化/複合化

暗号化は複雑なアルゴリズムを使用して、元のメッセージ(クリアテキスト)を、復号化しないかぎり、その内容を理解できないエンコードされたメッセージ(暗号テキスト)に変換するプロセスです。復号化とは、暗号テキストからクリアテキストを生成する逆のプロセスです。

データの暗号化および復号化に使用するアルゴリズムは一般に、秘密キー(対称)暗号化と公開キー(非対称)暗号化の2つのカテゴリに分けられます。

エンドポイント識別

ネットワーク上のエンドポイントを識別するために使用されるIPv4アドレスまたはIPv6アドレスです。

エンドポイント識別の手順は、SSL/TLSハンドシェーク中に処理されます。

ハンドシェーク・プロトコル

2つのソケット同士が新しいセッションや既存のセッションの使用に同意するネゴシエーションのフェーズです。ハンドシェーク・プロトコルは、レコード・プロトコルを介して交換される一連のメッセージです。ハンドシェークの終了時に、セッションの接続に固有の暗号化キーや、整合性を保護するためのキーが、キー合意による秘密に基づいて新たに生成されます。

java-home

このドキュメント全体でJava Development Kit (JDK)がインストールされているディレクトリを示すために使用される、可変プレースホルダです。

キー合意

二者が協力して共通キーを確立するための方法です。それぞれの側が一定のデータを生成して交換します。そのあと、2つのデータが組み合わされて、1つのキーが生成されます。適正な非公開初期化データを保持しているユーザーのみが、最終的なキーを取得できます。Diffie-Hellman (DH)は、一般的なキー合意アルゴリズムの一例です。

キー交換

キーを交換する方法です。一方の側が秘密キーを生成し、標準的にはRSAにより、ピアの公開キーを使用して暗号化します。データがピアに送信され、ピアは対応する秘密キーを使用してキーを復号化します。

キー・マネージャ/トラスト・マネージャ

キー・マネージャとトラスト・マネージャは、それぞれのキー・データにキーストアを使用します。キー・マネージャはキーストアを管理し、ユーザーを他のユーザーに対して承認する場合に使用するなど必要に応じて、他のユーザーに公開キーを提供します。トラスト・マネージャは、管理するトラストストアの情報に基づいて、トラストの対象者を決定します。

キー付きハッシュ・メッセージ・コード(HMAC)
暗号化ハッシュ関数と秘密暗号キーを使用する、特定の型のメッセージ認証コードです。
キー付きハッシュ・メッセージ・コード(HMAC)ベースの"抽出して展開"キー導出関数(HKDF)
キーの生成と検証に使用される関数です。
キーストア/トラストストア

キーストアは、キー・データのデータベースです。キー・データにはさまざまな用途があり、それには認証やデータ整合性も含まれます。利用できるキーストアには様々なタイプがあり、その中にはPKCS12やOracleのJKSも含まれます。

一般に、キーストア情報は、キー・エントリと信頼される証明書エントリ2つのカテゴリに分類できます。キー・エントリはエンティティの識別情報とその秘密キーから構成されており、様々な暗号化の目的で使用できます。これとは対照的に、信頼される証明書のエントリには、公開キーとそのエンティティの識別情報しか含まれていません。したがって、javax.net.ssl.KeyManagerの場合など、秘密キーが必要な場合は、信頼される証明書エントリを使用することはできません。JKSのJDK実装では、キーストアにキーのエントリと、信頼される証明書エントリの両方を含めることができます。

トラストストアとは、トラストの対象を決めるときに使用するキーストアです。すでに信頼しているエンティティからデータを受け取る場合、およびそのエンティティが発信元を名乗るエンティティであることを確認できる場合は、データは実際にそのエンティティから届いたものであると仮定できます。

ユーザーがそのエンティティを信頼する場合にのみ、エントリをトラストストアに追加する必要があります。ユーザーは、キーのペアを生成するか、証明書をインポートすることにより、そのエントリにトラストを与えます。トラストストア内のすべてのエントリは信頼されたエントリとみなされます。

2つの異なるキーストア・ファイルを持つと便利な場合があります。1つはキー・エントリのみのファイル、もう1つはCA証明書を含む信頼された証明書エントリを含むファイルです。前者には機密性のある情報が含まれますが、後者には含まれません。単独のキーストア・ファイルではなく、2つのファイルを使用すると、独自の証明書(および対応する秘密キー)と他の証明書を論理的に区別した明確な区分が提供されます。秘密キーの保護を強化するには、アクセスが制限されたキーストアにそれらを保存し、必要に応じて、より公的にアクセスできるキーストアで信頼される証明書を提供することもできます。

メッセージ認証コード(MAC)

信頼できない媒体に送信または格納された情報の整合性を、秘密キーに基づいてチェックする方法を提供します。通常、MACは秘密キーを共有する2つの当事者間で、お互いが送信する情報を検証するために使用されます。

暗号化ハッシュ機能に基づくMACメカニズムは、HMACと呼ばれます。HMACは、共有する秘密キーと組み合せて、Message Digest 5 (MD5)やSecure Hash Algorithm (SHA-256)などの暗号化ハッシュ関数とともに使用できます。HMACについては、RFC 2104で規定されています。

公開キー暗号化

2つのキーを生成する暗号化アルゴリズムを使用するキー暗号化システムです。一方のキーは公開されますが、他方は秘密のままです。公開キーと秘密キーでは、逆の暗号化処理がなされ、一方のキーで暗号化したものを他方のキーで復号化します。公開キー暗号化は、非対称暗号化とも呼ばれます。

レコード・プロトコル

すべてのデータ(アプリケーション・レベルであるかハンドシェーク・プロセスの一部であるかに関係なく)を独立したデータのレコードにパッケージ化するプロトコルで、TCPストリーム・ソケットがアプリケーション・バイト・ストリームをネットワーク・パケットに変換するのとよく似ています。個々のレコードは、現在の暗号化キーと整合性保護キーによって保護されます。

秘密キー暗号化

データの暗号化と復号化に同じキーを使用する暗号化アルゴリズムを使用する暗号化システム。秘密キー暗号化は対称暗号化とも呼ばれます。

Secure Sockets Layer (SSL)プロトコル

クライアントとサーバーの認証、データ整合性、およびクライアントとサーバーとの間の暗号化通信を管理するプロトコルです。SSLはTransport Layer Security (TLS)に名称変更されました。

セッション

認証されたピア識別情報、暗号化方式群、キー合意の秘密を含む名前付きの状態情報のコレクションで、セキュアなソケット・ハンドシェークを通じてネゴシエーションが行われ、複数のセキュアなソケット・インスタンス間で共有できます。

Transport Layer Security (TLS)プロトコル

クライアントとサーバーの認証、データ整合性、およびTCPなどの信頼できるトランスポート・チャネルに基づいたクライアントとサーバーとの間の暗号化通信を管理するプロトコルです。

トラスト・マネージャ

キー・マネージャ/トラスト・マネージャを参照してください。

トラストストア

キーストア/トラストストアを参照してください。