基于对称密钥的重加密方案

基于对称密钥密码学的重加密方案的代表系统与安全消息传输

摘要

本文研究了政府ICT服务中的(法律)代表问题,并提出了一种安全的私人邮箱系统,其中发送给学生的信息由代理服务器进行重新加密。该过程使得代表节点能够解密该消息。我们还给出了协议的形式化描述,并使用ProVerif模型检测工具对其安全性进行了评估。

关键词

密码协议, 重加密, 形式化分析, ProVerif

引言

存在各种政府服务,例如图书馆图书预约、公共设施预约、婴幼儿预防接种、税务手续、残疾援助申请等。这些服务目前基于纸质媒介提供,但信息技术的进步和信息终端的普及正在推动这些服务转向在线化。

为了享受这些在线政府服务,用户需要向服务提供商注册其联系地址,这些服务提供商有时是政府机构的部门,有时是独立机构。除了在线服务带来的便利性之外,如果每项服务都逐一管理地址簿,则更新联系地址将非常繁琐。

这一问题类似于搬家时的情况:人们往往需要在多个服务柜台更新自己的(邮政)地址,令人疲惫不堪。因此,设立一个负责管理用户ID与其对应在线联系地址的服务提供商是可取的:这实际上是一种代理服务器。在此系统中,其他服务提供商不存储用户的联系地址,而仅存储用户ID。

当某个服务提供商打算向用户发送消息时,他将消息(附带ID)发送至代理服务器。随后,代理服务器查询地址簿,并将消息转发到与该ID关联的联系地址。显然,这种机制使用户更新联系地址变得十分容易,他们只需将变更通知代理服务器即可。

然后让我们从信息安全的角度来考虑上述系统。在许多情况下,政府服务涉及高度私密信息,因此需要进行信息保护实现该系统是必要的。服务提供商存储用户的用户ID及其提供服务所需的私人信息,并向用户发送消息。消息内容可能是私密的。代理服务器维护用户的用户ID及其联系地址,但不存储其私人信息。从信息控制的角度来看,期望代理服务器无法访问用户的私人信息。即,从服务提供商发送给用户的消息应进行端到端加密,以确保只有服务提供商和目标用户才能知晓消息内容的保密性。

然而,如果考虑在现实世界中引入一个代表系统,则实现上述系统存在困难。代表系统允许用户(学生)将自己与一个代表节点关联起来,由该代表节点代替学生执行管理程序。当服务提供商向用户发送加密消息时,问题随之出现:如果代表节点没有相应的解密密钥,则无法对消息进行解密。

当然有几种可能的解决方案:最简单的办法是用户事先与代表节点共享另一个密钥。当用户收到加密消息后,先使用与服务提供商共享的密钥进行解密,再用与代表节点共享的密钥重新加密,然后将消息转发给代表节点。在这种情况下,学生在协议中扮演了最重要的角色。但如果考虑到学生为何需要代表节点,这种方法就不合适了。另一种解决方案是每个服务提供商不仅与用户共享密钥,同时也与代表节点共享密钥,并将消息同时发送给学生和代表节点。但此方案可能存在代表节点的移除问题:服务提供商将学生和代表节点绑定在各个数据库上,导致学生必须逐一请求各个服务提供商移除代表节点。

在本文中,我们研究了另一种解决方案,其中代理服务器发挥着将消息重新加密后发送给用户的作用,以便代表节点能够解密它。

1.1 我们的贡献

本文提出了一种安全的消息传输系统,其中消息由发送方(服务提供商)进行加密,代理服务器使用注册的重加密密钥对消息重新加密,以便代表节点能够解密该消息。

在我们提出的系统中,即使对于用户,代理服务器也必须对消息进行重新加密。这听起来可能成本较高,但由于重加密仅通过短比特串的异或操作实现,因此重加密的成本极低。本文将该协议称为Sym-metric Key Re-Encryption Protocol(SK-REP)。

