RFID系统中的安全所有权与所有权转移
1. 安全所有权转移的定义
安全所有权转移的定义如下:设Event表示所有可能事件的集合,E ∈ Agent是入侵者控制的代理。一组协议Π相对于P提供安全所有权转移,当且仅当:
[
\forall t\in traces(\Pi) \exists f:Event \to Event, injective \forall 0\leq k<|t| \forall R,T \in Agent \
\neg owns_P (R, T, \Sigma(t)
k) \land owns_P (R, T, \Sigma(t)
{k+1}) \Rightarrow \
\exists 0\leq i\leq k f(t_k) = t_i \land \neg \exists i<j\leq k t_j = release_P (\ast, T, \ast) \land \
(t_i = release_P (\ast, T, R) \lor t_i = release_P (\ast, T, E))
]
其中,(\ast)用于表示任何代理。
2. Yoon和Yoo协议分析
2.1 协议概述
Yoon和Yoo提出的协议依赖于所有者和标签之间的共享秘密(p = {ID}_k)(称为假名)。该协议包括三个阶段:
1.
第一阶段
:旧所有者使用新密钥(k’)更新假名(p)。
2.
第二阶段
:通过安全通道将新密钥(k’)、真实身份和新假名发送给新所有者。
3.
第三阶段
:新所有者和标签使用新密钥再次更新假名。
我们将释放信号置于第一阶段开始,获取信号置于第三阶段结束。以对(p)的知识证明协议作为所有权测试协议,来分析该协议的安全性。
2.2 协议存在的问题
该协议不满足安全所有权转移,原因如下:
1.
入侵者获取所有权
:入侵者E可以在不是预期新所有者的情况下获取标签所有权。入侵者向目标标签T询问常量0,标签回复(h(p))。通过窃听协议执行的第一阶段,入侵者获得(a = h(p) \oplus {ID}
{k’})。一旦标签将假名更新为({ID}
{k’}),入侵者就成为标签的所有者。
2.
违反安全所有权
:入侵者在第一阶段攻击后获得标签假名的知识,窃听标签T和新所有者R’执行的第三阶段。第三阶段结束时,新所有者R’成为标签持有者。入侵者利用此阶段学到的信息推导出新假名,然后执行假名更新协议,将标签假名更新为新所有者R’不知道的假名,导致R’在持有标签的情况下失去所有权,违反了安全所有权。
3.
不满足排他所有权
:不诚实的前所有者通过窃听所有权转移的第三阶段,能够了解新假名,因此不会失去所有权,不满足排他所有权。
3. 失步问题
3.1 失步的定义
在有状态的RFID协议执行中,阅读器和标签通常会更新共享信息。攻击者可能会干扰它们之间的通信,导致双方的更新不相关。有缺陷的协议无法使双方从这种干扰中恢复,阅读器和标签将处于失步状态,即无法成功相互通信。我们称对这种攻击不敏感的协议为抗失步协议。
正式定义如下:协议(P \in \Pi)是抗失步的,当且仅当:
[
\forall t\in traces(\Pi) \forall 0\leq i<|t| \forall T \in Agent \
\exists R\in Agent owns_P (R, T, \Sigma(t)
i) \Rightarrow \exists R’\in Agent owns_P (R’, T, \Sigma(t)
{i+1})
]
3.2 失步与安全所有权的关系
有趣的是,抗失步性和排他所有权可以暗示安全所有权。在以下定理的条件下,要证明相对于测试协议(P)的安全所有权,只需证明(P)的抗失步性和相对于(P)的排他所有权。
定理1
:设(\Pi)是包含测试协议(P)的一组协议。假设(\Pi)相对于(P)提供排他所有权,且(P)是抗失步的。那么对于满足以下两个条件的每个轨迹,(\Pi)提供安全所有权:
1. 在初始状态下,每个持有标签的代理都是标签的所有者。
2. 代理只有在拥有标签时才能成为标签的持有者。
3.3 Song和Mitchell协议的失步攻击
Song和Mitchell提出的有状态RFID协议依赖于共享秘密进行认证,可用于供应链管理或访问控制等场景。他们试图通过存储额外信息来防止失步攻击,但该机制并不足以提供抗失步性。
攻击者可以通过以下步骤进行攻击:
1. 攻击者窃听前两条消息((n_r)和(a, b)),然后通过阻止第三条消息((c))中止协议。此时标签未成功完成运行,不会进行更新。
2. 攻击者用自己的随机数(n_i)挑战同一标签,标签回复(a’ = k \oplus n_{t’})和(b’ = f_k(n_i \oplus n_{t’}))。
3. 攻击者利用(\oplus)对(\gg)的分配律,构造有效阅读器响应(c’ = c \oplus ((a \oplus a’) \gg \ell/2) = s \oplus (n_{t’} \gg \ell/2))。
4. 标签接受消息并更新(k)为(h((s \ll \ell/4) \oplus (k \gg \ell/4) \oplus n_i \oplus n_{t’}))。此时,真正的阅读器失去标签所有权,因为密钥(k)未知(即使攻击者也不知道),没有代理能够成功完成测试协议。
以下是该协议的流程:
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px;
A([开始]):::startend --> B(攻击者窃听前两条消息):::process
B --> C(攻击者阻止第三条消息):::process
C --> D(攻击者用自己的随机数挑战标签):::process
D --> E(标签回复消息):::process
E --> F(攻击者构造有效响应):::process
F --> G(标签更新密钥):::process
G --> H([真正的阅读器失去所有权]):::startend
4. RFID协议的语法和语义
4.1 协议规范
协议是从(n)元不同角色到(n)元角色规范的映射。角色规范包括该角色使用的随机数和变量声明,以及定义诚实代理在执行该角色时发送和期望读取的消息的事件。事件可以通过以下三种方式组合:
-
顺序组合
:用(( \cdot ))表示,指定事件的连续执行。
-
选择组合
:用(( + ))表示,模拟分支。
-
条件分支
:用(( \triangleleft x = y \triangleright ))表示,如果(x = y)则选择左分支,否则选择右分支。
消息通过项代数构造。我们定义了以下集合:
-
Agent
:允许执行协议的代理名称集合。
-
Const
:常量集合,包含全局已知的值,如自然数。
-
Nonce
:随机数集合,为每次协议执行新生成的值。
-
F
:函数集合。
还考虑了四个两两不相交的变量集合:
-
RoleName
:协议中角色的名称集合,在协议执行期间,角色名称由执行协议的代理名称实例化。
-
VarL
:局部变量集合,在运行执行期间实例化,但运行结束后失去值。
-
VarG
:全局变量集合,代表代理的持久知识,其值在协议运行之间保持不变。
-
G
:全局变量数组集合,是全局变量的泛化,用于分组全局变量,简化角色规范。
使用特殊变量(\theta)表示运行标识符,用于区分不同运行的随机数。复杂项可以通过配对((, ))、加密({ })或应用函数(f(\cdot))构造。发送和读取事件可以伴随变量赋值列表,赋值可以针对全局变量和全局变量数组,执行伴随变量赋值的发送或读取事件被视为原子步骤。
4.2 协议执行
系统状态(\langle A, G, SB, RB, I \rangle)由以下部分决定:
-
A
:活动运行集合,包含运行标识符、执行运行的代理名称、剩余事件列表以及该运行的局部变量赋值。
-
G
:代理的全局知识,包含每个代理的全局变量赋值。
-
SB
:发送缓冲区,代理将消息写入其中。
-
RB
:读取缓冲区,代理从其中读取消息。
-
I
:入侵者的知识,包含入侵者最初知道的项集合,以及在协议执行期间学到的项。
系统的行为定义为系统状态之间的转换关系,推导规则分为以下三类:
4.2.1 代理规则
- 创建规则(create) :创建一个具有新运行标识符(f)的运行,并将其添加到活动运行集合中。
[create]
n ∈ agentsof(R)
((n ∉ unfinished(A) ∧ type(n) = 1) ∨ type(n) = *)
f ∉ runids(A)
a = (f, n, eventsof(R), {R ↦ n, θ ↦ f})
⟨A, G, SB, RB, I⟩
create(f,R,n)
−−−−−−−−−→ ⟨A ∪ {a}, G, SB, RB, I⟩
- 发送规则(send) :代理执行发送事件,将消息添加到发送缓冲区,并更新全局变量赋值。
[send]
x
send(m)[−→x := −→c ]/T/F/
−−−−−−−−−−−−−−−→ x′
a = (f, n, x, ρ) ∈ A
a′ = (f, n, x′, ρ)
G(n) = σ
σ′ = σ[−→c /−→x ]
∀(v,w)∈T σρ(v) = σρ(w)
∀(v,w)∈F σρ(v) ≠ σρ(w)
⟨A, G, SB, RB, I⟩
send(f,σρ(m))
−−−−−−−−−→ ⟨A \ {a} ∪ {a′}, G[σ′/n], SB ∪ {σρ(m)}, RB, I⟩
- 读取规则(read) :代理执行读取事件,从读取缓冲区获取消息,匹配消息并更新局部和全局变量赋值。
[read]
x
read(m)[−→x := −→c ]/T/F/
−−−−−−−−−−−−−−−→ x′
a = (f, n, x, ρ) ∈ A
Matchρ,σ(m, m′, ρ′)
m′ ∈ RB
G(n) = σ
σ′ = σ[−→c /−→x ]
∀(v,w)∈T σρ(v) = σρ(w)
∀(v,w)∈F σρ(v) ≠ σρ(w)
⟨A, G, SB, RB, I⟩
read(f,m′)
−−−−−−−→ ⟨A \ {a} ∪ {(f, n, x′, ρ)}, G[σ′/n], SB, RB \ {m′}, I⟩
- 结束规则(end) :标记运行已终止。
[end]
a = (f, n, x, ρ) ∈ A
x ≠ ϵ
⟨A, G, SB, RB, I⟩
end(f)
−−−−→ ⟨A \ {a} ∪ {(f, n, ⊥ · x, ρ)}, G, SB, RB, I⟩
4.2.2 组合规则
组合规则描述事件组合的语义,与基本进程代数的转换规则类似,主要区别在于对条件分支语句的处理,将条件作为证明义务添加。规则如下:
[exec]
a
a/∅/∅
−−−−→ ✓
[choice1]
x
a/T/F
−−−−→ x′
x + y
a/T/F
−−−−→ x′
[choice2]
y
a/T/F
−−−−→ y′
x + y
a/T/F
−−−−→ y′
[seq1]
x
a/T/F
−−−−→ x′
x · y
a/T/F
−−−−→ x′ · y
[seq2]
x −→ ✓
y
a/T/F
−−−−→ y′
x · y
a/T/F
−−−−→ y′
[cond1]
x
a/T/F
−−−−→ x′
x ◁ v = w ▷ y
a/T ∪ (v,w)/F
−−−−−−−−−→ x′
[cond2]
y
a/T/F
−−−−→ y′
x ◁ v = w ▷ y
a/T/F ∪ (v,w)
−−−−−−−−−→ y′
4.2.3 入侵者规则
入侵者规则描述入侵者的能力,入侵者操作发送和读取缓冲区:
-
传递规则(deliver)
:将消息从发送缓冲区转移到读取缓冲区。
[deliver]
m ∈ S
⟨A, G, S, R, I⟩
deliver
−−−−→ ⟨A, G, S \ {m}, R ∪ {m}, I⟩
- 窃听规则(eavesdrop) :将消息从发送缓冲区转移到读取缓冲区,并将消息添加到入侵者知识中。
[eavesdrop]
m ∈ S
⟨A, G, S, R, I⟩
eavesdrop
−−−−−−→ ⟨A, G, S \ {m}, R ∪ {m}, I ∪ {m}⟩
- 阻止规则(block) :从发送缓冲区移除消息,入侵者仍能学习该消息。
[block]
m ∈ S
⟨A, G, S, R, I⟩
block
−−−→ ⟨A, G, S \ {m}, R, I ∪ {m}⟩
- 注入规则(inject) :将入侵者从其知识中推断出的消息添加到读取缓冲区。
[inject]
I ⊢ m
⟨A, G, S, R, I⟩
inject
−−−−→ ⟨A, G, S, R ∪ {m}, I⟩
不同的对手可以通过选择这些规则的子集来建模:
| 对手类型 | 规则选择 |
| ---- | ---- |
| 无能力对手 | 仅传递规则 |
| 被动对手 | 传递规则 + 窃听规则 |
| Dolev - Yao入侵者 | 传递规则 + 窃听规则 + 阻止规则 + 注入规则 |
综上所述,在RFID系统中,所有权转移和安全问题至关重要。通过对不同协议的分析,我们发现现有协议存在诸多安全漏洞,如Yoon和Yoo协议不满足安全所有权转移,Song和Mitchell协议易受失步攻击。同时,对协议的语法和语义进行了详细定义,有助于更准确地分析和验证协议的安全性。未来,需要进一步研究如何将所有权定义与现有安全和隐私属性相结合,构建更安全的所有权转移协议,并利用模型检查工具验证协议的正确性。例如,研究不可追踪协议与所有权转移协议安全组合的条件,以及不同不可追踪协议之间的相互作用。
5. 相关研究与未来展望
5.1 相关研究工作
在RFID系统所有权转移的研究领域,过往的工作大多聚焦于设计所有权转移协议,却对其安全需求关注不足。不过,也有一些值得关注的研究成果:
-
Song的研究
:Song对所有权转移相关的安全需求进行了首次全面调研,并基于Song和Mitchell的早期工作提出了一套安全所有权转移协议。然而,这套协议存在与其他协议类似的缺陷。
-
Molnar等人的协议
:Molnar等人提出的协议依赖于一个可信中心。阅读器向中心发送标签假名以请求标签的真实身份,若阅读器是标签所有者,便可获得该身份。标签所有者可请求可信中心将标签所有权转移给新所有者,之后可信中心会拒绝旧所有者的身份请求,接受新所有者的请求。
-
Saito等人的协议
:该协议借助一个可信方,该可信方与标签共享密钥,用于更新所有者的密钥。所有权转移表现为向可信方请求为标签加密新所有者的密钥。
-
Osaka等人的协议
:这是早期提出的两方所有权转移协议,但被指出存在缺陷,随后Lei和Cao、J¨appinen和H¨am¨al¨ainen、Yoon和Yoo等人提出了改进版本。不过,Yoon和Yoo的协议也被发现存在安全问题。
-
其他协议
:Lim和Kwon提出的协议采用了基于密钥链的计算密集型相互认证方法;Fouladgar和Afifi、Koralalage等人提出了基于对称加密的解决方案;Dimitriou的协议允许标签所有者将标签恢复到原始状态,这在售后服务中具有重要应用价值。
5.2 未来研究方向
5.2.1 与现有安全和隐私属性结合
虽然对所有权的形式化定义本身具有重要意义,但当它与现有安全和隐私属性相结合时,其价值将得到显著提升。例如,在包裹配送系统中,RFID标签附着在包裹上,此时获得RFID标签所有权的不可抵赖性以及未经授权实体无法追踪这些标签变得至关重要。我们仅简要提及了不可追踪性与排他所有权之间的联系,下一步的重要工作是研究不可追踪协议与所有权转移协议安全组合的条件。这需要深入研究一组协议中两个或多个不可追踪协议之间的相互作用。具体操作步骤如下:
1.
协议筛选
:从众多协议中挑选出不可追踪协议和所有权转移协议。
2.
分析相互作用
:研究不可追踪协议之间、不可追踪协议与所有权转移协议之间的交互方式,确定可能存在的冲突或协同效应。
3.
制定组合规则
:根据分析结果,制定确保协议安全组合的规则和条件。
4.
验证组合效果
:使用模型检查工具验证组合协议是否满足安全需求。
5.2.2 构建所有权转移协议及正确性证明
本研究采用的模型设计旨在使利用模型检查工具验证安全需求成为可能。未来的研究可以聚焦于构建所有权转移协议,并证明其正确性。具体操作步骤如下:
1.
协议设计
:根据安全需求和实际应用场景,设计所有权转移协议。
2.
形式化建模
:使用本研究中定义的语法和语义,对协议进行形式化建模。
3.
验证安全需求
:利用模型检查工具,依据定义的安全需求对协议进行验证。
4.
正确性证明
:通过数学证明或其他方法,证明协议的正确性。
5.3 总结与启示
RFID系统中的安全所有权和所有权转移是一个复杂且关键的研究领域。通过对各种协议的分析,我们清楚地认识到现有协议存在的安全漏洞,如安全所有权转移不满足、易受失步攻击等问题。对协议语法和语义的详细定义为协议的分析和验证提供了坚实的基础,有助于发现和解决潜在的安全问题。
未来的研究需要在多个方面展开深入探索。一方面,要将所有权定义与现有安全和隐私属性紧密结合,研究不同协议之间的安全组合方式,以满足实际应用中的多样化需求。另一方面,构建更安全的所有权转移协议并验证其正确性是保障RFID系统安全的关键。通过这些研究,有望推动RFID系统在各个领域的安全、可靠应用。
以下是一个总结RFID系统所有权转移研究方向的mermaid流程图:
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A([开始]):::startend --> B(现有协议分析):::process
B --> C(发现安全漏洞):::process
C --> D(协议语法和语义定义):::process
D --> E(与现有属性结合研究):::process
D --> F(构建新协议及验证):::process
E --> G(研究协议组合条件):::process
F --> H(设计协议):::process
H --> I(形式化建模):::process
I --> J(验证安全需求):::process
J --> K(证明协议正确性):::process
G --> L([实现安全组合]):::startend
K --> M([构建安全协议]):::startend
通过对RFID系统安全所有权和所有权转移的深入研究,我们不仅能够提高系统的安全性,还能为其在更多领域的应用提供有力支持。未来的研究将在不断解决现有问题的基础上,推动该领域的持续发展。
超级会员免费看
58

被折叠的 条评论
为什么被折叠?



