密码学系列2-安全模型(CPA,CCA,selective,adaptive)

news/2024/9/23 6:37:23/

本章介绍了安全模型中的CPA,selective/adaptive CCA, EUF-CMA

加密的安全性模型定义:

一、选择明文攻击下的不可区分性(IND-CPA

初始化:挑战者 C \mathcal{C} C运行初始化算法算法来获取系统参数。

阶段1:敌手 A \mathcal{A} A产生明文,加密的到对应的密文(多项式有界次数)。

挑战:对手将输出两条相同长度的消息 m 0 m_0 m0 m 1 m_1 m1

挑战者 C \mathcal{C} C随机选择比特 b ∈ { 0 , 1 } b\in \{0,1\} b{0,1},并加密消息 m b m_b mb以获得挑战密文。然后, C \mathcal{C} C将挑战密文发送给对手。

猜测:最后, A \mathcal{A} A输出一个猜测 b ′ ∈ { 0 , 1 } b'\in \{0,1\} b{0,1}

如果 b = b ′ b=b' b=b A \mathcal{A} A赢得游戏,优势定义为:

A d v A = ∣ P r ( b ′ = b ) − 1 / 2 ∣ Adv_{\mathcal{A}}=|Pr(b'=b)-1/2| AdvA=Pr(b=b)1/2∣

思考:阶段一敌手需要和挑战者交互吗?

概率和优势的区别:比如有一个丢一枚硬币的赌局。我们猜测正面朝上,那么我们猜测正确的概率为 1 / 2 1/2 1/2。如果我们知道硬币密度,丢硬币的方式会对结果有影响。那么丢一次硬币后,经过我们精密的分析,我们猜对的概率可能就是 1 / 2 + r 1/2+r 1/2+r,那么此时就说我们有 r r r的优势来正确猜硬币。
如果这个优势不可忽略,比如等于 r = 1 / 2 r=1/2 r=1/2,那么我们猜对的概率就是1!!如果这个概率无敌小到可以忽略,比如 r = 1 / 2 1 亿 r=1/2^{1亿} r=1/21亿,那么我们知道硬币密度,丢硬币的方式会对结果几乎没有影响。那么我们的能力对猜硬币的赌局没有任何作用。

二、适应性选择密文攻击下的不可区分性(adaptive IND-CCA2

初始化:挑战者 C \mathcal{C} C运行初始化算法算法来获取系统参数。

阶段1:

1.加密问询:敌手 A \mathcal{A} A产生明文,加密的到对应的密文(多项式有界次数)。
2.解密问询:敌手 A \mathcal{A} A产生密文,挑战者解密后,将解密得到的明文返给敌手(多项式有界次数)。

挑战:对手将输出两条相同长度的消息 m 0 m_0 m0 m 1 m_1 m1

挑战者 C \mathcal{C} C随机选择比特 b ∈ { 0 , 1 } b\in \{0,1\} b{0,1},并加密消息 m b m_b mb以获得挑战密文。然后, C \mathcal{C} C将挑战密文发送给对手。

阶段2:

1.加密问询:敌手 A \mathcal{A} A产生明文,加密的到对应的密文(多项式有界次数)。
2.解密问询:敌手 A \mathcal{A} A产生密文,挑战者解密后,将解密得到的明文返给敌手(多项式有界次数,且敌手不能对挑战密文进行解密问询)。

猜测:最后, A \mathcal{A} A输出一个猜测 b ′ ∈ { 0 , 1 } b'\in \{0,1\} b{0,1}

如果 b = b ′ b=b' b=b A \mathcal{A} A赢得游戏,优势定义为:

A d v A = ∣ P r ( b ′ = b ) − 1 / 2 ∣ Adv_{\mathcal{A}}=|Pr(b'=b)-1/2| AdvA=Pr(b=b)1/2∣

三、选择性选择密文攻击下的不可区分性(selective IND-CCA2

对手将输出两条相同长度的消息 m 0 m_0 m0 m 1 m_1 m1并发送给挑战者。

初始化:挑战者 C \mathcal{C} C运行初始化算法算法来获取系统参数。

阶段1:

1.加密问询:敌手 A \mathcal{A} A产生明文,加密的到对应的密文(多项式有界次数)。
2.解密问询:敌手 A \mathcal{A} A产生密文,挑战者解密后,将解密得到的明文返给敌手(多项式有界次数)。

挑战者 C \mathcal{C} C随机选择比特 b ∈ { 0 , 1 } b\in \{0,1\} b{0,1},并加密消息 m b m_b mb以获得挑战密文。然后, C \mathcal{C} C将挑战密文发送给对手。

阶段2:

1.加密问询:敌手 A \mathcal{A} A产生明文,加密的到对应的密文(多项式有界次数)。
2.解密问询:敌手 A \mathcal{A} A产生密文,挑战者解密后,将解密得到的明文返给敌手(多项式有界次数,且敌手不能对挑战密文进行解密问询)。

猜测:最后, A \mathcal{A} A输出一个猜测 b ′ ∈ { 0 , 1 } b'\in \{0,1\} b{0,1}

如果 b = b ′ b=b' b=b A \mathcal{A} A赢得游戏,优势定义为:

A d v A = ∣ P r ( b ′ = b ) − 1 / 2 ∣ Adv_{\mathcal{A}}=|Pr(b'=b)-1/2| AdvA=Pr(b=b)1/2∣

selective是在系统生成前产生挑战密文,再系统初始化时,挑战者可能会根据挑战密文生成相应的系统参数。
思考:selective和adaptive哪个安全性更强

四、(非自适应)选择密文攻击下的不可区分性(IND-CCA1

初始化:挑战者 C \mathcal{C} C运行初始化算法算法来获取系统参数。

阶段1:
1.加密问询:敌手 A \mathcal{A} A产生明文,加密的到对应的密文(多项式有界次数)。
2.解密问询:敌手 A \mathcal{A} A产生密文,挑战者解密后,将解密得到的明文返给敌手(多项式有界次数)。

挑战:对手将输出两条相同长度的消息 m 0 m_0 m0 m 1 m_1 m1

挑战者 C \mathcal{C} C随机选择比特 b ∈ { 0 , 1 } b\in \{0,1\} b{0,1},并加密消息 m b m_b mb以获得挑战密文。然后, C \mathcal{C} C将挑战密文发送给对手。

猜测:最后, A \mathcal{A} A输出一个猜测 b ′ ∈ { 0 , 1 } b'\in \{0,1\} b{0,1}

如果 b = b ′ b=b' b=b A \mathcal{A} A赢得游戏,优势定义为:

A d v A = ∣ P r ( b ′ = b ) − 1 / 2 ∣ Adv_{\mathcal{A}}=|Pr(b'=b)-1/2| AdvA=Pr(b=b)1/2∣

现在论文中定义的IND-CCA即指IND-CCA2,CCA1很少见了。
CCA1即在敌手获得挑战密文前可以进行解密问询。敌手获得挑战密文后,便不能再根据挑战密文生成其他密文来进行解密问询了。

签名安全性模型:

五、适应性选择消息的存在不可伪造性(EUF-CMA

初始化:挑战者 C \mathcal{C} C运行初始化算法算法来获取系统参数。

阶段1:
1.签名问询:敌手 F \mathcal{F} F产生消息,敌手为消息产生签名并返回给敌手(多项式有界次数)。

伪造:敌手 F \mathcal{F} F伪造出一个签名。

如果伪造的签名满足以下条件,则敌手赢得这个游戏:
1.这个签名不是签名问询产生的。
2.签名能通过验证算法。

上面的五个模型都是最基础的定义,不同的方案会由不同的变化。后续文章将给出实例化安全性证明。


http://www.ppmy.cn/news/1431185.html

相关文章

Redis 缓存预热、预热数据选取策略、缓存保温、性能边界

缓存预热 热点数据预热:根据业务分析或统计数据,确定热点数据(经常被访问的数据),并将其提前加载到Redis缓存中。可以根据访问频率、访问量或其他业务指标来确定热点数据。定时预热:可以设置定时任务&…

Centos7.9云计算CloudStack4.15 高级网络配置(3)

上两章的文章都是用的CloudStack的基本网络,这一篇我们来介绍CloudStack的高级网络,这里虚拟机用的是自己配置的内部网络,通过nat方式到物理网络。按照第一篇的文章,安装管理服务器和计算服务器。 并且在管理服务器配置好如下的全…

Mac读写U盘软件哪个好用 Mac读写U盘很慢怎么解决 macbookpro读取u盘

在使用Mac电脑时,读写U盘是一个常见的需求,特别是当U盘格式为NTFS时。选择适合的软件来实现这一操作至关重要。下面我们来看Mac读写U盘软件哪个好用,Mac读写U盘很慢怎么解决的相关内容。 一、Mac读写U盘软件哪个好用 在Mac上选择一款适合的…

软考高级架构师:AI 通俗讲解负载测试、压力测试、强度测试、容量测试和可靠性测试

在软件工程领域,测试是一个确保软件质量和性能的关键步骤。负载测试、压力测试、强度测试、容量测试和可靠性测试都是性能测试的不同类型,它们的目的和方法有所不同。 下面我将通过简单的比喻和解释,帮助您理解这些测试之间的区别。 负载测试…

Rust面试宝典第8题:三角形的最大周长

题目 给定由一些正数(代表长度)组成的数组nums,返回由其中三个长度组成的、面积不为零的三角形的最大周长 。如果不能形成任何面积不为零的三角形,则返回0。 示例 1: 输入:nums [2,1,2] 输出:…

Rust Tracing 入门

Tracing 是一个强大的工具,开发人员可以使用它来了解代码的行为、识别性能瓶颈和调试问题。 Rust 是一种以其性能和安全保证而闻名的语言,在它的世界中,跟踪在确保应用程序平稳高效运行方面发挥着至关重要的作用。 在本文中探讨Tracing 的概…

前端通过http请求访问本地图片

1、前端直接引用本地图片,图片加载失败 具体报错信息如下: Not allowed to load local resource不允许加载本地资源 2、针对以上问题,只需要利用拦截器将本机地址映射成url路径就行 具体代码如下 Configuration public class FileConfig i…

索引【MySQL】

文章目录 什么是索引测试表 磁盘和 MySQL 的交互了解磁盘MySQL 的工作原理Buffer Pool 理解索引引入Page 的结构页内目录(Page Directory)多页情况B 树和 B树聚簇索引和非聚簇索引 主键索引创建 唯一索引主要特点与主键索引的区别使用场景创建 联合索引工…