SK-REP的安全性通过形式化分析进行评估。我们使用了密码学协议的符号化验证工具ProVerif。为了验证“端到端”安全性,评估包含了代理服务器发生密钥泄露的情况。如今,信息通信技术系统在实际中包含多个实体,位于中间位置的实体发生信息泄露已成为严重问题,例如 Heartland支付系统在 2008发生的安全漏洞。

1.2 相关工作

本文的早期研究工作见参考文献[14],[16]。坂崎等人调查了日本的代表系统,并在参考文献[14]中明确了安全性要求。他还指出,在政府消息传输系统中,代表节点的处理可能存在问题,并提出了一种基于流密码的代理重加密系统。渡边等人改进了坂崎的重加密方案,并在参考文献[16]中使用ProVerif对其安全性进行了评估。参考文献[13]强调了法律要求以及与原有(基于纸质媒介)系统的兼容性。本文主要从技术角度探讨基于代理重加密的系统。

同态密钥加密技术在我们的方案中起着核心作用,并已有大量前期研究。盖伊提出了全同态加密方案。他的方案理论上允许对密文进行任意信息处理,但计算成本极高,难以实际应用。与之相比,代理重加密仅需非常有限的处理操作,且已有许多方案被提出以实现不同的安全性。这些方案基于非对称密钥加密机制,操作灵活性高,但其处理过程的计算开销仍然较大,因此不适用于公共服务等大规模系统。

也有一些基于对称密钥密码学的方案。Angelos 等人在文献[1]中从抽象层面研究了基于对称密钥密码学的代理重加密方案,并提到流密码可作为其中一个实例。然而,他们并未考虑如何生成(或共享)用于重加密的密钥流。

众所周知,在使用流密码时,密钥流的重复使用是被严格禁止的,因为至少会暴露两条消息之间的差异。因此,他们的研究不足以实现我们的系统。为了解决这一问题,我们采用了 Angelos 的思想,即不对消息本身进行加密,而是对一次性密钥进行加密。

除了安杰洛斯的想法外,萨利姆等人提出了一种基于全有或全无变换(AONT)的重加密密钥方案[15]。萨利姆的方案比SK-REP更复杂,且重加密的成本更高。渡边等人也提出了一种基于AONT的密钥更新系统[17],其加密机制与我们的提议相似。然而,他们考虑的是云中的长期数据存储,而将加密数据传输给另一用户的方式则不在讨论范围内。

1.3 本文的组织结构

本文的其余部分组织如下:首先在第2节中概述目标系统。第3节介绍了支持代理重加密的加密机制。接着在第4节中介绍了密钥分配协议和消息传输协议的具体规范。然后在第5节中说明了协议的建模以及使用ProVerif进行的安全性评估。最后在第6节中得出结论。

2. 目标系统

下文中,我们将所提方案称为基于代理服务器的对称密钥重加密方案(SK-REP)。

所提出的系统类似于私人邮箱。发送方通过邮局将消息(装在信封中)发送给接收方,邮局将信封放入接收方的邮箱中。邮局不允许打开信封。此外,还存在一个实体(法定代理人),可以访问其学生的邮箱。

在信息通信技术系统中,使用加密方案(如高级加密标准(AES))来实现信封功能。尽管其安全性被认为足够高,但当实体数量增多时,发送方与接收方之间的密钥建立并非易事。若所需存储的密钥数量较少则更为理想。在文献[14]中,坂崎等人提出了一种加密方案(及其操作),其中除邮局外的所有实体仅需存储一个密钥。这意味着密钥管理被委托给邮局。另一方面,他们希望即使邮局在某一时刻被攻破,该方案仍然保持安全性。

2.1 实体和网络

SK-REP 中出现了以下四个实体。

发送方 代表政府机构,负责向公民发送官方公告。
代理服务器 负责组织门户网站并执行重加密。
接收方(被监护人) 代表公民,接收消息。
法定代理人 可读取发送给特定接收方的消息。这四个实体通过代理服务器相互连接,在 SK-REP中形成星型网络(见图1)。

示意图0

2.2 服务的可用性

