【安全归约】第一讲 | Definitions定义(算法和安全模型)
學報網址:臥村密碼學報
視頻網址:安全歸約第一講
參考教材:《Introduction to security reduction》Fuchun Guo, Willy Susilo, Yi Mu
筆記:【安全歸約】安全歸約入門之breaking assumption
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
- Clarified Concepts
- How to Define Algorithms
- How to Define Alorithms for a Cryptosystem
- EX: How to Define Alorithms for Digital Signatures
- How to Define Security Models
- What is Security Model?
- How to Define a Security Model?
- When Defining a Security Model
- EX:Security Model for Digital Signatures
- Examples for Practice
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
- 幾方參與: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
定義安全模型的四個步驟:
??優勢可以忽略的時候,則密碼系統是安全的
??優勢不可忽略(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)
根據功能和安全目標的不同,密碼系統的安全服務的安全模型可能有不同的定義:
EX:在弱安全模型中,敵手只允許知道某些給定消息的簽名,而不能詢問所有消息的簽名
(Standard sercurty model是一種安全模型,Standard model是一種計算模型)
注意 Remark on Security Model(3)
????可能構造更計算效率更高的方案
????有效的方案只能在弱安全模型中證明安全。
為什么要定義安全模型?
- 在某種安全模型下攻破一個方案等價于計算復雜性理論中解決一個計算問題。
為什么作等價,是為了后面歸約所用。沒有安全模型,就不能把攻破方案抽象到成解決計算問題,如果不能抽象成解決計算問題,就沒辦法做安全規約。
Examples for Practice
百聞不如一見,百見不如一練。
Answers:現有的密碼系統的算法定義和安全模型的定義可以從任何相關的已發表的論文中找到。(=請自己去找)
總結
以上是生活随笔為你收集整理的【安全归约】第一讲 | Definitions定义(算法和安全模型)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 分号是c语言的结束符不是分隔符,分号在C
- 下一篇: cached_network_image