Security Reduction学习笔记(1):密码系统与安全模型的定义

课件地址:Book (uow.edu.au),原作者声明该课件对人类和外星人免费开放

( ̄_ ̄|| )

b站上郭老师本人录制的中文讲课视频:安全归约(第一讲)_哔哩哔哩_bilibili

博主自制的扫描版:安全归-郭福春_compresd.pdf - 蓝奏云 (lanzoum.com)

现代密码学概念:

现代密码学与经典密码学的区别在于它强调定义(definitions)、模型(models)和证明(proofs).

定义澄清:密码学(Cryptology)= 设计密码学(Cryptography)+分析密码学(Cryptanalysis)

密码系统(Cryptosystem):一个密码系统包含一套算法,该系统提供一个或多个安全服务.(例如"数字签名")

密码方案(Scheme):一个密码系统的具体实现.(例如,"ElGamal签名体系")

以上几个概念的关系:

如何定义密码系统:

以数字签名算法为例

  1. 动机(Motivation),或称该算法提供何种安全服务

    (例如Alice想让其他人知道某消息m是由自己发布的)

  2. 涉及哪些实体(Entities)

    (Authority,Signer,Verifier)

  3. 包含哪些算法

    (SysGen,KeyGen,Sign,Verify)

    1. 这些算法都是由谁执行的

      SysGen(Authority),KeyGen(Signer),Sign(Signer),Verify(Verifier)

    2. 每个算法的输入输出都是什么

      SysGen(λ)SP

      KeyGen(SP)(pk,sk)

      Sign(SP,sk,m)σm

      Verify(m,σm,SP,pk){0,1}

  4. 必须满足什么正确性
    合法生成的签名必须被Verify算法接受,非法生成的签名被Verify算法接受的可能性极小

如何定义安全模型:

安全模型可以看作是对密码系统的多种攻击的抽象。如果所提出的方案在安全模型中是安全的,那么它就可以安全地抵御可以在此安全模型中描述的任何攻击。

使用攻击者(adversary)和防御者(challenger)之间的博弈来描述安全模型.

  • 防御者是一个密码系统中密钥的拥有者.
  • 攻击者试图攻破这个密码系统.

安全模型的定义由如下几部分组成

  1. 攻击者与防御者之间的初始化
  2. 攻击者的能力(Capabilities)
    • 攻击者可以询问什么
    • 什么时候攻击者可以询问
  3. 安全目标(Security Goal):怎样才算攻破这个密码方案(求解出密钥,伪造合法信息...)
  4. (攻击者拥有的)优势(Advantage):定义一个参数(比如攻击者伪造出合法签名的概率),满足
    • 如果这个参数可忽略,则密码系统是安全的
    • 如果这个参数不可忽略,则密码系统是不安全的

例:对数字签名的,针对选择明文攻击的,不可伪造性安全模型(EU-CMA)

  1. 初始化:

    设SP为系统参数,生成密钥对(pk,sk),攻击者获得pk,防御者持有pk,sk

  2. 攻击者能力:

    生成密文m发送给防御者,防御者生成m的合法签名σm并发送回来,此后,攻击者可根据防御者上一次的回答,自适应地选择下一次发送的密文

  3. 安全目标:

    攻击者选择一个尚未询问过的m,生成σm,若能被Verify算法通过,则赢得博弈.

  4. 量化的攻击者优势:

    (m,σm)被Verify算法接受的概率

关于安全模型的备注:

一个密码系统可能提供多个安全服务.(例如比特承诺(密码协议学习笔记(4):比特承诺 - Isakovsky - 博客园 (cnblogs.com))同时保证隐藏性和绑定性)

那么每个安全服务可能需要不同的安全模型.

当然,一个安全模型也可以涵盖多个安全服务.

安全模型有强(Strong)弱(Weak)之分,越强的安全模型,攻击者拥有的手段越多(比如选择明文攻击模型就比唯密文攻击模型强),要达成的攻击目标越轻松(只要求攻击者伪造信息的模型,相比要求攻击者还原密钥的模型更强).在越强的安全模型下能抵抗攻击,说明这个密码系统越鲁棒.

习题:

在线/离线签名:

