树图思维导图提供 boringssl算法 在线思维导图免费制作,点击“编辑”按钮,可对 boringssl算法 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:ecc9066d8db7a51ef95cadb9a00f13d1
boringssl思维导图模板大纲
国密算法套件结构
子主题 4
(s3_lib.c) 基于openssl源码开发的天安项目中涉及套件 密钥加密传输 ECC 密钥磋商 ECDH
(tls1.h) 协商套件ECC-SM4-SM3 TLS1_TXT_ECC_WITH_SM4_SM3
(tls1.h) 协商套件ECDHE-SM4-SM3 TLS1_TXT_ECDHE_WITH_SM4_SM3
(tls1.h) TLS1_CK_ECC_WITH_SM4_SM3
(tls1.h) TLS1_CK_ECDHE_WITH_SM1_SM3
(ssl_local.h) SSL_KSM2
(ssl_local.h) SSL_KSM2DH
(ssl_local.h) SSL_aSM2DSA
(ssl_local.h) SSL_SM4
(ssl_local.h) SSL_SM3
(tls1.h) SM1_1_VERSION
(ssl_local.h) SSL_HIGH
(ssl_local.h) SSL_HANDSHAKE_MAC_SM3
(ssl_local.h) TLS1_PRF_SM3
(ssl_cipher.cc) 需在boringssl中新增套件
(ssl_cipher.cc) 在boringssl下拟添加套件详细信息
新增kSM2算法别名和应用规则
(tls1.h)声明套件名称 TLS1_TXT_ECC_WITH_SM4_SM3 TLS1_CK_ECC_WITH_SM4_SM3
声明算法协商宏定义 TLS1_CK_ECDHE_WITH_SM4_SM3 TLS1_CK_ECC_WITH_SM4_SM3
ssl文件夹下(internal.h)声明套件列表中各类算法 SSL_KSM2 SSL_aSM2DSA SSL_SM4 SSL_SM3
需要先安装LLVM、go语言到系统环境变量Path,后修改上述两个文件objects.txt和obj_mac.num 要重新生成上述三个文件,请运行脚本 go run objects.go(boringssl)
【nid.h】是为C中所有内置OID定义宏的头
【obj_dat.h】包含与内置OID本身对应的ASN1_OBJECT 以及用于按短名称、OID等进行搜索的查找表。
【obj_mac.num】是每个OID的NID值列表。这是一个输入/输出 文件,以便NID值在重新生成过程中保持稳定。
【objects.txt】包含所有内置OID的列表。它由【objects.go】处理输出【obj_mac.num】【obj_dat.h】和【nid.h】
(evp.h+evp_local.h) openssl中的EVP_MD 结构体
(internal.h+digest.h) boringssl中的EVP_MD 结构体
evp定义方法
openssl\evp.h ---> boringssl\ciper.h
根据openssl中的evp_lib.c对应修改boringssl下src\crypto\fipamodule\cipher.c
修改boringssl下的cipher.h
(evp_do_all.c)在总套件列表中新增算法模式
(cipher_extra.c) EVP_get_cipherbynid
(cipher_extra.c) EVP_get_cipherbyname
boringssl中evp_pkey_asn1_find的实现及声明
向kASN1Methods数组中新增sm2_asn1_meth
sm2_asn1_meth具体实现
sm2_asn1_meth宏声明
EVP_PKEY_SM2指定的数值NID_sm2
NID_sm2表示值
向objects.txt中新增sm2\sm3算法注册
向evp_methods新增sm2_pkey_meth
sm2_pkey_meth具体实现
sm2_pkey_meth宏声明
(s3_lib.c) 天安中使用engine机制实现SM2引擎或SM4引擎 使用ENGINE_get_cipher_engine方法加载NID_sm4_cbc
(ssl_ciph.c) 每个密码的NID表,如SSL_SM4对应的NID为NID_sm4_cbc
openssl对应算法索引
相比天安openssl中table对应表的形式,boringssl中采用选择开关对应
(obj_mac.h) NID_sm4_cbc声明 SSL_SM4声明
(ssl_local.h) NID_sm4_cbc 实际代表数值
(obj.dat.h) 序列话OID各类声明
(eng_openssl.c) 3、实现ciphers函数 ciphers函数是配置算法结构初始化函数
使用openssl的引擎API注册和设置sm4引擎
(eng_openssl.c) 原生主接口定义处
(eng_openssl.c) 1、修改定义好的openssl主接口
(eng_openssl.c) 2、定义bind函数
(eng_openssl.c) 原生初始化算法结构函数定义处
(openssl/evp.h) 对应上处的keygen
(crypto/evp.h) 天安中对原生算法结构的改动
5、分别实现sm4_init函数体、sm4_func函数体
(evp.h) 4、修改原生定义算法结构evpcipher_st 在算法结构中,定义了如下信息 (1)指明了算法ID,由于我使用的openssl是1.0版本,还不支持sm4算法,目前只 能使用aes的id来代替。 (2) 定义了key和iv的长度,都为16字节 (3)定义了sm4_init 函数,用于初始化sm4算法,包括key 和id。 (4) 定义了sm4_func函数,用于sm4算法的加解密的实现。 (5) 定义了sm4_ctx_t 结构的大小,这个结构体中包括了sm4密钥和加解密标志。 (6)其他没有用到的元素都置NULL
了解engine机制
(conf_sap.c) engine配置初始化
新增evp_sm3
摘要列表新增sm3
对比boring处新增涉及NID_sm3
加入总NID数值表中加入NID_sm3
NID_SM3数值来源
树图思维导图提供 《被算法操控的生活:重新定义精准广告、大数据和AI》思维导图 在线思维导图免费制作,点击“编辑”按钮,可对 《被算法操控的生活:重新定义精准广告、大数据和AI》思维导图 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:0c91e73ff7775b398b574ad797b0c912
树图思维导图提供 零基础学js逆向技巧教学 在线思维导图免费制作,点击“编辑”按钮,可对 零基础学js逆向技巧教学 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:7f0d6ce39d97cb189fea67dfabf88da6