非対称暗号化

非対称暗号化は現代暗号学歴史上最も偉大な発明であり、対称暗号化が必要な前以てプライバシーイーを配らないといけない問題を完璧に解決できる。

 名前で意味が分かるように、暗号化キーとクラッキングキーが異なり、それぞれ共有キーとプライバシーキーと呼ばれる。

 共有キーは通常公開であり、誰でも取得可能、プライバシーキーは個人が持つもので、他人に取得されてはいけない。

メリットは、共有キーとプライバシーキーが分かれており、安全ではないチャネルでも使用可能。

 デメリットは暗号化とクラッキングのスピードが遅く、通常対称暗号化アルゴリズムより二つから三つの数級くらい遅い;同時に暗号化の強度も対称暗号化より劣る。

 非対称暗号化アルゴリズムの安全性は通常数学問題に基づいて保障する必要があり、現在は主に大数値因子分解、離散対数、楕円曲線などのいくつかの考え方がある。

 代表的なアルゴリズムは、RSA、ElGamal、楕円曲線(EllipticCurveCrytosystems,ECC)シリーズのアルゴリズムが含まれる。

 通常はシーンのサイン或いはプライバシーキーのプロトコルに適用し、大量なデータの暗号化とクラッキングに適用しない。

 RSAアルゴリズムなどはあまり安全ではないと思われているため、通常は楕円曲線シリーズのアルゴリズムを使用するようにお勧めする。

混合暗号化

 即ち、まず計算の複雑度が高い非対称暗号化を利用して臨時の対象暗号化キー(会話プライバシーキー、一般的に内容と比べて遥かに短い)をプロトコルして、それから対称暗号化を通じて、伝送している大量なデータに対して暗号化またはクラッキング処理を行う。

 典型的な応用場面は、現在皆がよく使うHTTPSメカニズムである。HTTPSは実際Transport Layer Security/Secure Socket Layer(TLS/SSL)を利用して信頼できる伝送を実現している、TLSはSSLのグレードアップバージョンであり、現在幅広く応用されているのはTLS1.0で、SSL3.1バージョンに対応している。

 安全なアクセスを作成する具体的なステップは下記である:

 ユーザーエンドのブラウザーからランダム数R1、サポートする暗号化アルゴリズムのタイプ、プロトコルバージン、圧縮アルゴリズムなどを含めたメッセージをサーバーへ発送する。該当プロセスは公開文であるのに注意すること。

 サービスエンドからランダム数R2、選定暗号化アルゴリズムのタイプ、プロトコルバージョン、及びサーバー証書を含めた情報を返信。このプロセスは公開文であるのに注意すること。

 ブラウザーは該当ウェブサイト公開キー付きの証書をチェックする。該当証書は第三者CAにより発行される必要があり、ブラウザーとオペレーションシステムは権威CAのルート証書を設置するようにする。もし証書が改竄された場合(仲買人の攻撃)、CAの証書を通じて簡単に検証できる。

 もし証書に問題がなければ、証書にある共有キーを利用してランダム数R3を暗号化し、サーバーへ発送する。この時、ユーザーエンドとサーバーしかR1、R2、R3の情報が持っていなく、RI、R2とR3に持ついて、対称した会話プライバシーキーを生成する(例えばAESアルゴリズム)。その後の通信は何れも対称暗号化により保護を行う。