Boneh的课程更新到12章就没了,好像明年会继续更新,第一次像追剧一样追一门课。可太刺激了。
13、14章的笔记来自陈老师的课堂。我把PPT贴一下,把需要注释的地方写写。这篇中的重点是签名方案的证明部分。
13.Digital Signature
Applications
Constructions overview
Signatures From Trapdoor Permutations
Security Proofs
Secure Signatures Without Random Oracles
-A new tool: pairings
-BLS: a simple signature from pairings
Reducing signature size
-Signatures with Message Recovery
-Aggregate Signatures
以前公钥加密方案是用pk加密,sk解密。在数字签名中,用私钥sk加密。很容易理解,私钥只有我本人有,相当于我签字嘛。
这个技术用在应用商店软件分发上,防止软件被恶意篡改,虽然好像MAC也可以做,但是MAC需要总部(云服务应用商店)跟每台客户端都建立一对共享密钥,比较麻烦。用签名的话,总部只要签一次,把公钥给你们发下去,你们验证就行了。
为了区分以前的选择明文攻击,这里换个名词,叫做选择消息攻击。CMA
选B
选C,Alice说自己私钥被偷了。法院到底该不该把数字签名当做证据呢?有争议。
就是我上面讲到的应用分发的问题。
CA证书,参考这篇,在此处了解即可。
选C
还可以用在智能卡上,这块芯片可以防侧信道攻击。
DKIM针对的目标是互联网最严重的威胁之一:电子邮件欺诈。
一般来说,发送方会在电子邮件的标头插入DKIM-Signature及电子签名资讯。而接收方则透过DNS查询得到公钥后进行验证。
DKIM让企业可以把加密签名插入到发送的电子邮件中,然后把该签名与域名关联起来。签名随电子邮件一起传送,而不管是沿着网络上的哪条路径传送,电子邮件收件人则可以使用签名来证实邮件确实来自该企业。
DKIM 的基本工作原理同样是基于传统的密钥认证方式,他会产生两组钥匙,公钥(public key)和私钥(private key),公钥将会存放在 DNS 中,而私钥会存放在寄信服务器中。数字签名会自动产生,并依附在邮件头中,发送到寄信者的服务器里。公钥则放在DNS服务器上,供自动获得。收信的服务器,将会收到夹带在邮件头中的签名和在DNS上自己获取公钥,然后进行比对,比较寄信者的域名是否合法,如果不合法,则判定为垃圾邮件。由于数字签名是无法仿造的,因此这项技术对于伪造域名的垃圾邮件制造者将是一次致命的打击,他们很难再像过去一样,通过盗用发件人姓名、改变附件属性等小伎俩达到目的。在此之前,垃圾邮件制造者通过把文本转换为图像等方式逃避邮件过滤,并且使得一度逐渐下降的垃圾邮件数目再度抬头。
选NO,反正肯定是有问题的,让你签名你就签,非要整个哈希。我猜如果不签名的话,会影响身份认证。(评论区求说法)
假设收件人可以针对收到的每封电子邮件从DNS检索新数据,Gmail是否可以在没有签名的情况下实施DKIM?(暂时忽略DNS系统上增加的负载)
是的,Gmail会将每封传出电子邮件的防冲突哈希值写入DNS。收件人从DNS检索哈希值,然后将其与传入消息的哈希值进行比较。
不,以上建议是不安全的。
⇒签名减少了收件人查询DNS的频率
一般而言:
•如果一方签字并由一方进行验证:使用MAC –通常需要进行交互以生成共享密钥–收件人可以在将数据传递给第三方之前修改数据并重新签名。
•如果一方签字并经多方验证:请使用签名–收件人无法在将数据传递给第三方之前修改接收到的数据(不可否认)
选YES
full domain hash 意思是哈希msg的结果对应的是TDF的输入的空间。
在这里如果不哈希的话,就相当于是教科书版的RSA,不能满足CPA安全,我们需要哈希来增加随机值。所以选no
RSA需要2000bits长的模数n
所以常用哈希算法比如sha-256, H(m)的结果长度只有二百多或者五百多,不能直接用。
PKCS1 不是FDH,现在广泛应用在工业界,理论上还不能证明是安全的,但是工业界很流行,目前也没找到漏洞。
选A,如果EM是某个值x的三次方。3d=1,验证σ的时候暴露了EM了。
前面的看看就行了,重点要掌握下面的证明
以前我们是后做RO询问,在这个game里面,为了达到证明的目的,先做RO询问,这也是本方法巧妙的地方。
先做RO询问(图中第一个圈)
我(us/B)随机找个xi,和pk做一下,生成的东西赋值给H(mi)这就是映射表。
然后我随机挑一个把我要求的赋值给他,把y返还给了A。y就是我埋在这里的问题,y是我要解决的问题。
签名询问的时候,我返回xi就行。A收到xi是可以通过验证的。
签名询问的m一定是刚才RO询问问过的m。
但是呢,签名询问不能问mi*,因为B没有收到x,B没办法回答mi*的签名。mi*是我埋在A多次询问里面的一个我需要利用的y(为了获得x)。你签名询问我*的时候我是给不了正确的签名的。game就中断了。问到i*的概率是小的,所以可以欺骗A。
我们希望A可以伪造一个i*的签名,在最后A要伪造(m,σ)的时候,如果这个m正好就是mi*,这对伪造(m,σ)通过验证的优势就是B利用A打破TDP的优势。
最后问的伪造m是Qro问过的,Qs没有问过。
所以这里有个系数关系,是qH也就是RO查询的次数。
B的这个表就是随机预言机的表记录了m和x的映射关系。
选A
PSS忽略
双线性对,稍后作业9的部分我会再讲。
把消息m隐藏在签名σ里面,节约开销。
把蓝色方框内看懂就行。
选No。
集合签名
生成的最后的签名σ*可以保证这一群人都签过了。还有算法能保证他们签名的顺序。具体怎么做的,不需要了解。