Softhsm储存安全数据性能整理

罪恶克星  论坛元老 | 2025-2-12 22:50:42 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1010|帖子 1010|积分 3030

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
目标:存储百万条数据对象
测试方案一:总大小2GB,每个数据对象大小约512KB,总条数4096条;
测试方案一:总大小2GB,每个数据对象大小约256B,总条数8388608条;

测试环境:启动SQLite3
设置CMakeLists.txt,打开所有SQLite3相干宏开关
  1. option(WITH_OBJECTSTORE_BACKEND_DB "Build with object store backend database (SQLite3)" ON)
  2. option(WITH_MIGRATE "Build migration tool. Requires SQLit3." ON)
  3. set(DEFAULT_OBJECTSTORE_BACKEND "db" CACHE STRING "Default storage backend for token objects")
复制代码
修改设置文件,原始文件为softhms/src/lib/common/softhsm2.conf.5.in,构建完成后位于/etc/softhsm.conf,默认file改为db
  1. directories.tokendir = @softhsmtokendir@
  2. objectstore.backend = db
  3. objectstore.umask = 0077
复制代码
至此创建的token和各类对象将存储到设置路径下的sqlite3.db中
测试脚本:write_objects.sh
  1. #!/bin/bash
  2. # SoftHSM 配置
  3. SOFTHSM_MODULE="/home/ubuntu/Documents/HSM/20250106/SoftHSMv2_bgk/build/src/lib/libsofthsm2.so"  # SoftHSM 模块路径
  4. TOKEN_DIR="/var/lib/softhsm/tokens/"              # Token 目录
  5. SLOT=0                                           # Slot 编号
  6. PIN="1234"                                       # Token PIN
  7. LABEL_PREFIX="DataObject"                        # 数据对象标签前缀
  8. DATA_SIZE=64                                     # 每个数据对象的大小(字节)
  9. # 检查 SoftHSM 模块是否存在
  10. if [ ! -f "$SOFTHSM_MODULE" ]; then
  11.     echo "SoftHSM 模块未找到: $SOFTHSM_MODULE"
  12.     exit 1
  13. fi
  14. # 检查 Token 目录是否存在
  15. if [ ! -d "$TOKEN_DIR" ]; then
  16.     echo "Token 目录未找到: $TOKEN_DIR"
  17.     exit 1
  18. fi
  19. # 初始化计数器
  20. COUNTER=1
  21. MAX_COUNT=10
  22. # 循环写入数据对象
  23. while [ $COUNTER -le $MAX_COUNT ]; do
  24.     # 生成随机数据
  25.     DATA=$(openssl rand -hex $DATA_SIZE)
  26.     # 生成唯一的标签和 ID
  27.     LABEL="${LABEL_PREFIX}_${COUNTER}"
  28.     ID=$(printf "%04x" $COUNTER)
  29.     # 写入数据对象
  30.     echo "$DATA" > /tmp/data.bin
  31.    
  32.     START_TIME=$(date +%s%3N)
  33.      ./pkcs11-tool --module "$SOFTHSM_MODULE" --login --pin "$PIN" --write-object /tmp/data.bin --type data --id "$ID" --label "$LABEL"
  34.      END_TIME=$(date +%s%3N)
  35.      
  36.      DIFF=$((END_TIME - START_TIME))
  37.      
  38.      DIFF=$((END_TIME - START_TIME))
  39.      if [ $DIFF -lt 0 ]; then
  40.         DIFF=$((START_TIME - END_TIME))
  41.     fi
  42.     echo "Execute Time: ${DIFF} ms"
  43.     # 检查是否成功
  44.     if [ $? -eq 0 ]; then
  45.         echo "已写入数据对象: ID=$ID, 标签=$LABEL"
  46.     else
  47.         echo "写入数据对象失败: ID=$ID, 标签=$LABEL"
  48.         exit 1
  49.     fi
  50.     # 增加计数器
  51.     COUNTER=$((COUNTER + 1))
  52. done
  53. echo "已完成写入 $MAX_COUNT 个数据对象。"
