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