如第1节所述,实现端到端代理查看有三种可能的解决方案:
系统X 接收方与代理服务器共享秘密解密密钥和他的代表节点。
系统 Y 发送方对消息进行两次加密,即使用接收方的密钥和代表节点的密钥分别加密。
系统 Z 发送方使用接收方的密钥对消息进行加密。存在一个代理服务器,对该加密消息进行重新加密;重新加密后的消息可以使用代表节点的密钥解密。

在系统X中,当他收到加密消息时,会使用与服务提供商共享的密钥进行解密,再使用与代表节点共享的密钥重新加密,然后将消息转发给代表节点。在这种情况下,学生在协议中扮演着最重要的角色,但如果考虑到学生为何需要代表节点,这种方法并不合适。

在系统 Y 中,移除代表节点可能会成为此解决方案中的一个问题;服务提供商将学生和代表节点绑定在每个数据库上,因此学生必须逐一向各个数据库请求移除代表节点。

系统 Z 需要一个新角色,即代理服务器;因此与其他系统相比成本高。另一方面,它解决了上述两个问题。

2.3 预期对手和安全要求

通常假设对手可以在互联网上窃听消息、修改消息以及创建/发送新消息(Dolev-Yao 模型)。然而,坂崎等人假设传输的消息受到 IPsec 和 TLS 等标准加密协议的保护。

他们还假设发送方和代理服务器基本上是诚实的,不会试图威胁系统的安全性。另一方面,他们认真考虑了恶意软件威胁,并假设代理服务器可能在某一时刻被攻破。(Heartland支付系统[19]事件表明此类威胁确实存在)。在遭受恶意软件感染后,代理服务器会变为恶意的,并可能试图破坏传输消息的保密性。

在本报告中,我们尊重他们的假设,并重点关注数据传输阶段的安全属性,在该阶段中我们假设采用Dolev-Yao模型。

在这些假设下,我们声称SK-REP满足以下属性:
传输消息的保密性 对手无法恢复秘密消息。
发送方认证(由接收方) 如果接收方成功恢复了秘密消息,则发送方一定在协议完成之前发送了该消息。

3. 重加密机制

Angelos 等人在摘要中研究了基于对称密钥加密的代理重加密方案,并提出了加密算法的要求。在文献[1]中,他们还提到使用流密码作为其实例。在本节中,我们简要介绍 Angelos 的思想,然后提出基于对称密钥加密的重加密方案,该方案将用于我们的系统中。

3.1 安杰洛斯的代理重加密方案

算法1 展示了安杰洛斯利用流密码实现代理服务器重加密机制的思路。这一简单想法借助异或操作的同态性质得以实现。

算法1 安杰洛斯使用流密码的代理重加密

实体:发送方 S,接收方 A,代理服务器 P,
S使用密钥流 KS S 对消息 M进行 Enc,发送密文 C1= M ⊕ 密钥S S to P.
P接收密文 C1 并使用密钥流 KS S ⊕ KS A 重新加密, 发送密文 C2= M ⊕ KSA 给 A。
A接收密文 C2并使用密钥流 KSA进行解密。

此外,在实际应用中采用这一想法还存在一个问题。Angelos 等人仅在参考文献[1]中提出了重加密的思路,但并未描述代理服务器如何获取(或生成)密钥流KSS ⊕ KSA。重复使用同一密钥流加密两条不同的消息是严格禁止的,因为这会泄露部分密钥流信息,因此必须考虑合适的密钥更新机制。

3.2 掩码一次性加密

SK-REP中使用的加密方案基于对称密钥密码学。消息通过任意一种带关联数据的认证加密(AEAD)进行加密,该加密方案利用随机生成的一次性密钥对加密消息提供保密性,并对消息和关联数据提供完整性保护,然后使用固定随机字符串(长期密钥)对一次性密钥进行掩码。这种构造通过对数据(一次性密钥)进行掩码使其保持随机,从而避免了“do not a keystream twice”规则。直观上讲,对手从两个密文中能够获取的唯一信息是随机字符串之间的差值,而该差值本身也是随机的。