复制代码
测试性能(数据块大小512KB,初始数据库为空,连续存入100次,性能衰减非常严重):
  1. Created Data Object:
  2. Data object 2
  3.   label:          'DataObject_1'
  4.   application:    ''
  5.   app_id:         <empty>
  6.   flags:           modifiable
  7.   uri:            pkcs11:model=SoftHSM%20v2;manufacturer=SoftHSM%20project;serial=426447c3de082349;token=SQLite3Token;object=DataObject_1;type=data
  8. Execute Time: 15 ms
  9. 已写入数据对象: ID=0001, 标签=DataObject_1
  10. Created Data Object:
  11. Data object 2
  12.   label:          'DataObject_2'
  13.   application:    ''
  14.   app_id:         <empty>
  15.   flags:           modifiable
  16.   uri:            pkcs11:model=SoftHSM%20v2;manufacturer=SoftHSM%20project;serial=426447c3de082349;token=SQLite3Token;object=DataObject_2;type=data
  17. Execute Time: 17 ms
  18. 已写入数据对象: ID=0002, 标签=DataObject_2
  19. Created Data Object:
  20. Data object 2
  21.   label:          'DataObject_3'
  22.   application:    ''
  23.   app_id:         <empty>
  24.   flags:           modifiable
  25.   uri:            pkcs11:model=SoftHSM%20v2;manufacturer=SoftHSM%20project;serial=426447c3de082349;token=SQLite3Token;object=DataObject_3;type=data
  26. Execute Time: 17 ms
  27. 已写入数据对象: ID=0003, 标签=DataObject_3
  28. ...
  29. ...
  30. ...
  31. Created Data Object:
  32. Data object 2
  33.   label:          'DataObject_98'
  34.   application:    ''
  35.   app_id:         <empty>
  36.   flags:           modifiable
  37.   uri:            pkcs11:model=SoftHSM%20v2;manufacturer=SoftHSM%20project;serial=426447c3de082349;token=SQLite3Token;object=DataObject_98;type=data
  38. Execute Time: 224 ms
  39. 已写入数据对象: ID=0062, 标签=DataObject_98
  40. Created Data Object:
  41. Data object 2
  42.   label:          'DataObject_99'
  43.   application:    ''
  44.   app_id:         <empty>
  45.   flags:           modifiable
  46.   uri:            pkcs11:model=SoftHSM%20v2;manufacturer=SoftHSM%20project;serial=426447c3de082349;token=SQLite3Token;object=DataObject_99;type=data
  47. Execute Time: 233 ms
  48. 已写入数据对象: ID=0063, 标签=DataObject_99
  49. Created Data Object:
  50. Data object 2
  51.   label:          'DataObject_100'
  52.   application:    ''
  53.   app_id:         <empty>
  54.   flags:           modifiable
  55.   uri:            pkcs11:model=SoftHSM%20v2;manufacturer=SoftHSM%20project;serial=426447c3de082349;token=SQLite3Token;object=DataObject_100;type=data
  56. Execute Time: 216 ms
  57. 已写入数据对象: ID=0064, 标签=DataObject_100
  58. 已完成写入 100 个数据对象。
