暗号化に用いる鍵と復号化に用いる鍵が異なるかどうかで2種類に分類されます。
暗号化と復号化に同じ鍵を用います。共通鍵暗号、共有鍵暗号、秘密鍵暗号ともよばれます。
送信者と受信者で同じ鍵を共有しておく必要があり、この鍵を配送する手段が問題になります (鍵配送問題)。例えば後述の公開鍵暗号によって解決できます。
暗号化と復号化で異なる鍵を用います。非対称暗号ともよばれます。
対称暗号と公開鍵暗号を組み合わせることにより、それぞれの欠点を互いに補うことができます。
鍵の長さは「セッション鍵 <= 公開鍵」とします。
あるメッセージを一方向ハッシュ関数にかけることで、メッセージに依存した数値 (指紋) を取得できます。
これは、暗号技術の様々な場面で有用な数値です。
暗号化チェックサム、指紋、メッセージダイジェストともよばれます。
あるメッセージを一方向ハッシュ関数 (メッセージダイジェスト関数とも) にかけて計算した数値です。
ソフトウェアの改竄検出や、ワンタイムパスワードなどで利用されます。
MD4、MD5、SHA-1は同じハッシュ値を持つ二つのメッセージを現実的な時間内に意図的に生成可能であることが分かっており、用途によっては危険です。
SHA-2は、現在のところ同じハッシュ値を持つ二つのメッセージを意図的に生成できないため用途によってはこれを用いることが推奨されます。
MAC値ともよばれます。鍵に依存したハッシュ値です。
送信者と受信者で事前に鍵を共有しておき、送信者はMAC値とメッセージを送信します。
受信者はメッセージのMAC値を計算し、受信したMAC値と比較して検証します。
ハッシュ値と異なり、MAC値では内容の検証に加えて、受信者が確かにある送信者からの送信であったことを確認できます。
一方向ハッシュ関数を利用したHMAC (エイチマック) シリーズがあります。
Secure Socket LayerとTransport Layer Securityの略称です。SSLの新しいバージョンがTLSですが、両者はほぼ同じであると考えてもあまり問題にはなりません。SSL/TLSの上には様々なアプリケーションプロトコルを乗せる (プロトコルスタック) ことができます:
なお、SSHはそれ自体アプリケーションプロトコルであり、SSL/TLSの上に乗せる必要なくSSL/TLS相当のセキュアな通信を実現できます。
SSL/TLSは、対称暗号、疑似乱数生成器、公開鍵暗号、デジタル署名、メッセージ認証コードなど (暗号スイート) を組み合わせてセキュアな通信を実現するための手続を定めています。一連の手続の中では、受信者であるサーバの公開鍵の信頼性を確保するために、こちらのページで紹介しました公開鍵証明書が用いられます。これを特にサーバ証明書とよびます。また、特殊な場合には送信者であるクライアントの信頼性を確保したいことがあり、そのような用途のためにSSL/TLSではサーバがクライアントに証明書を求めることもできます。その場合、認証局にデジタル署名してもらったクライアント証明書を、予めクライアントにインポートしておく必要があります。