CBK#05 暗号(Cryptography)
- CBK#05 暗号(Cryptography)
- 5.1. セキュリティ原則
- 5.2. 定義 (Definitions)
- アルゴリズム (Algorithm):
- 暗号法 (Cryptography):
- 暗号システム (Cryptosystem):
- 暗号解読 (Crypto analysis):
- 暗号理論 (Cryptology):
- 暗号文 (Cipher text):
- 暗号化 (Encipher):
- 復号 (Decipher):
- 鍵 (Key):
- 平文 (Plaintext):
- ワークファクター(Work factor):
- 5.3. 暗号のタイプ (Types of ciphers)
- 換字式暗号 (Substitution cipher): *シーザー暗号に使われていた。
- 転置式暗号(Transposition cipher):
- 頻度分析(Frequency analysis):
- ランニングキー (Running key cipher):
- 遮蔽暗号 (Concealment cipher):
- ステガノグラフィー(Steganography):
- クリッパーチップ(Clipper chip):
- Fair crypto systems
- 5.4. 暗号の手法 (Methods of Encryption):
- 5.4.1. 共通鍵暗号 (Symmetric key Cryptography):
- (長所):
- (短所):
- 5.4.2. 公開鍵暗号法 (Asymmetric key Cryptography):
- (長所) :
- (短所):
- セキュアメッセージフォーマット (Secure message format):
- オープンメッセージフォーマット (Open message format):
- セキュアアンドサインドフォーマット (Secure and signed format):
- 5.5. 2種類の対称鍵アルゴリズム (Two types of symmetric algorithms):
- 5.5.1. ストリーム暗号 (Stream ciphers):
- 5.5.2. ブロック暗号 (Block ciphers):
- 混乱 (Confusion):
- S-ボックス (S-BOX):
- 5.6. 共通鍵暗号のタイプ (Types of symmetric key Cryptography):
- 5.6.1. データ暗号標準 (DES: Data Encryption Standard):
- 5.6.2. DESの5つのモード
- 5.6.2.1. ブロックモード
- 電子コードブック (ECB: Electronic Code Book):
- (問題点)
- 暗号ブロックチェーン (CBC: Cipher Block Chaining):
- 5.6.2.2. ストリームモード
- Output Feedback):
- カウンター (CTR):
- (利点)
- (不利な点)
- 5.6.3. ダブルDES (Double DES)
- 5.6.4. トリプルDES (Triple-DES)
- 5.6.5. AES (Advanced Encryption Standard)
- Blowfish :
- RC5 :
- 5.7. 公開鍵暗号法のタイプ (Types of asymmetric key Cryptography)
- 5.7.1. RSA (R.Rivest / A.Shamir / L.Adelman)
- 5.7.2. Diffie-Hellman 鍵交換 (Diffie-Hellman Key Exchange)
- 5.7.3. エルガマル (El Gamal)
- 5.7.3. 楕円曲線暗号システム (ECC: Elliptic Curve Cryptosystem)
- (利点)
- 公開暗号鍵方式の強度の比較
- Merkle-Hellmanナップザック
- 5.8. ハイブリッド暗号方式 (Hybrid Encryption Methods)
- 5.8.1 公開鍵暗号(Public Key Cryptography)
- 5.9. 共通鍵システムと公開鍵システムの比較
- 5.10. 公開鍵基盤 (PKI: Public Key Infrastructure)
- PKIの中核
- 電子証明書 (Digital certificate):
- 認証局 (CA: Certificate authority):
- 証明書 (Certificate):
- PKIのエンティティーと機能:
- 5.11. ハッシュ関数 (Hash Function):
- 優れたハッシュ関数の属性
- 5.12. メッセージ完全性 (Message integrity)
- 一方向ハッシュ(One-way hash):
- 電子署名 (Digital signatures):
- 5.13. 他のハシシュアルゴリズム
- MD4:
- MD5:
- MD2 :
- SHA:
- SHA1:
- HAVAL:
- 5.13.1. 一方向関数に対する攻撃
- 5.13.2. 使い捨て方式 (One-time pad)
- 5.14. デジタル署名(Digital Signature)
- 5.14.1. DSS(デジタル署名標準: Digital Signature Standard)
- 5.14.2. デジタル署名の運用
- メッセージに署名を付ける
- メッセージを検証する。
- 5.15. 鍵管理 (Key Management)
- Kerberos:
- Diffie-Hellman:
- 5.15.1. 鍵管理の原則 (Key Management principles)
- キー暗号化キーはデータ暗号化キーと区別しなければならない。
- 鍵を長時間使用することは避ける。
- 鍵のコピーは一つにする。
- ファイル暗号化アプリケーションの復旧には緊急時用の鍵使用する。
- 5.15.2. 鍵および鍵管理のルール
- 7.16. リンク暗号化と終点間暗号化 (Link versus end-to-end encryption)
- 7.16.1. リンク暗号化 (Link encryption)
- 7.16.2. 終点間暗号化 (End-to-end encryption)
- 7.17. 電子メールセキュリティ
- メッセージ出所の認証
- コンテンツの完全性
- コンテンツの機密性
- 配達証明
- メッセージ順序の完全性
- 配達の否認防止
- メッセージセキュリティのラベル付け
- メッセージフローの機
- セキュアアクセス。
- 7.17.1. プライバシー強化メ-ル (PEM : Privacy-enhanced mail)
- 使用されるコンポーネント:
- 7.17.2. メッセージセキュリティプロトコル (MSP: Message Security Protocol,)
- 7.17.3. PGP: Pretty Good Privacy
- 7.18. インターネットセキュリティ
- 7.18.1. HTTP: Hypertext Transport Protocol
- 7.18.2. S-HTTP: Secure Hypertext Transport Protocol
- 7.18.3. HTTPS: Hyper Text Transfer Protocol over SSL
- RC4-40
- 7.18.4. セキュアソケットレイヤー (SSL:Secure Sockets Layer)
- 7.18.5. 多目的インターネットメイル拡張 (MIME:Multipurpose Internet Mail Extension)
- 7.18.7. セキュアエレクトロニックトランザクション (SET:Secure Electronic Transaction)
- 7.18.8. クッキー(Cookies)
- 7.18.9. セキュアシェル(SSH: Secure SHell)
- 7.18.10. インターネットプロトコルセキュリティ (IPSec:Internet Protocol Security)
- 認証ヘッダ(AH:Authentication Header):
- 暗号ペイロード(ESP:Encapsulating Security Payload):
- セキュリティ・アソシエーション(SA:Security association):
- 7.19. 攻撃
- 7.19.1. 暗号文攻撃 (Cipher text-only attack)
- 7.19.2. 既知平文攻撃 (Known-plaintext attack)
- 7.17.3. 選択平文攻撃 (Chosen-plaintext attack)
- 7.17.4. 選択暗号文攻撃 (Chosen-cipher-text attack)
- 7.17.5. 仲介者攻撃 (Man-in-the-middle attack)
- 7.17.6. 辞書攻撃 (Dictionary attacks)
- 7.17.7. リプレイ攻撃 (Replay attack)
CBK#05 暗号(Cryptography)
5.1. セキュリティ原則
・完全性
・機密性
・信頼性
・否認拒否
(暗号では可用性を確保できない。)
5.2. 定義 (Definitions)
アルゴリズム (Algorithm):
└ 暗号化および復号化に使用される数学的法則の集合。
*データ暗号化アルゴリズム(DEA:Data Encryption Algorithm)
暗号法 (Cryptography):
└ データを意図した個人にのみ利用可能な形でデータを保存・送信することができるようにする科学。
暗号システム (Cryptosystem):
└ メッセージを暗号化したり復号したりする。ハードウェア・ソフトウェアによる暗号の実装。
暗号解読 (Crypto analysis):
└ 暗号文から鍵なしで平文を得たり、 暗号を破ったりすること。
暗号理論 (Cryptology):
└ 暗号法と暗号解読の学問。
暗号文 (Cipher text):
└ 暗号化され読むことができないフォーマットのデータ。
暗号化 (Encipher):
└ データを読むことができないフォーマットへ変換すること。
復号 (Decipher):
└ 読むことができるフォーマットにデータを変換すること。
鍵 (Key):
└ 秘密のビット列や命令で、 暗号化・復号にとって重要な物。
キークラスタリング (Key clustering):
└ 2つの異なる鍵が1つの平文から同じ暗号文を生成すること。
キースペース (Key space):
└ 鍵の構築に使用できる値。
平文 (Plaintext):
└ 読むことができるフォーマットのデータ “Clear text”とも呼ばれる。
ワークファクター(Work factor):
└ ある暗号システムを破るための時間、手間、 リソースの推定値。
5.3. 暗号のタイプ (Types of ciphers)
換字式暗号 (Substitution cipher): *シーザー暗号に使われていた。
└ ビット、文字、文字ブロックを他のビット、文字、文字ブロックで置き換える。
転置式暗号(Transposition cipher):
└ 文字の位置変更が行われる。すなわち文字の順序がスクランブルされる。鍵は、文字の移動先を決める。
頻度分析(Frequency analysis):
└ メッセージや会話で使用された文字の頻度パターンを分析する。
多換字暗号 (Polyalphabetic cipher): *例としてVigenera暗号がある。
└ 数個の異なるアルファベットを使用し、頻度分析に対抗する。
ランニングキー (Running key cipher):
└ 本(ページ、 行数、 語数)のような我々の周りにある物理世界のステップを使用する。それぞれの単語はシーケンス番号によって示される。
遮蔽暗号 (Concealment cipher):
└ 平分の真の文字を装置またはアルゴリズムで隠蔽する/偽装する。
ステガノグラフィー(Steganography):
└ データを他のメッセージの中に隠し、データの存在を隠すこと。メッセージはwave ファイル、 画像、ハードディスクの未使用領域、使用不能とマークされたセクターに隠される。
クリッパーチップ(Clipper chip):
├ NSAが設計したデータ暗号化用チップで、不正使用できないようになっている。
├ スキップジャック(Skipjack)アルゴリズムを使用している。
├ クリッパーチップ毎に一意のシリアルナンバーがあり、ユニットキーのコピーはこのシリアルナンバーでデータベースに格納される。
├ 送信側のクリッパーチップはLEAF(Law Enforcement Access Field)値を生成して送信メッセージに含めて送る。
└ 80ビット鍵と16ビットチェックサムに基づいている。
鍵寄託 (Key Escrow):└ ユニットキーが2つのセクションに分けられ2つの異なる寄託エージェンシーが維持する。
Fair crypto systems
├ 復号に必要な鍵を分ける。
└ この方法は公開鍵を使うソフトウェア暗号における手法であり、 ハードウェア暗号チップが使用されている場合には鍵寄託を使用する。
5.4. 暗号の手法 (Methods of Encryption):
5.4.1. 共通鍵暗号 (Symmetric key Cryptography):
├ 暗号化と復号で同じ鍵を使用する。
├ 提供できるのは機密性のみである。
├ 速く、また解読が困難である。
└ 鍵はメッセージとは異なるチャネル(Out-of-Band)を通じて送信される。
(長所):
├ 非対称システムに比べて非常に速い。
├ 鍵サイズが大きいと解読が困難。
└ データの暗号化に用いられるアルゴリズムとツールはフリーで入手可能(可用性)
(短所):
├ 鍵配布(鍵を適切に渡すのにセキュアなメカニズムが必要)
├ スケーラビリティー(ユーザの組毎にユニークな鍵が必要)
└ セキュリティの制限 (機密性しか提供できない)
├ データを暗号化し、そのアクセスを制限するのみ
└ 作成元の証明や否認防止については提供しなし。
5.4.2. 公開鍵暗号法 (Asymmetric key Cryptography):
├ 暗号化と復号で異なる鍵を使用する。
├ 2つの異なる非対称な鍵が数学的な関係を持つ。
├ 公開鍵から秘密鍵を導くのは計算上不可能。
└ 2つの非対称鍵は公開鍵と秘密鍵と呼ぶ。
├ 公開鍵での暗号化は機密性をもたらす。
└ 秘密鍵での暗号化は作成元の証明をもたらす。
(長所) :
├ 効率の良い鍵配布。
├ 共通鍵方式に比べてスケーラビリティーがある。
└ 機密性、認証、否認防止機能も提供する。
├ 機密性/プライバシー(適切な秘密鍵がないとデータを解読できない。)
├ アクセス制限(秘密鍵は一人にのみ限定する必要がある。)
├ 認証(送信者の身元を確認する。)
├ 完全性(データが改竄されていない。)
└ 否認防止(送信者は送信の事実を否定できない。)
(短所):
├ 計量重点指向型
└ 遅い(対象鍵暗号方式よりも1,000倍遅い)
セキュアメッセージフォーマット (Secure message format):
└ 受信者の公開鍵で暗号化する
オープンメッセージフォーマット (Open message format):
└ 送信者の秘密鍵で暗号化する
セキュアアンドサインドフォーマット (Secure and signed format):
└ 送信者の秘密鍵で暗号化し, それを受信者の公開鍵で暗号化する
5.5. 2種類の対称鍵アルゴリズム (Two types of symmetric algorithms):
5.5.1. ストリーム暗号 (Stream ciphers):
├ メッセージをビットやバイトのストリームとして扱い、それぞれに対して数学的処理を行う。
├ 鍵はストリーム暗号へのランダム値入力で、これにより鍵ストリーム(Key Stream)データのランダム性が保証される。
├ 一度に1 ビットずつ暗号化・復号を行うのでハードウェア実装により適している。
└ ビットそれぞれが処理されるので集中的であり、 シリコンレベルでの処理が適している。
強度が高く効率的な暗号アルゴリズムの特徴:
├ 鍵ストリーム値が長期間反復されない。
├ 統計的に予測不可能。
├ 鍵ストリームは鍵と線形の関係がない。
└ 統計的に鍵ストリームにバイアスがない(0 と1の数が同程度)
鍵ストリーム生成器 (Key stream generator):
└ 暗号文を生成するために平文にXOR処理されてビットストリームを生成する。
5.5.2. ブロック暗号 (Block ciphers):
├ メッセージがビットのブロックに分けられる。
├ 拡散(diffusion)と混乱(confusion)を使用する。
├ それぞれのステップでS-ボックス(S-box: substitution box)を使用する。これは、平文に対してどの関数がどの順序で適用されるかを決定する鍵である。
├ 通常データバスの幅(64 ビット)と等しいデータブロックを処理するために、ソフトウェアでの実装に適している。
└ ブロック暗号はストリーム暗号をエミュレートするモードでも実行されることがある。
混乱 (Confusion):
└ 異なる未知の鍵値が使用される。
拡散 (Diffusion):
└ 多くの異なる関数を通じて平文にビットを挿入する。これによりアルゴリズムを通じて分散される。
S-ボックス (S-BOX):
└ ビットをどのように順序を変えるか、移動するかについての指示をする参照テーブルを持つ。 復号処理で使用される鍵はどのS ボックスをどの順序で使用するかを決定する。
5.6. 共通鍵暗号のタイプ (Types of symmetric key Cryptography):
5.6.1. データ暗号標準 (DES: Data Encryption Standard):
├ NISTが承認したアルゴリズムで、IBMの128ビットアルゴリズムLuciferを基にしている。ブロック暗号アルゴリズムで、入力・出力共に64ビットである。
├ 56ビットが実際の鍵で、8ビットがパリティに使われる。64ビットのブロックが半分に分けられそれぞれの文字が一度に暗号化される。
├ 文字は16ラウンドの転置と、置換関数で処理される。
└ 動作には4つの異なるモードがある:
5.6.2. DESの5つのモード
5.6.2.1. ブロックモード
電子コードブック (ECB: Electronic Code Book):
├ 64ビットのデーターブロックを一度に一つずつ処理する。
├ 複合化は、同じ鍵を使用して、暗号文ファイルの先頭から開始し、ファイルの終わりまで、一度に64ビットを処理する。
└ 早くて簡単だが既知平文攻撃を最も受けやすい。
(問題点)
├ 64ビットの各ブロックに同じ正しい鍵を使用すると、別々に攻撃できるという問題点がある。
├ 平文の所定の64ビット値は、常に同じ暗号文を生成する。
└ 所定のメッセージ鍵は、常に同じ暗号文を生成する。
暗号ブロックチェーン (CBC: Cipher Block Chaining):
├ 前のブロックの値が次のブロックのテキストに重ねあわせられる。
└ 毎回異なる所期ベクトルを選んだ場合、全く同じファイルであって異なる暗号文が生成される。
5.6.2.2. ストリームモード
暗号フィードバックモード(CFB: Cipher Feedback Mode):
├ 最後の暗号化されたブロックが乱数を生成するためのアルゴリズムで処理される。
├ この乱数が現在処理している平文のブロックに対して
使用されて暗号文を作成する。
└ このモードは個々の文字が必要なときに使用される。出力フィードバック(OFB:
Output Feedback):
├ 暗号文を生成するために平文と組み合わせられるランダムなバイナリビットのストリームが生成され、ストリーム暗号のように働く。
└ 暗号文はアルゴリズムに戻され、次のビットストリームを暗号化するための一部を形成する。
カウンター (CTR):
└ OFBモードと、各平文ブロックとXOR(排他的論理和)をとった結果が平文と暗号文の両方と無関係に生成される点で酷似している。
(利点)
├ OFBと同様、キーストリームを事前生成する事ができる。
└ OFBと違って、暗号化は平行作業が行える。
(不利な点)
└ シングルキーで暗号化された場合のカウンター値は、全てのメッセージに対して固有のものでなければならない。
5.6.3. ダブルDES (Double DES)
├ 意図された鍵長112ビット
├ DESと比較しても特にセキュアな事が判明している(中間一致攻撃)。
└ DESの2倍の解読時間
5.6.4. トリプルDES (Triple-DES)
├ 計算に48 ラウンドかかる。パフォーマンスが重く、 暗号化や復号に最大でDES の3倍の時間がかかる。
├ DES-EEE3:3つの異なる鍵でトリプルDES暗号化。
├ DES-EDE3:3つの異なる鍵でトリプルDES演算。
(暗号化-複合化-暗号化)
└ DES-EEE2:DES-EDE2:EDE3と同じだが1回目の演算と3回目の演算は同じ鍵を使用する。
5.6.5. AES (Advanced Encryption Standard)
NISTのSESに代わる標準。ラインダールが優勝した。これは可変ブロック長と可変鍵長のブロック暗号である。
├ 3つの不可逆変換の層から成る循環変換を採用している。
├ 非線形層 (The non-linear layer)
├ 線形混合層 (the linear mixing layer)
└ 鍵加算層 (the key addition layer)
└ 地域制限のない高速チップやスマートカード上の小さなプロセッサに適している。
├ 128、192、256ビットのブロックと鍵長をサポート。
(FIPSでは鍵長128bitで鍵長128,192,256の使用が承認されている。)
└ 多様な回数のラウンドで、各ラウンドは4段階(ビットの入れ替え、列のシフト、段の並び替え、ラウンドキーの挿入)を踏む。
IDEA (International Data Encryption Algorithm) :
├ 64ビット・ブロックで処理するブロック暗号。
├ 鍵長は128ビット。
└ 64ビットのデータブロックは、16の小さなブロックに分けられ、それぞれが8ラウンドの数学関数で処理されるPGP暗号ソフトウェアで使用されている。
Blowfish :
├ 64ビットブロックで処理するブロック暗号。
├ 鍵長は448ビットまで。
└ データブロックは、16ラウンドの暗号関数で処理される。
RC5 :
├ ブロック暗号で、様々なブロック長、鍵長、ラウンド数が使用できる。
└ ブロックサイズは32/64/128ビット、鍵長は2048ビットまで。
RC2 = Ron Rivest氏によって開発された秘密鍵暗号方式。8バイト単位で暗号化を行なう。DESと比べて動作速度が速く、鍵の長さをある程度任意に設定できる。詳細な仕様はRSA Security社が保持しており、公開はされていない。また、特定の鍵を使用すると解読されやすいなどの事情により、現在はRC4やRC5が一般的に使われている
5.7. 公開鍵暗号法のタイプ (Types of asymmetric key Cryptography)
5.7.1. RSA (R.Rivest / A.Shamir / L.Adelman)
├ 公開鍵アルゴリズム、3つの公開鍵のニーズを全て満たす。
├ データの暗号化
├ 共通鍵の鍵配布
└ 否認防止のためのデジタル署名
├ 認証(電子署名)と暗号化を提供する。
├ 2つのの大きな素数から作成される。(セキュリティは大きな数の因数分解が困難)
└ SSLと共に多くのウェブブラウザで使用されている。
5.7.2. Diffie-Hellman 鍵交換 (Diffie-Hellman Key Exchange)
├ 公開鍵暗号の考えを最初に紹介した。
└ 鍵配布に使用、メッセージの暗号化や復号はできない。
5.7.3. エルガマル (El Gamal)
├ 公開鍵アルゴリズムで、デジタル署名と暗号化の両方に使用される。
├ 有限体上の離散対数計算に基づく。
└ Diffie-Hellman 鍵交換プロトコルの変形でRSAに酷似している。
5.7.3. 楕円曲線暗号システム (ECC: Elliptic Curve Cryptosystem)
├ デジタル署名、セキュアな鍵配布、データの暗号化を提供する。
├ 他のシステムに比べてリソースが少なくてすむ。
└ 公開鍵システムの楕円曲線の性質に基づいている。
(利点)
暗号化と署名の速度が速い
├ ハードウェアとソフトウェア
├ 非常に小さなハードウェア実装に理想的
└ 暗号化サービスとデジタル署名サービスを別々に提供
公開暗号鍵方式の強度の比較
ECC鍵の
サイズ
RSA鍵の
サイズ
百万命令
/秒(MIPS)年
160
1024
10Combin
320
5120
10Combin
600
21000
10Combin
1200
120000
10Combin
Merkle-Hellmanナップザック
└ 組み合わせ理論の部分集合和の問題に基づく。
(和があらかじめ決められた重みと等しくなる大きな集合から、指定の重みを持つオブジェクトを選択する。)
5.8. ハイブリッド暗号方式 (Hybrid Encryption Methods)
├ 共通鍵アルゴリズムは速度が速く、強度が高い。(十分な鍵長がある場合)
├ 公開鍵アルゴリズムは、鍵の管理がしやすいが、速度が極めて遅い。
└ ハイブリッドは、各技術の長所を利用環境に合わせて利用する。
├ 大量データの暗号化のための共通アルゴリズム。
└ 鍵の自動配布のための公開鍵アルゴリズム。
5.8.1 公開鍵暗号(Public Key Cryptography)
├ 非対称暗号アルゴリズムによって生成された2つの鍵を使用して、暗号化鍵と鍵配布を保護する。
├ 秘密鍵は対称暗号アルゴリズムによって生成され、大量の暗号化に使用される。
├ 非対称暗号アルゴリズムは公開鍵と秘密鍵を使用して暗号化・復号を行う。
├ 対称暗号アルゴリズムは秘密鍵を使用して暗号化・復号を行う。
├ 秘密鍵は実際のメッセージを暗号化するのに使用される。
├ 秘密鍵は対称鍵の別称。
└ 非対称鍵は公開鍵もしくは秘密鍵のことを指す。
セッション鍵(Session keys)
├ 2人のユーザ間のメッセージを暗号化するのに使用される秘密鍵。
└ 1つのセッションでのみ有効。
5.9. 共通鍵システムと公開鍵システムの比較
属性
共通鍵
公開鍵
鍵
2つ以上のエンティティーが1つの鍵を共有する。
一方のエンティティーが公開鍵を持ち、他方が秘密鍵を持つ
鍵交換
帯域外
秘密鍵は暗号化されメッセージと一緒に送られる。 つまり鍵は帯域内で配布される
速度
アルゴリズムが複雑でなく速い。
アルゴリズムが複雑で遅い。
鍵長
固定長
可変長
用途
大量の暗号、ファイルの暗号化等
鍵暗号化および鍵配布。
提供できるセキュリティ
機密性と安全性
機密性, 安全性, 認証, 否認防止
5.10. 公開鍵基盤 (PKI: Public Key Infrastructure)
├ PKI電子用取引に対し以下のものを提供する。
└ 機密性/アクセス制限/完全性/認証/否認防止サービス
├ 公開鍵/秘密鍵のペアと生成と配布を管理する。
├ 公開鍵を「証明書」として発行する。
└ 高信頼性を提供する。
├ 秘密鍵は安全に保管される。
├ 特定の公開鍵は、特定の秘密鍵に厳密にリンクされる。
└ 秘密鍵/公開鍵のペアを保有する当事者は、その当事者が本人であることを証明できる。
PKIの中核
認 証=ある名前を名乗る人を、本当にその人であることを保障すること。
完全性=「ある場所」と「ここ」との間で、または「ある時」と「今」との間で、データが意図的にまたは偶然に変更されていない事の証明。
機密性=受信者が明確に意図した場合を除き、データの特定部分を誰も読み取る事が出来ないということの証明。
電子証明書 (Digital certificate):
└ 他の識別情報と共に個人の公開鍵を含む証明書。
認証局 (CA: Certificate authority):
└ 公開鍵証明書を発行し維持管理する組織。
└ 申請、認可(申請者の認証)、発行、許可、取り消し
証明書失効リスト (CAL: Certificate revocation list):
└ 何らかの理由により無効になった証明書全てのリスト。このリストは定期的に整備される。
証明書 (Certificate):
└ 公開鍵を、所有者と主張する人とユニークに認証するのに十分な要素と結び付けるために使用されるメカニズム。
登録局(RA: Registration authority):
└ 証明書登録業務を行う。
PKIのエンティティーと機能:
├ CA/RA
├ 証明書リポジトリ (certificate repository)
├ 証明書失効システム (certificate revocation system)
├ 鍵のバックアップ・回復システム (key backup and recovery system)
├ 自動鍵更新 (automatic key update)
├ 鍵履歴管理 (management of key histories)
├ 他のCAとの相互認証 (cross-certification with other CAs)
├ タイムスタンプ (time stamping)
└ クライアントソフトウェア (client-side software)
5.11. ハッシュ関数 (Hash Function):
├ 一方向の計算が逆方向に比べ用意であるような数学関数
├ 任意の長さのメッセージを圧縮し、固有の固定長結果にするときに使用する。
└ デジタル署名アルゴリズムによって生成される署名に使用する。
優れたハッシュ関数の属性
├ 個々のハッシュ値が与えられた場合に、組み合わせた2つのメッセージのハッシュ値を計算する事ができない。
├ ハッシュは、メッセージ全体について計算されなければならない。
├ ハッシュは一方向関数なので、その署名によってメッセージは開示されない。
├ メッセージとそのハッシュ値が与えられた場合、同じハッシュ値を持つ別のメッセージを計算することは計算上実行不可能である。
└ 誕生日攻撃 (birthday attack:同じハッシュ値を持つ2つのメッセージを見つける)を阻止できる。
トラップドア一方向関数 (Trap door one-way function):
├ 公開鍵暗号の基になっているもの。
└ 公開鍵は暗号化を行い、秘密鍵(トラップドア)は復号を行う。
ハッシング関数の種類(例)
├ RSAメッセージダイジェスト
├ MD2、MD4、MD5のアルゴリズム
├ セキュアハッシュアルゴリズム
└ SHA-1、SHA-256、SHA-384、SHA-512
└ HAVAL
└ 128~256ビットのさまざまなメッセージダイジェスト出力サイズをサポート
5.12. メッセージ完全性 (Message integrity)
一方向ハッシュ(One-way hash):
└ 可変長メッセージを圧縮してハシシュ値と呼ばれる固定長の値に変換する関数。
メッセージダイジェスト(Message digest):
├ 一方向ハシシュのハッシュ値。
└ 公開鍵暗号では一方向関数が使用されている。
機能:
├ 逆方向には実行できない。
├ メッセージの完全性を提供するが、機密性、認証は提供しない。
├ 一方向ハッシュの結果はハシシュ値である。
└ メッセージの指紋(fingerprint)を作成するためのハッシュ計算に使用される。
電子署名 (Digital signatures):
└ 暗号化された、メッセージのハシシュ値。
デジタル証明標準 (DSS: Digital signature standard):
├ 電子署名およびその機能や容認できる使用についての標準。
└ 電子署名アルゴリズム(DSA: Digital Signature Algorithm)とセキュアハッシュアルゴリズム(SHA: Secure Hash Algorithm)を必要とする。
5.13. 他のハシシュアルゴリズム
MD4:
└ 128ビットのハシシュ値を生成する。ソフトウェア実装で高速計算に用いられ、マイクロプロセッサに最適化されている。
MD5:
└ 128ビットのハッシュ値を生成する。 MD4より複雑。テキストを512ビットのブロックで処理する。4ラウンドの変換を受ける。
MD2 :
└ 128ビットのハシシュ値を生成する。 MD4や MD5より遅い。
SHA:
└ 160ビットのハシシュ値を生成する。メッセージの署名を計算する DSAに入力される。メッセージ全体ではなくメッセージダイジェストが署名される。
SHA1:
└ SHAの更新版。
HAVAL:
└ 可変長の一方向ハシシュ関数でMD5の改良版。テキストを1024ビットのブロックで処理する。
5.13.1. 一方向関数に対する攻撃
├ 衝突(Collision)あるアルゴリズムによって2つの異なるメッセージに対して同じ値を生成すること。
└ 誕生日攻撃(Birthday attack)総当たりによるハシシュ関数への攻撃。攻撃者は同じハシシュ値を持つ2つのメッセージを見つけようとする。
5.13.2. 使い捨て方式 (One-time pad)
├ 破ることが不可能で、padは-度しか使用されない。
├ 繰り返しのないランダムピットセットを使用し、暗号文を生成するためにメッセージにピット毎のXOR処理を行う。
├ ランダム鍵はメッセージと同じ長さで1回しか使用されない。
└ 乱数のパッドを必要とする人全てに配布するのが難しい。
5.14. デジタル署名(Digital Signature)
├ メッセージの出所と送信者の身元を検証するための認証手段
├ 各ユーザは、公開鍵と秘密か銀Pペアを持っている。
└ 秘密鍵で署名を作成し、公開鍵で署名を証明する。
└ デジタル署名は、送信者の秘密鍵でメッセージのダイジェストまたはハッシュ値を暗号化することで作成される。
5.14.1. DSS(デジタル署名標準: Digital Signature Standard)
├ DSA(デジタル署名アルゴリズム: Digital Signature Algorithm)
└ RSA、ElGamal、Fiat-Shamir,Schnorr、など
5.14.2. デジタル署名の運用
メッセージに署名を付ける
├ 送信者はメッセージダイジェストを計算する。
(公開ハッシュ関数を使用する。)
├ 暗号「署名」は送信者の秘密鍵で作成される。
(ダイジェストに適用すると、デジタル署名が作成される。)
├ デジタル署名はメッセージと共に送信される。
└ メッセージそのものは秘密になっていない。
メッセージを検証する。
├ 受信者は受信したメッセージダイジェストを再計算する。
├ 送信者の公開鍵を使用して署名を複合化し、送信者のオリジナルダイジェストを抽出する。
└ 再計算したダイジェストと複合化したダイジェストが一致するか検証する。
5.15. 鍵管理 (Key Management)
鍵の管理活動内容
├ 鍵の生成
├ 鍵の変更
├ 鍵の廃棄
├ 鍵の復旧
└ 暗号鍵の管理
Kerberos:
└ 暗号化に使用するセッション鍵を鍵発行局(KDC: key distribution center)が保存、配布、維持する。
Diffie-Hellman:
└ 鍵交換アルゴリズム(KEA: key exchange algorithm)を使用する。
5.15.1. 鍵管理の原則 (Key Management principles)
完全に自動化しなければならない。
├ 鍵の規律性と機密性
├ 鍵の生成に当っては、秘密裏にかつ信用できうるプロセス。
└ 鍵のスペース全体からランダムに鍵を選択する。
(パターンは、作業量を減らすことによって攻撃相手に活用される。)
暗号化と鍵の管理がアプリケーションと一体化
(ユーザから暗号を隠し易く、且つエラーを削除できる。)
キー暗号化キーはデータ暗号化キーと区別しなければならない。
└ 平文はキー暗号化キーで暗号化されない。
(キー暗号化キーは、総当り攻撃(Brute Force)に対して脆弱で無い状態に保つ。)
すべての平文オブジェクトのパターンを暗号化前に変換する。(暗号文のみ攻撃を阻止する。)
鍵を長時間使用することは避ける。
└ 同じ鍵を長時間使用すると、攻撃が成功する可能性がたかくなり、生じる結果が重大なものとなる。
鍵のコピーは一つにする。
├ 鍵のコピーを増やすと、開示の可能性が増す。
└ サーバー複数時は、共通のソースからの証明書を持つ各サーバーでそれぞれ違う鍵を使用する。
ファイル暗号化アプリケーションの復旧には緊急時用の鍵使用する。
└ 通信の暗号化の場合には、鍵を変更して使用する。
・暗号デバイスの外では平文であってはならない。
・バックアップコピーを作成し、必要なときに簡単に使えるようにしておく。
・緊急時の鍵復元のために、複数人のコントロールを選択することも出来る。すなわち鍵を復元する必要があるときに、元プロセスを行うのに複数の者が必要である。
5.15.2. 鍵および鍵管理のルール
├ 必要なレベルの保護を行う為に鍵長は十分長くなければならない。
├ 鍵の保管や送信はセキュアな方法で行わなければならない。
├ 鍵は非常にランダムでキースペースの全範囲を使用していなければならない。
├ 鍵の寿命は保護すべきデータの機密性に対応していなければならない。
├ 鍵が使用される頻度が高いほど, 寿命は短くなければならない。
├ 鍵は非常事態のためにバックアップするか鍵寄託を利用するべきである。
└ 鍵の寿命が来た場合は適切に破壊しなければならない。
7.16. リンク暗号化と終点間暗号化 (Link versus end-to-end encryption)
7.16.1. リンク暗号化 (Link encryption)
├ 衛星リンク、T3、電話回線などのような特定のコミュニケーションパスにおいて全てのデータを暗号化する。
├ パケットの一部であるユーザ情報、ヘッダ、トレーラ、アドレス、ルーティングデータ等も暗号化される。
├ パケットスニファや盗聴に対する防御となる。
├ ホップ毎にパケットが復号され、また暗号化される。
└ 物理レベルで行われる。
7.16.2. 終点間暗号化 (End-to-end encryption)
├ 情報のみが暗号化される。
├ 通常、送信元のコンピュータのアプリケーション層において初期化される。
├ 送信元から送信先まで暗号化されたままである。
└ それぞれのアプリケーションやユーザは異なる鍵を用いることにより、高いグラニュラリティの暗号化が行える。
7.17. 電子メールセキュリティ
メッセージ出所の認証
└ 送信者は、その当事者が本人であることを認証する。
コンテンツの完全性
└ 送信者がメッセージを送信した後に、そのメッセージが変更されていないことを保障する。
コンテンツの機密性
└ 必ず意図した受信者のみがメッセージを読むようにする。
配達証明
└ メッセージが配達されたこと証明する。
メッセージ順序の完全性
└ 必ず全てのメッセージが正しい順番で配達されるようにする。
配達の否認防止
└ 受信者がメッセージを受信したことを証明できる。
メッセージセキュリティのラベル付け
└ 取り扱い指示命令で、メッセージにラベル付けを行う。
メッセージフローの機
└ 誰と密性メール交換をしているのか、誰にも知られないようにする。
セキュアアクセス。
└ 許可なしに電子メールシステムを他者が使用しないようにする。
7.17.1. プライバシー強化メ-ル (PEM : Privacy-enhanced mail)
└ 認証、メッセージの完全性、暗号化、鍵管理の機能を持つ。
使用されるコンポーネント:
├ CBCモードのDESでメッセージが暗号化される。
├ 認証はMD2もしくはMD5で行われる。
├ 公開鍵管理はRSAによって行われる。
└ X.509 標準が証明書構造とフォーマットに使用される。
* X.509 v3は電子証明書は公開鍵のバージョン番号、証明書のシリアル番号、公開鍵情報、証明書を発行した認証局情報、証明書の有効期間、証明される主体者の情報、拡張領域といった項目で構成される。拡張領域には電子メールアドレスやIPアドレスなどといった情報を用いることができる。
X.509v3 はSSLやTLSなどといったインターネット上における暗号化、プライバシー保護の手段として様々な状況下で利用されている。
7.17.2. メッセージセキュリティプロトコル (MSP: Message Security Protocol,)
└ メッセージに署名して暗号化し、ハッシュ関数を実行する。
7.17.3. PGP: Pretty Good Privacy
├ 最初に普及した公開鍵暗号システム。
├ 鍵管理にRSA公開鍵暗号を使用し、データの大量暗号化にはIDEA対称暗号を使用している。
├ PGPではパスフレーズが使用され、これはユーザのハードディスクに保存される、ユーザの秘密鍵を暗号化するのに使用される。
└ 鍵管理アプローチは「信用の輪(web of trust)」に依存している。
カギリング(Key ring):
└ 他のユーザから受け取った, 署名された公開鍵を集めたものをそれぞれのユーザが持っている。
7.18. インターネットセキュリティ
7.18.1. HTTP: Hypertext Transport Protocol
└ TCP/IP の最上位に位置するステートレスなプロトコルで、クライアントとウェブサーバは操作毎に接続を確立し、切断する。
7.18.2. S-HTTP: Secure Hypertext Transport Protocol
└ セキュアハイパーテキスト転送プロトコル
├ セキュアなコミュニケーションを提供するために開発された。
├ 計算によって得られたセッション鍵でメッセージを暗号化する。
├ 完全性と送信者の認証機能を持つ。
├ ステートレスなプロトコルではない。
├ 複数の暗号化モードおよびタイプをサポートする。
├ 公開鍵技術と対称暗号を使用できる。
└ 個々のメッセージの暗号化が必要なときに使用される。
7.18.3. HTTPS: Hyper Text Transfer Protocol over SSL
├ 2つのコンピュータ間のコミュニケーションを保護する。
├ クライアントとサーバ間の保護された回線を提供するためにSSL とHTTP を使用する。
└ 2つのコンピュータ間の全ての情報の暗号化が必要なときに使用される。
RC4-40
・現在HTTPSの暗号化に多く使われている。
・通信の都度、40bit暗号鍵を生成。
・暗号化と複合化に同じ鍵を使用する。
・使い捨ての鍵を用いる事により、暗号化の強度を上げている
・現在RC4-128という128bitsの鍵が使われるようになりつつある。
7.18.4. セキュアソケットレイヤー (SSL:Secure Sockets Layer)
├ コミュニケーションチャネルを保護する。
├ 公開鍵暗号を使用する。
├ データ暗号化、サーバ認証、メッセージの完全性、最適なクライアント認証を提供する。
├ どちらかがセッションを終了させるリクエストをするまで、コミュニケーションパスは開いている。
└ アプリケーション層の下でトランスポート層の上に位置する。
7.18.5. 多目的インターネットメイル拡張 (MIME:Multipurpose Internet Mail Extension)
└ マルチメディアデータおよび電子メール添付を送信する方法を示す。
7.18.6. セキュアMIME (S/MIME:Secure MIME)
├ 電子メールの暗号化と電子署名の標準で、ファイル添付とセキュアなデータ伝送機能を持つ。
└ 暗号化アルゴリズムによって機密性を、ハッシュアルゴリズムによって完全性を、X.509 公開鍵証明書によって認証を、署名されたメッセージによって否認防止を提供する。
7.18.7. セキュアエレクトロニックトランザクション (SET:Secure Electronic Transaction)
└ クレジットカード番号を暗号化して送信するために開発された。
3つの主な部分から構成される。
├ 電子財布。
├ 店側のウェブサイトのサーバ上で実行されているソフトウェア
└ 店の取引銀行にある支払サーバである.
7.18.8. クッキー(Cookies)
├ ユーザのハードディスクにブラウザが持つテキストファイル。
├ 人口統計学的に、宣伝用情報に使用される。
├ ユーザとサーバ間のセッションの制限時間を適用するのにも使用される。
└ 重要な情報を含んだクッキーは、送信するサーバ側で暗号化されるべきである。
7.18.9. セキュアシェル(SSH: Secure SHell)
├ リモートコンピュータへのターミナルアクセスに使用する。トンネリングメカニズムとして機能する。
├ telnet, ftp, rlogin rexec, rsh の代わりに使用する。
└ 2つのコンピュータがハンドシェイクをして, セキュアなチャネルが確立される.
7.18.10. インターネットプロトコルセキュリティ (IPSec:Internet Protocol Security)
├ 2つのデバイス間のデータ交換を保護するためのセキュアチャネルを確立する手法。
├ セキュアなネットワーク層通信のための、広く受け入れられた標準である。
├ 公開鍵暗号を採用し、強力な暗号と認証方法を持つ。
├ VPNを確立するために使用される。
├ オープンでモジュール構成のフレームワークなので、柔軟性がある。
├ 2つの基本的なセキュリティプロトコルがある。
認証ヘッダ(AH:Authentication Header):
└ 認証プロトコル
暗号ペイロード(ESP:Encapsulating Security Payload):
└ 認証と暗号化のプロトコルで、送信元認証。
├ 機密性、メッセージの完全性を提供するために暗号メカニズムを使用している。
└ 2つのモードで動作する:
├ トランスポートモード (Transport mode): メッセージのペイロードが暗号化される。
└ トンネルモード (Tunnel mode): メッセージのペイロード、ルーティング、ヘッダ情報が暗号化される
* インターネットで暗号通信を行なうための規格。IPのパケットを暗号化して送受信するため、TCPやUDPなど上位のプロトコルを利用するアプリケーションソフトはIPsecが使われていることを意識する必要はない。現在インターネットで使われているIPv4ではオプションとして使用することができるが、次世代のIPv6では標準で実装される。
セキュリティ・アソシエーション(SA:Security association):
├ 認証および暗号化鍵、使用するアルゴリズム、鍵の有効期限、送信元IP アドレスを持つ。
└ それぞれの接続に1 つのSA が対応する。
セキュリティ・パラメータ・ンデックス(SPI:Security parameter index):
└ 異なるSA を追跡し、デバイスにどのSA を呼び出すかを伝えるインデックス。
インターネット・セキュリティ・アソシエーション・および鍵管理プロトコル
(ISAKMP:Internet Security Association and Key Management Protocol):
└ 認証と鍵交換アーキテクチャーで、使用される鍵メカニズムには依存しない。
7.19. 攻撃
7.19.1. 暗号文攻撃 (Cipher text-only attack)
├ 攻撃者は複数のメッセージの暗号文を持っている。
└ それぞれのメッセージは同じ暗号化アルゴリズムを用いて暗号化されている。
7.19.2. 既知平文攻撃 (Known-plaintext attack)
└ 攻撃者は1つもしくは、複数のメッセージの平文、および暗号文を持っている。
7.17.3. 選択平文攻撃 (Chosen-plaintext attack)
└ 攻撃者者平文と暗号文を持っており、暗号化する平文を選択することが出来る。
7.17.4. 選択暗号文攻撃 (Chosen-cipher-text attack)
└ 攻撃者は復号する暗号文を選択し、復号されて得られた平文にアクセスできる。
7.17.5. 仲介者攻撃 (Man-in-the-middle attack)
├ 他の会話を盗聴する。
└ 電子署名をセッション鍵交換に使用することにより、攻撃を回避することが出来る。
7.17.6. 辞書攻撃 (Dictionary attacks)
└ パスワードファイルを一方向関数にかけ、一方で一般によく使用されるパスワードのリストを同じ一方向関数にかける。そしてこれらのファイルを比較する。
7.17.7. リプレイ攻撃 (Replay attack)
└ 攻撃者はチケットをコピーしてその暗号化を破る。そして後からそのクライアントのふりをしてチケットを再送し、許可されていないリソースへのアクセスを得る。