复制代码
测试性能(数据块大小256Bytes,初始数据库为空,连续存入100次,性能衰减不显着):
  1. Created Data Object:
  2. Data object 2
  3.   label:          'DataObject_1'
  4.   application:    ''
  5.   app_id:         <empty>
  6.   flags:           modifiable
  7.   uri:            pkcs11:model=SoftHSM%20v2;manufacturer=SoftHSM%20project;serial=b53fedf69561dfeb;token=SQLite3Token;object=DataObject_1;type=data
  8. Execute Time: 15 ms
  9. 已写入数据对象: ID=0001, 标签=DataObject_1
  10. Using slot 0 with a present token (0x1561dfeb)
  11. Created Data Object:
  12. Data object 2
  13.   label:          'DataObject_2'
  14.   application:    ''
  15.   app_id:         <empty>
  16.   flags:           modifiable
  17.   uri:            pkcs11:model=SoftHSM%20v2;manufacturer=SoftHSM%20project;serial=b53fedf69561dfeb;token=SQLite3Token;object=DataObject_2;type=data
  18. Execute Time: 14 ms
  19. 已写入数据对象: ID=0002, 标签=DataObject_2
  20. Using slot 0 with a present token (0x1561dfeb)
  21. Created Data Object:
  22. Data object 2
  23.   label:          'DataObject_3'
  24.   application:    ''
  25.   app_id:         <empty>
  26.   flags:           modifiable
  27.   uri:            pkcs11:model=SoftHSM%20v2;manufacturer=SoftHSM%20project;serial=b53fedf69561dfeb;token=SQLite3Token;object=DataObject_3;type=data
  28. Execute Time: 14 ms
  29. 已写入数据对象: ID=0003, 标签=DataObject_3
  30. ...
  31. ...
  32. ...
  33. Created Data Object:
  34. Data object 2
  35.   label:          'DataObject_998'
  36.   application:    ''
  37.   app_id:         <empty>
  38.   flags:           modifiable
  39.   uri:            pkcs11:model=SoftHSM%20v2;manufacturer=SoftHSM%20project;serial=b53fedf69561dfeb;token=SQLite3Token;object=DataObject_998;type=data
  40. Execute Time: 18 ms
  41. 已写入数据对象: ID=03e6, 标签=DataObject_998
  42. Using slot 0 with a present token (0x1561dfeb)
  43. Created Data Object:
  44. Data object 2
  45.   label:          'DataObject_999'
  46.   application:    ''
  47.   app_id:         <empty>
  48.   flags:           modifiable
  49.   uri:            pkcs11:model=SoftHSM%20v2;manufacturer=SoftHSM%20project;serial=b53fedf69561dfeb;token=SQLite3Token;object=DataObject_999;type=data
  50. Execute Time: 15 ms
  51. 已写入数据对象: ID=03e7, 标签=DataObject_999
  52. Using slot 0 with a present token (0x1561dfeb)
  53. Created Data Object:
  54. Data object 2
  55.   label:          'DataObject_1000'
  56.   application:    ''
  57.   app_id:         <empty>
  58.   flags:           modifiable
  59.   uri:            pkcs11:model=SoftHSM%20v2;manufacturer=SoftHSM%20project;serial=b53fedf69561dfeb;token=SQLite3Token;object=DataObject_1000;type=data
  60. Execute Time: 16 ms
  61. 已写入数据对象: ID=03e8, 标签=DataObject_1000
  62. 已完成写入 1000 个数据对象。
复制代码
交叉测试(构造初始数据库为200MB,再存入小数据块,测试存储性能):
  1. Using slot 0 with a present token (0x47b89b8b)
  2. Created Data Object:
  3. Data object 2
  4.   label:          'DataObject_1'
  5.   application:    ''
  6.   app_id:         <empty>
  7.   flags:           modifiable
  8.   uri:            pkcs11:model=SoftHSM%20v2;manufacturer=SoftHSM%20project;serial=4c32252ac7b89b8b;token=SQLite3Token;object=DataObject_1;type=data
  9. Execute Time: 64 ms
  10. 已写入数据对象: ID=0001, 标签=DataObject_1
  11. Using slot 0 with a present token (0x47b89b8b)
  12. Created Data Object:
  13. Data object 2
  14.   label:          'DataObject_2'
  15.   application:    ''
  16.   app_id:         <empty>
  17.   flags:           modifiable
  18.   uri:            pkcs11:model=SoftHSM%20v2;manufacturer=SoftHSM%20project;serial=4c32252ac7b89b8b;token=SQLite3Token;object=DataObject_2;type=data
  19. Execute Time: 82 ms
  20. 已写入数据对象: ID=0002, 标签=DataObject_2
  21. ...
  22. ...
  23. ...
  24. Using slot 0 with a present token (0x47b89b8b)
  25. Created Data Object:
  26. Data object 2
  27.   label:          'DataObject_19'
  28.   application:    ''
  29.   app_id:         <empty>
  30.   flags:           modifiable
  31.   uri:            pkcs11:model=SoftHSM%20v2;manufacturer=SoftHSM%20project;serial=4c32252ac7b89b8b;token=SQLite3Token;object=DataObject_19;type=data
  32. Execute Time: 594 ms
  33. 已写入数据对象: ID=0013, 标签=DataObject_19
  34. Using slot 0 with a present token (0x47b89b8b)
  35. Created Data Object:
  36. Data object 2
  37.   label:          'DataObject_20'
  38.   application:    ''
  39.   app_id:         <empty>
  40.   flags:           modifiable
  41.   uri:            pkcs11:model=SoftHSM%20v2;manufacturer=SoftHSM%20project;serial=4c32252ac7b89b8b;token=SQLite3Token;object=DataObject_20;type=data
  42. Execute Time: 627 ms
  43. 已写入数据对象: ID=0014, 标签=DataObject_20
  44. 已完成写入 20 个数据对象。
