公開鍵暗号化を使用して配布された2つのパーティ間で共有鍵を使用しているとしましょう。共有鍵を使用して暗号化されたデータに署名する必要はありますか?または、共有キーは公開キー暗号を使用して配布され、うまくいけば関係する2つの関係者だけが知っているため、送信者を認証するためにメッセージに署名する必要がないと想定するだけで十分でしょうか?
基本的に、対称鍵暗号化は信頼性を提供し、場合によっては否認防止を提供しますか?
秘密の対称鍵による暗号化は、真正性を証明しませんあなたが使用しない限り認証された暗号化操作モード[〜#〜] gcmなど[〜#〜] 。認証された暗号化アルゴリズムは、メッセージの暗号化に加えて Message Authentication Code(MAC) を生成し、if共有キーが適切に保護されている場合、これを使用してメッセージの信憑性と整合性を証明しますが、否認防止は証明しません(これは大きな「if」です-後で)。
共有キーを使用した通常の対称キー暗号化では、メッセージの整合性も信頼性も証明されません。これは、攻撃者がランダムなメッセージを生成して受信者が復号化して受け入れることを妨げるものがないためです。攻撃者は解読されたメッセージがどのように見えるかを知りませんが、ランダムに生成されたメッセージを受信者に受け入れさせることが攻撃者にとって有利になる状況が数多くあります。
対称鍵にアクセスできる人だけがメッセージのMACを生成できるため、適切に保護された対称鍵で認証された暗号化を使用するだけで、メッセージを認証できます。対称暗号化では受信者も同じ秘密鍵を使用するため、MACは否認防止を提供しません。したがって、受信者が受信者ではなくメッセージに署名したことを受信者が証明する方法はありません。
前に強調したように、認証に共有キーを使用するには、共有キーを適切に保護する必要があります。具体的には、受信者が対称鍵を生成し、それを受信者の公開鍵で非対称に暗号化して送信者に送信する場合(PKIを使用して暗号鍵を送信する通常の方法です)、この対称鍵を使用して、プロセスの何も送信者の身元を証明しないため、送信者。受信者の公開鍵(結局のところ公開)にアクセスできる人はだれでもランダムな対称鍵を生成し、それを受信者の公開鍵で暗号化できます。
対称鍵を使用してメッセージを認証できるのは、共有対称鍵を生成するスキームに双方向認証が含まれている場合のみです。メッセージに署名して暗号化するための共有キーを生成するための双方向認証を含むスキームは、一般にSecure Authenticated ChannelまたはSACとして知られています。
暗号化は悪意のある改ざんから保護しません。 RC4やAES-CTRなどのストリーム暗号を使用して一部のデータを暗号化する場合、攻撃者は暗号文で必要な任意のビットを反転することを決定でき、復号化すると、プレーンテキストの対応するビットが反転します。これにより、外科的変更が可能になります。 CBCモードのブロック暗号を使用すると、処理は少し少なくなりますが、攻撃者が多くの気の利いたことを実行できるほど十分に含まれています(CBCと16バイトブロックのブロック暗号では、攻撃者が1ビットをフリップすると、これにより、対応するブロックがスクランブルされ、次のブロックの対応するビットが反転します。
したがって、チェックされた整合性と暗号化が必要です。 [〜#〜] eax [〜#〜] などのブロック暗号の暗号化のいくつかのモードは、暗号化と整合性チェックを組み合わせたものです。それ以外の場合は、スタンドアロン [〜#〜] mac [〜#〜] でトリックを実行できます(ただし、暗号化とMACを適切に組み合わせる 完全に明らかなタスクではありません なので、すべてのハード仕様の作業が行われたモード(EAXなど)を使用することをお勧めします。
一部の人々は、MACの「署名」という用語を使用します。これは不適切ですが、広範囲に使用されています。 MAC、およびa fortiori保護されていない暗号化のみであり、否認防止を提供しません。否認防止とは、使用できる証明があることですagainst署名者。おそらく、裁判官のような第三者を説得することができる何か。送信者と受信者の間で共有シークレットを使用する計算は、送信者と受信者の両方が定義によってそれを知っている(そして、論争は送信者と受信者の間である)ため、説得力のある証明にはなりません。否認防止は、法的影響を伴う複雑な概念ですが、少なくとも、コンピューター部分は、否認されないデータ(および共有されたデータのみ)に対して計算された真の デジタル署名 を使用する必要があります。キー)。
補足事項:同じ理由で、SSLはnotを提供します。クライアント側の証明書が中古。 SSLサーバーがクライアントからのSSL接続に関するすべてを記録し、クライアントが証明書で認証されている場合、サーバーmayは特定のクライアントが実際にアクセスしたことを証明しますが、サーバーは証明できませんSSLトンネル内のクライアント送信済みについて第三者に何でも。オンラインバンキングに関しては、これは実際には法的に難しい問題です。