通信における秘密性(Secrecy)と信頼性(Authentication)
通信において秘密性と信頼性について備忘録
秘密性とは => 受け取るメッセージが他の誰にも知られないこと
信頼性とは => 受け取るメッセージが予想される人物から送られていること
例えばアリスがボブにメッセージを送るとする
ボブは、
①送られたメッセージがアリスから送られたということ (信頼性)
②送られたメッセージが他の誰にも解読されていないこと (秘密性)
を確認したい
①を確認する場合
アリスが自身の秘密鍵で暗号化したメッセージ (i.e. E(M,Sa) )を送信すれば良い
✓ Saで暗号化できるのはアリスだけなので、メッセージを送ったのはアリス本人
②を確認する場合
アリスはボブの公開鍵を使い暗号化したメッセージ (i.e. E(M,Pb) )を送信すれば良い
✓Pbで暗号化されたメッセージはSbでしか解読できないため、暗号化されたメッセージを知れるのはボブ本人だけ
そして①と②の両方を確保したい場合:
アリスは秘密性と信頼性を確保したメッセージの両方を送れば良い
=> ( E(M,Pb) , E(H(m), Sa) )
まずボブは自身の秘密鍵Sbを使いE(M,Pb)を解読しメッセージMを入手
次にアリスの公開鍵を使いハッシュ化されたメッセージH(m)を入手
最後にMを自身でハッシュ化しH(m)と合致すれば、メッセージはアリスから送られて、秘密性も担保されているということになる。
なお、アリスはハッシュ化せずE(M, Sa)のまま送りそれぞれのメッセージMを比較しても良い
ではなぜハッシュ値なのか、というとメッセージをそのまま送信するよりバイト数が少ないから( sizeof(M) << sizeof( H(m)) )、ということである。