応用暗号学(学習整理、二)


                             ,      。

             ,                    ,          ;

第二章:パスワードプロトコル
プロトコルは、両方または複数のステップを含み、タスクを完了するために設計されています.(一度に実行し、少なくとも2人、1つの任務を完成する;明確、完全、具体的)
一方向Hash関数には、圧縮関数、短縮関数、メッセージ要約、指紋、パスワードチェックサム、情報整合性チェック(DIC)、操作チェックコード(MDC)という名前がたくさんあります.Hash関数とは,可変入力長列(プリマッピング,Pre-image)を固定長(しばしばより短い)出力列(hash値)に変換する関数である.Hash関数は公開されており,処理過程を秘密にする必要はない.一方向hash関数のセキュリティはその一方向性である.いずれにしても、出力は入力に依存しません.プリマッピングされた値の単一ビットの変化は、平均的にhash値の半分のビットの変化を引き起こす.hash値は既知であり、事前マッピングされた値を見つけて、そのhash値が既知のhash値に等しくなるように計算することはできません.
以下に、Aliceがどのように公開鍵暗号を使用してBobに情報を送信するかについて説明する:(1)AliceとBobは公開鍵暗号システムを選択する.(2)Bobは彼の公開鍵をAliceに送信する.(3)AliceはBobの公開鍵で彼女の情報を暗号化し,Bobに送信する.(4)Bobは彼の秘密鍵でAliceの情報を復号する.(自分の秘密鍵で自分の公開鍵を解き、秘密鍵は自分だけが知っている、そのまま)
実際の世界では,公開鍵アルゴリズムは対称アルゴリズムに代わるものではない.公開鍵アルゴリズムは、メッセージを暗号化するのではなく、鍵を暗号化するために使用される.このようにするには2つの理由がある:1.公開鍵アルゴリズムは対称アルゴリズムより遅く、対称アルゴリズムは一般的に公開鍵アルゴリズムより千倍速い.2.公開鍵暗号システムは、選択明文攻撃に対して脆弱である.C=E(P)の場合、PがN個の可能な明文セットの明文である場合、暗号分析者はN個の可能な明文をすべて暗号化し、Cと結果を比較することができる(暗号化鍵は公開されていることを覚えておく).この方法では、復号鍵を復元することはできないが、Pを特定することができる.
ほとんどの実際の実装では、公開鍵パスワードは、セッション鍵のセキュリティおよび配布を保証するために使用される.これらのセッション鍵は、対称アルゴリズムにおいて使用され、通信メッセージを秘密にする[879].このシステムをハイブリッド暗号システムと呼ぶことがある.(1)Bobは彼の公開鍵をAliceに送った.(2)Aliceはランダムセッション鍵Kを生成し,Bobの公開鍵で暗号化し,暗号化された鍵EB(K)をBobに送る.(3)Bobは彼の秘密鍵でAliceのメッセージを復号し,セッション鍵を復元する.DB(EB(K)=K(4)2人は、同じセッション鍵で通信情報を暗号化する.
対称暗号システムと仲裁者のファイル署名Aliceを使ってデジタルメッセージに署名し、Bobに送りたい.Trentは権力があり、依存する価値のある仲裁者です.彼はAliceとBob(他のデータファイルに署名したい人でもいい)と同時に通信することができます.彼はAliceと秘密鍵KAを共有し、Bobと別の秘密鍵KBを共有した.(1)Aliceは、彼女がBobに送信しようとした情報をKAで暗号化し、Trentに送信する.(2)TrentはKAで情報を復号する.(3)Trentはこの復号情報を彼がAlice情報を受け取った声明とともにKBで暗号化する.(4)Trentは暗号化されたパケットをBobに渡す.(5)BobはKBでパケットを復号すると,Aliceからの情報とTrentの証明書を読むことができ,Aliceからの情報であることを証明する.(TrentはKAで情報を復号できる説明情報は必ずAliceから来ます.AliceだけがKa暗号化情報を持っているからです)
もしBobがAlice署名のファイルをCarolに読みたいならば、彼は自分の秘密鍵を彼女に渡すことができなくて、彼はまたTrent:(1)Bobを通じて情報とTrentについて情報をAliceからの声明をKBで暗号化して、それからTrentに送り返さなければなりません.(2)TrentはKBでパケットを復号する.(3)Trentは彼のデータベースをチェックし,元の情報がAliceから来たことを確認する.(4)Trentは,Carolと共有している鍵KCでパケットを再暗号化し,Carolに送る.(5)CarolはKCでパケットを復号し,Aliceからの証明書を読むことができる.
公開鍵のパスワードを使用してファイル署名の基本プロトコルは簡単です:(1)Aliceは彼女の秘密鍵でファイルを暗号化して、それによってファイルに署名します.(2)Aliceは署名したファイルをBobに渡す.(3)BobはAliceの公開鍵でファイルを復号し,署名を検証する.
実際の実装では,公開鍵暗号アルゴリズムを用いた長ファイル署名の効率が低すぎる.時間を節約するために、デジタル署名プロトコルは、一方向Hash関数とともによく使用されます.Aliceはファイル全体に署名せず、ファイルのHash値のみに署名します.このプロトコルでは,一方向Hash関数とデジタル署名アルゴリズムは事前に協議されている.(1)Aliceはファイルの一方向Hash値を生成する.(2)Aliceは彼女の秘密鍵でHashを暗号化し,これによってファイルに署名する.(3)AliceはファイルとHash署名をBobに送る.(4)Bobは,Aliceが送信したファイルでファイルの一方向Hash値を生成し,その後,デジタル署名アルゴリズムでhash値を演算するとともに,Aliceの公開鍵で署名したHashを復号する.署名のhash値が自分で生成したHash値と一致すれば,署名は有効である.
秘密鍵Kによる署名情報は、SK(M)と表す.対応する公開鍵検証情報をVK(M)と表す.署名の際、ファイルに添付されたビット列をデジタル署名(上記の例では、ファイルの一方向Hash値を秘密鍵で暗号化)または署名と呼ぶ.
暗号化されたデジタル署名:(1)Ailceは彼女の秘密鍵で情報に署名した.SA(M). (2)Aliceは,Bobの公開鍵で署名した情報を暗号化し,Bobに送る.EB(SA(M)). (3)Bobは彼の秘密鍵で復号する.DB(EB(SA(M)))=SA(M). (4)BobはAliceの公開鍵で検証し,情報を復元する.VA(SA(M))=M.
セキュリティ・データベースに公開鍵が保存されていても、Malloryは、転送中に別の公開鍵で置き換えることができます.この問題を防止するために、Trentは彼の秘密鍵で各公開鍵に署名することができる.このようにする場合、Trentは、鍵認証機関または鍵割り当てセンタ(KDC)と呼ばれることが多い.実際の実装では、KDCは、ユーザ名、公開鍵、および他のユーザの重要な情報からなる情報のセットに署名する.署名されたこの情報セットはKDCデータベースに格納される.
コンピュータ内のランダムシーケンス発生器(少なくとも、有限状態機)は周期的であり、周期的なものはすべて予測可能である.予測可能であれば、ランダムではありません.本当のランダムシーケンスジェネレータはランダム入力を必要とし、コンピュータはこのようなランダム入力を提供することはできません.