技术领域
[0001] 本发明属于密码领域,涉及抗量子密码迁移,尤其涉及一种从带错误的公钥加密算法(PKE)构造认证密钥交换协议(AKE)的方法与系统。
相关背景技术
[0002] 认证密钥交换协议(AKE)是一种重要且广泛用于现实的密码协议,如TLS协议的握手阶段,本质上就是一种满足前向安全性的AKE协议。AKE协议的基本功能要求,简而言之分为两部分:其一,要求双方均能确认交互对象的身份是否与自己认知的一致(称为“认证性”);其二,要求互相确认身份无误的双方,能够“安全地”共享一段秘密值(称为“机密性”)。此外,为了现实的应用,“前向安全性”通常也是AKE协议设计必须考虑的安全目标。前向安全性指的是,即便是在某次协议执行时某恶意敌手获得了其中一方的长期私钥(用于提供身份证明),它仍然无法得知在该次通信之前已执行完毕的协议流程所生成的共享秘密。
[0003] 为了提供两种基本功能要求与一个额外的安全性需求,AKE协议的构造往往采用两种密码原语作为组成部件,如图1所示。一种原语作为长期秘密与参与方身份绑定,用于提供认证性;另一种原语生成临时的秘密,并实现机密的共享秘密导出,且同时保证前向安全性。前者既可以以对称密码方式实现,如预共享对称密钥并结合消息鉴别码实现,也可以以公钥密码方式实现,如PKI加数字签名算法。但注意,本发明涉及的内容主要在于第二部分原语,该部分功能在可以用密钥封装(KEM)原语实现(在经典中称为密钥交换KEX,二者有细微差异,具体而言,KEX相比KEM是更小的一个概念,即也可以称KEX是一种KEM;由于就大多应用场景而言,KEM与KEX能够实现相同的功能,因此就本文陈述目的而言下文将不做区分)。
[0004] 本发明的研究背景是对抗量子密码迁移的研究。密码学的研究,包括各类算法的安全性分析均基于一系列对计算能力的假设。例如,在经典密码学研究中对敌手能力的假设基于经典计算机模型,即,具有强大的经典计算机算力的敌手在足够长的时间内无法攻破相应安全性目标的密码方案就被称作经典意义下安全的密码方案。然而,随着物理学家对量子力学研究的深入,自上世纪80年代量子计算的概念提出以来,利用量子效应设计并建造具有相比经典计算机具有更强运算能力的量子计算机,似乎已成为不再遥不可及的现实。量子计算机的数据存储与运算方式与经典计算机有很大的不同,因此经典的计算模型不再能涵盖对于量子计算机算力的描述。这也意味着,一旦量子计算机被制造成功,而又有一些巧妙利用了量子计算特殊的存储运算特性的“量子算法”能够比经典算法更高效地解决一些“数学困难问题”时,在经典设定下曾被认为是“困难”的问题将不再困难,于是基于这类问题设计的密码算法在量子设定下也将不再安全。
[0005] 具体而言例如,在经典AKE协议中所使用的各种密钥交换算法,都基于(不同形式的)离散对数问题的困难性,如Diffie‑Hellman或ECDH等。而量子算法“Shor算法”的提出,宣告了离散对数问题对于(有足够规模的)量子计算机而言将不再困难,即量子计算机能够破解一切经典AKE协议中的密钥交换。这意味着敌手可以现在就开始监听并存储其攻击对象之间的协议执行和通信数据,虽然以目前的经典计算机难以从中获得任何有益的信息,但一旦量子计算机投入实用,该敌手便可以利用量子计算机从其密钥交换阶段的密文中破解出共享秘密,并进一步将当时通信的密文数据解密成明文,即“先存储后解密”(Harvest Now,Decrypt Later)攻击。
[0006] 为抵抗此类攻击,将AKE协议中的密钥交换算法,替换为基于量子算法无法高效解决的数学困难问题设计的,即“抗量子的”密钥封装算法成为一个迫在眉睫的安全性升级措施。在基于目前被认为有望抗量子的数学困难问题设计密码方案的路线中,基于格的密码学是目前最具前景的候选之一。但包括“基于格的”技术路线在内,有几条新技术路线的抗量子算法因其所基于的数学困难问题的形式,出现了一个经典算法中未曾出现的问题,即“解密错误”。这类算法天然具有解密错误,因此如果不修改经典协议的设计(即不容忍错误),则只能通过对参数选择施加额外的限制以保证这种错误出现的概率是极小的,而在本发明之前的工作也都是这样做的,如图2所示。缺点是:使得参数选择只能使用较大且性能尺寸表现较差的参数,即算法性能较低,用于构造AKE协议也将拉低AKE的性能尺寸表现,即图2所示方式会导致中间方框中公钥加密(PKE)性能尺寸表现较差,从而导致右侧方框中AKE的性能尺寸表现较差。
[0007] 应当注意,图1所示的AKE组成结构中并未包含PKE,而是包含KEM。本领域技术人员能够理解PKE和KEM之间直接的转换关系,如图3所示。
具体实施方式
[0082] 为使本发明的上述目的、特征和优点能够更加明显易懂,下面通过具体实施例和附图,对本发明做进一步详细说明。
[0083] 图5、图6是本发明变换所得KEM应用于AKE时执行的修改,并且分别是应用于基于预共享密钥以及基于数字签名的AKE协议时的具体实施例。
[0084] 该变换以一个已有的PKE作为输入,输出一个KEM。注意,变换前后的PKE和KEM均可以具有不可忽略的解密错误。具体而言,是将包含密钥生成算法KGen、加密算法Enc、解密算法Dec三个组成部分的PKE算法,转化成一个包含密钥生成算法KGen、封装算法Encap、解封装算法Decap三个组成部分的KEM算法。
[0085] 具体步骤在前文已做描述,在此不再赘述。
[0086] 图5是本发明提供的AKE变换,应用于一种基于预共享密钥的AKE协议的实施例。
[0087] 其使用本发明变换所得KEM(具有不可忽略的解密错误),将其应用于基于预共享密钥的AKE时添加额外的步骤以保证协议的安全性。该类AKE协议假设通信双方A和B已提前预共享密钥psk,而对如何实现psk的共享不纳入讨论。
[0088] 具体而言,修改后的AKE协议流程如下:
[0089] 参与方A(发起方):
[0090] (1)调用KEM的密钥生成算法KGen生成参与方A的一次性公私钥对(epk,esk)[0091] ←KGen,并令发送数据x=epk给参与方B;
[0092] (2)使用参与方A和参与方B两者间预共享的密钥psk,对发送数据计算MAC值[x][0093] =MAC(psk,x);
[0094] 随后发送数据(x,[x])给参与方B。
[0095] 参与方B(响应方):
[0096] (3)使用参与方A和参与方B两者间预共享密钥psk,对接收数据x计算并验证[0097] MAC值MAC(psk,x)?=[x];
[0098] (4)若验证通过,则将接收数据x=epk作为输入,调用KEM的密钥封装算法Encap生成密文与封装密钥(c,K)←Encap(epk),此处由参与方B将其收到的参与方A的epk作为输入,调用Encap算法独立生成(c,K),该步骤无需与参与方A进行额外交互;
[0099] (5)使用第(4)步中产生的封装密钥K,导出密钥确认数据chk=PRF(K,tag1);
[0100] (6)令回复数据等于第(4)步中产生的c与第(5)步中产生的chk的拼接y=(c,chk),并使用psk对接收与回复数据的拼接计算MAC值[x,[x],y]=MAC(psk,(x,[x],y));
[0101] (7)使用第(4)步中产生的封装密钥K,导出会话密钥ssk=PRF(K,tag2);
[0102] 随后返回数据(y,[x,[x],y])给参与方A。
[0103] 参与方A(发起方):
[0104] (8)使用A和B两者间预共享密钥psk,将发送数据(x,[x])与接收数据y拼接后计算并验证MAC值MAC(psk,(x,[x],y))?=[x,[x],y];
[0105] (9)若验证通过,则以从收到的数据y中提取出的密文c和第(1)步中A的esk为输入,调用KEM的解封装算法Decap解封装出封装密钥K’=Decap(esk,c);
[0106] (10)从收到的数据y中提取出chk,使用第(9)步中解出的封装密钥K’,重新计算密钥确认数据并验证PRF(K’,tag1)?=chk;
[0107] (11)若验证通过,则使用第(9)步中解出的封装密钥K’,导出会话密钥ssk=PRF(K’,tag2);否则中止协议。
[0108] 应当注意,上述流程中步骤(5),(7),(10),(11)中的tag1、tag2是协议本身定义的任意不相等的固定字符串,应视为协议参数常量。
[0109] 所述实施例中,步骤(5)与(10)是本发明提供AKE变换添加的步骤。删除这两个步骤后,剩余步骤组成一种不能处理解密错误的基于预共享密钥的AKE协议。
[0110] 结合前文对AKE变换的描述,该实施例中“封装KEM密文的一方”为响应方B,“解封装KEM密文的一方”为发起方A;且在所述实施例中,“将密钥确认数据chk包含在计算消息认证码的输入数据中”体现在chk作为回复数据y的一部分,并且在消息认证码[x,[x],y]的计算中做了MAC的输入。
[0111] 应当注意,本实施例仅为说明本发明的AKE变换步骤举例。基于预共享密钥的AKE协议不止这一种,且协议流程和细节可以有各种差异,本发明中AKE变换步骤不止适用于所述实施例的协议流,而适用于任何以KEM作为构造元素的AKE协议。
[0112] 图6是本发明提供的AKE变换,应用于一种基于数字签名的AKE协议的实施例。
[0113] 其使用本发明变换所得KEM(具有不可忽略的解密错误),将其应用于基于数字签名的AKE时添加额外的步骤以保证协议的安全性。该类AKE协议假设具有公钥基础设施(PKI),即假设通信双方A和B各自拥有自己的签名/验签公私钥对(VK,SK),并且均能获取到对方的验签公钥(例如可以通过随协议消息流发送的证书)并验证该公钥的合法性。其中参与方A的私钥SKA由A自己生成,并请求CA机构给自己颁发包含签名公钥VKA的证书,于是任何人都可以通过该证书获取A的验签公钥VKA,并且经由信任CA从而信任其颁发的证书。对于参与方B的私钥SKB与签名公钥VKB同理。
[0114] 具体而言,修改后的AKE协议流程如下:
[0115] 参与方A(发起方):
[0116] (1)调用KEM的密钥生成算法KGen生成参与方A的一次性公私钥对(epk,esk)[0117] ←KGen,并令发送数据x=epk;
[0118] (2)使用自己的签名私钥SKA,对发送数据计算签名值{x}=Sign(SKA,x);
[0119] (随后发送数据x,{x})
[0120] 参与方B(响应方):
[0121] (3)使用参与方A的验签公钥VKA,对接收数据x验证签名值Ver(VKA,x,{x})?=1;
[0122] (4)若验证通过,则将接收数据x=epk作为输入,调用KEM的密钥封装算法Encap生成密文与封装密钥(c,K)←Encap(epk),此处由参与方B将其收到的参与方A的epk作为输入,调用Encap算法独立生成(c,K),该步骤无需与参与方A进行额外交互;密文c是利用epk对封装密钥K加密的密文。
[0123] (5)使用第(4)步中产生的封装密钥K,导出密钥确认数据chk=PRF(K,tag1);
[0124] (6)令回复数据等于第(4)步中产生的c与第(5)步中产生的chk的拼接y=(c,chk),并使用自己的签名私钥SKB,对接收与回复数据的拼接计算签名值{x,{x},y}=[0125] Sign(SKB,(x,{x},y));
[0126] (7)使用第(4)步中产生的封装密钥K,导出会话密钥ssk=PRF(K,tag2);
[0127] 随后返回数据(y,{x,{x},y})给参与方A。
[0128] 参与方A(发起方):
[0129] (8)使用参与方B的验签公钥VKB,将发送数据与接收数据y拼接验证签名值Ver(VKB,(x,{x},y),{x,{x},y})?=1;即利用参与方B的验签公钥VKB验证签名值{x,{x},y};
[0130] (9)若验证通过,则以c和esk为输入,调用KEM的解封装算法Decap解封装出封装密钥K’=Decap(esk,c);
[0131] (10)使用第(9)步中解出的封装密钥K’,重新计算密钥确认数据并验证[0132] PRF(K’,tag1)?=chk;
[0133] (11)若验证通过,则使用第(9)步中解出的封装密钥K’,导出会话密钥ssk=PRF(K’,tag2);否则中止协议。
[0134] 和基于预共享密钥的实施例相同的是,上述流程中步骤(5),(7),(10),(11)中的tag1、tag2是协议本身定义的任意不相等的固定字符串,应视为协议参数常量。不同于基于预共享密钥的实施例的是,其中第(3),(8)步中的验签公钥VKA、VKB均由PKI提供,即假设有CA提供分别包含参与方A、参与方B身份及其对应验签公钥的证书,为简单起见,在此假设参与方A和参与方B均已经下载并验证过对方的证书。应当注意,参与方A和参与方B的证书同样可以包含在上述协议流中进行传输,但此时被签名的数据需要额外包含证书数据本身:如,参与方A在第(2)步中传输的数据变为(x,cert_A,{x,cert_A}),其中cert_A是B信任的CA颁发的包含参与方A的身份与VKA的证书,{x,cert_A}是对数据x与证书cert_A拼接的签名,即Sign(SKA,x||cert_A),验签时也需要加上证书数据进行验证;同理,对参与方B在第(6)步中发送数据中可添加参与方B的证书cert_B,并且在签名数据中也加入这部分数据。
[0135] 所述实施例中,步骤(5)与(10)是本发明提供AKE变换添加的步骤。删除这两个步骤后,剩余步骤组成一种不能处理解密错误的基于数字签名的AKE协议。
[0136] 结合前文对AKE变换的描述,该实施例中“封装KEM密文的一方”为响应方B,“解封装KEM密文的一方”为发起方A;且在所述实施例中,“将密钥确认数据chk包含在计算数字签名的输入数据中”体现在chk作为回复数据y的一部分,并且在数字签名{x,{x},y}的计算中作为被签名消息输入。
[0137] 应当注意,本实施例仅为说明本发明的AKE变换步骤举例。基于数字签名的AKE协议不止这一种,且协议流程和细节可以有各种差异,本发明中AKE变换步骤不止适用于所述实施例的协议流,而适用于任何以KEM作为构造元素的AKE协议。
[0138] 尽管为说明目的公开了本发明的具体实施例,其目的在于帮助理解本发明的内容并据以实施,本领域的技术人员可以理解:在不脱离本发明及所附的权利要求的精神和范围内,各种替换、变化和修改都是可能的。因此,本发明不应局限于最佳实施例所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。