定义 1
设A为一个代理,k A为一个长度为 l的关联随机比特串,Enc 为一个安全的(确定性)带关联数据的认证加密方案(AEAD)。我们通过以下方式定义Masked One-Time Encryption(MOTE):

MOTE(m, a, kA)=(kA ⊕ r m)||Enc(m, a, rm),

其中 x||y 表示两个数据 a和 b 的连接,m 是一条消息,a 是关联数据(头部),而 rm 是一次性加密密钥,即长度为 l 的随机生成的比特串。

注意,AEAD并不能保证相关数据 a 的保密性,但能保证其完整性。如果底层加密方案Enc是安全的,则MOTE是安全的AEAD。

本文未手动描述安全性证明。相反,我们指出Desai[7] 已提出过一种类似的加密方法。他的方案采用了全有或全无变换(AONT),被称为全有或全无加密。该方案的安全性从计算理论的角度进行了研究,并被证明是一种安全的加密方案。我们也可以在SK-REP中采用他的方案来替代 MOTE。

3.3 重加密机制示意图

设S、A、P分别为发送方、接收方和代理服务器。设k S和kA分别为发送方S和接收方A的私有密钥。代理服务器存储两个密钥的异或操作结果kS ⊕kA。发送方对消息m进行加密得到MOTE(m, a, kS)。如果代理服务器接收到该密文,它将存储的密钥kA ⊕kS与密文的前半部分(即rm ⊕ kS)执行异或操作,从而将该部分的值替换为rm ⊕ kA,使得接收方 A能够解密该密文。

4. SK-REP规范

4.1 密钥派生

设Na、Nd、Ns分别为接收方数量、一个代表所管理的接收方数量和发送方数量。如果没有密钥派生机制,代表需要管理的密钥数量为Na ×Nd ×Ns。在第4.2节的协议规范中,我们假设每个实体仅拥有一个密钥K,并由此生成多个密钥,例如,接收方用于解密来自发送方S的消息的密钥由h(kA, S)给出,其中h()为任意哈希函数。

4.2 协议规范

所提方案包含两个阶段:重加密密钥注册阶段和数据传输阶段(Fig.2)。在重加密密钥注册阶段,接收方A(及其法定代理人D)向某一发送方S注册重加密密钥。在数据传输阶段,发送方S对消息进行加密,并通过代理服务器P发送给接收方A。重加密密钥注册阶段包含两种协议:用于接收方的协议和用于法定代理人的协议。

示意图1

图3 展示了接收方重加密密钥注册阶段的消息序列图的粗略示意图。在上述及以下图示以及附录给出的形式化描述中,法定代理人缩写为“代表节点”。请注意,通信通道受到标准密码学协议的保护,但为了便于理解所提方案,我们省略了其封装。该协议的过程如下:

(1)(接收方 A 和服务器 S 在其首次注册过程之前分别生成其私有密钥 kA 和 kS 。)
(2) A 向代理服务器 P 发起查询,以启动其与 S 之间的密钥注册。
(3) P 生成一个随机数 nP 并将其发送给 A。
(4) A 生成一个重加密密钥 h(kA, S),其中 h() 是一个哈希函数。然后他使用随机数 nP 对 h(kA, S) 进行掩码,并将其发送给 S。
(5) S 生成另一个重加密密钥 h(kS, A),将其与接收到的数据 h(kA, S)⊕nP 进行异或操作,然后发送给 P。
(6) P 移除掩码 nP 并存储 (A, S, k(A, S)),其中 k(A, S) = h(kA, S) ⊕ h(kS, A)。

上述内容中,我们假设网络是一个完全图。为了符合网络为星型结构的假设,可以引入另一个可信第三方:密钥注册中介代理 I。A使用与K之间的会话密钥对h(kA, S) ⊕ nP进行Enc,并将其发送给 I。然后,I使用与S之间的会话密钥对该信息进行解密并重新Enc,再发送给S。这意味着,邮局的角色被分成了两部分,其中密钥注册中介代理I是其中之一,且仅在密钥注册阶段活跃。他也可以在密钥注册阶段充当代理服务器角色。