动机:

  • 用预计算的方式加速签名的生成
  • 离线模式下,大多数繁重的计算任务可在不知道待签名信息的情况下预计算
  • 在线模式下,可利用离线模式时计算出的信息快速生成签名

尝试为该系统构造密码系统定义和安全模型.

参考答案

在线/离线签名系统定义:

动机:

用预计算的方式加速签名的生成

实体:

Signer,Verifier

执行者与算法:

Signer:KeyGen(λ)(pk,sk)

Signer:OfflineParamGen(sk)param

Signer:OnlineSign(sk,param,m)σ

Verifier:Verify(pk,m,σ){0,1}

要满足的正确性:

合法生成的签名必须被Verify算法接受,非法生成的签名被Verify算法接受的可能性极小

对在线/离线签名的,针对选择明文攻击的,不可伪造性安全模型定义:

初始化:

SP为系统参数,生成密钥对(pk,sk),攻击者获得pk,防御者持有sk
防御者使用sk生成param

攻击者能力:

生成密文m发送给防御者,防御者生成m的合法签名σm并发送回来,此后,攻击者可根据防御者上一次的回答,自适应地选择下一次发送的密文

安全目标:

攻击者选择一个尚未询问过的m,生成σm,若能被Verify算法通过,则赢得博弈.

量化的攻击者优势:

(pk,m,σm)Verify算法接受的概率

基于身份的签名:

动机:

  • 由可信机构生成主密钥对,包括主公钥和主私钥
  • 系统中用户可申请一个个人密钥对,个人公钥就是用户身份,例如用户Alice的个人公钥就是ID="Alice",而个人私钥则是通过主密钥对和个人公钥生成的.
  • 用户可通过个人密钥对,对消息进行签名
  • 验证者可通过主公钥和签名者的个人公钥,验证签名的有效性

尝试为该系统构造密码系统定义和安全模型.

参考答案

基于身份的签名系统定义:

动机:

用户直接将其ID作为公钥,私钥则是可信机构使用用户ID生成的

实体:

CA,Signer,Verifier

执行者与算法:

CA:SecretKeyGen(SP,ID)(sk)

Signer:Sign(sk,m)σ

Verifier:Verify(ID,m,σ){0,1}

要满足的正确性:

身份为ID的用户合法生成的签名,连同它的ID一起,必须Verify算法接受,非法生成的签名被Verify算法接受的可能性极小

基于身份的的签名,针对选择ID攻击的,任意ID对应的签名不可伪造性安全模型定义(较强的模型):

初始化:

SP为系统参数

攻击者能力:

生成用户ID发送给防御者,防御者生成ID对应的密钥sk并发送回来(攻击者自然可以通过此sk任意生成签名),此后,攻击者可根据防御者上一次的回答,自适应地选择下一次发送的ID

安全目标:

攻击者选择一个尚未询问过的ID,选择一个明文m,然后生成一个签名σm,若(ID,m,σm)能被Verify算法通过,则赢得博弈.

量化的攻击者优势:

(ID,m,σm)Verify算法接受的概率

基于身份的的签名,针对选择明文攻击的,固定ID对应的签名不可伪造性安全模型定义(较弱的模型):

初始化:

SP为系统参数,ID为用户身份,防御者生成ID对应的sk,将ID发送给攻击者

攻击者能力:

生成明文m发送给防御者,防御者生成签名σm并发送回来,此后,攻击者可根据防御者上一次的回答,自适应地选择下一次发送的明文

安全目标:

攻击者选择一个尚未询问过的明文m,然后生成一个签名σm,若(ID,m,σm)能被Verify算法通过,则赢得博弈.

量化的攻击者优势:

(ID,m,σm)Verify算法接受的概率

公钥加密:

动机:

  • Bob要向Alice发送消息,但它们之间没有共享密钥
  • Alice生成一个密钥对pk,sk,将pk发送给Bob
  • Bob将密文m使用pk加密为c,将c发送给Alice
  • Alice使用skc解密为m

尝试为该系统构造密码系统定义和安全模型.

参考答案

公钥加密系统定义: 

动机: 

在没有共享密钥的情况下,使用公钥加密实现加密通信 

实体: 

Alice,Bob 

