DAY 1:

第一章:现代密码学开篇
前面几节讲的都是密码学发展史,《New Directions in Cryptography》这篇划时代的学术论文带我走进了密码学,密码学真神奇。
记录一个知识点数据的三易性:1、易删除 2、易修改 3、易复制
在万事具备时1.3节末尾引用了《康熙王朝》里面的“来了来了,风信来了!准备登船收复台湾!”很有意思。
进入正题密码学新方向来了,一个数学小故事指数运算带给我们”DH密钥协商”
(a,g^b)=(b,g^a)=g^{a*b}
密码学灵魂之问
这个技术背后的原理是什么?
keypoint:单项函数和单项陷门函数的结合,可以用来进行密钥协商。
午憩一下。。。。。。
话接上回
公钥密码学(Public Key Cryptography)
在已知的:加密系统=算法+密钥 进化到了:加密系统=算法+公钥+私钥。简直神来之笔。现在引入一个新概念其实不新,但我不会数字签名,任何人都可以验证签名,但是只有私钥拥有者可以签名。
令人眼花缭乱的密码术语,写一些没听过的吧,“零知识证明,安全多方计算,承诺,秘密共享”现代密码学核心是计算,计算的核心是算法。密码技术就是由若干算法组成,已有的密码技术可分为三类,密码方案,密码协议,密码组件/密码原语。协议和方案本质上没有区别,但还是不要把密码方案说成密码协议,有人不高兴了。密码组件(低级底层技术)用于构造密码方案和协议。
好戏开始了数字签名
三个栓发:
密钥栓发:功能:为用户生成密钥对
输入一个安全参数,栓发输出一个密钥对(pk,sk)
签名栓发:功能:为用户计算签名
输入消息m和私钥sk,栓发输出签名a(其实不是这个字母那个暂时不会读造一个平替)
验证栓发:功能:为用户验证签名
(pk,m,a),输出“正确”或者“错误”
算法定义
密钥算法,*签名算法,验证算法,为啥只有三个因为没必要增加哈哈。
涉及两个核心确认:1、几个算法 2、确认算法输入和输出对象(如公钥 私钥 消息或者签名)
不可伪造性,不可否认性,完整性
最后六个字“学习,借鉴,渗透”
敌人太过狡猾,同志仍需努力。

DAY 2:

距离下午上课还有半个小时看获书。
开篇醒目,数字签名的方案构造之路
函数!函数!函数!
看到一个注释单项陷门函数严格意义上是一个置换(还好数基学过)
看到一个孪生素数猜想问题,看着还挺有趣的,怎么感觉跑偏了全是数学,嘿嘿因为密码学的核心是计算,所以数学的东西也能用上。
看到了最熟悉的RSA,它的单向陷门函数就是对明文加密的函数,RSA的陷门就是d,d就是私钥理解起来挺简单的,就是做题nan。同态攻击RSA浅浅涉略,引出下文哈希函数的诞生(之前开组会的时候还听到了一个叫做变色龙哈希的具体干嘛的没听懂不过应该挺牛逼的)
为什么能抵御同态攻击呢?这部分比较有东西展开讲
经过理解加看了一些材料:
因为哈希函数有单向性,代数不可逆意味着无法反推,
雪崩效应,一点点变化得到的结果将完全不一样
还有一个非线性混淆这个不太懂,等会了再来更新。
进入三大构造环节
通用构造:
简单模式:
用比较粗暴的单向函数签名方案,对1bit的消息进行一次数字签名,问题来了怎么变多次签名呢?一分为二的树形签名结构(Ralph Merkle提出)
具体思路:1、产生两个一次签名的子公钥(pk_1,pk_2)和对应的私钥(sk_1,sk_2);
2、设置消息m=(pk_1,pk_2);
3、用一次签名的原始私钥sk对m签名得到am
4、用sk_1对m进行一次签名得到a_1,用sk_2对m进行一次签名得到a_2;
m1的签名(pk_1,pk_2,am,a_1) m2的签名(pk_1,pk_2,am,a_2)
困难模式:
通用构造必须满足单向,陷门,置换,Claw-Free Pairs 四种性质统称四函数
(满足可证明安全)四函数->三函数->两函数->一函数(单向函数)
噩梦模式:
在四函数变为一函数的过程中效率还是不够高,为了达到安全且高效的要求难度指数级增加。
今天就到这里吧,明天继续

