《A Graduate Course in Applied Cryptography》Chapter 13 Digital Signatures(3)

本文探讨了在Alice和Bob通信中,如何通过签密机制实现数据机密性和认证性。签密协议由G、E和D三个算法组成,包括encrypt-then-sign和sign-then-encrypt两种构造方法。文章详细解释了安全签密的概念,以及如何通过游戏模型来定义其安全属性。最后,文章讨论了签密协议的抽象模型和理想世界实现,强调了从安全性和不可区分性角度来验证其有效性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文教材 与 参考资料:

        Boneh Dan , Shoup Victor . A Graduate Course in Applied Cryptography[J].

        该书项目地址(可以免费获取):http://toc.cryptobook.us/

        博客为对该书的学习笔记,并非原创知识,仅帮助理解,整理思路。
 

13.7 Signcryption: combining signatures and encryption

Alice 和 Bob进行通信时,除了需要保证密文是安全的还必须保证,密文是可认证的。换句话说,就是Bob必须能够确定其收到的密文的的确确是由Alice产生的,不是由其他人产生的。解决这个问题的办法一般有两种:

        第一种,使用PKI体系,以公钥证书作为识别身份的标准。

        第二种,使用签密机制,并给与每个参与者一个身份标识idx,身份与公钥被维护在一个字典中,只有身份的持有者可以更新公钥信息,任何人都可以获取身份与公钥的信息。

需要注意的是,签密机制不能抵抗重放攻击,这类攻击需要更高级的协议来实现。

下文给出签密协议的形式化定义:

 签密算法由三个算法组成:

       G 概率性算法 输出公私钥对。

       E 概率性算法 输出密文,除了基本的参数,还需要输入两方的身份ID。

       D 确定性算法 对密文进行解密,解密成功的概率为1.

除了明文,密文空间,新增了身份空间I。

构造可认证公钥加密算法(签密)的方式有以下的两种:

     (1)encrypt-then-sign  先加密,后对密文进行签名。

     (2)sign-then-encrypt  先签名,后对明文-签名对进行加密。

13.7.1  Secure  signcryption

在讨论签密方案的具体构造前,我们需要给出一个具体的安全性描述,期望捕获整个系统的安全风险。由AE的属性可知,签密最少需要满足两个基本属性,数据机密性与数据认证性。

数据机密性:敌手在不掌握A和B的私钥下,不能攻破A向B发送的一系列挑战密文的语义安全性。

数据认证性:敌手在不掌握A和B的私钥下,不能产生一个让B完全认可是由A发送的围在密文。

这里分别使用两个游戏来刻画上述的属性,除此之外,敌手还可以询问Alice给与Bob的加密,以及Bob从Alice处获得密文的解密信息。以及任意敌手选定的身份,要求Alice进行加密,获得加密密文。敌手可以向Bob询问解密信息,解密信息是由敌手选择的参与者发送给Bob的,同样也可以向Alice做类似的询问。因此,Bob也可以扮演发送者的角色,敌手依然可以对Bob进行类似的加密询问。

给出密文完整性攻击游戏:

游戏将询问过程分为两部分描述:

S->R, 当S和R组成发送-接受系统时,可以向S发送加密询问。

X->Y, 当S或者R作为发送者与其他参与者通信时,可以向S或者R发送加密询问。

X->Y, 当S或者R作为接收者与其他参与者通信时,可以向S或者R发送解密询问。

最终,敌手A输出一个S发送给R,且R认可的密文,则意味着敌手赢得游戏。

给出密文机密性攻击游戏:

密文的机密性攻击游戏和上述认证攻击游戏类似。

13.7.2 Signcryption as an abstract interface

对于签密的模型建立不同于以往的加密与签名模型,在以往的加密与签名模型中,只有两个参与方,一个发送者一个接收者。但是签密是由多个参与方在网络上组成的系统,因为可认证性要求不仅仅是S与R之间可认证,而是S或R与系统中的其他多个参与者也能保持可认证性。

在这个通信网络中,有一些参与者是诚实的,有一些参与者是“corrupt”的,被腐化的参与者往往极尽所能去破坏这个通信系统,诚实的参与者则会诚实的按照预定步骤完成计算过程。我们可以将敌手定义为所有控制所有腐化参与者,并且掌握所有恶意行为的角色。与以往定义相同,敌手完全控制了整个通信网络。在这个系统中,我们要求所有的参与者(诚实,腐化)都必须注册持有自己的ID(独一无二的)并生成自己的公私钥。

一个系统模型如下图示所示:

