电子货币安全与近似算法研究
电子货币安全
电子货币的安全至关重要,它涉及到多个方面的安全功能,如保密性、数据完整性、认证和不可否认性。
加密原则与构建模块
为实现这些安全功能,通常会运用一些加密原则和构建模块。保密性一般通过使用三重数据加密标准(Triple - DES)作为加密方法来实现。虽然也可以使用非对称算法,但出于性能和成本考虑,对称算法通常更受青睐。DES 也被称为单 DES,以区别于三重 DES。三重 DES 加密由三个连续操作(加密、解密、加密)组成,使用两个 DES 密钥(或一个双倍长度的 DES 密钥)。它是为应对计算机处理能力的不断提升而开发的,能确保穷举密钥搜索仍需大量资源。
数据完整性和认证(包括不可否认性)则通过使用 DES、三重 DES 和公钥算法(如 RSA),以及应用知名的哈希和消息认证码(MAC)算法(如 MD - 5、SHA - 1 和 RSA)来实现。
防篡改硬件的作用
防篡改硬件的概念与参考监视器紧密相关。参考监视器是任何提供多级安全计算设施和控制的系统的基本要素,也是大多数使用密钥加密的加密模块的核心。参考监视器的常见实现是参考验证机制,它需满足以下三个设计要求:
1. 参考验证机制必须防篡改。
2. 参考验证机制必须始终被调用。
3. 参考验证机制必须足够小,以便进行分析和测试,并确保测试的完整性。
在电子支付协议中,最常见的实现方式是使用智能卡作为支付工具。智能卡具有符合上述三个条件的物理和逻辑特性:
1. 由于智能卡的物理特性,它被设计为安全硬件,能抵抗物理、电气、电磁和化学篡改,因此参考验证机制具有防篡改功能。
2. 由于通信协议是与智能卡通信的唯一方式,参考验证机制始终会被调用。
3. 由于所使用的通信协议简单且标准化,参考验证机制足够小,可进行分析和测试。
长期以来,人们对智能卡和安全处理器的防篡改能力未作过多讨论。但后来发现,小公司甚至个人也可能对其进行攻击。因此,现在必须对每个产品的防篡改能力进行仔细检查,以发现可能的漏洞。
基于智能卡的电子钱包示例系统
近年来,出现了一种新的支付工具——多功能预付卡或“电子钱包”。它是一种塑料卡,包含客户预先支付的实际购买力。尽管电子钱包领域的发展尚处于早期阶段,但这种卡有广泛普及的可能性。未来,如果电子钱包在大量零售网点得到使用,它不仅会成为现有无现金支付工具的直接竞争对手,还会对中央银行和国家当局发行的纸币和硬币构成挑战。
下面介绍一个由布尔诺技术大学计算机科学与工程系开发的支付系统。该系统是在学生智能卡开发框架内进行的,除其他功能外,智能卡应具备封闭支付系统的电子钱包功能。该系统根据先前定义的分类法,是一种带有电子支票的电子钱包,即带有计数器的系统。
支付工具内部包含一个计数器,计数器的值等同于存储在支付工具中的货币价值。计数器的值可以通过两个操作进行更改:借记和贷记。这两个操作等同于支付工具的两个命令,具体语义如下:
-
贷记操作(CREDIT (VALUE))
:将计数器的值增加 VALUE。该操作的输入参数是贷记值 VALUE,无输出参数,仅返回表示操作成功执行的状态。
-
借记操作(DEBIT (VALUE))
:检查计数器的值是否大于或等于 VALUE。如果不满足条件,操作立即退出,并返回表示操作未成功执行的状态;否则,将计数器的值减少 VALUE。该操作的输入参数是贷记值 VALUE,无输出参数,仅返回表示操作成功或未成功执行的状态。
然而,从安全角度来看,这两个操作存在一些问题,无法防止以下攻击:
1. 篡改支付工具:计数器的值不仅可以通过贷记操作修改,还可以通过对支付工具进行直接的逻辑或物理操作来修改(当然是增加)。这些操作包括对软件支付工具进行补丁操作,或对硬件支付工具进行电气篡改(如使用微探针注入电信号)。
2. 使用伪造支付工具:这种工具可以模拟借记操作的行为,在无需贷记的情况下为客户提供无限金额。
3. 修改支付工具与支付终端之间的通信:可以修改通信内容,将借记操作失败的负面状态码改为正面状态,即使支付工具中没有足够的资金进行支付。
4. 对真实支付工具进行非法贷记:只需在支付工具上执行贷记命令即可完成此攻击。
为防止上述攻击,第一个攻击可通过使用防篡改硬件来防止,后三个攻击则通过使用加密协议来防止。
所使用的智能卡是 AT 卡,它是一种适用于加密和预付卡应用的认证智能卡,包含 ISO 7816 - 4 标准命令和返回码。AT 卡操作系统必须满足两个主要功能:
1. 作为智能卡应用的通用操作系统。
2. 为认证和预付应用提供安全处理。
AT 卡对用户有许多应用,如可以存储个人医疗历史等数据,支持金融应用(如销售点电子转账 EFTPOS),或实现电子钱包/支票簿功能。其通信协议符合 ISO/IEC 7816 - 3 标准,以确保可被通用读取设备读取。为实现可靠和安全的数据传输,数据加密基于 ANSI DES(X3.92 - 1981)算法和 ANSI 3 - DES 算法,消息认证基于 ANSI X9.9 - 1982。AT 卡的命令如下表所示:
| 命令 | 描述 |
| ---- | ---- |
| VERIFY | 将持卡人验证值(PIN)与参考值进行比较 |
| SETPIN | 更改持卡人验证值(PIN) |
| READ BINARY | 从数据文件中读取数据 |
| UPDATE BINARY | 更新数据文件中的数据 |
| GET CHALLENGE | 生成一个 8 字节的挑战并提供给外部世界 |
| PUT RANDOM | 根据读卡器发送的随机数启动会话密钥的计算 |
| INTERNAL AUTHENTICATE | 允许外部应用验证卡或卡上的应用是否真实 |
| EXTERNAL AUTHENTICATE | 根据先前生成的随机数和密钥对外部世界进行认证 |
| DECREASE (DEBIT) | 将钱包文件中的值减少指定金额并返回新值 |
| INCREASE (CREDIT) | 将钱包文件中的值增加指定金额并返回新值 |
贷记和借记操作的加密协议
贷记和借记操作通过消息认证码(MAC)进行加密保护。MAC 是一种确保消息认证(即证明消息来源)和完整性(即防止消息被修改)的方法。
MAC
K
(M) 是一个固定长度的值,通常为 32 或 64 位,它是消息 M 和秘密加密密钥 K 的函数。消息的创建者(发送者)会计算该值并将其附加到消息中。知道相同秘密密钥 K 的接收者可以根据接收到的消息 M 和自己的密钥 K 独立计算 MAC 值,然后比较接收到的 MAC 值和计算得到的 MAC 值。如果两个值相等,接收者可以确定:
1. 消息是由知道秘密密钥 K 的创建者创建的。
2. 消息在传输过程中未被更改。
然而,由于存在重放攻击,MAC 不足以保护包含贷记和借记命令的消息。重放攻击允许攻击者捕获带有 MAC 的合法消息并稍后发送给接收者。为解决重放攻击问题,需要通过随机值对每个 MAC 进行参数化,使其唯一。因此,支付工具需要两个新操作:
1. ASK RANDOM(在 AT 卡中称为 GET CHALLENGE):向支付工具请求随机值,供后续命令使用。
2. PUT RANDOM:将外部世界生成的随机值提供给支付工具,供后续命令使用。
贷记操作会增加计数器的值,因此非法执行此命令是非常不可取的,违反了安全策略。该命令本身必须通过 MAC 进行保护,以防止对支付工具进行非法贷记。为防止外部世界进行虚假贷记,MAC 的随机值必须由支付工具生成,并通过 ASK RANDOM 命令获取。由于该操作在合法执行时总是成功的,因此无需对该命令的响应(返回状态)进行加密保护。
借记操作会减少计数器的值,因此非法执行此命令并不危险,无需防止。攻击者执行此操作不会获得任何好处。因此,该命令本身无需通过 MAC 进行保护。但操作状态会指示商家客户是否有足够资金,所以响应消息必须通过 MAC 值进行加密保护,以防止被修改。正确的 MAC 值表明支付工具是真实的,并且响应消息在传输过程中未被修改。为确保外部世界(在这种情况下是商家)确信消息的真实性,MAC 的随机值必须由外部世界生成,并通过 PUT RANDOM 命令输入。
下面是贷记和借记操作的流程 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
E --> F(发送贷记消息及 MAC):::process
F --> G(接收方验证 MAC):::process
G --> H{验证结果}:::process
H -->|成功| I(更新计数器):::process
H -->|失败| J(拒绝请求):::process
C -->|借记| K(外部世界生成随机值):::process
K --> L(发送随机值):::process
L --> M(发送借记消息):::process
M --> N(支付工具验证):::process
N --> O{验证结果}:::process
O -->|成功| P(更新计数器并返回状态及 MAC):::process
P --> Q(接收方验证 MAC):::process
Q --> R{验证结果}:::process
R -->|成功| S(完成支付):::process
R -->|失败| T(拒绝支付):::process
O -->|失败| U(返回失败状态):::process
I --> V([结束]):::startend
J --> V
S --> V
T --> V
U --> V
近似算法相关研究
在组合优化问题中,有几种近似算法与线性规划或其推广方法有关。
引言
当一个优化问题被表述为整数数学规划问题时,可以通过对其在实数域上进行松弛来开发近似算法,主要有以下两种方式:
1. 原始/对偶算法:该算法为目标问题找到一个可行解,并为其松弛问题的对偶问题找到一个可行解。两个解的成本之比最多为某个常数 r,则该解是 r - 近似的。在这种情况下,线性规划公式仅作为证明近似界限的概念工具。
2. 舍入法:为松弛问题找到一个最优(或接近最优)解,然后将其舍入为整数解。舍入解的成本与分数解的成本之比最多为 r,则舍入解是 r - 近似的。在这种情况下,需要实际求解松弛问题。一般来说,将分数解舍入是一项困难的任务,随机化是主要工具。
本文将研究三种基于线性规划及其推广的方法,用于近似组合优化问题。首先介绍基于线性规划的近似方法,以无关机器上带成本的作业调度问题为例;其次介绍基于半定规划的方法,展示如何为最大割问题获得合理的解决方案;最后分析与随机舍入相关的条件概率方法,用于路由、打包和覆盖整数线性规划问题。这些方法在不同的组合优化场景中具有重要的应用价值,能够在一定程度上平衡求解的效率和结果的近似程度。
电子货币安全与近似算法研究
近似算法详细介绍
基于线性规划的近似方法
以无关机器上带成本的作业调度问题为例。当我们将这个问题表述为整数数学规划问题后,可通过线性规划松弛来寻找近似解。
-
问题描述
:有若干作业需要分配到不同的机器上进行处理,每台机器处理不同作业的成本不同,目标是找到一种作业分配方案,使得总成本最小。
-
算法步骤
:
1. 建立整数规划模型:设 $x_{ij}$ 表示作业 $i$ 是否分配到机器 $j$ 上($x_{ij}=1$ 表示分配,$x_{ij}=0$ 表示不分配),$c_{ij}$ 表示机器 $j$ 处理作业 $i$ 的成本。目标函数为 $\min \sum_{i=1}^{n}\sum_{j=1}^{m} c_{ij}x_{ij}$,同时满足作业分配的约束条件,如每个作业只能分配到一台机器上 $\sum_{j=1}^{m}x_{ij}=1, \forall i$。
2. 进行线性规划松弛:将 $x_{ij}$ 的取值范围从 ${0, 1}$ 放宽到 $[0, 1]$,得到线性规划问题。
3. 求解线性规划问题:找到松弛问题的最优解。
4. 舍入操作:将松弛问题的解进行舍入,得到整数解。例如,可以根据 $x_{ij}$ 的值大小,选择最有可能分配的机器。
基于半定规划的方法
对于最大割问题,半定规划方法可以帮助我们获得合理的解决方案。
-
问题描述
:给定一个图 $G=(V, E)$,希望将顶点集 $V$ 划分为两个子集 $S$ 和 $\overline{S}$,使得跨越这两个子集的边的数量(即割的大小)最大。
-
算法步骤
:
1. 建立半定规划模型:设 $x_i$ 表示顶点 $i$ 是否属于子集 $S$($x_i = 1$ 表示属于,$x_i=-1$ 表示不属于),目标是最大化 $\frac{1}{4}\sum_{(i,j)\in E}(1 - x_ix_j)$。通过引入向量表示,将问题转化为半定规划问题。
2. 求解半定规划问题:得到向量解。
3. 随机投影:通过随机投影的方法将向量解转化为顶点的划分。例如,选择一个随机向量 $r$,根据顶点对应的向量与 $r$ 的内积的正负来划分顶点。
条件概率方法与随机舍入
在路由、打包和覆盖整数线性规划问题中,条件概率方法与随机舍入相结合有重要应用。
-
问题描述
:路由问题涉及在网络中找到合适的路径来传输数据;打包问题是将物品放入容器中,在满足一定约束条件下最大化放入物品的数量;覆盖问题是用一些集合覆盖给定的元素集合,使得覆盖成本最小。
-
算法步骤
:
1. 建立整数线性规划模型:根据具体问题确定目标函数和约束条件。
2. 进行线性规划松弛:将整数约束放宽到实数约束。
3. 求解线性规划问题:得到松弛问题的最优解。
4. 随机舍入:根据松弛问题的解,通过随机化的方式将其舍入为整数解。例如,对于变量 $x$,以 $x$ 的值作为概率进行随机选择 0 或 1。
5. 条件概率分析:在随机舍入过程中,利用条件概率来调整舍入策略,提高解的质量。例如,根据已经确定的部分解,调整后续变量的舍入概率。
总结
电子货币的安全和近似算法在各自的领域都有着重要的意义。电子货币安全方面,从加密原则、防篡改硬件到具体的支付系统和加密协议,每一个环节都紧密相连,共同保障电子货币交易的安全。而近似算法则为组合优化问题提供了有效的解决方案,通过线性规划、半定规划和随机舍入等方法,在一定程度上平衡了求解效率和结果的近似程度。
在实际应用中,我们需要根据具体的问题和场景,选择合适的安全策略和近似算法。例如,在电子货币支付系统中,要根据系统的规模、用户数量和安全需求,合理选择加密算法和防篡改硬件;在组合优化问题中,要根据问题的特点和复杂度,选择最适合的近似算法。
未来,随着技术的不断发展,电子货币安全和近似算法领域都将面临新的挑战和机遇。电子货币安全需要应对不断变化的攻击手段,如更高级的重放攻击和篡改攻击;近似算法则需要不断提高算法的性能和近似比,以解决更复杂的组合优化问题。
以下是近似算法应用流程的 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
E --> F{算法选择}:::process
F -->|线性规划近似| G(舍入操作):::process
F -->|半定规划方法| H(随机投影):::process
F -->|条件概率与随机舍入| I(随机舍入与条件概率分析):::process
G --> J(得到近似解):::process
H --> J
I --> J
J --> K([结束]):::startend
通过以上对电子货币安全和近似算法的研究,我们可以更好地理解和应用这些技术,为相关领域的发展提供有力支持。
19

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