复制代码
前置条件:构造10MB数据块,连续存入20次,获得196MB的初始数据库大小
  1. ubuntu@ubuntu-vm:/var/lib/softhsm/tokens/30378c01-c782-32c2-4c32-252ac7b89b8b$ ls -lh
  2. total 196M
  3. -rw------- 1 ubuntu ubuntu 196M  2月 11 17:28 sqlite3.db
  4. ubuntu@ubuntu-vm:/var/lib/softhsm/tokens/30378c01-c782-32c2-4c32-252ac7b89b8b$
复制代码
测试性能(构造初始数据库为196MB,数据块大小256Bytes,连续存入3次,性能衰减显着):
  1. Using slot 0 with a present token (0x47b89b8b)
  2. Created Data Object:
  3. Data object 2
  4.   label:          'DataObject_1'
  5.   application:    ''
  6.   app_id:         <empty>
  7.   flags:           modifiable
  8.   uri:            pkcs11:model=SoftHSM%20v2;manufacturer=SoftHSM%20project;serial=4c32252ac7b89b8b;token=SQLite3Token;object=DataObject_1;type=data
  9. Execute Time: 607 ms
  10. 已写入数据对象: ID=0001, 标签=DataObject_1
  11. Using slot 0 with a present token (0x47b89b8b)
  12. Created Data Object:
  13. Data object 2
  14.   label:          'DataObject_2'
  15.   application:    ''
  16.   app_id:         <empty>
  17.   flags:           modifiable
  18.   uri:            pkcs11:model=SoftHSM%20v2;manufacturer=SoftHSM%20project;serial=4c32252ac7b89b8b;token=SQLite3Token;object=DataObject_2;type=data
  19. Execute Time: 607 ms
  20. 已写入数据对象: ID=0002, 标签=DataObject_2
  21. Using slot 0 with a present token (0x47b89b8b)
  22. Created Data Object:
  23. Data object 2
  24.   label:          'DataObject_3'
  25.   application:    ''
  26.   app_id:         <empty>
  27.   flags:           modifiable
  28.   uri:            pkcs11:model=SoftHSM%20v2;manufacturer=SoftHSM%20project;serial=4c32252ac7b89b8b;token=SQLite3Token;object=DataObject_3;type=data
  29. Execute Time: 596 ms
  30. 已写入数据对象: ID=0003, 标签=DataObject_3
  31. 已完成写入 3 个数据对象。
复制代码
测试脚本:read_objects.sh
  1. #!/bin/bash
  2. # SoftHSM 配置
  3. SOFTHSM_MODULE="/home/ubuntu/Documents/HSM/20250106/SoftHSMv2_bgk/build/src/lib/libsofthsm2.so"  # SoftHSM 模块路径
  4. TOKEN_DIR="/var/lib/softhsm/tokens/"              # Token 目录
  5. SLOT=0                                           # Slot 编号
  6. PIN="1234"                                       # Token PIN
  7. LABEL_PREFIX="DataObject"                        # 数据对象标签前缀
  8. DATA_SIZE=128                                # 每个数据对象的大小(字节)
  9. # 检查 SoftHSM 模块是否存在
  10. if [ ! -f "$SOFTHSM_MODULE" ]; then
  11.     echo "SoftHSM 模块未找到: $SOFTHSM_MODULE"
  12.     exit 1
  13. fi
  14. # 检查 Token 目录是否存在
  15. if [ ! -d "$TOKEN_DIR" ]; then
  16.     echo "Token 目录未找到: $TOKEN_DIR"
  17.     exit 1
  18. fi
  19. # 初始化计数器
  20. COUNTER=1
  21. MAX_COUNT=1
  22. # 循环写入数据对象
  23. while [ $COUNTER -le $MAX_COUNT ]; do
  24.     # 生成随机数据
  25.     # DATA=$(openssl rand -hex $DATA_SIZE)
  26.     # 生成唯一的标签和 ID
  27.     # LABEL="${LABEL_PREFIX}_${COUNTER}"
  28.     # ID=$(printf "%04x" $COUNTER)
  29.     # 写入数据对象
  30.     # echo "$DATA" > /tmp/data.bin
  31.    
  32.     START_TIME=$(date +%s%3N)
  33.      ./pkcs11-tool --module "$SOFTHSM_MODULE" --login --pin "$PIN" --read-object --type data --label "DataObject_1" > /dev/null
  34.      END_TIME=$(date +%s%3N)
  35.      
  36.      DIFF=$((END_TIME - START_TIME))
  37.      
  38.      DIFF=$((END_TIME - START_TIME))
  39.      if [ $DIFF -lt 0 ]; then
  40.         DIFF=$((START_TIME - END_TIME))
  41.     fi
  42.     echo "Execute Time: ${DIFF} ms"
  43.     # 检查是否成功
  44.     if [ $? -eq 0 ]; then
  45.         echo "read数据对象: ID=$ID, 标签=$LABEL"
  46.     else
  47.         echo "read数据对象失败: ID=$ID, 标签=$LABEL"
  48.         exit 1
  49.     fi
  50.     # 增加计数器
  51.     COUNTER=$((COUNTER + 1))
  52. done
  53. echo "已完成read $MAX_COUNT 个数据对象。"
