web-dev-qa-db-ja.com

HMACと否認防止

これは試験問題でした。

2人が一方向の通信チャネルとHMAC機能(具体的にはHMAC-SHA1)を使用しています。以下の正しい説明を選択してください。

1)HMAC-SHA1は両方に知られている共有秘密を使用するため、送信者が誰であるかを証明できます。さらに、通信チャネルは一方向にしか機能しません。

2)HMAC-SHA1は両方に知られている共有秘密を使用するため、送信者が誰であるかを証明できます。

3)機密性が提供されなかったため、送信者はメッセージを送信したことを拒否できます。

4)上記のいずれでもない。

この試験の質問は注意が必要です。答え3または4は正しいと思います(否認防止を提供するにはデジタル署名が必要であり、機密性は否認防止とは関係ありません)が、4番目の答えに傾いています。

どれを選びますか?

2
RunoTheDog

回答2は無意味です。それは文字通り「私たちは送信者が誰であるかを証明することができますtwo人はMACを作成する能力を持っているからです。」 MACの場合、どちらかパーティがMACedメッセージを作成した可能性があります。 各パーティー誰が作成したかは知っています(あなたが何かを書いたかどうか、そしてあなたが他の人が書いていないかどうかを知っています)が、他の人にそれを証明することも、証明することもできません彼らは事後にそれを作成しませんでした。これを行うには、チャネルを介してテキストを送信したことを証明できる必要があります(送信中に改ざんされなかった可能性があるという証拠も含まれます。たとえば、2人がHMACキーを渡したという人物による)。 HMACをスキップして、「彼が送信した、ここに彼が送信した証拠」と言うこともできます。

一方向チャネルは、チャネル2から送信されたものは何も個人2から送信されなかったことを意味します。チャネル(たとえば、ユーザー2がHMACキーを渡した後)。誰かがチャネルを介して何かを送信した場合、そのチャネルを通過したことが検証可能であり、そのチャネルを介して何かを送信できただけで、これらの両方を証明できる場合、そのチャネルは再びHMACを必要とせずに否認防止を提供します。

これらの間で共有される要素は、2つのパーティが有効なHMACを作成できることであり、一方が他方が特定のHMACを作成したことを証明しようとしています。これは、同じ署名のスタンプを持つ2人がいるようなもので、一方が他方に何かをスタンプしたことを証明しようとします。 MAC自体は、否認防止には役立ちません。どちらかの当事者が作成できるため、誰かが実際に特定のMACを作成した人物であることを証明する必要があります。これは、メッセージを作成したことを示すことと同じくらい簡単です。最初の場所。したがって、答え1と2は正しくありません。共有シークレットが、HMAC できないが効果的にこれを提供する理由です。 (対照的に、デジタル署名は、両方の当事者がデジタル署名を作成できることを含まないため、否認防止を提供するのに優れています)。 (注:否認防止は実際には技術的な概念ではなく、裁判所はしばしばs/My Full Name/電子文書の署名として。 HMACは実際には、技術的にそれを偽造することを妨げていなくても、あなたが何かを書いたと主張する人を信頼するのに十分なほど誰かを説得するかもしれません。

答え3は確かに間違っています。否認防止のために機密性は必要ありません。否認防止の最良の情報源の1つは、公開裁判所での宣言です。非機密性は理由の一部ですwhyは否認防止を提供します(つまり、誰もがレコードにアクセスできます)。

除去のプロセスによって、答えは4です。

3
cpast

私は2と言うでしょう。

理由:否認防止には2つのタイプがあります。1つは他者に証明できるものと、もう1つは証明できないものです。

Xが送信したことを他の誰かに証明する可能性を防ぐために特別に作成されたスキームがあります。転送不可と呼ばれるPGP署名であり、次のようになります。

ランダムなkを使用して、MACでメッセージをハッシュします。次に、秘密鍵でランダムなkに署名し、受信者の公開鍵で暗号化します。

これは、受信者がメッセージ自体を書いていないことを受信者が知っているため、受信者は送信者がメッセージを送信したことを(自分自身に)証明でき、中間者による偽造を防止できることを意味します。しかし、受信者もMACキーを知っているため、MACキーを検証者に公開する必要があるため、送信者が送信した内容を他の人に証明することはできません。

この場合、両方の当事者がすでに共有鍵を持っているので、署名され暗号化されたランダムkを使用した鍵交換は必要ありません。共有キーで直接HMACで実行することもできます。ただし、同じ原理が適用されます。受信者は、送信者がメッセージを送信したことを自分に証明し、この方法で否認防止を得ることができますが、メッセージを送信したことを他者に証明することはできません。

しかし、前述のMACスキームは他の人に否認防止を獲得しません。誰かが何かを送信したことを他の人に証明することはできません。

0