Security Reduction学习笔记(1):密码系统与安全模型的定义
课件地址:Book (uow.edu.au),原作者声明该课件对人类和外星人免费开放
( ̄_ ̄|| )
b站上郭老师本人录制的中文讲课视频:安全归约(第一讲)_哔哩哔哩_bilibili
博主自制的扫描版:安全归-郭福春_compresd.pdf - 蓝奏云 (lanzoum.com)
现代密码学概念:
现代密码学与经典密码学的区别在于它强调定义(definitions)、模型(models)和证明(proofs).
定义澄清:密码学(Cryptology)= 设计密码学(Cryptography)+分析密码学(Cryptanalysis)
密码系统(Cryptosystem):一个密码系统包含一套算法,该系统提供一个或多个安全服务.(例如"数字签名")
密码方案(Scheme):一个密码系统的具体实现.(例如,"ElGamal签名体系")
以上几个概念的关系:
如何定义密码系统:
以数字签名算法为例
-
动机(Motivation),或称该算法提供何种安全服务
(例如Alice想让其他人知道某消息
是由自己发布的) -
涉及哪些实体(Entities)
-
包含哪些算法
-
这些算法都是由谁执行的
-
每个算法的输入输出都是什么
-
- 必须满足什么正确性
合法生成的签名必须被Verify算法接受,非法生成的签名被Verify算法接受的可能性极小
如何定义安全模型:
安全模型可以看作是对密码系统的多种攻击的抽象。如果所提出的方案在安全模型中是安全的,那么它就可以安全地抵御可以在此安全模型中描述的任何攻击。
使用攻击者(adversary)和防御者(challenger)之间的博弈来描述安全模型.
- 防御者是一个密码系统中密钥的拥有者.
- 攻击者试图攻破这个密码系统.
安全模型的定义由如下几部分组成
- 攻击者与防御者之间的初始化
- 攻击者的能力(Capabilities)
- 攻击者可以询问什么
- 什么时候攻击者可以询问
- 安全目标(Security Goal):怎样才算攻破这个密码方案(求解出密钥,伪造合法信息...)
- (攻击者拥有的)优势(Advantage):定义一个参数(比如攻击者伪造出合法签名的概率),满足
- 如果这个参数可忽略,则密码系统是安全的
- 如果这个参数不可忽略,则密码系统是不安全的
例:对数字签名的,针对选择明文攻击的,不可伪造性安全模型(EU-CMA)
-
初始化:
设SP为系统参数,生成密钥对
,攻击者获得 ,防御者持有 -
攻击者能力:
生成密文
发送给防御者,防御者生成 的合法签名 并发送回来,此后,攻击者可根据防御者上一次的回答,自适应地选择下一次发送的密文 -
安全目标:
攻击者选择一个尚未询问过的
,生成 ,若能被Verify算法通过,则赢得博弈. -
量化的攻击者优势:
被Verify算法接受的概率
关于安全模型的备注:
一个密码系统可能提供多个安全服务.(例如比特承诺(密码协议学习笔记(4):比特承诺 - Isakovsky - 博客园 (cnblogs.com))同时保证隐藏性和绑定性)
那么每个安全服务可能需要不同的安全模型.
当然,一个安全模型也可以涵盖多个安全服务.
安全模型有强(Strong)弱(Weak)之分,越强的安全模型,攻击者拥有的手段越多(比如选择明文攻击模型就比唯密文攻击模型强),要达成的攻击目标越轻松(只要求攻击者伪造信息的模型,相比要求攻击者还原密钥的模型更强).在越强的安全模型下能抵抗攻击,说明这个密码系统越鲁棒.
习题:
在线/离线签名:
动机:
- 用预计算的方式加速签名的生成
- 离线模式下,大多数繁重的计算任务可在不知道待签名信息的情况下预计算
- 在线模式下,可利用离线模式时计算出的信息快速生成签名
尝试为该系统构造密码系统定义和安全模型.
参考答案
在线/离线签名系统定义:
动机:
用预计算的方式加速签名的生成
实体:
执行者与算法:
要满足的正确性:
合法生成的签名必须被Verify算法接受,非法生成的签名被Verify算法接受的可能性极小
对在线/离线签名的,针对选择明文攻击的,不可伪造性安全模型定义:
初始化:
设
防御者使用
攻击者能力:
生成密文
安全目标:
攻击者选择一个尚未询问过的
量化的攻击者优势:
基于身份的签名:
动机:
- 由可信机构生成主密钥对,包括主公钥和主私钥
- 系统中用户可申请一个个人密钥对,个人公钥就是用户身份,例如用户Alice的个人公钥就是
,而个人私钥则是通过主密钥对和个人公钥生成的. - 用户可通过个人密钥对,对消息进行签名
- 验证者可通过主公钥和签名者的个人公钥,验证签名的有效性
尝试为该系统构造密码系统定义和安全模型.
参考答案
基于身份的签名系统定义:
动机:
用户直接将其
实体:
执行者与算法:
要满足的正确性:
身份为
基于身份的的签名,针对选择ID攻击的,任意ID对应的签名不可伪造性安全模型定义(较强的模型):
初始化:
设
攻击者能力:
生成用户
安全目标:
攻击者选择一个尚未询问过的
量化的攻击者优势:
基于身份的的签名,针对选择明文攻击的,固定ID对应的签名不可伪造性安全模型定义(较弱的模型):
初始化:
设
攻击者能力:
生成明文
安全目标:
攻击者选择一个尚未询问过的明文
量化的攻击者优势:
公钥加密:
动机:
- Bob要向Alice发送消息,但它们之间没有共享密钥
- Alice生成一个密钥对
,将 发送给Bob - Bob将密文
使用 加密为 ,将 发送给Alice - Alice使用
将 解密为
尝试为该系统构造密码系统定义和安全模型.
参考答案
公钥加密系统定义:
动机:
在没有共享密钥的情况下,使用公钥加密实现加密通信
实体:
执行者与算法:
要满足的正确性:
只有持有正确私钥的用户才能完成对密文的解密,不持有对应私钥的用户无法完成解密
公钥加密系统,针对选择密文攻击的,秘密性安全模型:
初始化:
设
攻击者能力:
生成密文
安全目标:
防御者生成明文
量化的攻击者优势:
基于身份的加密:
动机:
- 由可信机构生成主密钥对,包括主公钥和主私钥
- 系统中用户可申请一个个人密钥对,个人公钥就是用户身份,例如用户Alice的个人公钥就是
,而个人私钥则是通过主密钥对和个人公钥生成的. - 另一个用户Bob要向Alice发送消息
时,使用主公钥和Alice的个人公钥将消息加密为 - Alice收到后,使用个人私钥和主公钥提取消息
尝试为该系统构造密码系统定义和安全模型.
参考答案
基于身份的加密系统定义:
动机:
用户直接将其ID作为公钥,私钥则是可信机构使用用户ID生成的
实体:
执行者与算法:
要满足的正确性:
只有持有正确对应
公钥加密系统,针对选择密文攻击的,秘密性安全模型:
初始化:
设
攻击者能力:
生成密文
安全目标:
防御者生成明文
量化的攻击者优势:
基于身份广播的加密:
动机:
- 基于身份的加密的扩展
- 使用一组
个用户的身份来加密信息 - 如果任何用户的身份在该集合中,则该用户可使用自己的私钥解密
- 密文长度应当为
的亚线性级,否则不如干脆直接发送 个用不同用户公钥生成的密文.
尝试为该系统构造密码系统定义和安全模型.
参考答案
基于身份广播的加密系统定义:
动机:
用户直接将其ID作为公钥,私钥则是可信机构使用用户ID生成的
实体:
执行者与算法:
要满足的正确性:
对于广播集合,只有持有与其中任意一个
公钥加密系统,针对选择密文攻击的,秘密性安全模型:
初始化:
设
攻击者能力:
生成密文
安全目标:
防御者生成明文
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现