In this protocol:
- A → B : { <[A, {K}pk(B)]> }pk(B)
- B → A : { <[B, {K}pk(A)]> }pk(A)
I'd like to determine why this is insecure. How can the attacker learn the key K if A and B are both honest agents?
This is what I have started with:
- A → B : { <[A, {K}pk(B)]> }pk(B)
An attacker M can intercept this, however M cannot decrypt this. M sends it to B so B thinks the message is coming from M:
- M → B : { <[A, {K}pk(B)]> }pk(B)
Then I run into the problem that A's identity is still in the message. When B decrypts, he will realize that D and A do not match, and end the session.
Any help, hints, or advice would be appreciated! Thanks!