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

发布时间 2023-10-15 21:45:31作者: Isakovsky

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

( ̄_ ̄|| )

现代密码学概念:

现代密码学与经典密码学的区别在于它强调定义(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(\lambda) \to SP$

      $KeyGen(SP) \to (pk,sk)$

      $Sign(SP,sk,m)\to \sigma_m$

      $Verify(m,\sigma_m,SP,pk)\to \{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$的合法签名$\sigma_m$并发送回来,此后,攻击者可根据防御者上一次的回答,自适应地选择下一次发送的密文

  3. 安全目标:

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

  4. 量化的攻击者优势:

    $(m',\sigma_{m'})$被Verify算法接受的概率

关于安全模型的备注:

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

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

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

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

习题:

在线/离线签名:

动机:

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

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

参考答案

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

动机:

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

实体:

$Signer,Verifier$

执行者与算法:

$Signer: KeyGen(\lambda)\to (pk,sk)$

$Signer: OfflineParamGen(sk)\to param$

$Signer: OnlineSign(sk,param,m)\to\sigma$

$Verifier: Verify(pk,m,\sigma)\to\{0,1\}$

要满足的正确性:

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

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

初始化:

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

攻击者能力:

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

安全目标:

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

量化的攻击者优势:

$(pk,m',\sigma_{m'})$被$Verify$算法接受的概率

基于身份的签名:

动机:

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

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

参考答案

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

动机:

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

实体:

$CA,Signer,Verifier$

执行者与算法:

$CA: SecretKeyGen(SP,ID)\to(sk)$

$Signer: Sign(sk,m)\to\sigma$

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

要满足的正确性:

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

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

初始化:

设$SP$为系统参数

攻击者能力:

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

安全目标:

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

量化的攻击者优势:

$(ID',m,\sigma_{m'})$被$Verify$算法接受的概率

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

初始化:

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

攻击者能力:

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

安全目标:

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

量化的攻击者优势:

$(ID,m,\sigma_{m'})$被$Verify$算法接受的概率

公钥加密:

动机:

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

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

参考答案

公钥加密系统定义: 

动机: 

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

实体: 

$Alice,Bob$ 

执行者与算法: 

$Alice: KeyGen(\lambda)\to(pk,sk)$ 

$Bob: Enc(pk,m) \to c$ 

$Alice: Dec(pk,c) \to m$ 

要满足的正确性: 

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

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

初始化: 

设$\lambda$为系统参数,防御者生成$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) \to (sk)$ 

$Bob: Enc(ID,m) \to c$ 

$Alice: Dec(sk,c) \to 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) \to (sk)$ 

$Bob: Enc(IDs=\{ID_0,ID_1,\cdots\},m) \to c$ 

$Alice: Dec(sk_i,c) \to m$ 

要满足的正确性: 

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

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

初始化: 

设$SP_0,SP_1,\cdots$为一组系统参数,防御者生成$(ID_0,sk_0),(ID_1,sk_1),\cdots$,将$ID_0,ID_1,\cdots$发送给攻击者

攻击者能力: 

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

安全目标: 

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

量化的攻击者优势: 

$m''=m'$的概率