示意图2

图4 展示了重加密密钥注册阶段消息序列图的粗略示意图。该协议仅将前一协议中的发送方替换为法定代理人,其余部分保持不变。A的私有密钥可以与图2中相同。

示意图3

图5 显示了消息序列图的粗略示意图消息传输阶段。如果接收方没有法定代理人,则虚线(表示消息转发给法定代理人)将被省略。该协议的流程如下:

(1) 发送方 S生成一条消息 m、一个一次性加密密钥 rm,并使用 h(kS, A) 对其进行加密,然后将密文 MOTE(m, a, kS)* 1 发送给代理服务器 P。
(2) P查找重加密密钥 k(A, S),使用该密钥对收到的消息进行重新加密,并将重新加密后的密文 MOTE(m, a,kA) 发送给接收方 A。
(3) A生成解密密钥 h(kA, S),并使用该密钥解密消息。
(4) (P查找重加密密钥 k(D, S),使用该密钥对收到的消息进行重新加密,并将消息发送给法定代理人 D。)
(5) D生成解密密钥 h(kD, S),并使用该密钥解密消息。

示意图4

5. 在ProVerif中的模型

在本节中,我们使用ProVerif模型检测工具对SK-REP进行了简要的形式化安全性评估。我们选用ProVerif版本1.88作为评估工具。ProVerif是一种用于安全协议的自动验证的工具。有关技术背景,请参考ProVerif的网页。我们的模型在无任何选项的情况下由ProVerif进行评估,这意味着评估级别对应于文献[20]中的PAL4。

5.1 密码协议的形式化验证

符号模型的形式化验证是密码协议安全性分析中的常用方法。在符号模型中,每个密码原语都被视为理想的。设C= Enc(K,P)为一个加密函数,其中K是密钥,P是明文,C是相应的密文。对手当且仅当他拥有C和K时才能解密出明文P。与典型的密码原语分析中使用的计算复杂性理论不同,符号模型不考虑诸如生日攻击之类的概率事件,因此在分析中可能会丢失某些密码特性。然而,在自动验证工具的辅助下,符号分析仍是一种强大的方法。

ProVerif 是由 Blanchet等人开发的形式化验证工具。它拥有自己的描述语言,该模型首先被转换为霍恩子句,然后分析是否存在执行轨迹满足所有子句。

5.2 在ProVerif语言中的建模

这里我们粗略地解释我们的模型。完整描述见附录 A.1。Delev-Yao模型下的通信通道在以下句子中声明:
自由通道:信道

以下句子中声明了应向对手保密的已发送消息:
自由变量 s:比特串 [private]。

主机A、主机D、主机P、主机S分别表示四个实体:接收方 A、法定代理人 D、代理服务器 P、发送方 S。
addr()函数将发送方和接收方的名称进行连接。
sender()和receiver()两个函数则从addr(a, b)类型的数据中分别提取出发送方和接收方。
函数 enc() 和 dec() 表示对称密钥加密/解密函数,mac_gen() 和 mac_verify() 表示 MAC 生成/验证函数。我们将 AEAD 建模为通用的先加密后认证组合方式,如下所示:
约简 对于所有 m:比特串, k:比特串, ad:比特串; AEAD加密(m, k, ad) =(Enc(m, k), 消息认证码生成((ad, Enc(m, k)), k))。
约简 对于所有 m:比特串, k:比特串, ad:比特串; AEAD解密((Enc(m,k), 消息认证码生成((ad,Enc(m,k)),k)), k, ad)= m。

如果底层的加密和消息认证算法是安全的,那么先加密后认证被认为是一种安全的AEAD。在我们的模型中,加密算法是确定性的,即加密算法不以随机数作为输入。这是因为在SK-REP中加密密钥总是一次性的,因此该密钥也起到了随机数的作用。