复制代码
读安全数据的性能(基于以上已有的196MB的数据库,读取小的数据块,128-256Bytes):
  1. ubuntu@ubuntu-vm:~/Documents/HSM/20250106/OpenSC/out/bin$ ./read_objects.sh
  2. Using slot 0 with a present token (0x47b89b8b)
  3. e4d4dac6f0903e57f7cf925cbb8ad5980452e60358311ac1b139b880d16ba8a96f65dce59ec21cab8658daf567374e10302815253998afe3c606e3c41decc7d6dc4008030dfa15c1d1e356443c43166d17a280ad1e4324d203b0f893f634750838a79cec18bf88bc9ec87867d86bf67a7d8c9d36a223839bbbb92704acd558ee
  4. Execute Time: 1067 ms
  5. read数据对象: ID=, 标签=
  6. 已完成read 1 个数据对象。
  7. ubuntu@ubuntu-vm:~/Documents/HSM/20250106/OpenSC/out/bin$ ./read_objects.sh
  8. Using slot 0 with a present token (0x47b89b8b)
  9. e4d4dac6f0903e57f7cf925cbb8ad5980452e60358311ac1b139b880d16ba8a96f65dce59ec21cab8658daf567374e10302815253998afe3c606e3c41decc7d6dc4008030dfa15c1d1e356443c43166d17a280ad1e4324d203b0f893f634750838a79cec18bf88bc9ec87867d86bf67a7d8c9d36a223839bbbb92704acd558ee
  10. Execute Time: 1064 ms
  11. read数据对象: ID=, 标签=
  12. 已完成read 1 个数据对象。
  13. ubuntu@ubuntu-vm:~/Documents/HSM/20250106/OpenSC/out/bin$ ./read_objects.sh
  14. Using slot 0 with a present token (0x47b89b8b)
  15. e4d4dac6f0903e57f7cf925cbb8ad5980452e60358311ac1b139b880d16ba8a96f65dce59ec21cab8658daf567374e10302815253998afe3c606e3c41decc7d6dc4008030dfa15c1d1e356443c43166d17a280ad1e4324d203b0f893f634750838a79cec18bf88bc9ec87867d86bf67a7d8c9d36a223839bbbb92704acd558ee
  16. Execute Time: 1061 ms
  17. read数据对象: ID=, 标签=
  18. 已完成read 1 个数据对象。
复制代码
结论:Softhsm利用数据库SQLite3存储数据对象的性能与sqlite3.db数据库的大小成反比,与数据条目数量不敏感,不符合数据库插入数据时间相对恒定的规律。
测试环境二:利用本地文件存储形式
  1. option(WITH_OBJECTSTORE_BACKEND_DB "Build with object store backend database (SQLite3)" ON)
  2. option(WITH_MIGRATE "Build migration tool. Requires SQLit3." ON)
  3. set(DEFAULT_OBJECTSTORE_BACKEND "file" CACHE STRING "Default storage backend for token objects")
复制代码
  1. directories.tokendir = @softhsmtokendir@
  2. objectstore.backend = file
  3. objectstore.umask = 0077
