实体验证是设计用来让一方验证另一方的技术,实体可以是一个人、一个程序、一个客户或一个服务器。需要验证的一方称为原告,验证的一方称为验证者。
🔥 Explain the differences between data-origin authentication and entity authentication.- 数据源验证也许不会实时发生,实体验证却是可以的。在数据源验证时,发送者发送信息给接收者,接收者验证时,发送者可能在通信的进程中,可能不在;但在实体验证时,如果请求方要求实体验证,直到完成验证后才能真正通信,这个过程请求方必须在线参与。
- 信息源验证只验证一个信息,对于每一个信息这个过程都要重复一次;而实体验证是在整个会话期间对请求方进行验证的。
- 知道某事(Something known):这是只有被验证的请求者才知道的秘密,例如密码、PIN、密钥、私钥等。
- 拥有某事(Something possessed):这是可以证明请求者身份的证明,例如护照、身份证、驾驶证、信用卡等。
- 固有某事(Something inherent):这是请求者的固有特征,例如指纹、声音、传统签名、笔迹、虹膜等。
本章讨论实体认证,下一章将讨论密钥管理。这两个话题是密切相关的;大多数密钥管理协议使用实体身份验证协议。
固定口令是在每次访问中反复使用的口令。
-
第一种方法:系统保存一个由用户身份挑选出来的表,用户发送他的身份和口令的明文给验证方,验证方找到表里对应用户的口令,与用户发来的口令对比。
攻击:窃听、盗取(把口令写在本子上)、访问口令档案、猜测。
-
第二种方法:把口令的散列保存在口令的档案中。
攻击:字典攻击。
-
第三种方法:盐化口令法。
🔥 Explain the general idea of salting the fixed password (see Fig. 14.3).当一个口令串被创建时,一个被称为盐的随机串就被连接到口令上,对这种盐化口令使用hash处理。用户ID、盐、hash结果都保存在档案中。如果有用户要访问,系统把盐取出来,再与接收到的口令相连接,从结果中制作出一个散列,并比较这个散列和存储在档案中的散列。如果匹配,就允许访问,否则就拒绝。
盐化使得字典攻击更加困难,如果原口令是6位,盐是4位,那么散列的处理结果就超过了10位。如果盐是一个很长的随机数字,盐化是非常有效的。
-
第四种方法:两种身份验证的技术结合在一起。例如带有PIN的自动取款机卡。PIN属于Something known,卡属于Something possessed。
一次性口令是只是用一次的口令。
-
第一种方法:用户和系统都同意一个口令列表,每一个口令都只使用一次。
-
第二种方法:用户和系统都同意升级或更新口令。提供一个初始化口令,每次访问后用前一个口令创建下一个口令。
-
第三种方法:使用一个hash函数来更新口令。
🔥 Explain the general idea of using hash chain to realize one-time password (see Fig. 14.4).用户和系统都同意一个初始口令$P_0$和一个计数器$n$。系统算出$h^n(P_0)$,这里的$h^n$表示$n$次使用一个hash函数。
$h^n(P_0)=h(h^{n-1}(P_0))$ 系统把身份ID、n的值和$h^n(P_0)$存储起来。
用户第一次访问,系统接收到用户的请求后,对收到的值使用hash函数,看这个值和条目中存储的值是否匹配,如果匹配,就允许访问,否则就拒绝。然后,系统从档案列表中减小n值,用新口令$h^{n-1}(P_0)$代替旧的口令值$h^n(P_0)$。
用户第二次访问,系统计数器的值是n-1,来自用户的第三个信息是$h^{n-2}(P_0)$。系统接收这个信息,用散列函数得出$h^{n-1}(P_0)$与列表条目比对。
每访问一次,n就要减少1,当n的值为0时,所有这些都要重建。因此,通常要选择一个大数作为n值。
- 在挑战-应答中,请求者不需要向验证者发送秘密,就可以证明他知道一个秘密。
- 挑战是由验证者发送的随时间变化的值,应答是将函数应用于挑战的结果。
-
第一种方法:nonce挑战。验证者发送随时间变化的nonce来挑战请求者,请求者使用共享密钥来应答挑战。
- 请求者发送通知给验证者要被挑战;
- 验证者发送随机选择出来的nonce;
- 请求者使用只有两者知道的公钥进行加密,把结果发送给验证者;
- 验证者对信息解密,如果得到的nonce与发送的相同则允许请求者访问。
-
第二种方法:时间戳挑战。
随时间变化的值就是一个时间戳,假设客户端与服务器间时间同步,这就不需要挑战信息,另外第一个信息和第三个信息可以合并。请求者用一个信息,一个对隐含挑战的应答和当前时刻来完成。
-
第三种方法:前两种是单向验证,第三种是双向验证。
第三个信息中,请求者应答挑战,并同时发送他的挑战RA给验证者。验证者发送应答,其中RA和RB的顺序要转换,避免对手发送第三个信息遭到重放攻击。
时间戳作为明文以及被带密钥的hash函数扰乱的文本发送。验证者接受到信息,带上明文T,用带密钥的散列函数,然后把计算结果与收到的结果对比。
-
第一种:单向加密
验证者用请求者的公钥加密挑战,请求者用私钥解密信息,并把nonce发送给验证者。
-
第二种:双向加密
使用了两个公钥,每个方向上有一个。请求者用验证者的公钥加密过的个人身份和nonce发送过去,验证者用请求方的公钥加密应答和挑战,最后请求方用解密的nonce应答。
-
components: Several components are needed for biometrics, including capturing devices, processors, and storage devices.
-
enrollment: Before using any biometric techniques for authentication, the corresponding feature of each person in the community should be available in the database.
-
Authentication:
- Verification: A person’s feature is matched against a single record in the database.(1-to-1)
- Identification: A person’s feature is matched against all records in the database. (1-to-many)
-
technique:
-
accuracy:
- 错误拒绝率FRR:p(没有识别出来的人|需要识别出来的人)
- 错误接受率FAR:p(被识别出来的人|不应该被识别出来的人)