函数kdf()表示第4.1节中的哈希函数h(),其中kdf是密钥派生函数key derivation function的缩写。

密钥注册协议(针对kSA和kSAD)未被建模为过程,而是作为向表reEncryptionKeysA和reEncryptionKeysD的密钥注册,如下所示:
insert reEncryptionKeysA(hostS, hostA , xor(kdf(kA, hostS), kdf(kS, hostA)));
insert reEncryptionKeysD(hostS, hostA , hostD , xor(kdf(kD, hostA), kdf(kA, hostS)));

请注意,对手不允许访问表。另一方面,我们假设在传输阶段采用Dolev-Yao模型。这一假设放宽了文献[14]中的对手模型,其中未考虑对通信通道的攻击。如果ProVerif 在对我们的模型进行评估时未发现任何攻击,则意味着即使在原始对手模型下也不存在攻击。

函数 xor() 表示两个元素的异或操作。ProVerif 处理的是符号模型,无法精确建模诸如异或操作之类的代数操作。在本文中,我们仅通过以下两个约简 xor_reEnc 和 xor_dec 对该操作的交换性进行了建模:
fun xor(比特串, 比特串): 比特串。 ( 约简规则 ) reduc 对于所有 x:比特串, y:比特串, z:比特串; xor_reEnc(xor(x, y), xor(y, z)) = xor(x, z). reduc 对于所有 x:比特串, y:比特串; xor_dec(xor(x, y), x) = y.

对于实体,我们假设法定代理人是诚实的,因为他可以执行其学生所能做的所有操作。如果我们将法定代理人纳入模型中,将会发现大量的攻击行为,而这种可能的弱点反映了法定代理人在现实世界中的权力。另一方面,我们假设代理服务器在其过程结束时可能会泄露重加密密钥,如下所示:
( 重新加密密钥泄露,表示被攻破的P的行为 ) out (ch, kSA); out (ch, kSAD);

5.2.1 描述安全性的可能性
  • 很明显,由于协议中未使用来自接收方的随机数,因此消息的注入一致性无法满足。为了增强安全性,最好将消息的有效期包含在关联数据中。
  • 如果法定代理人泄露了他的密钥 h(kD,A),则代理服务器能够轻易恢复出 h(kA, S) 和 h(kS, A)。换句话说,所提方案易受此类密钥泄露以及合谋攻击的影响。另一方面,提案论文假设法定代理人不被视为恶意的,这一假设符合现实世界机制。

5.3 评估结果

以下描述用于检查通过公共通信信道发送的消息的保密性,其中 attacker 是表示对手的保留谓词,attacker(s) 表示对手知道s。
查询攻击者(s)。

以下描述用于检查消息的真实性,即如果执行了事件 开始接收A(a,b,x),则事件 开始发送者(a,b,x) 必须在此前已被执行。
查询 a:主机 ,b:主机,x:比特串; 事件(A收到消息 (a,b,x)) ==> 事件(发送开始(a,b,x))。
查询 a:主机 , b:主机,x:比特串; 事件(D收到消息(a,b,x)) ==> 事件 (发送开始(a,b,x))。

根据第5.2节中描述的模型,我们确认两个安全性声明均得到满足。

我们并不保证重加密密钥的保密性。考虑对手将 MOTE密文(kA ⊕rm)||Enc(m, a, rm)替换为0 … 0||Enc(m, a, rm),其中0 … 0表示长度等于密钥长度的一连串0。在代理服务器进行重加密后,对手得到(kS ⊕ k A)||Enc(m,a,rm),即他/她获取了重加密密钥。然而,我们的评估已考虑了重加密密钥的泄露情况,因此该攻击不会威胁消息的保密性。

6. 结论

在本文中,我们提出了一种用于政府服务的安全消息传输系统。该系统所采用的加密方案基于流密码,该方法由Angelos等人指出,我们附加了一项小的技术改进,使其适用于实际系统。我们还通过模型检测工具ProVerif对系统的安全性进行了评估,并确认了消息的保密性和真实性。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值