1.02k likes | 1.2k Views
安全协议理论与方法. 基于证明结构性方法. 简介. 推理结构性方法缺陷: 不能解决秘密性,缺乏清晰的语义。 攻击结构性方法缺陷: 状态空间爆炸,时间与空间资源受限。. 简介. Human-readable 方法的特点: 将重点放在明确区分主体的可信度上。 运用强有力的不变式技术和攻击者知识公理使得认证过程类似于基于模型的验证方法。. 主体知识及操作. 可信主体: A 、 B 、 S 不可信主体: Z 主体间发送的消息可分为: 基本消息:包括密钥 K 和非密钥的数据 D 。 合成消息:包括消息对 (C1,C2) 和加密消息。
E N D
安全协议理论与方法 基于证明结构性方法
简介 推理结构性方法缺陷: 不能解决秘密性,缺乏清晰的语义。 攻击结构性方法缺陷: 状态空间爆炸,时间与空间资源受限。
简介 Human-readable方法的特点: • 将重点放在明确区分主体的可信度上。 • 运用强有力的不变式技术和攻击者知识公理使得认证过程类似于基于模型的验证方法。
主体知识及操作 可信主体:A、B、S 不可信主体:Z 主体间发送的消息可分为: • 基本消息:包括密钥K和非密钥的数据D。 • 合成消息:包括消息对(C1,C2)和加密消息。 • 对称密钥域记为KS,非对称密钥域记为KA。
主体知识及操作续 K=KAKS C=Ck|(C,C) | B B=K | D K=KA |KS | KS-1 S=C S : 可被攻击者获取的消息集合。
主体知识及操作续 kK, dD,那么dC, (d,k)C, dkC d(d,k)dk涵盖三个元素知识的S中的一个元素。 变量s,s’,s’’,..,s1,s2,…在S中赋值。 变量k,k’,k’’,..,k1,k2,…在K中赋值。 变量d,d’,d’’,..,d1,d2,…在D中赋值。
主体知识及操作续 五种基本操作: ;用一个已知密钥加密一个已知数据。 ’:用一个已知密钥解密一个已知数据。 :级联两个已知数据。 ’:分离一个数据对。 : 生成数据的子集合。
主体知识及操作续 ss’={(s,s’)| (s’’,c,k,s=k cs’’) s’=s (c) k } s’s’={(s,s’)| (s’’,c,k,s=k-1(c)ks’’)s’=sc} ss’={(s,s’)| (s’’,c,k,s=c1c2s’’)s’=s(c1,c2)} s’s’={(s,s’)| (s’’,c,k,s=(c1,c2)s’’)s’=sc1c2 } ss’={(s,s’)| (s’’,s1.s=s1s’’)s’=s1 数据s’可从数据s中生成当且仅当如果存在一个5个基本操作系列使得状态s转换到s’,记为 s’ known_in s。
主体知识及操作续 对于{,’,,’, }的任意子集E={x1,…,xn}, 记 E 为x1…xn的自反传递闭包。 Known_in s 定义为: S’ known_in s当且仅当s {,’,,’, }
主体知识及操作续 引理5.1 如果E {,’,,’, }, 那么 s,s’,s’’. (sEs’) (ss’’E s’s’’) 证明:如果对于已知的数据集合和参数集合基本操作的前置条件是满足的,那么对于s的任意子集也是满足的,并且操作的应用结果是一样的。 关系E对于{,’,,’, }的任何子集是具有融合性的,体现在:
主体知识及操作续 1) 如果sEs1和sEs2,那么存在s3有sEs3和s2Es3。 • 如果s {,’,,’, } s’, 那么存在s’’有: s {,’,,’, } s’’, s’’{}s’。更为一般的,如果对于任何一个非空子集E,如果sE{}s’, 那么存在s’’有s Es’’和 s’’{}s’。 3) 如果sis’’ 和s’’js’, 其中i{, }, j{’, ’},那么存在S’’’有s{j}s’’’和s’’’is’。
主体知识及操作续 推论5.1 如果s{,’,,’, }s’, 那么存在s’’有s{’,’}s’’ 和 s’’{, ’}s’。
主体知识及操作续—known_in性质 A1 c known_in sc’ known_in s(c,c’) known_in s A2 (c,c’) known_in sc known_in s c’ known_in s A3 c known_in sk known_in sck known_in s A4 ck known_in sk-1 known_in sc known_in s A5 s’ known_in ss’’ known_in s(s’s’’) known_in s A6 (s’s’’) known_in s s’ known_in ss’’ known_in s A7 s known_in s A8 known_in s
主体知识及操作续—comp_of性质 B1 (c,c’) comp_of sc comp_of s c’ comp_of s B2 ck comp_of sk-1 comp_of sc comp_of s B3 s’ comp_of ss’’ comp_of s(s’s’’) comp_of s B4 (s’s’’) comp_of s s’ comp_of ss’’ comp_of s B5 s comp_of s B6 comp_of s
主体知识及操作续setofkeys性质 Setofkeys: 当且仅当是密钥集合时,setofkeys(s)为真。 C1 (c comp_of s)(k-1 comp_of s )c ck’(c comp_of sck’) C2 (c comp_of sc’)c ck’(c comp_of sck’) C3 (c comp_of s)c d (c comp_of sd) C4 (c comp_of sc1c2)c(c1,c2)(c comp_of s(c1,c2)) C5 (c comp_of ) C6 (s’ comp_of s) (s’’ comp_of s) (s’s’’ comp_of s) C7 cs setofkeys(s) ( c comp_of s ) C8 setofkeys(s) setofkeys(s K) C9 setofkeys()
Known_in 和 comp_of 关系 D1(s’ known_in s) (s’ comp_of s) D2(b comp_of s)(b known_in s) D3 (ck comp_of s) (k comp_of s) (ck known_in s) D4 (ck comp_of s) (c known_in s) (ck known_in s) D5 ((c,c’) comp_of s)((c known_in s) (c’ known_in s))((c,c’) known_in s)
Known_in 和 comp_of 关系续 D6( s known_in s’’) (c’ known_in s’’))(ss’ known_in s’’)
协议形式化分析实例-NS • AS: A,B • SA: E(Ks-1: kb,B) • AB: E(kb: Na, A) • BS: B,A • SB: E(ks-1:ka,A) • BA: E(Ka: Na, Nb) • AB: E(Kb: Nb)
Human-readable证明法对协议的分析 • 主体及原子行为的描述。 • 认证属性的提出。 • 不变式的构造。 • 认证属性的验证。
主体及原子行为的描述 SA= slave: Principal NA: Nonce NB: Nonce KB: K at: Program Address SB= master: Principal NA: Nonce NB: Nonce KA: K at: Program Address
主体及原子行为的描述续 Ss= key: Principal K at: ProgramAddress 其中at 用于记录每个主体执行算法的次数。
主体及原子行为的描述续 • action(SA.at, 1a, S’A.at)S’z=Sz(A,S’A.slave) • action(Ss.at, 1s, Ss’.at)(d1,d2) known_in Sz • action(Ss.at, 2s, S’s.at)S’z=Sz(Ss.key(d3),d3)ks-1 • action(SA.at, 2a, S’A.at)(S’A.KB,SA.slave)ks-1 known_in Sz • action(SA.at, 3a, S’A.at)S’z=Sz(S’A.NA, A)SA.KBnew(S’A .NA,SZ) • action(SB.at, 3b, S’B.at)(S’B.NA,S’B.master)kB known _in Sz • action(SB.at,4b, S’B.at)Sz’=Sz(B,SB.master) • action(Ss.at,4s,S’s.at)(d4,d5) known_in Sz
主体及原子行为的描述续 9) action(Ss.at, 5s, S’s.at)S’z=Sz(Ss.key(d6),d6)kB-1 10) action(SB.at, 5b, S’B.at)(S’BKA, B)KB-1 known_in Sz 11) action(SB.at, 6b, S’B.at)Sz’=Sz(SB.NA,S’B.NB)SB.KAnew(S’B.NB,Sz) 12)action(SA.at, 6a, S’A.at)(SA.NA,S’A.NB)kA known_in Sz 13)action(SA.at, 7a, S’A.at)Sz’=Sz(SA.NB)SA.KB 14)action(SB.at, 7b, S’B.at)(SB.NB)kB known_in Sz
主体及原子行为的描述续 每一种行为刻画了一个可信主体与攻击者之间的通信以及由此引起的两个主体状态变量的同时变化。 • Sz’= SzS, 此形式描述可信主体发送消息S给攻击者。 • S known_in Sz,描述消息S的反方向发送。攻击者发出它已知的消息:刚接收的消息,先前发送的或生成的用于误导其他主体的消息.
认证属性的提出 假设存在一个全局观察者,其任意选择两个可信主体并试图使协议保证不出现下列情况: 一个主体相信他已经正确地执行了一个与另一个主体的认证会话,但另一个主体正进行其他事情或进行着完全一致的会话. 主主体用A表示,从主体用B表示。
3a 3b 6b 6a 7a 7b 行为执行顺序图
认证属性描述 主主体认证属性描述: 每次当A执行完一轮会话3a,6a,7a时,B必须完成3b,6b以及此后的7b,且其对应的值与3a,6a,7a一致。及行为的次序为:3a,3b,6b,6a,7a,7b。 从主体认证属性描述: 每次当B执行完一轮会话3b,6b,7b时,A必须完成3a,6a以及7a的行为。
不变式的构造一 • 关于S的不变式一 攻击者不能获知主体私钥,否则将造成协议缺陷,记为 inv0(Sz),定义如下: Inv0(Sz) = (KA-1 known_in Sz)(KB-1 known_in Sz)(Ks-1 known_in Sz) Inv1(Sz) = (KA-1 known_in (Szrng(key)))(KB-1 known_in (Szrng(key)))(Ks-1 known_in (Szrng(key)))
不变式的构造二 A和B为他们欲通信的主体使用正确的密钥。首先描述形为(k,d)kB-1的攻击者已知的所有数据: (k,d).(k,d)kB-1 known_in Szk=key(d) 则inv2(s)为: (k,d).(k,d)kB-1 known_in Srng(key))k=key(d)
关于A和B的不变式 主体A(或B)必须使用正确的从主体(主主体)的密钥,并且不能是攻击者可用于误导主体的密钥。 1A: (pre(SA.at,3a)pre(SA.at,7a))So.kB=key(SA.slave) 1B: (pre(SB.at,6b)So.KB=key(SA.slave) Pre(at,3a):只有当at在行为可被触发的一个状态中时状态为真。
认证属性的证明 • 主主体认证属性的证明 • 证明在A的两个连续的行为3a和6a之间,至少有B的一个行为6b。 • 证明在3a和6b之间存在一个对应的持有与3a同样消息的3b。这证明了B至少进行了3b和6b两个行为,并且是以正确的顺序和正确的值进行的。 引入变量: in_window=false 证明: 如果SA.slave=B 与3a一起执行,3a将置 in_window=True; 如果SA.slave=B 与6a一起执行,6a将置 in_window=False;
认证属性的证明续 现在证明如果in_window=True,那么行为6a不可能发生: S’A.(SA.NA, S’A.NB)KA known_in Sz 此性质可用一个不变式描述为: In_window=true n..(SA.NA, n)KA known_in Sz
认证属性的证明续 通过增加SB.master≠ASA.NA≠SB.NA和 b.(SA.NA, b)kB known_in Szb=A 当在行为6b由SB.master≠A(不变式成立的必要条件是SA.NA与SB.NA不相同)触发的情况下证明不变式性质的保持时,第一个约束条件被引入;当在行为3b被触发的情况下证明不变式性质的保持时,第二个约束条件被引入。
从主体认证属性的证明 In_window=true((SB.NB)kB known_in Sz) 增加:SA.slave≠BSB.NB≠SA.NB。 例如如果A与其他主体C通信,那么SA.NB将不是B所期待的随机数。 与上类似为使行为6a保持不变式,需有: (SA.NA,SB.NB) KA known_in Sz 也即:A收到一个消息如果第一部分SA.NA是正确的,那么其第二部分一定不同于SB.NB。
从主体认证属性的证明续 但是如果SA.NA和SB.NB是不同的,那么不变式显然是不成立的。而且根据它的角色,A必须发送(SA.NA, A)kc给C,但根据假设攻击者是知道此消息的(因为除了A,B,S外任何主体都可充当攻击者的角色)。攻击者因此知道了Kc-1和SA.NA,并能够发送(SA.NA,A)kc给B。由此(SA.NA, SB.NB)KA known_in Sz 和 SA.slave≠B 及SB.NB=SA.NB都为真,并且7b可由A的一个不正确响应6a所触发。
从主体认证属性的证明续 由上述说明可知,协议是有缺陷的。 修改之一:在消息6中增加发送者的标识。 第二个约束条件变为: b.(SA.NA, SB.NB, b)kA known_in Szb=B
并行多重会话 崩溃主体在并行会话中扮演多个角色的可能。协议中的S具有这种可能。 一旦A已执行了1a后,唯一能执行的行为2a,例如它不能接受3b,这意味着它作为一个从主体为其他进程开始了另一个会话;它也不能执行1a,这意味着它作为主主体开始了另一个会话。它也不能执行1a,这意味着它作为主主体开始了另一个会话。
并行多重会话续 • AB: Na • BA: E(Kab: Na, Nb) • AB: Nb 协议的行为包括6步:1a,1b,2b,2a,3a,3b,并可对A、B的状态以及6个行为进行形式化描述,但是: 1)断言行为的描述,需考虑新型的序列约束。 2)每个主体的状态涉及多个并行会话,因此需要跟踪每个会话的内容。
并行多重会话续 描述主认证属性时仅考虑1a和2a以及B的行为1b和2b。 证明不变式 (Kab known_in Si) 然后用反证法证明行为2b在任一会话中必须出现在由1b和2b界定的窗口内。它使用一个窗口不变式: In_window=truen.((SA.NA,n)Kab known_in Si)
并行多重会话续 注意2b的不同情况: 2b可被A或B执行。2b由B执行时Sb.master可等价于A或不等价于A,SA.NA也可等价于SB.NA,或者不等价。 如果2b由A执行,则存在问题。如果强制执行与前述协议同样的序列约束,认证属性得到满足,否则,如果A可执行并行的多重会话,那么将破坏不变式,作为从主体,A将给攻击者一个答案,即它在等待所涉及的其他并行会话。
Human-readable 若要求更为详细的协议分析时,可与基于模型检测的形式化方法交替使用。其已用于许多认证协议的分析中,验证结论可以从一个协议应用到另一个协议,因为: • 证明法的主要工作是独立于协议的,因此是可以重用。 • 即使是与协议相关的部分,诸如不变式的确定与证明或认证属性的形式化与证明,也不因协议不同而有重大改变,因而也是可以重用的。
Paulson归纳法 基于协议消息和事件的攻击结构方法注记的结构性证明法。 Human-readable:将协议模型为4种主体。 Paulson:所有可能事件路径的集合。每条路径是一个包含多轮协议通信的事件序列。主体接收到一个路径,可转发它或根据协议规则进行扩展使消息的真正发送者对此无从可知。它可以模拟所有攻击和密钥丢失。
Paulson归纳法续 秘密性:攻击者不能获知发送给其他主体的消息内容。 认证性:如果一个消息表现为发自主体A,那么主体A的确发送了此消息,并且消息内的随机数或事件戳将正确指示其新鲜性。 借鉴了状态探测和信仰逻辑的某些方面。借鉴状态探测描述事件,第二种方法给出对所生成的消息的信仰。
Paulson归纳法概述续 协议的非形式化描述: 主体A:在协议结束时只有A和B有可能知道会话密 钥Kab。 主体B:攻击者能得到什么? 主体A:在没有A和B的长期密钥的前提下,它是不 能读取证书。 主体B:攻击者能够欺骗B接收与它共享的密钥? 主体A:可识别的随机数的使用可阻止这一行为。
Paulson归纳法概述续 Paulson归纳法为归纳定义, 每个定义列出了主体或系统可能的行为。归納规则可用于推理任意长度的有限行为序列的结果。 • parts:用于生成消息集合的所有部分。 • Analz:表示使用正确密钥解密之前传递的消息。 • Synth:表示对消息的伪造。 与信仰逻辑不同, 协议的归纳验证的证明过程是详细的,协议每个安全属性都能得到证明。
Paulson归纳法概述续 1.消息 主体标识:A,B,…。 随机数: Na,Nb,…。 密钥: Ka,Kb,Kab,…。 消息混合 {X,X’}。 消息的Hash值。 加密的消息Crypt KX。
Paulson归纳法概述续 2. Parts, analz 和synth 如果H表示一个主体的初始知识和一条路径中所有发送的消息,那么每个操作可从H的消息中衍生出新的消息以扩充H。 Parts H通过不断地增加混合消息和加密消息来从H中获得。 Crypt KXparts HXparts H Parts Gparts H = parts(GH)
Paulson归纳法概述续 analz H通过不断地增加混合消息和可用集合中的密钥解密的消息来从H中获得。 Kanalz H ,那么通过监听H不能获知K。 Crypt KXanalz H:K-1 analz Xanalz H Analz Ganalz H=analz(GH) Analz Hparts H
Paulson归纳法概述续 synth H是攻击者通过不断增加主体标识,构造混合消息和用H中的密钥生成加密消息来从H中获得的。 Xsynth H, KHCrypt KXsynth H Ksynth HKH
Paulson归纳法概述续 3. 攻击者: 可以观察网络中所有通信。 发送从集合synth (analz H)中衍生的欺骗消息。 在模型中攻击者被视为参与协议运行的一个诚实的主体,它可以用其长期秘密密钥发送正常的协议消息,以及伪造的消息,使得它能够利用截获的密钥参与协议的运行并因此欺骗其他主体。