复制代码
测试性能(构造10MB数据块,连续存入20次,性能衰减不显着):
  1. Using slot 0 with a present token (0x3bacd06c)
  2. Created Data Object:
  3. Data object 2
  4.   label:          'DataObject_1'
  5.   application:    ''
  6.   app_id:         <empty>
  7.   flags:           modifiable
  8.   uri:            pkcs11:model=SoftHSM%20v2;manufacturer=SoftHSM%20project;serial=f0691d4b3bacd06c;token=FileToken;object=DataObject_SMALL_1;type=data
  9. Execute Time: 47 ms
  10. 已写入数据对象: ID=0001, 标签=DataObject_1
  11. Using slot 0 with a present token (0x3bacd06c)
  12. Created Data Object:
  13. Data object 2
  14.   label:          'DataObject_SMALL_2'
  15.   application:    ''
  16.   app_id:         <empty>
  17.   flags:           modifiable
  18.   uri:            pkcs11:model=SoftHSM%20v2;manufacturer=SoftHSM%20project;serial=f0691d4b3bacd06c;token=FileToken;object=DataObject_SMALL_2;type=data
  19. Execute Time: 66 ms
  20. 已写入数据对象: ID=0002, 标签=DataObject_2
  21. ...
  22. ...
  23. ...
  24. Using slot 0 with a present token (0x3bacd06c)
  25. Created Data Object:
  26. Data object 2
  27.   label:          'DataObject_SMALL_19'
  28.   application:    ''
  29.   app_id:         <empty>
  30.   flags:           modifiable
  31.   uri:            pkcs11:model=SoftHSM%20v2;manufacturer=SoftHSM%20project;serial=f0691d4b3bacd06c;token=FileToken;object=DataObject_SMALL_19;type=data
  32. Execute Time: 158 ms
  33. 已写入数据对象: ID=0013, 标签=DataObject_19
  34. Using slot 0 with a present token (0x3bacd06c)
  35. Created Data Object:
  36. Data object 2
  37.   label:          'DataObject_SMALL_20'
  38.   application:    ''
  39.   app_id:         <empty>
  40.   flags:           modifiable
  41.   uri:            pkcs11:model=SoftHSM%20v2;manufacturer=SoftHSM%20project;serial=f0691d4b3bacd06c;token=FileToken;object=DataObject_SMALL_20;type=data
  42. Execute Time: 188 ms
  43. 已写入数据对象: ID=0014, 标签=DataObject_20
  44. 已完成写入 20 个数据对象。
复制代码
前置条件:构造10MB数据块,连续存入20次,在token目录下获得20个数据块文件
测试性能(数据块大小256Bytes,存入3次,性能衰减不显着,存入时间>=汗青存入时间):
  1. Using slot 0 with a present token (0x3bacd06c)
  2. Created Data Object:
  3. Data object 2
  4.   label:          'DataObject_1'
  5.   application:    ''
  6.   app_id:         <empty>
  7.   flags:           modifiable
  8.   uri:            pkcs11:model=SoftHSM%20v2;manufacturer=SoftHSM%20project;serial=f0691d4b3bacd06c;token=FileToken;object=DataObject_1;type=data
  9. Execute Time: 145 ms
  10. 已写入数据对象: ID=0001, 标签=DataObject_1
  11. Using slot 0 with a present token (0x3bacd06c)
  12. Created Data Object:
  13. Data object 2
  14.   label:          'DataObject_2'
  15.   application:    ''
  16.   app_id:         <empty>
  17.   flags:           modifiable
  18.   uri:            pkcs11:model=SoftHSM%20v2;manufacturer=SoftHSM%20project;serial=f0691d4b3bacd06c;token=FileToken;object=DataObject_2;type=data
  19. Execute Time: 143 ms
  20. 已写入数据对象: ID=0002, 标签=DataObject_2
  21. Using slot 0 with a present token (0x3bacd06c)
  22. Created Data Object:
  23. Data object 2
  24.   label:          'DataObject_3'
  25.   application:    ''
  26.   app_id:         <empty>
  27.   flags:           modifiable
  28.   uri:            pkcs11:model=SoftHSM%20v2;manufacturer=SoftHSM%20project;serial=f0691d4b3bacd06c;token=FileToken;object=DataObject_3;type=data
  29. Execute Time: 148 ms
  30. 已写入数据对象: ID=0003, 标签=DataObject_3
  31. 已完成写入 3 个数据对象。
复制代码
测试性能(读一块数据,块大小5MBytes,读取性能良好):
  1. ubuntu@ubuntu-vm:~/Documents/HSM/20250106/OpenSC/out/bin$ ./read_objects.sh
  2. Using slot 0 with a present token (0x2ed47981)
  3. Execute Time: 146 ms
  4. read数据对象: ID=, 标签=
  5. 已完成read 1 个数据对象。
  6. ubuntu@ubuntu-vm:~/Documents/HSM/20250106/OpenSC/out/bin$
  7. ubuntu@ubuntu-vm:~/Documents/HSM/20250106/OpenSC/out/bin$ ./read_objects.sh
  8. Using slot 0 with a present token (0x2ed47981)
  9. Execute Time: 145 ms
  10. read数据对象: ID=, 标签=
  11. 已完成read 1 个数据对象。
  12. ubuntu@ubuntu-vm:~/Documents/HSM/20250106/OpenSC/out/bin$
