| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> 《A Graduate Course in Applied Cryptography》Chapter 18 Protocols for identification and login(2) -> 正文阅读 |
|
[Python知识库]《A Graduate Course in Applied Cryptography》Chapter 18 Protocols for identification and login(2) |
原文教材 与 参考资料: ? ? ? ? Boneh Dan , Shoup Victor . A Graduate Course in Applied Cryptography[J]. ? ? ? ? 该书项目地址(可以免费获取):http://toc.cryptobook.us/ ? ? ? ? 博客为对该书的学习笔记,并非原创知识,帮助理解,整理思路。 18.5 One time passwords: security against eavesdropping? ? ? ? 上节描述的基于口令的方案不能抵抗一个窃听敌手,因为双方保存口令或者说秘密值是固定的,如果说敌手具备窃听能力,那么敌手窃听到sk = vk 的任意值,那么敌手就可以仿冒该用户登录。为了抵抗窃听敌手,一种朴素的思想就是,每次传送不一样的验证信息,那么即使敌手能够获取其中的部分信息,也无法威胁到整个系统的安全。 新的挑战者-敌手模型如下图所示:敌手具备获取真实验证者和真实证明者交互的信息的能力。 ? ? ? ? ? ? ? ? ? ?具备窃听能力的敌手攻击游戏描述如下: ? ? ? ? 在图示中,验证密钥vk是可以公开的,但是同样的,还有一类协议同样能够抵抗窃听敌手,但是其要求验证密钥vk必须是保密的,即为,在上述的攻击游戏中,挑战者不必将vk发送给敌手。这将构造一个更弱的攻击游戏,因为vk需要保密,所以其算法本身提供的安全性就不如原本能够公开更多信息的算法高。此时,我们允许敌手进行多次的登录尝试,多次的登录尝试可能是并行的也可能是以顺序来进行的。我们允许敌手进行多次尝试的原因是,敌手可以通过这些尝试获取一些关于vk的信息(例如,accept, ject)。而强安全的版本则是完全公开vk,因为公开后敌手可以自行的模拟,显然此时的敌手攻击能力更强(掌握的信息更多),所以相比要求vk保密的方案,完全公开vk的方案安全性更强。 ? ? ?之前介绍的方案都是无状态的,下文的所有方案都是有状态的,有状态的方案允许sk 和 vk每次验证后都发生变化,这自然的符合抵抗窃听敌手的性质。本节之后讨论的方案都是每次验证后sk,vk都需要改变,除非验证失败,如果验证失败则验证者vk不更新。 18.5.1 PRF-based one-time passwords:HOTP and TOTPHOTP协议,即使用哈希每次验证后进行sk,vk的更新。 ?方案非常简单,如果敌手能够攻破PRF F 那么,敌手将攻破该方案的安全性。 这个方案存在两个问题: 1.用户需要输入k,i 对于用户来说期望尽可能在登录远程系统时,输入较少的字符。 2.每次更新只依靠用户进行更新,如果用户长期没有更新,那么旧的认证码极有可能被敌手捕获。 TOTP协议,每次更新依赖于现实时钟周期,不在仅仅由证明者发起更新,例如强制每30秒更新一次,将有效的解决HOTP的问题。 18.5.2? The S/key systemHOTP,TOTP协议要求服务器秘密的持有验证密钥,这只能实现一种弱安全定义。S-key系统可以实现一个强安全的认证。 ?显然,这个方案的安全性最终规约到H的安全性上,要求H的安全性在多次迭代上也必须保持,这是Hash函数的安全性要求。 18.6 Challenge-response : Security against active attacks积极的敌手,往往可以发起一个中间人攻击,敌手通过伪装一个假的验证者和证明者进行交互,从而学习到验证信息。对于一个积极敌手的攻击构造攻击游戏描述如下: ?这个游戏的描述如下图:其实核心思想为挑战者开始扮演证明者与敌手进行交互,最后敌手在进行询问时,交换角色,敌手扮演证明者。不过挑战者不论在扮演任何角色时都需要诚实遵守相关的算法,但是敌手却没有相关的限制。 ? ? ? ? ? ? ? ? ? ?这里给出一个基于MAC码的方案实例: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ?这里将安全性规约为MAC的安全性,还有一点需要注意的是,这里的K是需要保密,即为验证密钥需要保密的情形,如果需要验证密钥公开,那么需要证明者将MAC换成一个签名算法,然后将签名的公钥作为验证密钥然后公开。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 18:14:41- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |