加密流程
- 字段篩選與序列化
提取業務報文中標記為敏感的字段,生成待加密的數據塊
<!-- 示例:原始交易指令 -->
<Order><Symbol>ABC123</Symbol> <!-- 非敏感 --><Price>100.50</Price> <!-- 敏感 --><Volume>1000000</Volume> <!-- 敏感 --><Direction>Buy</Direction> <!-- 非敏感 -->
</Order>
- 加密算法選擇
國密算法優先,如SM4(密鑰長度為128位)對稱加密 - 密鑰管理
如會話密鑰(Session Key):登錄階段動態生成,每個會話獨立 - 加密與封裝
- 對序列化后的數據塊進行加密
SecureData = SM4_Encrypt(SessionKey, PlainTextData, IV)
- 將加密結果、初始向量(IV)、算法標識等封裝到如SecureData 結構中
<!-- 示例:加密后的SecureData -->
<SecureData><Algorithm>SM4-CBC</Algorithm> <!-- 加密算法標識 --><IV>Base64Encoded(InitialVector)</IV> <!-- 初始向量 --><CipherText>Base64Encoded(SecureData)</CipherText> <!-- 密文 -->
</SecureData>
- 原始報文中的敏感字段被替換為 SecureData 節點
<Order><Symbol>ABC123</Symbol><SecureData>...</SecureData> <!-- 替代Price/Volume --><Direction>Buy</Direction>
</Order>
- 解密流程
- 提取會話密鑰:根據會話ID從本地緩存獲取SM4會話密鑰。
- 解密數據:
PlainText = SM4_Decrypt(SessionKey, CipherText, IV)
- 反序列化:PlainText = SM4_Decrypt(SessionKey, CipherText, IV)
配置文件調整
# client.cfg文件
[default] #全局默認配置模塊中,添加配置項:
IsSignNeed=Y #是否需要數字簽名,如SM2算法。要求所有報文福袋SM2簽名,確保報文的完整性和不可抵賴性,防止篡改
CAEnable=Y #是否啟用證書頒發機構CA驗證,強制校驗對方證書是否由可信CA簽發
SocketUseSSL=Y #通信鏈路是否使用SSL/TLS加密,啟用國密SSL或國際標準TLS(N明文傳輸),保護傳輸層數據安全# 配置商用密碼證書的路徑和密碼:
UserCert=cert/encryCert.SM2 #聲明本機構身份證書文件路徑(通常為SM2格式的商用證書)
UserCertPwd=password #用戶證書密碼/解密證書私鑰的密碼(
調用邏輯:
- 系統讀取encryCert.SM2證書獲取公鑰和身份信息
- 當需要簽名或解密時,用UserCertPwd解密對應的私鑰文件
- 使用私鑰完成SM2簽名或密鑰協商
證書
證書相關概念
CA
(Certificate Authority,證書頒發機構) 是網絡安全中負責 簽發、管理和驗證數字證書 的權威第三方機構,其核心作用是確保網絡通信中實體的身份真實性和數據安全性。
數字證書
包含用戶/機構的公鑰、身份信息(如機構代碼)、頒發者(CA)信息,由CA數字簽名。包含實體USBkey(如金融U盾)、電子證書。
USBKEY證書
USBKEY證書代碼是USBKEY唯一的編碼。USBKEY是一種USB接口的硬件設備,內置單片機或智能卡芯片,有一定的存儲空間,可存儲用戶的私鑰以及數字證書,利用USBKEY內置的公鑰算法實現對用戶身份的認證。
私鑰
與證書中的公鑰配對的密鑰,必須嚴格保密,用于簽名或解密數據。
證書密碼
用于保護私鑰文件的密碼(防止私鑰被直接讀取),在調用私鑰時需輸入。
簽名(89Signature)
通過密碼學算法生成一段唯一數據,用于驗證消息來源、確保數據完整,防止抵賴(發送方無法否認自己簽署過的消息)。
證書生成過程
- 生成密鑰對:使用密碼機(HSM)或軟件工具生成SM2非對稱密鑰對,私鑰private_key保密儲存,需要密碼加密;公鑰public_key嵌入證書中。
- 申請證書:將公鑰和機構信息提交給CA(如CFETS或央行CA),CA驗證身份后簽發數字證書
- 密鑰綁定:私鑰文件通常通過密碼加密存儲(如PKCS#8格式),使用時需輸入證書密碼解密。
加密算法
國密/商密算法
SM2:身份認證和數字簽名。
SM3:生成報文哈希(防篡改)。
SM4:加密敏感字段(如)。
SM2國密算法
- 概念:SM2 是中國國家密碼管理局(GM/T)發布的 橢圓曲線公鑰密碼算法,屬于商用密碼體系的核心組成部分,廣泛應用于金融(如IMIX協議)、政務、物聯網等領域。
- 類型:非對稱加密算法(基于橢圓曲線密碼學,ECC)。
-
- 加密和解密使用不同密鑰,私鑰無法從公鑰推導;公鑰加密的數據只能由私鑰解密,私鑰簽名的數據只能由公鑰驗證(銀行間機構使用私鑰對登錄請求簽名,CFETS通過銀行證書中的公鑰驗證簽名,確認身份)
-
- 解決密鑰分發問題,無需提前共享密鑰
- 標準號:GM/T 0003-2012。
- 算法原理:橢圓曲線基礎;密鑰對生成,私鑰隨機選取一個256位證書,公鑰通過私鑰計算而成;根據原消息SM3算法得哈希值和隨機數生成簽名
加密 & 加簽
- 加密Encryption:公鑰加密,私鑰解密,保護數據及密性,防泄露。
- 加簽Signature:私鑰簽名,公鑰驗簽,驗證數據完整性和來源真實性,防篡改。
- 關系:先根據原始明文數據,用私鑰生成簽名;將敏感字段加密,生成密文;簽名值通常不加密,隨報文一起傳輸。先簽名->再加密->傳輸->接收方先驗簽->再解密。
Reference
- 《金融數據安全分級指南》(JR/T 0197-2020)對敏感數據的保護要求。
- GM/T 0009-2012(SM4密碼算法使用規范)