执行者与算法: 

Alice:KeyGen(λ)(pk,sk) 

Bob:Enc(pk,m)c 

Alice:Dec(pk,c)m 

要满足的正确性: 

只有持有正确私钥的用户才能完成对密文的解密,不持有对应私钥的用户无法完成解密 

公钥加密系统,针对选择密文攻击的,秘密性安全模型: 

初始化: 

λ为系统参数,防御者生成pk,sk,将pk发送给攻击者

攻击者能力: 

生成密文c发送给防御者,防御者将其解密为m并发送回来,此后,攻击者可根据防御者上一次的回答,自适应地选择下一次发送的密文 

安全目标: 

防御者生成明文m,将其加密为c并发送给攻击者,攻击者回复一个m,若m=m,则赢得博弈. 

量化的攻击者优势: 

m=m的概率 

基于身份的加密:

动机:

  • 由可信机构生成主密钥对,包括主公钥和主私钥
  • 系统中用户可申请一个个人密钥对,个人公钥就是用户身份,例如用户Alice的个人公钥就是ID="Alice",而个人私钥则是通过主密钥对和个人公钥生成的.
  • 另一个用户Bob要向Alice发送消息m时,使用主公钥和Alice的个人公钥将消息加密为c
  • Alice收到后,使用个人私钥和主公钥提取消息m

尝试为该系统构造密码系统定义和安全模型.

参考答案

基于身份的加密系统定义: 

动机: 

用户直接将其ID作为公钥,私钥则是可信机构使用用户ID生成的  

实体: 

CA,Alice,Bob 

执行者与算法: 

CA:SecretKeyGen(SP,ID)(sk) 

Bob:Enc(ID,m)c 

Alice:Dec(sk,c)m 

要满足的正确性: 

只有持有正确对应ID私钥的用户才能完成对密文的解密,不持有对应私钥的用户无法完成解密 

公钥加密系统,针对选择密文攻击的,秘密性安全模型: 

初始化: 

SP为系统参数,防御者生成ID,sk,将ID发送给攻击者

攻击者能力: 

生成密文c发送给防御者,防御者将其解密为m并发送回来,此后,攻击者可根据防御者上一次的回答,自适应地选择下一次发送的密文 

安全目标: 

防御者生成明文m,将其加密为c并发送给攻击者,攻击者回复一个m,若m=m,则赢得博弈. 

量化的攻击者优势: 

m=m的概率 

基于身份广播的加密:

动机:

  • 基于身份的加密的扩展
  • 使用一组n个用户的身份来加密信息
  • 如果任何用户的身份在该集合中,则该用户可使用自己的私钥解密
  • 密文长度应当为n的亚线性级,否则不如干脆直接发送n个用不同用户公钥生成的密文.

尝试为该系统构造密码系统定义和安全模型.

参考答案

基于身份广播的加密系统定义: 

动机: 

用户直接将其ID作为公钥,私钥则是可信机构使用用户ID生成的  

实体: 

CA,Alice,Bob 

执行者与算法: 

CA:SecretKeyGen(SP,ID)(sk) 

Bob:Enc(IDs={ID0,ID1,},m)c 

Alice:Dec(ski,c)m 

要满足的正确性: 

对于广播集合,只有持有与其中任意一个ID对应的私钥的用户才能完成对密文的解密,不持有对应私钥的用户无法完成解密 

公钥加密系统,针对选择密文攻击的,秘密性安全模型: 

初始化: 

SP0,SP1,为一组系统参数,防御者生成(ID0,sk0),(ID1,sk1),,将ID0,ID1,发送给攻击者

攻击者能力: 

生成密文c发送给防御者,防御者使用所有私钥sk0,sk1,将其解密为m0,m1,并发送回来,根据攻击者在生成时,作为参数输入的用户组,这些明文可能有的合法,有的非法,此后,攻击者可根据防御者上一次的回答,自适应地选择下一次发送的密文 

安全目标: 

防御者生成明文m,使用任意的用户组将其加密为c并发送给攻击者,攻击者回复一个m,若m=m,则赢得博弈. 

量化的攻击者优势: 

m=m的概率 

posted @   Isakovsky  阅读(317)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示