复制代码
测试性能(清零token,块大小256Bytes,连续存入1000次,存入性能良好):
  1. Using slot 0 with a present token (0x37a524)
  2. Created Data Object:
  3. Data object 2
  4.   label:          'DataObject_1'
  5.   application:    ''
  6.   app_id:         <empty>
  7.   flags:           modifiable
  8.   uri:            pkcs11:model=SoftHSM%20v2;manufacturer=SoftHSM%20project;serial=70e3fbdc8037a524;token=FileToken;object=DataObject_1;type=data
  9. Execute Time: 7 ms
  10. 已写入数据对象: ID=0001, 标签=DataObject_1
  11. Using slot 0 with a present token (0x37a524)
  12. Created Data Object:
  13. Data object 2
  14.   label:          'DataObject_2'
  15.   application:    ''
  16.   app_id:         <empty>
  17.   flags:           modifiable
  18.   uri:            pkcs11:model=SoftHSM%20v2;manufacturer=SoftHSM%20project;serial=70e3fbdc8037a524;token=FileToken;object=DataObject_2;type=data
  19. Execute Time: 7 ms
  20. 已写入数据对象: ID=0002, 标签=DataObject_2
  21. ...
  22. ...
  23. ...
  24. Using slot 0 with a present token (0x37a524)
  25. Created Data Object:
  26. Data object 2
  27.   label:          'DataObject_999'
  28.   application:    ''
  29.   app_id:         <empty>
  30.   flags:           modifiable
  31.   uri:            pkcs11:model=SoftHSM%20v2;manufacturer=SoftHSM%20project;serial=70e3fbdc8037a524;token=FileToken;object=DataObject_999;type=data
  32. Execute Time: 65 ms
  33. 已写入数据对象: ID=03e7, 标签=DataObject_999
  34. Using slot 0 with a present token (0x37a524)
  35. Created Data Object:
  36. Data object 2
  37.   label:          'DataObject_1000'
  38.   application:    ''
  39.   app_id:         <empty>
  40.   flags:           modifiable
  41.   uri:            pkcs11:model=SoftHSM%20v2;manufacturer=SoftHSM%20project;serial=70e3fbdc8037a524;token=FileToken;object=DataObject_1000;type=data
  42. Execute Time: 70 ms
  43. 已写入数据对象: ID=03e8, 标签=DataObject_1000
  44. 已完成写入 1000 个数据对象。
复制代码
测试性能(读一块数据大小256Bytes,读取性能欠好):
  1. ubuntu@ubuntu-vm:~/Documents/HSM/20250106/OpenSC/out/bin$ ./read_objects.sh
  2. Using slot 0 with a present token (0x37a524)
  3. Execute Time: 2472 ms
  4. read数据对象: ID=, 标签=
  5. 已完成read 1 个数据对象。
  6. ubuntu@ubuntu-vm:~/Documents/HSM/20250106/OpenSC/out/bin$
  7. ubuntu@ubuntu-vm:~/Documents/HSM/20250106/OpenSC/out/bin$ ./read_objects.sh
  8. Using slot 0 with a present token (0x37a524)
  9. 515ed5b327f7468aece868f8db398dc0607ed2d466adfdac066965e0b4bc6ab2210273e0fb4bdc380eb5d0c13d705815f7e5640952ef305b5228adb71077ba5bba576e6cc0b671e14fca598bc9a0bed0f817d66f0d7ee20cb07a2a2b66df7455b473c364621ebc89078563d88661b085bf853f623fefa2ed16088a30ddd1714a
  10. Execute Time: 2440 ms
  11. read数据对象: ID=, 标签=
  12. 已完成read 1 个数据对象。
  13. ubuntu@ubuntu-vm:~/Documents/HSM/20250106/OpenSC/out/bin$
复制代码
结论:Softhsm利用本地文件体系存储数据对象的写入性能较数据库有显着优势,读本地数据的性能和数据条目数量相干性强,条目数量大时读性能差。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

罪恶克星

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表