MAC(つまり共有キー)を使用せずに、また「信頼できる」サードパーティ(つまり認証局)を使用せずに、メッセージが改ざんされているかどうかを検出することは可能ですか?
そうではないと確信していますが、確かにしたいと思います。
注:メッセージが他の人に読まれてもかまいません。送信経路に沿ってメッセージを変更できるようにしたくないだけです。
いいえ改ざんを検出するには、受信者は送信者について何かを知っている必要があります。そうでなければ、正当な送信者と改ざんしている人を区別するものは何もありません。
受信者が知っていることにはいくつかの選択肢があります。
detect改ざんするには、最初にdefine改ざんする必要があります。メッセージを受信しています。何がそれを「本物の」メッセージではなく「改ざんされた」メッセージにするのでしょうか?
改ざん/本物の通常の定義では、メッセージソースを使用します。時空のある時点で、メッセージはエンティティによってアセンブルまたは検証されました[〜#〜] s [〜#〜 ]、それが正しいと宣言する人。これは本物のメッセージの定義です:[〜#〜] s [〜#〜]からのその操作(または検査)に対応するビットのシーケンス。時空の別の時点(後で、場合によっては他の場所)で、検証者[〜#〜] v [〜#〜]は、メッセージがまだ本物である、つまりまったく同じであることを確認したいと考えています。 [〜#〜] s [〜#〜]が見たビットのシーケンス。
知識は力です:誰もが同じコンピューターを購入できるので、ソースが[〜#〜] s [〜#〜] =攻撃者ができないことを実行できる[〜#〜] a [〜#〜]実行できない場合、これは必須理由は[〜#〜] s [〜#〜]は、[〜#〜] a [〜#〜]が知らない特定のデータ(暗号学者はそれを「キー」と呼びます)を知っています。それ以外の場合、[〜#〜] a [〜#〜]が[〜#〜] s [〜#〜]が知っていることをすべて知っている場合、[ 〜#〜] a [〜#〜]は、本物のメッセージと見分けがつかない独自のメッセージを作成できます。
その秘密の値(それを[〜#〜] k [〜#〜]と呼びましょう)が[〜#〜] s [〜#〜]との両方に知られている場合[〜#〜] v [〜#〜]の場合、 [〜#〜] mac [〜#〜] を使用できます。このような設定は、[〜#〜] v [〜#〜]が攻撃者でない場合にのみ機能します。 [〜#〜] k [〜#〜]が[〜#〜] s [〜#〜]のみに知られている場合でも、信頼性に適している必要があります[〜#〜] v [〜#〜]からの検証、そして デジタル署名 を使用して非対称暗号化の領域に入ります。
どちらの場合も、コンテキストからの助けが必要です。共有秘密は、薄い空気からは実現しません。証明書もありません。おおまかに次のような状況と解決策があります。
[〜#〜] s [〜#〜]および[〜#〜] v [〜#〜]以前に会ったことがあるか、両方への安全なチャネルがあります[〜#〜] s [〜#〜]および[〜#〜] v [〜#〜]のみが到達できるランダムビットの信頼できるジェネレータ。 MACを使用するだけです。
[〜#〜] s [〜#〜]と[〜#〜] v [〜#〜]秘密を共有しますが、エントロピーは低くなります(たとえば、人間が覚えることができるパスワード)。 Password-Authenticated Key Exchange プロトコル(例: [〜#〜] srp [〜#〜] )は[〜#〜] s [〜 #〜]および[〜#〜] v [〜#〜]その共有シークレットをより適切な共有に拡張する[〜#〜] k [〜#〜]これは辞書攻撃に抵抗します。これは、[〜#〜] s [〜#〜]と[〜#〜] v [〜#〜]が一度に相互に通信できることを意味しますPAKEプロトコルを実行します(これには安全な回線は必要ありません。インターネット経由で実行できますが、それでも1つの時点で実行する必要があります)。共有されると[〜#〜] k [〜#〜]、MACを使用します。
[〜#〜] s [〜#〜]公開鍵と秘密鍵のペアを生成し、[〜#〜] v [〜#〜]を作成する方法があります彼が「[〜#〜] s [〜#〜] "の公開鍵」と見なしているものが改ざんされていないことを確認してください。これにより、[〜#〜] v [〜#〜]は、[〜#〜] s [〜#〜]によって計算された署名を検証できます。これは問題を解決しませんが、問題を解決します。「メッセージ」の改ざんの検出は、公開鍵の改ざんの検出に移動しました。ただし、メッセージが最初に存在するずっと前に、公開鍵と秘密鍵のペアが事前に生成および検証されている可能性があるため、これは役立ちます。このようなキーペアは、複数の(多くの)メッセージを保護するために使用できます。
[〜#〜] v [〜#〜]信頼できるサードパーティの公開鍵を知っています[〜#〜] t [〜#〜]これは秘密を使用します[〜#〜] s [〜#〜]の公開鍵に署名するための鍵。これは前のケースの拡張であり、基本的には [〜#〜] pki [〜#〜] についてです。
これらすべての重要な点は、暗号化やその他のシステムがcreate信頼しないということです。暗号化は信頼を動かすだけです。あなたはまだどこかから始めなければなりません、そしてその「どこか」は「本物のメッセージ」を構成するものの定義です。
ファイルが改ざんされている場合は、MD5を使用できます。MD5で通知されます。
man md5sum