学报网址:卧村密码学报
视频网址:安全归约第一讲
参考教材:《Introduction to security reduction》Fuchun Guo, Willy Susilo, Yi Mu
Computational Complexity Theory:
Lecture 1: Definitions(Algorithm and Security Model)
Lecture 2: Preliminaries(Field, Group, Pairing, and Hash Function)
Lecture 3: Preliminaries(Hard Problem and Secure Scheme)
Lecture 4: Entry to Security Reduction
Lecture 5: Difficulties in Security Reduction
Lecture 6: Simulation and Solution
Lecture 7: Analysis(Towards A Correct Reduction)
Lecture 8: Security Proofs for Digital Signatures
Lecture 9: Security Proofs for Encryption(Decisional)
Lecture 10: Security Proofs for Encryption(Computational)
Lecture 11: Revision of Security Reduction
Lecture 12: Flaws in Papers
安全归约第一讲Definitions:Algorithm and Security Model
Classical Cryptography vs Modern Cryptography
经典密码:古罗马时期,手算
近代密码:二战时期,机械计算
现代密码:20th,数字电脑计算
现代密码与古典密码的主要区别在于算法定义、模型以及证明方面
Definitions:算法定义,困难问题定义,概念定义等
Models:计算模型、安全模型
Proofs:安全归约、game-hopping proof等
安全归约并不适用于所有安全技术证明
Clarified Concepts
Cryptography:达到认证、保密、完整性安全服务的方法。ex对称密码、公钥密码学、群密码学、椭圆曲线密码学
Cryptanalysis:分析(ex分析对称密码的复杂性攻击,分析公钥密码的方案安全性)
Cryptosystem:提出具体的安全服务(ex数据的隐私性、完整性)。ex数字签名、公钥加密、基于身份加密、基于属性加密
Scheme:Cryptosystem的具体构造/实现
- Cryptology=Cryptography(构造为主)+Cryptanalysis(分析为主)
- Scheme每个算法都是可以一方独立进行计算,产生结果;protocol需要通过交互才能够产生得到最后的计算结果
- 每个方案有它的优势也有它的劣势
How to Define Algorithms
How to Define Alorithms for a Cryptosystem
cryptosystem通过若干算法组成达到安全服务目标。
当我们要构造cryptosystem,首先定义算法,提出问题:
- 安全服务目标是什么?(Alice和Bob之间需要做什么计算,满足什么性质)
- 需要几方(entities)的参与?(签名者、验证者、加密者、解密者、数据拥有者、数据接收者等)
- 当我们定义一个cryptosystem时,我们到底需要几个算法?(越少越好)
- 每个算法怎么命名?
- 谁(entity)来运行每一个算法?
- 每个算法输入和输出的对象是什么?
- 算法满足的正确性?
EX: How to Define Alorithms for Digital Signatures
- Alice想说服其他方消息m是她发布的
- Alice生成公钥/私钥对(pk,sk),并将公钥pk发给所有验证方verifiers
- Alice用密钥sk对m进行数字签名,生成签名 σ m \sigma_m σm,并发送 ( m , σ m ) (m, \sigma_m) (m,σm)
- 任何已经知道pk的接收方可以用pk对签名 σ m \sigma_m σm进行验证,从而确认消息m的来源
- 几方参与:Signer,Verifier //参与方用行为区分命名(加密者、解密者等等),而不是名字Alicer、Bob
- 几个算法:1(system parameter generation)+3 //看有几个计算->系统参数、产生、签名,验证)
- 各算法名称:SysGen, KeyGen, Sign, Verify //注意美观,容易联想
- 谁运行各算法:SysGen(Authority), KeyGen(Signer), Sign(Signer), Verify(Verifier)
- 抽象化,每个算法的输入输出是什么:
S y s G e n ( λ ) → S P . SysGen(\lambda)\to SP. SysGen(λ)→SP.
K e y G e n ( S P ) → ( p k , s k ) KeyGen(SP)\to (pk, sk) KeyGen(SP)→(pk,sk)
S i g n ( S P , s k , m ) → σ m Sign(SP, sk, m)\to \sigma_m Sign(SP,sk,m)→σm
V e r i f y ( m , σ m , S P . p k ) → Verify(m, \sigma_m, SP. pk)\to Verify(m,σm,SP.pk)→{0, 1}
形式化定义(语言描述,不要抄袭要修改)
所有算法都是概率多项式时间算法
- 注意 Remarks on Algorithm Definition
算法定义必须满足正确性
在数字签名中,所有生成的签名都可以被验证
在加密过程中,所有生成的密文都可以被解密
正确性满足所有的产生的公钥私钥对
正确性与cryptosystems的服务有关
How to Define Security Models
参考:卧村密码学报:密码学入门之安全模型
提出疑惑:
- 怎么去分析一个方案的安全性?
- 给定的一个方案(在一个安全模型下是安全的),那么它可以抵抗所有的攻击吗?
- 安全模型是为了一个提出的方案定义的吗?
What is Security Model?
- 当我们为一个cryptosystem提供一种方案的时候,我们不能分析他抵御很多攻击是安全的,例如重放攻击和合谋攻击。但是我们能分析这个提出的方案在安全模型下是安全的。(即我们不能直接去描述说,这个方案能抵御什么攻击,而是在某种安全模型下是安全的)
- 一个安全模型可以被看成是对于cryptosystem很多种攻击的抽象概念,如果一个方案在某个安全模型下是安全的,则说明该方案可以抵御所有在该安全模型下描述的攻击
-抽象的攻击主要关注的是敌手能知道什么信息,而不是敌手怎么知道这些信息。 - 一个安全模型是为一个cryptosystem定义,而不是对于一个方案。
How to Define a Security Model?
可以有俩种类型可以描述,一个是game,一个是实验的形式(伪代码)。这里只给出game的形式。
在用game描述安全模型的时候,只能用challanger和adversary之间的交互进行描述,不可出现第三方。
- challanger:密码系统的密钥所有者
- adversary:试图破解密码系统(break the cryptosystem)
双方之间是有信息差的
一个安全模型的定义:
敌手的能力:
敌手如何询问信息?
敌手什么时候询问信息?
敌手的安全目标:
敌手怎么能赢得game
定义安全模型的四个步骤:
- Setup:敌手和挑战者之间初始化(挑战者产生公钥私钥对,把公钥发给敌手)
- Capabilities:敌手能询问到什么信息,什么时候知道这些信息(必须诚实应答敌手询问)
- Security Goal:敌手赢得game的条件
- Advantage:定义一个敌手赢得game的优势
优势可以忽略的时候,则密码系统是安全的
优势不可忽略(non-negligible)的时候,则密码系统是不安全的
When Defining a Security Model
因为当我们定义安全模型时,还没有具体的算法实现构造方案,我们只关注算法的输入和输出。因为这样我们的安全模型才适用于cryptosystem中的所有可能方案。
Example有一个敌手询问消息m的签名,挑战者将(pk,sk,m)输入运行签名算法得到签名 σ m \sigma_m σm,将签名 σ m \sigma_m σm返回应答给敌手
- 不关心挑战者怎么产生签名 σ m \sigma_m σm的
- 不关心签名(算法输出)看起来是什么样子
- 只关心敌手的询问(i.e. m)(具体的m也不关心,关心敌手询问m)
定义模型时候,
我们不考虑:
- 敌手的trivial attack可以帮组敌手轻易的破解密码系统(安全模型是吧attack抽象成询问),ex敌手要求所有挑战者共享密钥
- 敌手如何获取信息的策略。因此当敌手提出质疑时,挑战者必tal须正确诚实地应答。
我们要保证 - the advantage is negligible(对手在某些询问中受到限制)
EX:Security Model for Digital Signatures
- 抽象化:
Setup:生成一个密钥对,敌手知道pk
Capabilities:敌手获得一些信息的签名
Goal:敌手不能伪造新消息的签名
Advantage:伪造成功的概率
Trivial Attack:如果敌手询问签名私钥,就会很轻易的赢得game(需要禁止敌手做这样的询问)
- 形式化:
注意 Remark on Security Model(1)
- 一个密码系统可能有一个或多个的安全服务
- 每个安全服务需要一个安全模型
Ex:signcryption=signature+encryption
两个安全模型:无法破解签名,无法破解加密 - 一个安全模型可以描述多个安全定义(服务)
注意 Remark on Security Model(2)
根据功能和安全目标的不同,密码系统的安全服务的安全模型可能有不同的定义:
- 标准安全模型Standard sercurty model:大多数应用程序(或密码学社区)都可以接收能力和安全目标
- 强安全模型Strong sercurty model:与标准模型相比,对手具有更强的能力和更容易实现的安全目标(抵抗更多的攻击)
- 弱安全模型Weak sercurty model:与标准安全模型相比,对手具有较弱的能力和较难实现的安全目标(抵抗更少的攻击)
EX:在弱安全模型中,敌手只允许知道某些给定消息的签名,而不能询问所有消息的签名
(Standard sercurty model是一种安全模型,Standard model是一种计算模型)
注意 Remark on Security Model(3)
- 强安全模型,即敌手能力更强,安全模型能够抵抗更强的敌手。
- 并不是越强的安全模型就越好,这取决于你的应用和技术。
- 为什么需要弱安全模型
可能构造更计算效率更高的方案
有效的方案只能在弱安全模型中证明安全。
为什么要定义安全模型?
- 在某种安全模型下攻破一个方案等价于计算复杂性理论中解决一个计算问题。
为什么作等价,是为了后面归约所用。没有安全模型,就不能把攻破方案抽象到成解决计算问题,如果不能抽象成解决计算问题,就没办法做安全规约。
Examples for Practice
百闻不如一见,百见不如一练。
Answers:现有的密码系统的算法定义和安全模型的定义可以从任何相关的已发表的论文中找到。(=请自己去找)