密码协议学习笔记(3):实体认证协议
基于对称密码的实体认证:
对称密码,一次传输,单向认证:
Alice与Bob拥有一个共享的对称密钥
问题:时间戳需要同步时钟,序列号需要维护序列号管理器
对称密码,两次传输,单向认证:
Bob选择随机数
Alice使用
对称密码,两次传输,双向认证:
对称密码,一次传输,单向认证应用两次即可.
示意图略.
对称密码,三次传输,双向认证:
对称密码,两次传输,单向认证的扩展.
Alice | Bob | |
---|---|---|
选择一次性随机数 |
||
选择一次性随机数 |
||
解密,如果能得到自己取的随机数 |
||
解密,如果能得到 |
基于哈希函数的实体认证:
如果协议中实体身份不需要保密,则可使用哈希函数进行实体认证
假设Alice与Bob共享密钥
哈希函数,一次传输,单向认证:
该方法还是使用时间戳
哈希函数,两次传输,单向认证:
同对称密码,两次传输,单向认证,基于随机数.
Alice | Bob | |
---|---|---|
选择随机数 |
||
计算 |
||
也计算 |
哈希函数,两次传输,双向认证:
同样是哈希函数,一次传输,单向认证应用两次.
示意图略.
哈希函数,三次传输,双向认证:
Alice | Bob | |
---|---|---|
选择一次性随机数 |
||
选择一次性随机数 |
||
计算 |
||
同样计算 |
基于公钥密码的实体认证:
如果通信双方没有共享密钥,那么对称密码或哈希函数的实体认证便无法实现,此时可以应用非对称密码来解决这个问题.
(回顾:
Torrent:可简写为T,可信中心,会为自己认可的用户颁发证书
公钥密码,一次传输,单向认证:
这样,Bob就认证了对面那个有意愿与自己通信的人就是
还是一样的问题,需要时间戳和序列号.
(有风险的)公钥密码,两次传输,单向认证:
Alice | Bob | |
---|---|---|
选择随机数 |
||
对 |
|
|
使用 若验证成功,则确认了对面的人是私钥 |
该协议的风险在Alice身上,
比如令
(改进的)公钥密码,两次传输,单向认证:
改进的方案是允许Alice在待签名的数据中加入自己可以控制的信息.
Alice | Bob | |
---|---|---|
选择随机数 |
||
也选取一个随机数 |
|
|
使用 |
公钥密码,两次传输,双向认证:
公钥密码,一次传输,单向认证应用两次.
示意图略.
(有风险的)公钥密码,三次传输,双向认证:
将基于对称密码/哈希函数的三次传输,双向认证的思路机械地照搬到公钥密码上是不安全的.
(博主注:因为没有对称密钥的存在,认证的发起人只需要提供一个随机数即可发起认证,这个行为是没有门槛的.)
(博主注:为了更直观地理解后面叙述的中间人攻击过程,将协议中的三次传输分别用红色,绿色,蓝色标注)
Alice | Bob | |
---|---|---|
选择一次性随机数 |
||
选择一次性随机数 |
|
|
用 |
||
|
再选择一个一次性随机数 |
|
用 |
对于此协议,存在着中间人攻击的风险:
Alice | Eve | Bob | ||
伪造一次性随机数 |
||||
选择一次性随机数 |
|
|||
冒充 |
||||
|
选择一次性随机数 |
|||
|
Eve从Bob处套取了签名,直接将签名转发即可. |
|
||
Alice以为 |
|
|
Bob可能在等待回信,或者因为本地时钟超时终止协议. |
注意,在此攻击过程中,Alice和Bob都以为是对方先发起的认证.
(博主注:有点类似于间谍(Eve)遇到哨兵(Alice)时,抢先要求对方报出口令,然后又用套取的口令在别的哨兵(Bob)处套取回令)
这是因为,本质上该协议就是公钥密码,两次传输,单向认证协议使用不同的随机数独立地重复了两次.为解决这个问题,只需要让这两次协议的调用不再独立即可.
(改进的)公钥密码,三次传输,双向认证:
Alice | Bob | |
---|---|---|
选择一次性随机数 |
||
选择一次性随机数 |
|
|
用 |
||
|
不再选取新的随机数 | |
用 |
基于可信第三方(TTP)的实体认证:
(回顾:TTP,Trusted,Third Party,可信第三方,可信第三方总是提供合法输入,即,它不会成为主动攻击者的"马甲")
TTP安全地保存了它和所有实体的共享密钥,比如,TTP与Alice之间的共享密钥可记为
(有风险的)Needham-Schroeder协议:
该协议能同时达到实体认证和协商密钥的效果.
TTP | Alice | Bob | ||
生成随机数 |
||||
随机生成 |
|
|||
|
解密,检查 若是,则保存 |
|||
|
|
用 如果是,则生成随机数 |
||
|
计算 |
|
对Needham-Schroeder协议的攻击:
由于该协议中,Bob未与TTP直接通信,因此它无法查证自己收到的消息是Alice直接转发来的,此时,如果存在攻击者记录了之前的会话
TTP | Alice | Eve | Bob | |||
生成随机数 |
||||||
随机生成 |
|
|||||
|
解密,检查 若是,则保存 |
|||||
将信息篡改为保存下来的旧会话信息 | ||||||
用 如果是,则生成随机数 |
||||||
计算 |
|
这样,Eve就可以截获Bob发给Alice的信息.
(使用时间戳机制改进的)Needham-Schroeder协议
在通信中加入时间戳
TTP | Alice | Bob | ||
随机生成 |
|
|||
|
解密,检查Bob是与自己通信的主体 若是,则保存 |
|||
|
|
用 同时,还要根据网络延迟判断时间戳 如果是,则认可Alice身份和会话密钥 |
注意,因为有了时间戳机制,无需再使用随机数
基于随机数的,双方都与TTP通信的,实体认证协议:
使用时间戳涉及时钟同步问题,因此可令Bob也向TTP进行认证,以保证有效性.
TTP | ||
Alice |
代表发起实体认证的意向 |
Bob |
TTP | ||
Alice:生成随机数 |
Bob:生成随机数 |
TTP | ||
Alice | Bob |
TTP:生成 |
||
Alice | Bob |
TTP | ||
Alice:生成随机数 |
Bob |
TTP | ||
Alice | Bob:计算并回复 |
五次传输双向认证:
同样是一个能够同时完成实体认证和密钥交换的协议.
Alice | Bob | TTP | ||
生成随机数 |
||||
生成随机数 |
|
|||
|
随机选取 |
|||
|
解密并验证 再选取一个随机数 |
|||
解密并验证 计算并发送 |
|
|
||
|
|
解密并验证 |
基于口令(password)的实体认证:
一般用于计算机主机(Host)
直接基于口令的认证协议:
Host以
当User要登录主机时:
然后Host检查
问题:
仅适用于本地登录或专线连接.
如果User和Host在可窃听信道两端,则会导致窃听与重放攻击.
明文保存的
单向函数的口令认证协议:
主机中只存储口令的单向函数(one way function)
问题:
弱口令会导致攻击者穷举弱口令计算单向函数值,并与截获的信息进行比较的字典式攻击.
单向函数+加盐的口令认证协议:
盐(salt)指一段随机数,用于增加口令的随机性,主机在计算存储OWF时加入盐一起计算,即
主机中只存储
问题:
仍会导致攻击者窃取主机中的salt后,进行基于salt的字典式攻击,但这样攻击者的花销就会大得多.
基于哈希链的一次性口令认证:SKey
定义
主机中保存
Host计算
当
对SKey的中间人攻击:
若User与Host之间的信道可篡改,User又没有记录自己密钥
User | Eve | Host | ||
|
|
|||
|
计算 |
|
将计数器更新为 |
Eve既可以直接截获本次连接发送的信息,也可以使用
(博主注:如果协议中Host与User协商了签名算法,登录时要求User提供一个随机数
加密的密钥交换协议(Encrypted Key Exchange,EKE):
在EKE协议中,用户
该协议也能同时做到实体认证与密钥协商.协议执行结束后用户和主机将完成双向实体认证,并得到共享密钥.
User | Host | |
生成一对密钥对 |
(博主注:直接将口令作为密钥似乎不太可行,需要将口令哈希一下才能作为密钥使用) |
|
|
解密 随机生成一个密钥 用 再将 |
|
用 再用 生成一个随机数 |
|
|
|
解密得到 再生成一个随机数 计算 |
|
解密得到 计算 |
|
解密得到 |
对实体认证协议的攻击:
消息重放攻击:
在可窃听信道上窃听到消息,在之后的某个时间重新发送给原接收者,以伪装成原发送者.
解决方案:
时间戳,计数器,随机数.
中间人攻击:
修改计数器的值.
解决方案:
使用签名等方式防止计数器的值被篡改.
平行会话攻击:
该类攻击指在攻击者操控下,被攻击的两个或多个协议并发执行,从可以协议甲中得到的信息作为对协议乙的应答.
(即,某小孩和两个象棋大师下棋,用一人的招数去对付另外一人.)
Woo-Lam协议:
介绍该协议作为用于描述平行会话攻击的"靶子".
该协议的目的是为了让Bob对Alice产生单方向的认证.Alice与
Alice | Bob | TTP | ||
|
||||
|
生成随机数 |
|||
计算 |
|
再加密一层 |
|
|
|
解密得到 |
|||
检查是否能解密出自己生成的随机数 |
|
对Woo-Lam协议的平行会话攻击:
如果Bob与多个实体同时会话,则会遭到如下的攻击:
假设Eve也是系统中的一个实体,它与TTP共享密钥
用红色表示"Alice"与Bob之间运行的协议,蓝色表示Eve与Bob运行的协议
TTP | ||||
"Alice"(实际上是Eve假冒的) |
|
Bob |
|
Eve |
TTP | ||||
"Alice" |
|
Bob |
|
Eve |
TTP | ||||
"Alice" |
|
Bob |
|
Eve |
TTP | ||||
|
||||
"Alice" |
|
Bob |
|
Eve |
TTP用
TTP用
TTP | ||||
|
||||
"Alice" |
|
Bob |
|
Eve |
尽管在示意图中,使用不同的颜色标注了不同的会话,然而由于这些会话都是同时发生的,且消息上没有标签,因此Bob会认为
改进的Woo-Lam协议:
为防御平行会话攻击,对Woo-Lam协议做出如下改进:TTP返回消息时,将ID也加密进密文里
Alice | Bob | TTP | ||
|
||||
|
生成随机数 |
|||
计算 |
|
再加密一层 |
|
|
|
解密得到 |
|||
检查是否能解密出自己生成的随机数 |
|
然而,此协议仍是不安全的.
反射攻击:
当某实体发送信息时被攻击者截获,攻击者将原消息(或者稍作处理后的消息)返回给原发送者,然而原发送者不会意识到这是自己产生的.
(达尔巴用蒙古话向杨过问话,杨过虽然不懂蒙古话,但是原样复述了一遍,就把达尔巴这个傻子忽悠的团团转)
对改进的Woo-Lam协议的反射攻击:
(该过程中,恶意攻击者Eve既伪装为Alice,又伪装为TTP)
(全 · 员 · 恶 · 人)
Eve伪装的"Alice" | Bob | Eve伪装的"TTP" | ||
生成随机数 |
||||
直接将随机数作为它本该计算得出的密文返回 | ||||
计算 |
|
|||
|
直接将密文返回 | |||
解密,得到 于是认为本次协议是有效的. |
|
交错攻击:
类似于平行会话攻击,但被攻击协议是交错而非同时执行.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
2019-09-08 奇思妙想:有关取模递推数列的一些有趣性质