在一个网络中,多个参与方可以互相发送消息,如上述右图所示,敌手可对某一个通信实例发起监听,修改,截获等操作。此处与加密不同,对于敌手而言,加密方和解密方是完全固定的角色,只需要进行机密性的破坏,但是对于签密系统而言,这里还需要进行认证性的抽象。所以对于敌手而言,该系统中的身份并不固定,且参与者可能受到敌手的影响。即,系统中的状态空间会变得更加复杂相比较与单一的加密方案模型。所以,敌手在这个模型中,只能观测到某一方发给另一方的消息(或是发送消息,或是接受消息),然后敌手企图进行破坏,破坏的方式就是腐化网络中的参与方。

如何保证签密是完全刻画了整个使用场景的?

如下图所示,首先给出签密场景的抽象模型,然后给出现实世界的实现方式,即为使用密码学算法的实例化模型以及其内部构造。接着,给出理想世界实现方式,即为理想的(理想化不暴露信息的实现方式)。如果能够证明从敌手的角度看,这个两种实现不可区分,不可区分由密码学原语保证,那么之前给出的由两个游戏刻画的签密协议就是安全的。抽象模型是各个参与方之间交互的基础建模。

                

下面给出一个抽象的模型,将通信接口作为输入盒子和输出盒子的集合。

Outbox: 如果有两个注册过的参与者组成一个通信系统,则定义Out(S,R),假设发送方是诚实的,如果接受方也是诚实的,称该定义是安全的,否则,称该定义是不安全的。这个Out抽象的定了两个参与方组成通信系统后,S给R发送的消息都将被首先放入到Out中。

Inbox:    如果有两个注册过的参与者组成一个通信系统,则定义In(S,R),假设接受方是诚实的,如果发送方也是诚实的,称该定义是安全的,否则,称该定义是不安全的。这个In抽象的定了两个参与方组成通信系统后,一段时间后,将会有发送给R的消息出现在In中。

抽象接口的真实世界实现

首先,考虑一个Out-box Out(s,r), 其中发送者是诚实的,r的诚实性是未知的,当用户S将消息放入输出盒子(明文放入)。然后,该消息被用S的私钥和R的公钥进行加密。最终的结果密文被发送到网络中。在一个适当的网络中,如果R是诚实的,那么这个密文最终会出现在s,r的输入盒子In(s,r)。

进一步考虑In-box In(s,r), 其中接收者是诚实的,发送者s不一定是诚实的,无论何时网络中的一个消息发送给了in-box, 使用S的公钥,R的私钥进行解密。如果解密成功,将该消息放入In(s,r)。

抽象接口的理想世界实现:

当一个诚实参与者将消息放入Out(s,r), 如果该盒子是安全的,意味着参与方都是诚实的,那么将一个虚拟消息(与真实的消息没有任何关系)进行加密,密文作为一个句柄(一个对应于真实消息的引用)。否则,如果输出盒子是不安全的,则使用真实世界实现方式,对真实消息进行加密。

当一个网络将一个密文放入对应的输入盒子In(s,r). 如果输入盒子是安全的,理想的实现方式为检查该密文是否是先前作为一个句柄生成的通过匹配对应的输出盒子的信息,如果是,那么直接从outbox 拷贝 该明文进入 Inbox。否则,丢弃这个密文。如果In-box是不安全的,那么密文的解密将直接使用解密算法。

我们期望,理想世界的实现方式,可以包含所有我们期望的安全属性。在理想的实现中,消息传输是依赖“魔法”的,是不会暴露任何信息给敌手的。另外这里值得强调的是,重放攻击这里并不能抵御,需要更层次的协议来进行处理。

签密是安全的

如果说签密是安全的,那么满足机密性和可认证性,并且真实世界实现和理想世界不可区分。这个讨论分为三个步骤,我们从真实世界实现方式开始,并且一步一步,做出修改,直至理想世界实现。

        第一步:修改安全的输入盒子行为,无论何时,网络发送给输入盒子密文,密文是和对应的输出盒子匹配的,则将该对应的消息直接拷贝到输入盒子。(原来真实的实现方式是需要加密的)这种修改方式的正确性由签密协议的正确性来保证,每个密文均有正确的密文与之对应。

        第二步:修改安全的输入盒子行为,无论何时,网络方一个密文给输入盒子,如果该密文不能和对应的输出盒子内容相匹配,则丢弃该密文。签密产生密文的完整性,确保了这个修改和第一个不可区分,因为签密的消息都是完整与可认证的,则不会出现无法匹配的情况,如果出现了,则直接丢弃该密文。将多用户设定推到双用户设定,我们必须使用一个猜测讨论。

        第三步:修改安全的输出盒子行为,使用虚假消息加密结果替代真实消息加密结果。(理想情况是使用虚假消息加密,真实情况是使用真实消息加密)。签密的CCA属性确保了这个修改与第二步中所有内容是敌手不可区分的。将多用户设定推到双用户设定,我们必须使用一个分层讨论。

注意CCA安全意味着发送的消息都是不同的以压倒性概率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值