基于类型检查的示例协议实现的密码学验证
1. 概率多项式时间程序的渐近安全性与CMA游戏
在密码学验证中,我们关注概率多项式时间程序的渐近安全性。当一个逻辑断言在运行时失败的概率可忽略不计时,即该概率作为安全参数的函数,比任何多项式的倒数收敛到零的速度更快时,我们称这个概率多项式时间程序是渐近安全的。
在定义CMA(选择消息攻击)的游戏中,攻击者试图伪造一个有效的消息认证码(MAC)。攻击者可以自适应地调用两个预言机,分别用于计算和验证基于单个隐藏密钥的MAC。若攻击者能生成一个文本和对应的MAC,使得验证成功,但该文本未曾传递给MAC预言机,那么攻击者获胜。
以下是使用F#模块实现的CMA游戏代码:
let k = GEN()
let log = ref []
let mac t = log := t::!log; MAC k t
let verify t m =
let v = VERIFY k t m in assert(not v || List.mem t !log); v
这段代码生成一个密钥,将两个预言机实现为函数,并维护一个日志,记录所有传递给 mac 函数的文本。我们打算让攻击者访问 mac 和 verify 函数,但不能访问密钥 k 和日志 log 。验证预言机还会检查任何验证对是否能赢得游戏, assert 语句确保这种情况不会发生,即要么验证结果
超级会员免费看
订阅专栏 解锁全文
553

被折叠的 条评论
为什么被折叠?