DAY3

明日复明日,明日何其多?
具体构造:
数字签名方案特殊的函数实例构造方案。最大特点是充分利用函数的特殊性质。
这时候就会有问题什么是特殊性?我也好奇呢,经过提炼和抽象主要就剩下了三大性质:
单项性、陷门性、和同态性(同态性最能玩出别样的东西),都说是主要了当然还有一些辅助性的小性质,如回归性。
两类无敌组和,第一类利用单向性和陷门性,第二类利用单向性和同态性(Diffie和Hellman就是在此基础上提出的线上密钥协商)。
第一类就是上文提到的RSA,单向即为加密函数,陷门就是d。
第二类嘛,预知下文接着看,看着突然发现我对同态的定义有点模糊了,吓得我赶紧去复习一手,搞科研还得有丰富的知识储备啊。

这里附一段同态相关概念 设(A,⋆) 和 (B,∘) 是两个代数结构,映射f:A→B 称为同态,若对所有 a1,a2∈A f(a1⋆a2)=f(a1)∘f(a2) 即:先运算再映射 = 先映射再运算。
同态函数协商的密钥值无法直接通过原来的函数得到,优势很明显但有一点点不足就是需要计算的值尽可能大,但这样就需要提高算法效率不然得宕机。公钥密码方案的构造有个重要的工具-循环群(顾名思义元素与元素计算之后还会在群内)
群函数f(x)比单向同态函数多了一个回归性(给定任意的整数k,存在一个素数p,
有f(kp+1)=f(1).群函数本质单向同态函数。
群函数讲完了,横空出世"双线性对"基于两个群函数f(x)和T(x),让f(x)到T(x)且具有乘法同态的映射函数。
存在乘法同态函数性的函数e,满足e(f(x1),f(x2))=T(x1
x2)
讲这么多不如亲自体会一下,一个基于双线性对的数字签名方案
密钥算法:随机一个数s公钥为pk=f(s)私钥sk=s
签名算法:待签名m,a=f(1/{s+m})
验证算法:利用同态函数计算u=f(s+m)。验证e(a,u)=T(1),True
还有高手?全同态函数貌似还没被证明出来,没事但是伪全同态已经被构造出来了。书本写的比较浅,等会了再细写。

人类用0,1构造了网络,生命体碱基对AGCT的超强变化,叹为观止。
最后一个
通用改装
通俗理解在核弹发射井修建末日基地。
强调的是从一种密码技术到另一种密码技术,好!密码技术有一个身份认证协议,纳闷它是否有互通的可能呢?用数字签名来实现身份认证协议肯定是可以的。只要有一个足够长的随机数r,让对方用私钥对r进行签名,然后由自己来验证签名就可以确认对方身份。
反过来就不尽然了,要想这样构造得通过一个特殊的身份认证协议,三次交互承诺,挑战回应。满足这个框架才可以被改装。问题又来了怎么改装呢?
哈希函数签名者设计承诺值,用hash设置c还有计算对应的回应值。得到(承诺值,回应值)作为签名。
学到了一个科学思维,如果大范围验证行不通,那就先缩小范围,小范围可以再扩大研究范围进行论证。
总结一下吧三大构造
感觉通用构造和具体构造优缺互补了
记一个知识点”from”和”based on”就是用来指出与方案构造有关的起点。

DAY4

今天被一道连分数题目难住了,留给看书的时间不多了啊。
通往罗马之路,构造一个新的数字签名就像开辟了一条可以通往罗马的大路。密码学研究成果可能难以落地还会被束之高阁。今天看到的都比较简单不是啥知识点
三个数字签名方向的方案:
1、ElGamal签名方案
2、DSA签名方案
3、Schnorr签名方案
就是了解而已没有具体介绍
新出现了一个概念:可证明安全一种对密码方案的安全分析方法。
计算困难问题
公钥密码学诞生于单向函数,让密码学人意识到反向攻击计算很困难。在这基础上扩展出了一系列问题利用函数的性质,such as同态性。
两大类困难问题:
计算式问题(数字签名方向问题主要是这个):已知f,f(x1),f(x2),求f(x1x2)的值
判别式问题:已知f,f(x1),f(x2)和Z是否等于f(x1
x2)
计算复杂性问题:P类问题和NP类问题
密码学所有相关的计算问题都在NP类里(好用的也都在),P类问题是NP类问题的一个子集。
按困难等级把NP类问题分为3层:P类 ,NP中间类(NP-intermediate),NPC类(NP-complete)依次为简单,较难,最难
通过归约技术证明了第三层NP问题里所有问题难度一样。但第二层确是无法得出结论。量子计算机可以解决部分第二层问题但是能力有限。
安全规约是用于证明密码方案的安全性。归约用于证明两个困难问题之间的等价性

有一句话我不太懂什么叫有人能解决NPC类中任意一个问题就能通过归约解决NP类问题的任意一个问题。???
太晚了先这样,明天继续。

DAY5

安全规约思路:反证法,假如构造的数字签名方案不安全,即有敌人可以攻破该方案,证明者可以借助攻击方案讲计算困难问题变为简单问题,很明显这与已知条件是相反的,就说明方案是安全的。
简单理解
归约 问题->问题归约
只要解决问题A,就能解决问题B—->问题A比问题B难度大
安全归约 方案->问题归约
只要攻破方案S,就能解决问题P—–>攻破S方案比解决问题P困难
由于P!=NP并未被证明,没办法直接证明某个问题的计算是困难的,只能根据一些大佬画的‘红线’通过安全规约来证明。
欸嘿又有新概念了模型,主要就是运用数学概念和语言来刻画某一个问题,多的不说挑重点计算模型(来自计算复杂理论)和安全模型(密码学理论)是密码圈最重要的两个模型。
一个有意思的问题,现代计算机的底层算法是什么?答案是映射
计算模型本质数学建模不多讲,安全建模就有意思了,从数学的角度定义敌手在攻击之前知道什么,以及敌手攻击目标是什么,即把攻击一个方案转换成求解一个计算问题。
一个很有意思的标题“求论文作者的心里阴影面积”
可证明安全并非必须,只是高配要求罢了。也就是说一些密码方案是没有安全证明的,被攻破的可能性远远高于那些有安全证明的密码方案。
标题讲的就是这样一个故事,一个大咖在美密会发表了一篇学术论文关于签名方案的,有人听出了其中问题仅仅用了两天就会议上演示如何攻击他的签名方案。当然不是说他菜哈,其实是大神中的大神,图灵奖获得者。只是故事有点好玩而已。
emm,明天早起出门今天就像这样吧。停更两天。

DAY6

可证明安全发展的三个阶段
第一阶段(1979-1992)
1984年的论文《A “Paradoxical” Solution to the Signature Problem》正式把安全模型带到了数字签名及其可证明。提出了不可伪造型(EUF-CMA)安全模型已经成为当今数字签名的安全模型。光说概念假把式,来点内容,
1、敌人要求首先看到公钥,不见公钥不点炮
2、敌人要求随心所欲得到任何消息的有效签名
3、敌人将伪造任意一个新消息(m^*)的签名
第二阶段(1993-2000)
随机预言模型ROM(Random Oracle Model)问世
1993年ACM CCS会议上出现了一个外挂,就是在安全证明过程中把哈希函数H当作一个随机预言魔法球,这个由证明者控制魔法球可以帮证明者看到敌手询问的内容x并控制输出。这简直是神之一手本来在EUF-CAM模型里敌人可以看见公钥后选择任意消息并询问其签名,以及伪造任意新消息的签名,这就使得安全证明的困难性,而这个魔法球就可以利用时间虫洞获悉敌人即将询问的签名和要伪造的消息的一个签名。
看似这么完美的一个模型居然也会有被砸场子的一天1998年三位大咖给出反例,指出在现世界可能并不安全,好在是这个反例具有特殊性所以大部分场合还是可以用的,不用一夜回到解放前。
1999年不使用魔法球的安全证明技术来了,没具体讲那就浅浅了解。
1993-2000之间还有可证明安全的两条暗线,一条是具有紧归约性质的安全归约技术(方案可证明的基础上,方案的安全性和计算问题的困难性紧紧联系。)另一条就是不可能性分析,证明前往罗马具有X特点的大路不存在。后面才会重点介绍,先了解一手。
第三阶段(2001-2021)
Adi Shamir出手了,提出了基于身份密码技术,表达式是:密钥=主公钥+以身份信息为公钥+私钥。虽然但是但好像不太会用到了21世纪才利用双线性对进行解决。
后退一步海阔天空。

DAY7

兜兜转转总算到第三章了。核心,剪不断理还乱的密码学研究
主要就两个能用可以用和安全不可改
研究术语主要六个
研究对象:就是某种密码技术
研究目标:构造新方案,实现研究对象使新方案具备某种优点
研究动机: 用于介绍某个东西的重要性(为什么实现它,带来的好处),这本书举了一个不错的例子但是篇幅较长可以自己去看我就不赘述了。
研究路线: 实现目标使用的某种方法思路
研究贡献
研究结果
看到一句话我想记录下来按照自己喜欢的方式度过一生是我们人类成功的唯一标准。——徐霞客
有一个有意思的问题研究结果重要吗?
我想当然是重要的,但也可以是不重要的,如果是换汤不换药那确实就不重要了。
一个框架是个导图,作者说密码学初学者以后会思考两百遍我不知道会不会到时候看看。
密码学研究目标分为两类实用(对用户)和安全(对敌人狠)
超越人类认知极限-菲尔兹奖章

DAY8

假设第一个人在第一篇论文里提出一个方案
研究成果不仅仅是密码方案,其实有三关
第一关:新研究对象(算法定义,安全定义)
第二关:设计起点的选择(A->B),因为有些设计起点无法构造目标方案,或者很难构造目标方案。
第三关:方案的构造成功构造一个方案满足算法定义模型和安全定义模型
则可以在第一个人基础上我们有六条路可以走,我觉得这部分还是有点启示作用的
在实用方面有新颖性的研究目标:(必须突出优点)
研究路线1:新构造,在设计起点和算法定义模型相同时,构造新颖的方案
研究路线2:新起点:顾名思义基于新的起点构造(good way)还是那句话,超越人类认知极限
研究路线3:新模型:基于新的算法定义模型构造
有一个点记录一下:新起点应该配备新构造,既需要重新构造密码方案;新模型一定有新构造。如果想两者并用呢?可以先发表一篇新起点的论文,再来一篇新模型的论文。
在安全方面的新颖性的研究目标
研究路线4:新构造,在设计起点和算法定义模型相同时,构造新颖的方案
通俗来讲证明一个更难的(但是这条路很窄),还是得新构造,假设有一篇论文的可证明安全需要使用到魔法球完成归约证明,那么只要有一个不需要使用魔法球的(without Random Oracles)就是一种安全方面的新颖性。
研究路线5:新起点:顾名思义基于新的起点构造,超越人类认知极限
(有一个备胎论但是一般般),高招时新的起点,例如量子计算机将摧毁大多数算法标准,这时候就需要一个新的起点比如说用格(Lattice)来作为新起点进行构造
研究路线6:新模型:基于新的算法定义模型构造
我写的比较随意,书本解释更为详细。
不过可以看出我们能研究的问题是浩瀚的,一个问题就可以有指数爆炸般的子问题延申甚至完全新的问题。
现实往往是更加错综复杂的,有得必然有失,当然也可以有得无失,不过目前应该不行。Tradeoff
有三个把作者都搞蒙了的术语,看到有用的了。
算法功能(一个算法就具有一个栓发功能),研究对象(若干个固定算法构成的密码技术看成一个研究对象),应用需求(通过算法功能的给予体现)。一切尽在算法。
进度 —–50% 哈哈(100/231)

DAY9

设计起点一览,会当凌绝顶,一览众山小。
方案构造之路,重新规划一下构造排序。
具体构造:from某一种数学运算(主流)失去具体构造其他两个就是纸上谈兵。
通用构造:from某一种低级函数,构造一般化和多个实例的存在。
假设有一个密码方案的构造基于函数A,函数A的单向性问题被发现很简单,该密码方案就不再安全了,但是可以找一个有相同性质的函数B就能得到基于函数B的密码方案。
通用改装:from某一种密码技术,强调关系,两种密码技术的关系。

具体构造这条路
RSA,1978
从数学到密码学的具体构造流程
基于密钥结构,签名安全问题,保证通过公钥伪造某一个消息的签名是一个计算困难问题。
从安全到可证明安全
这里举了一个例子RSA,简单讲讲就是一个加了哈希函数的RSA方案在随机预言模型下是可证明安全的,可以归约到RSA困难问题。不使用魔法球的可证明安全->重新构造方案并归约到强RSA困难假设(N,w)计算(y,e)满足w=y^e modN e至少为3这就变为了一个比RSA问题相对简单的计算问题。(就是定义一种困难性减弱的全新困难问题)
最后来看看用于具体构造的设计起点吧
整数环,循环群,双线性对,编码,多变量,格,同源。(特点明天补充)
坚持就是胜利!

DAY10

实用评价模型

计算效率,第一个实用的数字签名方案是RSA,但是效率太低太慢了,提高计算效率就是首要目标。
数字签名方案涉及三类计算:密钥对计算(产生一个公钥和一个私钥);签名计算(对某一个消息签名);签名验证(验证某一个消息的正确性)
密钥对计算效率不是那么重要。其余两个就是看谁更合适了没有绝对的重要。
存储效率
“先讲故事后总结”
有点意思先看看故事,总结一下这个故事就是只重点考虑一个方向的方案,无视其他效率问题导致本书中的老马很是难崩。又是双线性对,我到现在还对这个概念有点不解感觉得重点看看了{留个空白等我学好来补充}
实现效率
许多数字签名方案都存在一个批判点–记录状态式数字签名(State Signature Computation)
硬件成本和时间成本不同,举个例子,小天的方案要求硬件方面有计算模块A和计算模块B并且签名计算的时间是1ms。小强的方案只要求硬件方面只有计算模块A,减少80%硬件成本,但签名的计算时间消耗是100ms。(这时候小强可以在论文里给出必须降低硬件成本的研究动机,还要说明签名计算高效在该应用里不是首要考虑的对象,那么这篇论文还是会被接受的)。
签名应用
emm,熄灯了那就先这样吧明天多看几页。

DAY11

签名应用:
数字签名不仅可以直接用于保护数据的完整性,还可以被当作一种组件用于构造组件构造更高级的密码技术方案。
大多数签名方案在签名时必须要嵌入随机数。如果没有反而显得异类,但是却真有它的神奇之处,唯一性数字签名(Unique Signature)。即每一个消息对应的合法签名只能长成一种样子,不可能有第二种样子。
重随机化数字签名,给定消息m和签名a,且改签名使用随机数r,在不知道私钥的前提下,每个人都可以替换这个随机数,而不影响签名的正确性和安全性。(考虑到这个签名已不再基础,所以还需要一个算法吧签名的随机数随机化)
重头戏时代数结构保留签名,消息m和签名a都必须时循环群中的元素且只能通过群运算保留代数结构。影响深远。

总结一下:

实用评价模型
研究动机1,计算效率(密钥对计算) 实现效率,签名过程不友好
研究动机2 计算效率(签名计算) 实现效率,密码组件不好造
研究动机3 计算效率(签名验证) 实现效率,硬件模块成本高
研究动机确认之后研究人员解决实用问题的三大研究路线就是前面讲的新构造,新起点和新模型
三十年河东,三十年河西,任何事都需要一个契机。

DAY12

算法定义模型

计算委托(Server-Aided Computing)
引入三个人小强,小齐,老马
条件 随机选取的秘密整数v,函数f->求f(v) 但问题是小强自己不会,那怎么办呢只能找小齐了,问题是小强是不信任小齐->计算委托应运而生
很明显这个签名方案是被应用于签名者计算能力较弱的场景。
同理,也可以被应用于验证者计算能力较弱的场景。
不过在没有一些数值的条件下,求解函数的难度堪比登天。依旧退一步海阔天空。
嘿嘿,前面浅浅讲,核心出现注意注意注意
法一
假设f(x)具有加法同态性,
小强把r用随机的方式拆解成两个数字w和z即 r=w+z
小强把w秘密的发给小齐并委托计算f(w)
小强把z秘密的发给老马并委托计算f(z)
有个条件老马和小齐互不认识
然后就可以公布f(z)和f(x)代替f(r),保证了私钥的安全性
法二
用一种巧妙的同态加密方法把数值r加密得到E(r),小齐就通过f(x)和E(r)计算得到E(f(r))
这时小强只需轻松一步解密就能得到f(r){目前只存在与理论构造阶段,确实让我眼前一亮}

计算提前
那如果不能计算委托呢?>>>引出下文计算提前
简单来说就是在低峰期把高峰期的计算提前完成
但是全部计算肯定是不能全部提前的,退一步海阔天空这一块,大部分提前完成(Online/Offline Computing)-(在线/离线计算)
->举个例子
假设签名计算在知道消息m后才能计算t,并需要计算f(t)且f(t)的计算量很大f(x)具有加法同态性
离线阶段:签名者随机选择数值w和z并计算f(w)和f(z)
在线阶段:m收到后签名者计算数值t以及o,满足t=w+o*z->公布f(w),f(z),o表示f(t),因为具有加法同态性。
问题是好像依旧只是理论阶段,在知道少量信息的前提下提前计算不亚于我在完全不会的情况下去写一道AES的解密题,哭今天就没写出来。
先这样吧,夜色已深。

DAY13

捆绑销售
与捆绑销售相比计算委托和计算前提简直就是小巫见大巫。
介绍几种签名技术:

多方签名(Multi-Signature)用于提高存储和通信效率

基于身份签名(Identity-Based Signature)

算法定义
输入一个安全参数->主密钥对(mpk,msk)
输入msk和身份ID->私钥d_ID
签名算法:输入消息m和私钥d_ID->签名a
验证算法:输入mpk身份ID和(m,a)->1/0

消息可恢复签名

通过捆绑签名和信息得到

批量验证签名

聚合签名

无证书签名

DAY14

应用精进
百尺竿头更进一步
批量验证签名和聚合签名允许对任意的签名(不同公钥不同消息)进行捆绑签名
留个标记《Fiat-Shamir with Aborts:Applications to Lattice and Factoring-Based Signatures》准备看看

安全评价模型

可证明安全的困难性,
EUF-CMA安全模型这个模型前面介绍过了,问题关键在于证明者必须遵循这个规则。哪怕是这样也不能从攻击者那里有任何收获
安全评价困难之处
首要问题:证明者把方案的安全性归约到哪一个计算难题?
由于量子计算机的能力强大,困难问题又可以分为两类:
第一类:传统计算机下的计算困难的问题
第二类:在传统和量子计算机都计算苦难的问题
但并不意味着第一类就比第二类差。
解决前面存在的一个问题为什么需要安全归约证明?
为了把攻破密码方案的困难性和解决困难问题的困难性捆绑到一起,使得攻破方案的难度在解决困难问题的难度之上。(但如果困难问题被后来者发现其实并不困难,那么该方案不再具有安全保证)。
今天到此为止了,goodnight

DAY15

安全评价模型之敌人假设
除了ROM外再介绍一个证明模型通用群模型GGM,代数群模型AGM,通用参考字符串模型CRS
在GGM中,敌人在群元素方面的运算被限制了,我们可以限制敌人可以使用的运算法则,敌人知道的所有信息必须通过我们定义的运算获取。
在AGM中,在输出每一个群元素时,必须同时告诉我们这个群元素时如何通过之前给定的群元素计算得来的。
在CRS中,自己的计划可知的(对话可以加密),并且在攻击时不能临时更改攻击计划。

DAY16

今天新学到一个不可编程式的随机预言模型(Non-Programmable Random Oracle Model)

安全定义模型

在EUF-CMA安全模型中有对应的三问三答:
敌人是谁?
计算能力有限的人
敌人知道什么?
知道公钥后敌人可以询问多个签名
敌人将攻击什么?
敌人将伪造任意一个新消息的签名m’
emm这两天看的有点少啊感觉计划要破产,看我能不能力挽狂澜了。

DAY17

理论上来说今天应该是第18天了,但是昨天兄弟生日出去玩了一晚上懈怠了。
接着安全定义模型,敌人可以选择任意消息,询问签名在密史里,能抵抗这种任意选择攻击–自适应安全。
安全证明能否具备自适应性成为一个有名的研究问题,但该性质在数字签名的研究里并非难题,我们要考虑的是超越,即超越,超越安全模型里敌人知道的信息。
然后是,敌人可以选择任意新消息,伪造签名。
假设敌人选择的消息为m’。在安全模型里,敌人可以先完成所有的签名询问,在公开他将要的伪造哪个新消息的签名。
在安全证明里,信息披露的先后顺序非常重要,影响安全证明的难易程度。

DAY18

还有3天会赢吗?
当研究提出一个数字签名方案并且可以在标准安全模型之上证明其安全是,就可以说整个方案具有新颖性,可以抵抗更强大敌人的攻击。
引出三个研究方向(敌人是谁?敌人知道什么?敌人将要攻击什么?)

敌人是谁?

提高敌人的计算能力是一种超越方法。
数字签名属于公钥密码,公钥密码的所有方案都建立在一个密钥对(pk,sk)上,安全性都是通过pk计算sk的计算困难问题。
所以数字签名只能抵抗计算能力有限的敌人,如果敌人计算能力无限,那就有点东西了->无条件安全签名(Unconditional -Secure Signatures)。
什么是无条件安全签名?就是可以抵抗计算能力无限的敌人攻击的签名方案。
因为敌人能力无限,那么只要有pk他们必然能获得sk,既然如此,直接选择不要公布公钥,将pk隐藏。仅由固定的几个人进行签名和验证的数字签名,从而达到无条件安全。
->失败终止签名(Failed-Stop Signatures),通过退一步海阔天空
核心:哈希函数H具有具有抗碰撞性和单向性存在许多不同数值的wi满足H(w1)=H(w2)=H(w3)=…..=H(wn),但找到任何一个碰撞都是计算困难问题。
有一个哈希函数只能对1比特消息进行数字签名的方案

敌人:
知道公钥pk->如果要伪造m=0的签名—>给出任意w满足H(w)=H(s0).因为计算能力无线他可以计算所有满足的w,但确不知道用哪一个只要w!=s0,签名者就可以进行自证

敌人将要攻击什么?

主要就是考虑敌人攻击更容易成功或目标更广阔方向考虑。
攻击更容易
目标更广阔
在标准安全模型里,敌人的攻击目标是伪造任意一个新消息m*的签名,这个目标其实已经很广阔了,但高手就是喜欢挑战极限,允许敌人对任意的签名进行伪造,不过得加一些条件。->强不可伪造性(Strong Unforgeability)

  • 敌人可以伪造任意一个新消息m*的签名
  • 敌人可以伪造任意一个已经询问过签名的消息m的签名,但是伪造的签名必须和提供给它的签名不一样。(如果消息m的签名计算用到某个随机数r,只要敌人能将r替换成其他随机数就算攻击成功)

有这个方案主要是针对一些需要具有强不可伪造性的数字签名

DAY19

敌人知道什么

如果敌人知道的信息超过了标准安全模型。
敌人在知道了公钥pk后可以询问任意消息的签名。敌人知道的信息已经足够多了,但又不能告诉他私钥。如果还想要继续操作。就是让敌人和知道私钥的挑战者直接对话。
那么对这些敌手进行一个分类:
第一类:在合理的范围内告诉敌手部分密钥信息。(Partially)
攻击方式:侧信道攻击,一种通过检测物理设备获得的和私钥有关的敏感信息的攻击
抗泄露安全模型
第二类:把私钥分成好几个部分
每个部分都有独立的签名功能,而且敌人获取的那些部分不影响剩下部分的安全性(只能方向性引导)
->在私钥可能泄露这个动机下,提出私钥可更新或者可演化->私钥可以产生许多块不同的子私钥->研究子私钥泄露概率降到最低。
–>提出两种签名技术:1、前向数字签名(Forward-Secure Signatures)2、密钥绝缘签名(Key-Insulated Signatures)
第三类:用错误的密钥进行签名计算,错误方式由敌手决定。
第四类:计算签名用到的随机数部分允许敌手做主。
二十天看完好像有点异想天开了,没事慢慢看,准备进入论文部分了。

DAY20

今天是最后一天了,这些天学到的知识还是挺多的,第一次接触数字签名,还不错。
第四类的敌手运用棱镜计划式的攻击可以用一种你闻所未闻的方式讲你的私钥全部获取。
难道我们就没有办法了吗?不当然不是
->密码圈的大牛退一步海阔天空加筑一道防火墙(不需要知道任何敏感的信息)
功能:把签名内的随机数替换掉进而化解敌人的危机
第五类:敌手用量子通信的方式和你对话
在量子态计算下,输入态和输出态都是不正交的叠加态。
量子选择攻击:敌人把多个消息叠加到一起,然后询问签名,挑战者也可以对所有消息产生的签名叠加在一起返回给敌人,敌人有选择的读取某一个消息的签名(只能1个)。不过跟我们是没多大关系,挺前沿的。
第六类:多产生几个密钥对,敌手爱攻击哪个就攻击哪个。
在标准安全模型里,挑战者产生一个密钥对(pk,sk)将pk发给敌手,敌手不能指定攻击的对象,挑战者给哪个,敌手就只能去伪造这个公钥的签名
也就是有好几个人,每个人可以生成一个密钥对,敌手只需要攻击一个就能对整个数字签名方案带来巨大打击
->多用户安全应运而生(Multi-User Setting)
挑战者产生多个密钥对,把所有的公钥发送给敌人。敌人看到后,可以选择任意一个进行攻击。
keypoint其他没有被选上的公钥,必须把私钥都交出去。
OK,二十天的学习暂时到这里了,不过书还是会继续看的。安全模型的故事还有很长,我的学习之路也依旧任重而道远