S拥有所有用户的公开密钥,用户A使用协议A→S:A||B||RaS→A:S||Ss(S||A||Ra||Kb)其中Ss()表示S利用私有密钥签名向S申请B的公开密钥Kb。上述协议存在问题吗?若存在,请说明此问题;若不存在,请给出理由。
S拥有所有用户的公开密钥,用户A使用协议A→S:A||B||RaS→A:S||Ss(S||A||Ra||Kb)其中Ss()表示S利用私有密钥签名向S申请B的公开密钥Kb。上述协议存在问题吗?若存在,请说明此问题;若不存在,请给出理由。
正确答案:存在。由于S没有把公钥和公钥持有人捆绑在一起,A就无法确定它所收到的公钥是不是B的,即B的公钥有可能被伪造。如果攻击者截获A发给S的信息,并将协议改成A→S:A||C||RaS收到消息后,则又会按协议S→A:S||Ss(S||A||Ra||KC.将Kc发送给A,A收到信息后会认为他收到的是Kb,而实际上收到的是Kc,但是A会把它当作Kb,因为他无法确认。