首页 > 其他分享 >Security Reduction学习笔记(1):密码系统与安全模型的定义

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

时间:2023-10-15 21:58:36浏览次数:43  
标签:防御者 笔记 生成 sk 安全 Reduction 攻击者 Security ID

课件地址: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'$的概率 

标签:防御者,笔记,生成,sk,安全,Reduction,攻击者,Security,ID
From: https://www.cnblogs.com/isakovsky/p/17763596.html

相关文章

  • 学习笔记5
    关于知识点知识点归纳第十一章EXT2文件系统11.1EXT2文件系统EXT2(第二扩展文件系统)是一种用于Linux中的文件系统。文件系统结构:EXT2文件系统使用了多级的索引结构来组织文件和目录。它包括了超级块、inode、数据块、组描述符等数据结构。文件系统特性:EXT2文件系统支持文......
  • 学习笔记五
    EXT2文件系统EXT2文件系统多年来,Linux一直使用EXT2作为默认文件系统。EXT3相对于2,主要增加了一个日志文件;EXT4相对于3,主要是磁盘块的分配。 EXT2文件系统数据结构mkfs创建虚拟磁盘mke2fs[-bblksize-Nninodes]devicenblocks创建了一个带有nblocks个块(每个块大小blk......
  • C++学习笔记Day1
    有关const的一些事1.const对象必须初始化,因为const对象一旦创建,其值不能再被改变。2.const对象是常量,因此可以赋予其字面值。3.普通变量默认支持多文件下共享,而const默认不支持,需要在定义和声明是都加上关键字extern才能在多个文件中使用。4.所谓“常量引用”指的是“对const......
  • 学习笔记5
    EXT2文件系统EXT2文件系统数据结构通过mkfs创建虚拟磁盘命令:mke2fs[-bblsize-Nninodes]devicenblocks在设备上创建一个带有nblocks个块(每个块大小为blksize字节)和ninodes个索引节点的EXT2文件系统。在一个名为vdisk的虚拟磁盘文件上创建一个EXT2文件系统,有1440个大小......
  • 第十一章学习笔记
    第十一章:EXT2文件系统一、EXT2文件系统的数据结构 1.通过mkfs创建虚拟磁盘make2fs[-bblksize-Nninodes]devicenblocks:在设备上创建一个nblocks个块(每个块大小为blksize)和ninodes个索引节点的ext2文件系统 (未指定blksize则默认1kb,未指定ninodes价格根据nblocks计算......
  • 学习笔记5
    EXT2文件系统EXT2(TheSecondExtendedFileSystem)是Linux的标准文件系统,一直以来被广泛使用。EXT3是EXT2的扩展版本,增加了一个日志系统。文件系统背景Linux标准文件系统:EXT2是Linux的标准文件系统,多年来一直被广泛使用。EXT3的扩展:EXT3是EXT2的扩展版本,主要增加了一个日......
  • 学习笔记5
    知识点归纳EXT2文件系统EXT2文件系统是一种用于Linux操作系统的文件系统。它是EXT文件系统的第二个版本,与其前身相比具有许多改进和增强功能。EXT2文件系统提供了可靠的数据存储和管理,可以在硬盘上组织文件和目录,并提供了文件权限、访问控制、日志记录等功能。EXT2文件系统使用......
  • 学习笔记5
    第11章Diffle-Hellman协议  Diffle-Hellman协议主要用于密钥交换,使得在不安全线路上通信的两个人能够以这样的方式协商得到密钥:两个人都能得到相同的密钥,并且这个密钥不会泄露给监听二人会话的其他人。11.1群11.2基本的DH  在基本的DH协议中,首先选取一个大素数$p$和群$......
  • 第十一章学习笔记
    第十一章学习笔记一、课本知识1.EXT2文件系统TheSecondExtendedFileSystem(ext2)文件系统是Linux系统中的标准文件系统,是通过对Minix的文件系统进行扩展而得到的,其存取文件的性能极好。在ext2文件系统中,文件由inode(包含有文件的所有信息)进行唯一标识2.硬盘组成与分割磁......
  • 学习笔记5 第十一章的自学归纳
    学习笔记5第十一章的自学归纳EXT2文件系统EXT2第二代扩展文件系统(英语:secondextendedfilesystem,缩写为ext2),是LINUX内核所用的文件系统。它开始由RémyCard设计,用以代替ext,于1993年1月加入linux核心支持之中。EX2文件系统数据结构创建虚拟硬盘mke2fs[-bblksize-Nn......