国密模块

名词解释

国密

国密即国家密码局认定的国产密码算法,即商用密码。商用密码,是指能够实现商用密码算法的加密、解密和认证等功能的技术。(包括密码算法编程技术和密码算法芯片、加密卡等的实现技术)。商用密码技术是商用密码的核心,国家将商用密码技术列入国家秘密,任何单位和个人都有责任和义务保护商用密码技术的秘密。

国家密码管理局

国家密码管理局:国家密码管理局是中央国家机关,下属的研究所、密码分析测评中心和专用芯片实验室系国家全额拨款事业单位

国密算法

商用密码,常见算法SM1、SM2、SM3、SM4、SM7、SM9、祖冲之ZUC、算法;

参考文献

<<中国银联银行卡联网联合技术规范V2.1>>
<<国密SM算法试点技术指引>> <<销售点(POS)终端支持国产密码算法试点应用技术指南>>

算法介绍:

SM1 SM2 SM3 SM4
PBOC3.0 + SM算法应用

算法互换原则

SM2 -> RSA (通常用于公钥下载、签名、脱机数据认证等)

SM3 -> SHA-1 (通常用于公钥下载、签名、脱机数据认证等)

SM4 -> 3DES (通常用于PIN/MAC,与主机数据交互等)


Verfione SM Support

SM Vx680 C680 Vx675 C520H Vx520
SM2(软加密) Y Y Y Y Y
SM2(硬加密) Y Y Y Y Y
SM3(软加密) Y Y Y Y Y
SM3(硬加密) Y Y Y Y Y
SM4(软加密) Y Y Y Y Y
SM4(硬加密) Y Y Y Y Y
注1:Verifone已经获取国密证书
注2:SM加密模块=北京华虹SJK1440智能IC (硬加密)

基本用法

终端/主机报文域

相关内容:报文域、算法标识、PIN加密数据、MAC加密数据

  • Tag

    1. DF69:SM算法支持器,1byte
    2. 9F10:发卡行数据中可以获取国密SM算法标识,1byte
  • 52域

    1. 相关函数:Pinpad_SM4_GetPin() 、 Pinpad_SM4_GetSupportFlag()
    2. 注意数据域52、62处理;
    3. 注意:各收单行针对国密SM加密的PIN Data处理不同;主机处理也可能不同;
  • 53域

    1. 相关交易:签到、消费等53域;
    2. 相关函数:Pinpad_SM4_Crypto()
    3. 相关代码:
      tmp[0] = 0x20;    //不带主账号信息为1,带主账号信息2
           if(SM4Flag ==1)
               tmp[0] |= 0x03; //SM4
           else
           {
               if (fixPrm->PPDesType == PP222_3DES_MODE)
                   tmp[0] |= 0x06; //单倍长为0,双倍长为6
           }
      
    4. 注意:算法标识取值以收单机构为主;
  • 60域

    1. 相关代码:
    2. 相关函数:
    3. 注:处理境外交易、DCC交易需要考虑一下;以收单机构为主
  • 62域(终端-参考)

    1. Tag00
  • 63域(主机-参考)

    1. 相关函数
    2. 相关代码
    3. 注意:收单行不同,做法不同;
  • 64/128域

    1. Bit64/128 数据长度不变、MAC加密算法根据上送的53、60.3.3等算法标识域进行标识;
    2. 相关函数:Pinpad_SM4_GetMAC()
    3. 注意:
  • SM公钥下载

    1. 以收单机构为准,通常在62域增加SM公钥下载机制
  • PIN加密算法

    1. 双倍长3DES或SM4算法加密
    2. 相关函数:Pinpad_SM4_GetPin()
  • MAC加密算法

    1. 相关函数:Pinpad_SM4_GetMAC()
    2. 以收单机构为准;
  • 安全信息加密

    1. 磁道信息加密、PAN加密等;
    2. 相关函数:Pinpad_SM4_Crypto()
  • PVN算法

  • CVN算法

  • 注意:

    1. Verifone使用vfiCAPublicKey数据结构用来保存RSA公钥和国密SM密钥,应用需要注意其算法标识和内容的处理;

相关配套OS/Pinpad Lib

  • (Vx680 OS WT00029N及以上) 支持内置SM4算法.
  • (PP1000SEC 3IN1 Pinpad +FW1.5.1 +Pinpad V04.00.00) 支持SM4算法
  • 相关Pinpad函数
#define ECB_MAC_BASE_SM4          (1)
#define CBC_MAC_BASE_SM4          (2)
#define SM4_ENCRYPT_MODE          (1)
#define SM4_DECRYPT_MODE          (2)

int Pinpad_SM4_GetSupportFlag(int* flag);
int Pinpad_SM4_LoadMKey(unsigned short index, unsigned char *MKey);
int Pinpad_SM4_GetPin(unsigned char *PIN, char *am, unsigned char *PAN, unsigned char *wkey,
                 unsigned char MinPINLen, unsigned char MaxPINLen, unsigned short timeout, unsigned short mkey_idx);
int Pinpad_SM4_GetMAC(unsigned char *MAC, unsigned char *Data, unsigned short DataLen, 
               unsigned short mkey_idx, unsigned char *MacKey,unsigned char mode);
int Pinpad_SM4_Crypto(unsigned short* outlen,unsigned char *outdata, unsigned short inlen, 
            unsigned char *indata,unsigned char *wkey,unsigned short mkey_index,unsigned char mode);
  • 相关配套工具

  • 终端模拟工具

延伸阅读

  • SM算法性能指标
  • SM算法性能指标
  • SM2算法椭圆曲线参数标识
  • 清算文件:关于国密算法的支持;
  • 密码学:
    • 对称算法(DES/3DES/ECB/CBC/):基于分组密码、流密码的应用算法;
    • 非对称算法(RSA/DSA):基于大素数分解的算法;
    • 杂凑算法(Hash): 固定长度输出的安全算法;
    • 商用密码SM1、SM2、SM3、SM4、SM7、SM9、祖冲之ZUC、算法
  • 密钥体系

results matching ""

    No results matching ""