移动支付的动态规则加密
1. 引言
当前的趋势是手机数量缓慢下降,而智能手机数量迅速增长。此外,智能手机的计算资源逐年提升,能够集成更多的应用程序。由于应用程序的存在,智能手机已成为最常用的电子设备。印度尼西亚的开发者已开发出多种智能手机应用程序,例如:GO‐JEK(在线摩托车出租车)已成功利用智能手机运行[1],基于移动的学术信息系统[2],使用智能手机购物[3],移动支付[4, 5],以及移动服务商务[6]。
使用手机或移动支付进行金融交易的趋势不断增长。提供此类服务的运营商数量也在增加。通过使用移动支付服务,客户可以节省手机(终端)费用,并将其与主要内容分开。因此,手机可作为电子钱包(移动钱包)。目前,大多数安卓智能手机都支持近场通信(NFC)。近场通信(NFC)已应用于购物[3]和移动支付应用[4, 5]。
移动支付服务提供商应以良好的交易安全完成移动支付服务。提供交易安全的一种途径是利用安全的移动设备支付应用。移动支付应用应具备良好的安全性,因为应用将包含敏感数据,包括账户、密码、个人识别码(PIN)、电子货币和交易数据。本研究提出了一种用于安卓操作系统上移动支付应用的安全功能。该安全功能是一种名为动态规则加密(DRE)的动态加密规则。DRE能够通过动态规则对数据进行加密,从而保护信息,并且DRE还具有作为身份验证令牌的功能。DRE生成的令牌基于动态规则或随时间变化。所使用的时间参考周期为年中的日期(day of the year)。DRE中许多现有规则仅在特定时间内有效,这导致设备需要连接服务器以更新DRE规则。通过连接服务器,服务器可以验证移动支付应用中的现有数据,从而检测出无效数据。此外,DRE令牌包含有关设备、时间、移动支付用户账户及其他用于身份验证的信息。
2. 文献综述
2.1. 加密
敏感数据应具备的一个要素是数据安全。敏感数据应具有可靠的数据安全,无论数据是存储在存储介质上,还是通过任何通道(例如通过互联网)传输到另一个位置。数据安全可以通过多种方式构建,其中之一就是对要存储或传输的数据进行加密。
加密也可以称为密码(Cipher)。但实际的加密只是密码的一部分。密码由加密和解密组成。加密是将信息进行编码的过程,使得信息无法通过常规手段读取。加密会改变信息中的数据,使得这些数据在没有使用特定规则或代码的情况下难以阅读且解码耗时。
加密涉及一种称为密钥的保密数据。密钥也用于解密过程。如果不使用密钥,信息将无法被加密或解密。输入到加密过程中的信息称为明文,而加密后的数据称为密文。密文消息包含了明文消息的全部信息,但其格式无法被正常获取和阅读。需要通过解密过程才能将密文恢复为明文。加密过程的框图如图1所示。
2.1.1. 加密类型
根据密钥的类型,加密分为两种类型,即:(1) 对称加密,以及 (2) 非对称加密。
对称加密使用相同的密钥进行加密和解密,而非对称加密使用不同的密钥进行加密和解密,即公钥和私钥。对称加密包括高级加密标准(AES)、数据加密标准(DES)和三重数据加密标准(Triple-DES)。非对称加密包括RSA。
根据处理数据的方式,加密方式有两种,即:(1) 流密码,以及 (2) 分组密码。
流密码用于对称加密,而分组密码用于对称和非对称加密。流密码与分组密码的区别在于,分组密码以数据块为单位处理数据,而流密码一次处理一位或一个字节的数据。
2.1.2. AES(高级加密标准)
AES 是一种使用对称密钥和分组密码[7]的加密类型。AES 包含三种类型,即 AES‐128、AES‐192 和 AES‐256。每种都具有 128 位分组密码的大小和密钥长度 128、192 和 256 位。高级加密标准已被广泛分析,并在全球范围内广泛使用。根据分组的大小,高级加密标准在一个 4 × 4 矩阵上进行操作,其中矩阵的每个单元格包含 1 字节(8 位);因此,一个分组的大小为 16 字节。在高级加密标准中,处理输入数据有四个主要阶段,分别是字节替换、行移位、列混淆和添加轮密钥。图2展示了高级加密标准的加密过程。
2.1.3. DES(数据加密标准)
DES 也是一种使用对称密钥和分组密码[8]的加密类型。DES 具有 64 位块大小。DES 使用从 64 位主密钥生成的 56 位子密钥,将 64 位明文加密为 64 位密文。在加密和解密过程中,DES 采用费斯妥网络。DES 加密过程如图3所示。
2.2. 令牌
令牌是用于身份验证的软件或硬件。令牌可用于电子方式证明身份,也可用作访问某物的电子密钥。可以使用令牌代替密码安全功能,也可以将令牌与密码[9]结合使用。
2.2.1. 令牌的形式
令牌可以采用软件或硬件形式。在硬件令牌中,包含一个芯片。该芯片的功能从简单到复杂不等。令牌必须具有认证,以表明其符合各种安全标准,包括政府安全标准、行业安全标准、测试标准以及其他密码学标准。以下是一些令牌的形式。
(1) 断连式令牌。断连式令牌与接入点设备或计算机没有连接。该令牌具有显示屏,用于显示数据或生成的身份验证序列号。该序列号将被填入令牌(验证码)程序界面、计算机或其他待访问设备的字段中。此类令牌是使用最广泛的令牌类型之一。
(2) 连接式令牌。连接式令牌是一种必须连接到待访问设备或计算机的物理令牌。当连接到任何设备或计算机时,该令牌将自动进行身份验证。最常见的物理令牌类型是智能卡和 USB 令牌。
(3) 无接触令牌。无接触令牌与 ConnectedToken 几乎相同。无接触令牌连接到设备或计算机接入点。无接触令牌是与连接式令牌类似,但无接触令牌无需物理连接。一种将无接触令牌连接到任何设备或计算机的方法是使用射频识别(RFID)。
(4) 蓝牙令牌。蓝牙令牌通常与 USB 令牌结合使用;该蓝牙令牌可以在连接或未连接到设备或计算机接入点的状态下工作。使用此令牌进行身份验证时,需确保其距离设备或计算机小于十米。当蓝牙模式无法工作时,则必须通过 USB 连接令牌。使用此令牌的优点是能够在一定距离内(小于十米)注销。
(5) GSM 手机令牌。GSM 手机令牌是指将支持 GSM 的手机作为令牌使用。使用此令牌的方法是在手机上安装一个令牌程序(Java)。另一种方法是通过短信、电话通话以及互联网协议(HTTP/HTTPS)实现。还有一种称为移动设备令牌的令牌,移动设备令牌与 GSM 手机令牌几乎相同。
3. 动态规则加密
动态规则加密(DRE)是一种使用对称密钥[10]的对称分组密码。DRE 的分组大小为 512 位,密钥长度为 128 位。在 DRE 中,对明文执行 6 个步骤,即:(1) 模式矩阵生成[11] (2) 替换[12] (3) 按行和列循环移位[13] (4) 转置[12] (5) 与常数的矩阵乘法[12],以及 (6) 添加轮密钥[12]。
替换、循环移位和转置阶段用于实现混淆和扩散。混淆的作用是在密钥错位或不可见时,建立密文与密钥之间的关联。混淆是一种非线性函数[12]。扩散使得明文与密文之间的关联缺失或不可见[12]。通过使用扩散,该代码将难以通过统计方法破解。
在 DRE 中,步骤的顺序可能会随时间而变化。图4是这些阶段的一个示例。而在其他时候,步骤的顺序则如图5所示。阶跃变化如图4和图5所示,仅作为一个示例。DRE 具有序列模式变化。此外,
DRE 包含可能随时间变化的元素或变量,即:
(1) 矩阵的排列模式输入
(2) 替换后的矩阵元素
(3) 行和列的移动及移位操作的量
(4) 常数矩阵,以及
(5) 用于轮密钥阶段的主密钥以进行轮密钥加
3.1. 加密过程
以下是关于加密过程的说明。
(1) 矩阵模式形成 。在此级别,DRE 的输入将被分割成多个部分,并通过一种模式进行组合。矩阵输入的排列模式随时间变化。图6和图7提供了矩阵模式变化的一个示例。图6显示了一种矩阵模式,其中矩阵由六个不同颜色的部分组成。当时间变化时,图6中的矩阵将转变为图7中的矩阵。我们可以看到,矩阵模式随时间发生了变化。
(2) 替换 。在此阶段,矩阵中的字节元素根据查找表被替换为其他值。需要替换的矩阵元素数量多达 48 个字节元素。字节替换矩阵元素由比特模式确定。假设字节矩阵元素中的位为 b7、b6、b5、b4、b3、b2、b1 和 b0,其中 b0=为最低有效位,b7=为最高有效位。通过按照 b7、b2、b3、b4、b5、b6、b1 和 b0 的比特模式改变字节中位的顺序来确定成对替换。字节矩阵元素的替换按字节的半字节进行;即 b7、b3、b5 和 b1 称为半字节 1,b2、b4、b6 和 b0 称为半字节 2。替换通过查阅查找表完成。表1是半字节 1(上)和半字节 2(下)的查找表。接下来在表2中给出了替换矩阵元素的一个示例。
(3) 按行和列循环移位 。在此阶段,矩阵中的字节元素将在行和/或列中进行移动。被移动的行和列的位置以及每次移动的量可以随时间而变化。这种移动也可以称为旋转。以下是 4 × 4 矩阵循环移位的一个示例。公式(1) 是行循环移位的示例,其移动量如表3所示,而 (2) 是一个示例列循环移位的示例,其移动量如表4所示。
行循环滑动的示例
$$
\begin{bmatrix}
01100011 & 10100101 & 01000100 & 00001000 \
00000000 & 01100100 & 00110104 & 10000100 \
00101011 & 01011000 & 00100001 & 01011111 \
00110000 & 00000105 & 11111100 & 00010011 \
\end{bmatrix}
\downarrow
\begin{bmatrix}
01100011 & 10100101 & 01000100 & 00001000 \
01100100 & 00110104 & 10000100 & 00000000 \
00100001 & 01011111 & 00101011 & 01011000 \
00010011 & 00110000 & 00000105 & 11111100 \
\end{bmatrix}
$$
(1)
(4) Transpose 。此阶段为矩阵转置操作。一个矩阵的转置是将原矩阵的列变为行所得到的新矩阵。公式(3) 是对 4 × 4 matrix 进行矩阵转置操作的一个示例。
4 × 4 矩阵转置的示例
$$
\begin{bmatrix}
\text{byte } 0 & \text{byte } 1 & \text{byte } 2 & \text{byte } 3 \
\text{byte } 4 & \text{byte } 5 & \text{byte } 6 & \text{byte } 7 \
\text{byte } 8 & \text{byte } 9 & \text{byte } 10 & \text{byte } 11 \
\text{byte } 12 & \text{byte } 13 & \text{byte } 14 & \text{byte } 15 \
\end{bmatrix}
\downarrow
\begin{bmatrix}
\text{byte } 0 & \text{byte } 4 & \text{byte } 8 & \text{byte } 12 \
\text{byte } 1 & \text{byte } 5 & \text{byte } 9 & \text{byte } 13 \
\text{byte } 2 & \text{byte } 6 & \text{byte } 10 & \text{byte } 14 \
\text{byte } 3 & \text{byte } 7 & \text{byte } 11 & \text{byte } 15 \
\end{bmatrix}
$$
(3)
(5) 与常数的矩阵乘法 。在此阶段,输入矩阵与一个常数元素矩阵相乘。该矩阵元素以半字节格式相乘。作为乘数的矩阵常数可根据时间变化。矩阵与常数矩阵的乘法在伽罗瓦域 GF(2^4) 中进行。公式(4) 是 GF(2^4) 中一个常数矩阵的示例。
GF(2^4) 中的常数矩阵示例
$$
\begin{bmatrix}
3 & 4 & 5 & 6 & 2 & 2 & 2 & 2 \
2 & 3 & 4 & 5 & 6 & 2 & 2 & 2 \
2 & 2 & 3 & 4 & 5 & 6 & 2 & 2 \
2 & 2 & 2 & 3 & 4 & 5 & 6 & 2 \
2 & 2 & 2 & 2 & 3 & 4 & 5 & 6 \
6 & 2 & 2 & 2 & 2 & 3 & 4 & 5 \
5 & 6 & 2 & 2 & 2 & 2 & 3 & 4 \
4 & 5 & 6 & 2 & 2 & 2 & 2 & 3 \
\end{bmatrix}
$$
(4)
(6) 添加轮密钥 。在添加轮密钥操作中,矩阵元素通过按位异或与轮密钥的一个块进行组合。使用 128 位主密钥,主密钥将被扩展以生成 512 位子密钥。在构建子密钥时,该过程涉及包含主密钥和模 255 迭代的辅助矩阵 M。公式(5) 是由主密钥 4C, 69, 66, 65, 27, 73, 20, 62, 65, 61, 75, 74, 69, 66, 75 和 6C 生成的矩阵 M,其中图8是将 128 位主密钥扩展为 512 位子密钥的算法。
M 矩阵
$$
\begin{bmatrix}
76 & 77 & 78 & \cdot & \cdot & \cdot & \cdot & \cdot \
105 & 106 & 107 & \cdot & \cdot & \cdot & \cdot & \cdot \
102 & 103 & 104 & \cdot & \cdot & \cdot & \cdot & \cdot \
101 & 102 & 103 & \cdot & \cdot & \cdot & \cdot & \cdot \
39 & 40 & 41 & \cdot & \cdot & \cdot & \cdot & \cdot \
115 & 116 & 117 & \cdot & \cdot & \cdot & \cdot & \cdot \
32 & 33 & 34 & \cdot & \cdot & \cdot & \cdot & \cdot \
98 & 99 & 100 & \cdot & \cdot & \cdot & \cdot & \cdot \
101 & 102 & 103 & \cdot & \cdot & \cdot & \cdot & \cdot \
97 & 98 & 99 & \cdot & \cdot & \cdot & \cdot & \cdot \
117 & 118 & 119 & \cdot & \cdot & \cdot & \cdot & \cdot \
116 & 117 & 118 & \cdot & \cdot & \cdot & \cdot & \cdot \
105 & 106 & 107 & \cdot & \cdot & \cdot & \cdot & \cdot \
102 & 103 & 104 & \cdot & \cdot & \cdot & \cdot & \cdot \
118 & 119 & 120 & \cdot & \cdot & \cdot & \cdot & \cdot \
108 & 109 & 110 & \cdot & \cdot & \cdot & \cdot & \cdot \
\end{bmatrix}
$$
(5)
表1:替换查找表。
| 输入 | 输出 |
|---|---|
| 半字节1 | |
| 0000 | 0111 |
| 0001 | 1110 |
| 0010 | 0100 |
| 0011 | 1101 |
| 0100 | 0001 |
| 0101 | 0010 |
| 0110 | 1111 |
| 0111 | 1011 |
| 1000 | 0011 |
| 1001 | 1010 |
| 1010 | 1000 |
| 1011 | 0110 |
| 1100 | 0101 |
| 1101 | 1100 |
| 1110 | 1001 |
| 1111 | 0000 |
| 半字节2 | |
| 0000 | 1101 |
| 0001 | 1111 |
| 0010 | 1100 |
| 0011 | 1000 |
| 0100 | 0010 |
| 0101 | 0100 |
| 0110 | 1001 |
| 0111 | 0001 |
| 1000 | 0111 |
| 1001 | 0101 |
| 1010 | 1011 |
| 1011 | 0011 |
| 1100 | 1110 |
| 1101 | 1010 |
| 1110 | 0000 |
| 1111 | 0110 |
表2:矩阵元素替换示例。
| 输入 | 模式 | 输出 |
|---|---|---|
| 半字节2 (b7 b3 b5 b1) | 半字节1 (b6 b2 b4 b0) | |
| 1000 1001 | 1100 0001 | 1110 1110 |
| 0110 0010 | 0011 1000 | 1000 0011 |
| 0110 0101 | 0010 1101 | 1100 1100 |
| 1000 0011 | 1001 0001 | 0101 1110 |
表3:行循环左移示例。
| Row | 1 | 2 | 3 | 4 |
|---|---|---|---|---|
| 向左循环移动次数 | 0 | 1 | 2 | 3 |
表4:列循环移位的示例。
| 列 | 1 | 2 | 3 | 4 |
|---|---|---|---|---|
| 向上循环移位次数 | 0 | 1 | 2 | 3 |
| 列循环滑动的示例 | ||||
| $$ | ||||
| \begin{bmatrix} | ||||
| 01100011 & 10100101 & 01000100 & 00001000 \ | ||||
| 01100100 & 00110100 & 10000100 & 00000000 \ | ||||
| 00100001 & 01011111 & 00101011 & 01011000 \ | ||||
| 00010011 & 00110000 & 00000101 & 11111100 \ | ||||
| \end{bmatrix} | ||||
| \downarrow | ||||
| \begin{bmatrix} | ||||
| 01100011 & 00110100 & 00101011 & 11111100 \ | ||||
| 01100100 & 01011111 & 00000101 & 00001000 \ | ||||
| 00100001 & 00110000 & 01000100 & 00000000 \ | ||||
| 00010011 & 10100101 & 10000100 & 01011000 \ | ||||
| \end{bmatrix} | ||||
| $$ | ||||
| (2) |
3.2. 过程描述
以下是关于该过程的说明。
(1) 逆替换 。此阶段是替换的逆过程。逆替换通过使用逆替换查找表来完成。确定逆替换的规则与加密替换阶段的现有规则完全对应。字节替换矩阵元素通过查阅如表5所示的逆替换查找表来实现。
(2) 行列逆循环移位 。此阶段与编码过程中按行和列的循环移位相反。移位的幅度和方向与加密过程中的移位相反。
(3) 常数矩阵逆乘法 。此阶段是加密过程中与常数的矩阵乘法的逆运算。在 GF(2⁴) 中执行矩阵与常数矩阵的逆乘法。
(4) 逆转置 。逆转置等于逆的转置。为了返回到原始状态矩阵,需要再次进行转置。
(5) 逆轮密钥加 。此阶段是加密过程中轮密钥加的逆过程。矩阵元素将执行与该阶段相同的异或操作,但采用加密子密钥逆序调度。从主密钥生成子密钥的过程与加密阶段相同。
随后,密文经过五个解密阶段,转换为明文,所得数据可由移动支付应用使用。解密阶段的数量少于加密阶段,因为在解密过程中不存在矩阵模式形成。完成解密后,移动支付应用可以检索以矩阵模式存储的数据所在位置的所需数据。
3.3. DRE 作为令牌
DRE 的目的是保护在移动应用程序中进行支付交易时交换的数据。在移动支付应用中,DRE 不仅作为加密数据的 DRE 加密算法,还充当令牌。该令牌将确保交易从开始到交易最终阶段的有效性。由于离线交易极易受到欺诈(使用假体设备或未注册设备的交易)、中间人攻击或其他攻击,DRE 凭借其令牌功能,适用于具有离线交易模式的移动支付应用。
生成的令牌包含有关用户设备的信息,包括国际移动设备识别码和国际移动用户识别码。此外,根据需要还可能包含时间信息、用户账户、交易数据及其他信息。用于生成令牌的 DRE 规则会随时间变化,这些规则存储在 DRE 数据库中。本研究中用于生成令牌的时间段是基于年中的日期顺序。图9展示了作为令牌的 DRE 的框图。
DRE 对通过移动应用程序进行的支付交易执行的安全或身份验证过程如下。
(1) 交易开始时,将进行交易的两个设备会生成令牌。
(2) 随后,付款人与商户(被支付受益人)之间交换令牌。在数据交换时,除发送的令牌外,还包括国际移动设备识别码和国际移动用户识别码在内的设备信息也会以未加密形式发送。
(3) 每台设备将在移动支付应用中,通过使用 DRE 数据库中的现有规则解密给定的令牌来进行检查。商户令牌将在付款人设备上被解密,以便付款人将获取商户设备的国际移动设备识别码和国际移动用户识别码,以及其他数据。付款人的令牌将在商户设备上被解密,从而使付款人获取付款人设备的国际移动设备识别码和国际移动用户识别码,以及其他数据。
(4) 在令牌解密后,将对解密得到的国际移动设备识别码和国际移动用户识别码与以未加密格式(明文)发送的国际移动设备识别码和国际移动用户识别码进行比较。如果被解密结果中的国际移动设备识别码和国际移动用户识别码与以明文格式发送的国际移动设备识别码和国际移动用户识别码相同,则该对应设备为有效的交易设备。
令牌将在两台设备之间传输数据时始终进行交换。因此,在交易发生时可以防止第三方设备的欺诈行为。
4. 实现与测试
4.1. 实现
距离(汉明距离)是指两个词之间不同比特的个数(此处指两个码字之间的距离)。两个码字之间可达到的最大距离为一个码字总长度的一半。
这里使用距离度量来最大化明文与密文之间的差异。最大差异为明文长度的一半,因为在二进制中 100% 的差异意味着与明文相同(所有位都翻转)。
为了生成密文,使其距离接近明文长度的一半,需要使用选举规则。这也是为了确保加密和解密过程正常工作。这些规则由模式生成器生成。模式生成器通过使用随机函数,从给定的多种规则中随机选择模式。以下是随机选择的规则。
(1) 矩阵的排列模式输入
(2) 替换后的矩阵元素
(3) 行和列的移动及移位操作的量
(4) 常数矩阵,以及
(5) 用于轮密钥加阶段的主密钥
明文的输入位置是从可能性中随机选择的。在此阶段,对规则的选择没有特定标准。对于循环移位,已选择范围尺度为 0–7 并带有随机偏移。被移动的行或列从所有可能性中随机选择。对于矩阵与常数的乘法,常数从 1–15 范围内的取值中选取。常数不能为 0,以便被解密。在 GF(2⁴) 中进行乘法时,常数也不能超过 15。
使用和不使用随机函数进行规则选择,将导致输入与输出之间的距离存在差异;这种选择方式可能会影响 DRE 的性能。表6展示了使用和不使用随机函数进行规则选择时,输入与输出之间 10 组数据对比结果。所使用的数据为 512 位。
如表6所示,通过使用随机函数,生成的距离将趋向于接近输入长度的一半,即接近 256 位。这是因为使用随机函数时,规则选项会被均匀选择,换句话说,不会偏向某些特定的规则选项。随着所选规则选项的普遍性增加,生成的规则组合将具有良好的多样性,从而使生成的距离接近最佳值。
在[15–17]中已开展了关于加密环境下汉明距离计算的研究。此处,在结果的最大汉明距离中采用了 DRE。
4.2. 距离测试
本研究中的 DRE 测试通过进行五百次测试来完成。每次测试的输入数据都不同。其中一种输入数据是时间戳。作为输入的时间戳是每隔三十秒存在差异的时间戳。累积时间戳是每隔三十秒累积一次的时间戳,而非累积时间戳则是与三十分前的时间戳的差值。
表7给出了 DRE 距离测试的结果。
这些实验中 DRE 的输入是大小为 512 位(包含盐值)的数据(码字),然后是最优的输入与输出码字之间的距离为 256 位。通过上述测试结果可以看出,DRE 具有出色的保护能力。在整个操作或阶段中,DRE 操作产生的输入与输出码字之间的平均距离约为 256 位。
输出与其他输出码字之间在输入存在微小差异时的距离测试也可以反映密码强度的水平。如果输出之间的距离接近码字长度的一半,则加密生成的码字具有更优的配置。在整个操作中,DRE 能够产生的输出间平均距离约为 258 位。
加密过程中对码字差异贡献最大的操作或阶段是替换操作。替换操作的平均距离约为 262 位。
4.3. 时间测试
时间测试可以表示加密算法在设备或操作系统上运行的权重。以下是加密和解密的时间测试结果。测试使用 Google Nexus S 智能手机进行,重复多达一千次。本测试还使用了 Sony Xperia SK17i 智能手机作为对比。表8是时间测试的结果。
从结果来看,可以得出结论:DRE 在包括智能手机在内的移动设备上运行时并不繁重。这一点通过使用 Sony Xperia SK17i 设备进行的对比测试结果得到了进一步证实。在 Sony Xperia SK17i 设备上,DRE 的加密和解密仅需约 18 毫秒。
测试结果还与高级加密标准(AES)加密[18]的时间进行了比较。两次测试均使用 Google Nexus S 进行了一千次实验。表9给出了 DRE 与 AES 的对比测试时间结果。
与高级加密标准的速度相比,DRE 要慢得多。使用 Google Nexus S 时,执行高级加密标准加密所需的时间为 0.62 毫秒,而解密高级加密标准所需的时间为 1.15 毫秒。DRE 在速度上落后于高级加密标准的原因在于,高级加密标准函数是用原生(C/C++)编程语言设计的,因此在内存访问以及整数和浮点运算方面能够更快地执行。而 DRE 进程是使用 Android 编程语言[19, 20]设计和实现的。
5. 结论
动态规则加密(DRE)算法被设计为移动支付应用的一种安全组件。本文中,DRE 用于在交易过程中保护敏感数据以及认证令牌。
根据本研究中进行的距离测试,DRE 具有较高的安全级别,因为输入和输出码字之间的平均汉明距离约为输入数据长度的一半。因此,从密文追溯明文将非常困难。根据测试时间结果,DRE 在移动设备上的使用较为轻量,因为其执行时间合理,不低于 24 ms。
表6:使用与不使用随机函数之间的距离比较。
| 编号 | 输入与输出之间的距离 不使用随机函数 | 规则选择与随机函数 |
|---|---|---|
| 1 | 271 | 243 |
| 2 | 265 | 252 |
| 3 | 267 | 264 |
| 4 | 267 | 236 |
| 5 | 279 | 237 |
| 6 | 280 | 254 |
| 7 | 272 | 264 |
| 8 | 270 | 264 |
| 9 | 272 | 259 |
| 10 | 273 | 261 |
| 平均值 | 271.6 | 253.4 |
表7:距离测试结果。
| 测试 | 到输入的平均距离 | 到前一输出的平均距离 |
|---|---|---|
| 使用所有阶段(每30秒) | 253.016 | 244.84 |
| 使用所有阶段(每30秒累积) | 253.016 | 257.55 |
| 替换阶段 | 262.064 | 175.73 |
| 行循环滑动阶段 | 96.108 | 120.014 |
| 列循环滑动阶段 | 179.196 | 169.136 |
| 转置阶段 | 191.454 | 123.558 |
| 在 GF(2⁴) 中的乘法阶段 | 164.148 | 143.326 |
| 添加轮密钥阶段 | 227.656 | 156.298 |
表8:时间测试结果。
| 设备 | 加密平均时间(毫秒) | 解密时间平均值(毫秒) |
|---|---|---|
| Google Nexus S | 19.537 | 23.519 |
| Xperia SK17i | 18.262 | 18.428 |
表9:DRE 和 AES 的平均时间。
| 密码 | 加密时间平均值 (ms) | 解密时间平均值 (ms) |
|---|---|---|
| DRE | 19.537 | 23.519 |
| AES | 0.62 | 1.147 |
4879

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



