python thales hsm 模拟器
项目描述
# pythales
[Thales HSM](https://en.wikipedia.org/wiki/Hardware_security_module)硬件安全模块)模拟器的原始实现。仅实现基本(最流行的)HSM 命令:
- A0 - 生成密钥
- BU - 生成密钥检查值
- CA - 将 PIN 从 TPK 转换为 ZPK
- CY - 验证 CVV/CSC
- DC - 验证 PIN
- EC - 使用 ABA PVV 方法验证交换 PIN
- FA - 将 ZPK 从 ZMK 转换为 LMK
- HC - 生成 TMK、TPK 或 PVK
- NC - 诊断信息
## 安装
安装 git 和 python3:
```bash
apt-get install git python3 python3-pip
```
为 python3 设置虚拟环境(查看 [手册](https://virtualenvwrapper.readthedocs.io/en/latest/)):
```bash
mkvirtualenv pyenv -p /usr/bin/python3
workon pyenv
```
查看代码和安装要求:
```bash
git clone https://github.com/timgabets/pythales
cd pythales
workon pyenv
pip3 install -r requirements.txt
```
运行:
```bash
cd examples/
./hsm_server。 py --help # 检查选项
./hsm_server.py -h SSSS -d --skip-parity
```
输出示例:
```
# ./hsm_server.py -h SSSS -d --skip-parity
LMK: DEAFBEEDEAFBEEDEAFBEEDEAFBEEDEAF
固件版本:0007-E000
消息头:SSSS
Listening on port 1500
Connected client: 192.168.56.101:50010
17:59:49.278803 << 8 bytes received from 192.168.56.101:50010:
00 06 53 53 53 53 4e 43 ..SS
17:59:49.279338 >> 35 字节发送到 192.168.56.101:50010:
00 21 53 53 53 53 4e 44 30 30 46 34 45 44 43 38 .!SSSSND00F4EDC8
44 45 42 4 30 37 38 46 3 36 2d 45 DEB67F6E280007-E
30 30 30 000
[响应代码]:[ND]
[错误代码]:[00]
[LMK校验值]:[F4EDC8DEB67F6E28]
[固件版本]:[0007-E000]
18:01:13.089485 << 108 bytes received from 192.168.56.101:50010:
00 6a 53 53 53 53 44 43 55 43 34 45 44 35 39 37 .jSSSSDCUC4ED597
45 45 30 43 39 36 39 37 31 30 34 45 44 33 39 39 EE0C9697104ED399
42 45 36 46 38 42 38 38 37 37 37 37 37 33 33 33 36 36 44 35 30 BE6F8B8B87273336D50
43 34 34 34 37 31 32 38 31 38 44 37 37 37 37
31 36 32 CB2C6461B793AE62
44 46 43 38 44 32 34 32 36 30 31 34 30 37 30 30 DFC8D24260140700
30 30 30 30 30 31 30 31 33 38 34 33 000001013843
[TPK ]: [UC4ED597EE0C9697104ED399BE6F8B872]
[PVK Pair ]: [7336D50C47128D710DF450BCB2C6461B]
[PIN 块]:[793AE62DFC8D2426]
[PIN 块格式代码]:[01]
[帐号]:[407000000010]
[PVKI]:[1]
[PVV]:[3843]
调试:解密的 pin 块:0412748FFFFFFFEF
18:01: 13.090230 >> 10 个字节发送到 192.168.56.101:50010:
00 08 53 53 53 53 44 44 30 30 ..SSSSDD00
[响应代码]: [DD]
[错误代码]: [00]
18:01:13.104389 << 68 bytes received from 192.168.56.101:50010:
00 42 53 53 53 53 43 59 55 31 43 31 45 42 31 30 .BSSSSCYU1C1EB10
39 30 36 38 31 43 43 39 45 36 30 30 33 45 30 35 90681CC9E6003E05
32 31 37 43 37 30 37 37 45 36 34 30 34 31 37 34 217C7077E6404174
30 37 30 30 30 30 30 31 31 31 34 31 0700000004; 171
32 32 30 31 2201
[CVK]:[U1C1EB1090681CC9E6003E05217C7077E] [ CVV
] ]: [1712] [服务代码]: [201] 18:01:13.104979 >> 10 个字节发送到 192.168.56.101:50010: 00 08 53 53 53 53 43 5a 30 30 ..SSSSCZ00 [响应代码]: [CZ ] [错误代码]: [00] ```
您还可以查看 [examples](https://github.com/timgabets/pythales/tree/master/examples) 以获得更复杂的 HSM 服务器实现,其中包含命令行选项解析等一些功能。该应用程序可以同时作为服务器工作只服务一个连接的客户端。
[Thales HSM](https://en.wikipedia.org/wiki/Hardware_security_module)硬件安全模块)模拟器的原始实现。仅实现基本(最流行的)HSM 命令:
- A0 - 生成密钥
- BU - 生成密钥检查值
- CA - 将 PIN 从 TPK 转换为 ZPK
- CY - 验证 CVV/CSC
- DC - 验证 PIN
- EC - 使用 ABA PVV 方法验证交换 PIN
- FA - 将 ZPK 从 ZMK 转换为 LMK
- HC - 生成 TMK、TPK 或 PVK
- NC - 诊断信息
## 安装
安装 git 和 python3:
```bash
apt-get install git python3 python3-pip
```
为 python3 设置虚拟环境(查看 [手册](https://virtualenvwrapper.readthedocs.io/en/latest/)):
```bash
mkvirtualenv pyenv -p /usr/bin/python3
workon pyenv
```
查看代码和安装要求:
```bash
git clone https://github.com/timgabets/pythales
cd pythales
workon pyenv
pip3 install -r requirements.txt
```
运行:
```bash
cd examples/
./hsm_server。 py --help # 检查选项
./hsm_server.py -h SSSS -d --skip-parity
```
输出示例:
```
# ./hsm_server.py -h SSSS -d --skip-parity
LMK: DEAFBEEDEAFBEEDEAFBEEDEAFBEEDEAF
固件版本:0007-E000
消息头:SSSS
Listening on port 1500
Connected client: 192.168.56.101:50010
17:59:49.278803 << 8 bytes received from 192.168.56.101:50010:
00 06 53 53 53 53 4e 43 ..SS
17:59:49.279338 >> 35 字节发送到 192.168.56.101:50010:
00 21 53 53 53 53 4e 44 30 30 46 34 45 44 43 38 .!SSSSND00F4EDC8
44 45 42 4 30 37 38 46 3 36 2d 45 DEB67F6E280007-E
30 30 30 000
[响应代码]:[ND]
[错误代码]:[00]
[LMK校验值]:[F4EDC8DEB67F6E28]
[固件版本]:[0007-E000]
18:01:13.089485 << 108 bytes received from 192.168.56.101:50010:
00 6a 53 53 53 53 44 43 55 43 34 45 44 35 39 37 .jSSSSDCUC4ED597
45 45 30 43 39 36 39 37 31 30 34 45 44 33 39 39 EE0C9697104ED399
42 45 36 46 38 42 38 38 37 37 37 37 37 33 33 33 36 36 44 35 30 BE6F8B8B87273336D50
43 34 34 34 37 31 32 38 31 38 44 37 37 37 37
31 36 32 CB2C6461B793AE62
44 46 43 38 44 32 34 32 36 30 31 34 30 37 30 30 DFC8D24260140700
30 30 30 30 30 31 30 31 33 38 34 33 000001013843
[TPK ]: [UC4ED597EE0C9697104ED399BE6F8B872]
[PVK Pair ]: [7336D50C47128D710DF450BCB2C6461B]
[PIN 块]:[793AE62DFC8D2426]
[PIN 块格式代码]:[01]
[帐号]:[407000000010]
[PVKI]:[1]
[PVV]:[3843]
调试:解密的 pin 块:0412748FFFFFFFEF
18:01: 13.090230 >> 10 个字节发送到 192.168.56.101:50010:
00 08 53 53 53 53 44 44 30 30 ..SSSSDD00
[响应代码]: [DD]
[错误代码]: [00]
18:01:13.104389 << 68 bytes received from 192.168.56.101:50010:
00 42 53 53 53 53 43 59 55 31 43 31 45 42 31 30 .BSSSSCYU1C1EB10
39 30 36 38 31 43 43 39 45 36 30 30 33 45 30 35 90681CC9E6003E05
32 31 37 43 37 30 37 37 45 36 34 30 34 31 37 34 217C7077E6404174
30 37 30 30 30 30 30 31 31 31 34 31 0700000004; 171
32 32 30 31 2201
[CVK]:[U1C1EB1090681CC9E6003E05217C7077E] [ CVV
] ]: [1712] [服务代码]: [201] 18:01:13.104979 >> 10 个字节发送到 192.168.56.101:50010: 00 08 53 53 53 53 43 5a 30 30 ..SSSSCZ00 [响应代码]: [CZ ] [错误代码]: [00] ```
您还可以查看 [examples](https://github.com/timgabets/pythales/tree/master/examples) 以获得更复杂的 HSM 服务器实现,其中包含命令行选项解析等一些功能。该应用程序可以同时作为服务器工作只服务一个连接的客户端。