Specter M, Park S, Green M. Keyforge: Mitigating email breaches with forward-forgeable signatures[J]. arXiv preprint arXiv:1904.06425, 2019.
https://arxiv.org/abs/1904.06425
Park S的另一项工作,想象力无穷
- 针对邮件系统中盗窃者可证明的缺陷,提出了一种新的前向可伪造签名(FFS),可以人为地将历史邮件过期使其可被伪造,从而打破盗窃者获取邮件的可信度。
- 利用这个签名提出KeyForge协议和TimeForge协议,代替原有的DKIM协议。
- 对于安全性,提出了Non-Attributability的概念的几种定义,并证明了所提出的方案。
1
背景:如果恶意攻击者访问了你的电子邮件,那么ta就可以通过加密方式向任何第三方证明被盗邮件的真实性;这是由于一个用于抵抗欺诈和垃圾邮件的DKIM标准的造成的,它被指出严重地依赖不可否认性。
关键问题:在没有能力说服第三方的情况下,收件人如何能够确定邮件是合法发送的
要求
解决思路:
- Delayed universal forgeability:签名会在一个时间段后变得任何人都可伪造。
- Immediate recipient forgeability:接收者可以伪造其他任意服务器发送给自己的消息
要求:Untrusted recipients; Asynchrony; Universal forgeability; 增量部署; Long-lived keys.
主要工作:
KeyForge协议(替代DKIM):
- 新的定义——前向可伪造签名(FFS),选择性地披露过去签名子集的“伪造信息”,这需要公钥需要在公开过程中持久存在。基于分层的基于身份的签名(HIBS)构建FFS,并将其用作KeyForge的构建(对数级别)
- 让电子邮件服务器接受“伪造请求”,要求将特定的电子邮件实时发送给请求者,从而实现即时伪造收件人的能力。收件人必须是请求者的限制确保了DKIM的垃圾邮件和欺骗保护仍然有效。
TimeForge协议:
- 假设一个公开可验证的时间记录器(PVTK)模型:用 S ( m ) ∪ R ( m ) ∪ T ( t + Δ ) S(m)\cup R(m)\cup T(t+\Delta) S(m)∪R(m)∪T(t+Δ)的简洁的零知识证明替换消息m上的每个DKIM签名,其中:S(m)表示发送方对m的有效签名的知识,R(m)表示接收方对m的有效签名的知识,而T(t+∆)表示在t+∆之后的时间内对有效时间戳的知识。
About Email
路由:TCP/IP异步路由协议
电子邮件起源于MUA,并到达用户信任的MSA。根据系统的配置,MSA可以将电子邮件发送到它信任的其他邮件传输代理(MTA)。MTA对接收域执行DNS查找,以检查哪些MTA被授权处理该域的邮件。在经过一系列跳之后,电子邮件到达接收方的MDA,该MDA负责为接收方的MUA验证消息。
验证
IETF已经开发了许多标准,允许域签署和验证输入输出的消息:DKIM, SPF, DMARC和ARC。
- DKIM(DomainKeys Identified Mail):Is an IETF standard,对MSA用于签署输出邮件,对MDA通过在DNS中查找MSA的公钥来验证该邮件。
- Setup.MSA生成密钥对,并将公钥上传到DNS。
- Send. MSA将其公钥的位置添加到电子邮件的metadata (or header )以及允许验证签名的metadata中,然后对电子邮件及其header进行签名。
- Verify. 收到邮件后,MDA对邮件header中指定的发送方公钥执行DNS查找,然后以加密方式验证邮件。
- SPF (Sender Policy Framework):确保中介MTA被允许作为域的一部分发送和接收消息。在某种程度上,这解决了与DKIM有些正交的问题,因为SPF几乎不能保证消息本身没有被中介修改,而是通过限制接受MTA的有效IP地址来提供欺骗保护
- DMARC: 由于错误配置而导致的SPF或DKIM失败与由于试图欺骗消息而导致的失败没有区别,而且DKIM和SPF都没有提供向发送域发出问题警报的机制。DMARC通过添加一个DNS TXT记录来解决这个问题,该记录指定接收方在出现此类故障时应该做什么(例如隔离、拒绝或在出现故障时接受消息),并提供一个电子邮件地址来发送关于此类故障的汇总统计信息。
- ARC (Authenticated Received Chain): 是一个实验性的、大部分未实现的IETF标准,旨在解决间接电子邮件流引起的问题
在许多情况下都可能发生对传输中的消息的合法修改,例如
- 作为病毒扫描程序的MTA可能会删除恶意附件,或者邮件列表可能会将邮件列表的名称放在电子邮件的主题前面。
- 不幸的是,对正文或标题的任何更改都会使原始DKIM签名失效。
- ARC充当中介机构的一种认证,证明在修改内容之前,可以验证DKIM、SPF、DMARC或以前的ARC实例的某些子集。为此,中介将自己的签名添加到消息的头部,以及关于验证内容的元数据
同步身份验证协议的挑战
电子邮件本质上是异步的,因此DKIM的任何替代都必须允许电子邮件的非交互式验证。因为:
- Third party MTAs:许多组织选择使用第三方mta作为组织自己的邮件服务器和internet之间的初始跳转。
- Mail forwarding:用户通常会通过邮件转发将从一个域的帐户收到的电子邮件转发到另一个域。这些电子邮件必须由接收域进行验证,接收方无法与原始发送方通信
模型和安全定义
模型
- Time:用离散的时间步对时间进行建模,并假设每个人都可以使用相当精确的本地时钟。
- Asynchrony.考虑到电子邮件的异步性质, Δ ^ \hat{\Delta} Δ^表示电子邮件发送所需的时间的上限。评估将 Δ ^ \hat{\Delta} Δ^设置为15分钟。
- DNS:我们的模型假设所有各方和算法都可以访问DNS,并可以更新自己的DNS记录
- Publication:我们假设每一方都有发布持久的、可更新的信息的方法,这些信息可以被所有其他方和算法检索。这可以通过DNS或其他媒介,如在网站上发布信息。
威胁模型
关注的攻击:接收方服务器上私人通信的公开(因损害或恶意)
- Threat Model 1. (After-the-fact attacks) 收件人在收到电子邮件时被认为是诚实的,但随后被攻击者攻击,攻击者获取了过去所有电子邮件内容的快照。
- Threat Model 2. (Real-time attacks) 假定收件人在收到电子邮件时是恶意的,即假定接收者有持续访问并立即打算向第三方披露所收到的电子邮件的内容。
- KeyForge和TimeForge都实现了针对威胁模型2的安全性,在模型1下,KeyForge实现了几乎所有邮件(即,除了最近的邮件外的所有邮件)的不可归因性。
定义Non-Attributability
我们将Non-Attributability定义为一个涉及电子邮件协议 E E E、敌手 A \mathcal A A、模拟器 S \mathcal S S和区分器 D \mathcal D D的Game:
-
对于任何具有内部状态 s s s的电子邮件服务器 S S S,用 E s ( S , R , m , μ , t ) E_s(S,R,m,\mu,t) Es(S,R,m,μ,t)表示当 S S S在时间 t t t合法地向 R R R发送一个包含元数据的电子邮件消息 m m m时,接收方 R R R接收到的信息(隐含在传输过程中产生的任何修改)。
-
直观上,要求合法邮件 E s ( S , R , m , μ , t ) E_s(S,R,m,\mu,t) Es(S,R,m,μ,t)和一个伪造的“邮件”(在完全没有访问发送服务器的情况下创建的,即不知道 s s s)无法区分。为了建模这个问题,考虑一个simulator S \mathcal S S试图不用 s s s创建一个看起来合法的电子邮件。
非归因性的两个形式化定义:
-
(定义1)考虑一个模拟器,它可以访问特定收件人的电子邮件服务器,并且需要将来自任何发件人的电子邮件输出到该收件人。
Definition 1 (Recipient non-attributability)
- E对接收方服务器是non-attributability如果有一个PPT模拟器 S \mathcal S S,对于任何 S , R , m , μ S,R,m,\mu S,R,m,μ: E s ( S , R , m , μ , t ) ≈ c S ( R , S , m , μ ) E_s(S,R,m,\mu,t) ≈_c\mathcal{S}(R,S,m,\mu) Es(S,R,m,μ,t)≈cS(R,S,m,μ). 其中 s s s是 S S S的内部状态, t t t是调用 S \mathcal S S的时间, R R R表示收件人 R R R的电子邮件服务器的内部状态。(TimeForge 弱)
- E对接收者是furthermore non-attributability如果有PPT模拟器 S \mathcal S S,对于任何 S , R , m , μ S,R,m,\mu S,R,m,μ: E s ( S , R , m , μ , t ) ≈ c S R ( S , m , μ ) E_s(S,R,m,\mu,t) ≈_c\mathcal{S}^R(S,m,\mu) Es(S,R,m,μ,t)≈cSR(S,m,μ). 上面的 R R R表示 S \mathcal S S有能力作为 R R R通过 R R R的电子邮件服务器发送外发邮件。(KeyForge 强)
-
(定义2)是一个更强的定义,它考虑了一个模拟器,该模拟器需要从任何发件人向任何收件人输出电子邮件,并且既不能访问发件人的电子邮件服务器,也不能访问收件人的电子邮件服务器。
Definition 2 (∆-universal non-attributability)
- 对于 Δ ∈ N \Delta\in\mathbb{N} Δ∈N,电子邮件协议E为∆-strongly non-attributable,如果有一个PPT模拟器 S \mathcal S S,使得对于任何 S S S(具有内部状态 s s s), R , m , μ , t R,m,\mu,t R,m,μ,t,在任何 t i m e ≥ t + Δ time\geq t +\Delta time≥t+Δ成立: E s ( S , R , m , μ , t ) ≈ c S ( S , R , m , μ , t ) E_s(S,R,m,\mu,t) ≈_c\mathcal{S}(S,R,m,\mu,t) Es(S,R,m,μ,t)≈cS(S,R,m,μ,t).
- 上面定义的两个不可区分性要求,可以确保任何攻击者都不能可信地向第三方声称,他向她提供的是一个电子邮件帐户的真实内容:第三方扮演的是区分者的角色。
- 如果 Δ < Δ ^ \Delta<\hat{\Delta} Δ<Δ^定义2不成立。否则,DKIM提供的抗垃圾邮件和防欺骗能力将会被削弱,因为任何局外人都可以使用模拟器实时发送垃圾邮件,收件人无法分辨垃圾邮件与真实发件人发送的邮件。这意味着模拟器只能在 Δ \Delta Δ延迟后开始生成一个不可区分的分布。
与威胁模型的关系。∆-普遍不可归因性(定义2)对于服务器被破坏前至少∆发送和接收的所有邮件,实现了对事后攻击(威胁模型1)的不可归因性。接收方不可归因性和∆-普遍不可归因性的组合(定义1和2)得出了针对实时攻击的所有电子邮件的有效不可归因性(威胁模型2)。
FFS:Forward-Forgeable Signatures
定义
KeyForge的基本构建块。非正式地说,FFS是一种签名方案, 通过释放过期信息,有选择地“过期”过去的签名使它们可以伪造。更准确地说:在FFS中,每个签名都是关于tag τ \tau τ的,该tag τ \tau τ可以是任意字符串。过期信息可以针对任何标签或一组标签发布。
tag可以被认为是一个时间戳:例如,每封电子邮件都是根据当前时间 τ \tau τ进行签名的,在稍后的某个时间 τ + Δ \tau+\Delta τ+Δ,签名者可能会发布 τ \tau τ的过期信息
FFS定义将支持基于标签中记录的任何属性的过期: 例如,标记可能是形式为 τ = ( t , δ ) \tau = (t,\delta) τ=(t,δ), τ = ( t , R ) \tau = (t,R) τ=(t,R).
PVTK
在这个模型中,签名的过期可能会随着时间的推移“自动”发生:也就是说,签名者不需要发布任何额外的过期信息,以便签名在延迟后变得可伪造。在这种情况下,算法Expire是不必要的,Forge不需要把η作为输入。
FFS和FSS的区别
FFS和FSS都生成一个短期密钥系统,所有密钥都对应于一个长期公钥。区别:
- FSS要求不能从未来密钥计算过去密钥,而FFS要求不能从过去密钥计算未来密钥。
- FSS是专门设计来防止所有密钥组成被泄露的,因此每个密钥必须完全基于之前的短期密钥派生。相比之下,前向可伪造签名可能具有持久的“主密钥”组成,用于生成每个短期密钥。
Succinctness
定义FFS的简明性,这是根据每个过期标签的过期信息大小来衡量披露效率的一种方法。
KeyForge使用FFS Construction from (Hierachical) IBS,这实现了对数简洁性。
FFS Construction from (Hierachical) IBS
让FFS中的标签与IBS中的标识相对应
- BasicFFS.KeyGen输出IBS主密钥。
- 标记 τ \tau τ的BasicFFS.Sign和Verify算法分别调用ID τ \tau τ的IBS.Sign和Verify算法。
- BasicFFS.Expire为每个输入标记 τ ∈ T \tau\in\mathcal{T} τ∈T输出密钥
- BasicFFS.Forge使用来自过期信息的适当密匙来调用IBS签名算法。
这个简单的解决具有线性简洁性。通过利用分级IBS (HIBS),我们的主要结构实现了对数简洁性。
HIBS
Deriving subkeys
如果某个id向量是另一个id向量的前缀,称为sub-identity:
给定HIBS的主密钥,可以派生任何level-l的 i d ⃗ \vec{id} id ;给定任何level-l的 i d ⃗ \vec{id} id 的密钥,可以派生出任何subkeys(sub-identity 的secret keys):
简洁地表示有效期信息:给定任何身份元组集合 T T T,使 T T T的签名可伪造的最简单方法是释放对应于每个 i d ⃗ ∈ T \vec{id} \in T id ∈T的密钥,就像在BasicFFS中一样:
(1)
优化
然而,利用HIBS的层次性, η \eta η通常可以比上式更简洁地表示:
- 在计算(1)之前,我们可以从 T T T中删除任意 i d ⃗ ∈ T \vec{id} \in T id ∈T,该 i d ⃗ ∈ T \vec{id} \in T id ∈T是某个 i d ⃗ ′ ∈ T \vec{id}' \in T id ′∈T的sub-identity。
- 如果存在任意 i d ⃗ ′ = ( i d 1 , . . . , i d l ) ∈ I 1 × . . . × I l \vec{id}'=(id_1,...,id_l)\in\mathcal{I_1\times ...\times I_l} id ′=(id1,...,idl)∈I1×...×Il使得 i d ⃗ ′ \vec{id}' id ′的每个直接subkey都在 T T T中:
则在计算(1)之前,可以将 i d ⃗ ′ \vec{id}' id ′的所有子标识从 T T T中删除并替换为 i d ⃗ ′ \vec{id}' id ′。只有当 i d ⃗ ′ \vec{id}' id ′的每个可能的子键都可从 T T T派生时,才允许这样的替换:否则,将 i d ⃗ ′ \vec{id}' id ′添加到 T T T将暗示 T T T中原有的子键以外的其他子键。
优化引入算法Compress:
- 将HIBS的身份空间和元组 T T T作为输入;
- 输出较小的身份元组集 T ′ T' T′,这样与 T ′ T' T′对应的密钥的知识足以对 T T T中的身份元组产生有效的签名。
元组的tree表示:
- 深度为 l l l的节点表示包含一个 l l l-identities的元组(考虑根节点的深度为0)。
- 所有深度为 l l l的节点集合对应所有 l l l-identities元组的集合。
- l l l层的分支因子为 ∣ T l + 1 ∣ |\mathcal{T}_{l+1}| ∣Tl+1∣。
- 给定一个特定节点(即身份元组)的密钥,其所有后代节点的密钥都可以使用 H I B S . K e y G e n ∗ HIBS.KeyGen^* HIBS.KeyGen∗轻松计算。(根节点的密钥是主密钥。)
- 在这种语言中,Compress简单地取一个节点集 T T T,并返回最小的节点集 T ′ T' T′,这样
- T T T中的所有节点都是 T ′ T' T′中的某个节点的后代
- 不属于 T T T的节点都不是 T ′ T' T′中的任何节点的后代。
FFS Construction from (Hierachical) IBS
构造1实现了对数简洁性:
Protocol
KeyForge由三个组件组成:
- 将DKIM(目前为RSA)中使用的数字签名方案替换为一个简洁的FFS。
- 邮件服务器定期发布过期信息
- A forge-on-request protocol.
注意,前两个组件已经实现了delayed universal forgeability
FFS configuration for KeyForge
KeyForge基于l-level标签结构,对应于身份空间 I = { I l } l ∈ [ L ] \mathcal{I} = \{\mathcal{I}_l\}_{l\in[L]} I={Il}l∈[L],其中l-level身份表示跨越2年期间的15分钟时间块.出于阐述的目的,我们使用以下直观的4级配置
A tag τ = ( y , m , d , c ) ∈ I 1 × I 2 × I 3 × I 4 \tau= (y, m, d,c)\in\mathcal{I_1\times I_2\times I_3\times I_4} τ=(y,m,d,c)∈I1×I2×I3×I4
对于时间戳 t t t,写入 τ ( t ) \tau(t) τ(t)来表示唯一的4元组标记 ( y , m , d , c ) (y,m,d,c) (y,m,d,c),它表示包含 t t t的15分钟时间块(记为 t ⊏ τ t\sqsubset \tau t⊏τ)。
KeyForge要求生成时刻 t t t的每个DKIM签名,对应于表示时间戳 t + ∆ t +∆ t+∆的标记(除非DKIM签名是在forge-on-request协议中生成的)。标签与电子邮件一起发送,并用于在接收服务器上进行验证:
为什么15分钟: 是保守估计的电子邮件发送时间,也是到期信息的最大粒度
level l的最佳值:取决于计算时间和到期信息简洁性之间的权衡
Publishing expiry information
KeyForge要求电子邮件服务器定期发布过期信息。一个自然的选择是每15分钟发布一次过期信息:也就是说,在 c c c所代表的时间段结束时发布每个块 c c c对应的过期信息。在基本的四级标记结构下,每15分钟发布一次可以产生最好的过期粒度(也可以是别的)。
灵活的过期策略:上面描述的基本标签结构可以很容易地扩充。例如,一个额外的级别 I l \mathcal I_l Il可能代表电子邮件的"敏感程度":这将允许高敏感电子邮件的过期信息更快地发布。或者,某些电子邮件的过期时间可能会更慢一些,或者根本不过期.
KeyForge是非常可配置的: 在前四个级别之外,不同的邮件服务器的策略不需要一致。验证算法只涉及标记的前四层(在检查 t ⊏ τ t\sqsubset \tau t⊏τ时),因此发送服务器可以在基本的四层之外添加更多的层,而不牺牲兼容性,以匹配所需的过期策略
Forge-on-request protocol
KeyForge的最后一个组件是一个协议,通过该协议,电子邮件服务器可以接受将指定的电子邮件内容发送给请求者的实时请求。所请求电子邮件的收件人必须是请求者:这是必要的,这样过期请求协议就不能用于欺骗和垃圾邮件。
Forge-on-request protocol比使用环签名实现了更强的保证。根据请求伪造协议使能够从电子邮件服务器发送邮件的任何收件人能够伪造来自任何发件人的邮件给自己。