CN113783832B - 一种区块链常用密码学算法sdk包的开发制作方法及装置 - Google Patents

一种区块链常用密码学算法sdk包的开发制作方法及装置 Download PDF

Info

Publication number
CN113783832B
CN113783832B CN202110680636.5A CN202110680636A CN113783832B CN 113783832 B CN113783832 B CN 113783832B CN 202110680636 A CN202110680636 A CN 202110680636A CN 113783832 B CN113783832 B CN 113783832B
Authority
CN
China
Prior art keywords
algorithm
key
api
interface
chip
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110680636.5A
Other languages
English (en)
Other versions
CN113783832A (zh
Inventor
张锋
赵帅赫
刘俊良
郭睿欣
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China University of Geosciences
Original Assignee
China University of Geosciences
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by China University of Geosciences filed Critical China University of Geosciences
Priority to CN202110680636.5A priority Critical patent/CN113783832B/zh
Publication of CN113783832A publication Critical patent/CN113783832A/zh
Application granted granted Critical
Publication of CN113783832B publication Critical patent/CN113783832B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0435Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply symmetric encryption, i.e. same key used for encryption and decryption
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3829Payment protocols; Details thereof insuring higher security of transaction involving key management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0442Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply asymmetric encryption, i.e. different keys for encryption and decryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0838Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Signal Processing (AREA)
  • Business, Economics & Management (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Accounting & Taxation (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Finance (AREA)
  • General Business, Economics & Management (AREA)
  • Strategic Management (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Technology Law (AREA)
  • Development Economics (AREA)
  • Storage Device Security (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

本发明属于区块链‑密码学与安全技术领域,公开了一种区块链常用密码学算法SDK包的开发制作方法及装置,选取区块链常用算法设计API接口;确定合适参数和具体工作流程;基于openssl库进行再封装,并利用openssl库本身的跨平台特性,静态编译出一致稳定的静态库,实现跨平台的SDK包;进行再开发实现并烧录所设计的API接口以及能够传送大文件的串口通信和蓝牙通信。本发明提供了极为简单、非常稳定、跨多平台的SDK包和开发框架,实现了密钥等信息在物理层面的安全存储和计算隔离,能够极大的方便各类用户的开发和使用,广泛应用于区块链领域的硬件加密钱包等多种场景,为区块链技术的普及做出贡献。

Description

一种区块链常用密码学算法SDK包的开发制作方法及装置
技术领域
本发明属于区块链-密码学与安全技术领域,尤其涉及一种区块链常用密码学算法SDK包的开发制作方法及装置。
背景技术
目前,随着区块链技术的蓬勃发展,特别是其在数字货币等方面的应用,其技术体系中最基础的各类密码学算法,也逐渐走进了本发明的日常生活。
区块链中的每一个区块都会存储一些交易信息和账户信息等,这些数据都是依托哈希算法加密生成的,并且区块链的链式结构和挖矿机制也与哈希算法息息相关。此外,区块链通过公钥加密来确定链上数据的拥有者,通过用户私钥的数字签名来验证当前交易中的用户身份,其身份验证体系是通过非对称加密算法实现的。总的来说,密码学是区块链体系中最基础的存在,它不仅保护了整个网络的安全,更解决了许多交易中的证明问题。
然而,密码学作为一个古老的学科,虽然早已有许多完备成熟的算法库,但却缺少一个针对区块链技术的常用算法子库。这些成熟的开源算法库,如OpenSSL、crypto++、jsCrypto、xyssl等,要么能跨平台但是代码量庞大、不方便使用,要么方便简单却不能跨平台,为区块链的开发、使用和普及增添了障碍。因此,亟需一种区块链常用密码学算法SDK包的开发制作方法。
通过上述分析,现有技术存在的问题及缺陷为:现有开源密码学算法库中缺少针对区块链技术的常用算法子库,能够跨平台的库都太复杂、太不方便使用,而方便简单的库又不能跨平台,且便易度和跨平台的数量也不尽人意。
解决以上问题及缺陷的难度为:跨平台的开发框架较难设计,难以保证稳定性和兼容性,更难以迅速获得市场的认可和投入应用。纯自主开发的SDK包,在安全性和稳定性上难以迅速获得市场的认可,需要大量测试和时间的检验。
解决以上问题及缺陷的意义为:本发明基于openssl库开发出针对区块链技术的常用算法SDK包,提供了极为简单、非常稳定、跨多平台的开发框架和API接口,在安全性、稳定性、兼容性上更有保障,更容易获得市场认可而投入实际应用,方便各类用户的使用和再开发。此外,本发明还基于nrf52840芯片设计实现并烧录了本发明的API接口以及能够传送大文件的串口通信和蓝牙通信,使芯片内部能够进行密钥等信息的安全存储和常用密码学算法的加解密运算,实现物理层面的存储和计算隔离。这不仅为本发明的SDK包提供了硬件支持,也方便了用户使用并拓展了应用场景,使本发明能够极大的方便各类用户的开发和使用,可广泛应用于区块链领域的硬件加密钱包等多种场景,为区块链技术的普及做出贡献。
发明内容
针对现有技术存在的问题,本发明提供了一种区块链常用密码学算法SDK包的开发制作方法及装置。
本发明是这样实现的,一种区块链常用密码学算法SDK包的开发制作方法,所述区块链常用密码学算法SDK包的开发制作方法包括以下步骤:
步骤一,选取区块链常用的哈希算法、对称加密算法和非对称加密算法,设计出简明易懂、方便实用的API接口;
步骤二,确定单功能API和整合API接口的合适参数和具体工作流程;
步骤三,基于openssl库进行再封装,实现所设计的API接口,并利用openssl库本身的跨平台特性,在六大平台上静态编译出一致稳定的静态库,实现跨平台的SDK包;
步骤四,基于nrf52840芯片进行再开发,实现并烧录所设计的API接口以及能够传送大文件的串口通信和蓝牙通信。
进一步,步骤一中,所述API涉及的多种算法包括:
hash算法md5、sha1、sha256、sha512、sha3、sm3国密算法;编码算法BASE64、ASN1;对称加密算法AES-128-ecb、AES-256-cbc、SM4;非对称加密算法RSA-1024、ECC-secp256k1、SM2;密钥协商算法ECDH-secp256k1。
进一步,步骤二中,所述API接口,包括整合接口和单个算法接口。
(1)整合接口
加密接口en,用于加密字符串、文件、16进制字符数据,使用AES-128-ecb和SM4对称加密算法进行传统对称加密,或使用RSA-1024非对称加密算法进行普通的公钥加密和私钥解密,或使用ECC-secp256k1和SM2椭圆曲线的非对称加密算法以使用了密钥协商的自创方式进行文件加解密;
解密接口de,用于从en的结果解密出原始的字符串、文件、16进制字符数据,使用en中的对称加密算法和非对称加密算法;
创建密钥接口crtkey,用于创建RSA-1024、ECC-secp256k1和SM2非对称加密算法的密钥对,或只创建一个私钥,或从所给私钥创建一个公钥;
签名接口sign,用于签名字符串、文件、16进制字符数据,使用RSA-1024、ECC-secp256k1和SM2非对称加密算法;
验证签名接口verify,用于验证sign中所生成字符串、文件、16进制字符数据的签名,使用RSA-1024、ECC-secp256k1和SM2非对称加密算法;
获取哈希值接口hash,用于获取字符串、文件、16进制字符数据的哈希值,使用md5、sha1、sha256、sha512、sha3、sm3国密算法;
pem格式密钥文件读写接口,用于对RSA-1024、ECC-secp256k1和SM2非对称加密算法的私钥和公钥pem文件进行读写操作。
(2)单个算法接口
每个Hash算法都有单独的获取哈希值接口;每个对称加密算法都有单独的加密和解密接口;每个非对称加密算法都有单独的创建密钥对、从私钥生成公钥、签名、验证接口;编码算法BASE64有单独的编码和解码接口,ASN1对每个非对称加密算法的密钥有单独的编码和解码接口;密钥协商算法有单独的协商接口。
进一步,步骤二中,使用ECC-secp256k1和SM2椭圆曲线的非对称加密算法以使用密钥协商的自创方式进行文件加解密的API接口,所述自创方式如下:
所述自创方式的加密过程为:1)使用使用同中算法的用户公钥和临时私钥进行ECDH密钥协商,获取共享密钥;2)利用共享密钥使用aes-256-cbc算法对随机生成的对称密钥【如123456】进行加密,得到加密后的对称密钥;3)对加密后的对称密钥进行base64编码,再与1中的临时公钥进行拼接,得到传送密钥;4)利用2中加密前的对称密钥【如123456】使用aes-256-cbc算法对文件进行加密。
所述自创方式的解密过程为:1)读取加密过程3中的传送密钥,拆分得到临时公钥,再进行base64解码得到加密过的对称密钥;2)利用临时公钥和用户私钥进行ECDH密钥协商,获取共享密钥;3)利用共享密钥使用aes-256-cbc算法对1中加密过的对称密钥进行解密,获取原始对称密钥【如123456】;4)利用3中的原始对称密钥使用aes-256-cbc算法对文件进行解密。
进一步,步骤三中,所述基于openssl库的封装实现使用c语言进行,所述API的实现如下:
对于Hash算法,对整合接口使用通用的EVP_DigestInit、EVP_DigestUpdate、EVP_DigestFinal函数接口,通过指定EVP_MD*参数进行再封装;对单个算法接口使用该算法的init、update、Final系列接口进行封装;
对于编码算法,利用openssl库的EVP_Encode和EVP_Decode接口直接处理BASE64编解码数据;利用对应于pem文件的file与结构体之间的转换函数或PEM_read和PEM_write进行pem文件的编解码;利用对应的结构体与DER编码之间的i2d和d2i转换函数、EVP_PKEY结构体和相关函数方法进行ASN1的DER编解码;
对于对称加密算法,利用分步执行的EVP_CipherInit、EVP_CipherUpdate、EVP_CipherFinal对称加解密接口,通过设置EVP_CIPHER*参数指定AES-128-ecb、AES-256-cbc、sm4或其他算法,通过int类型的enc参数指定执行加密或解密;
对于非对称加密算法,RSA采用1024位的密钥,使用RSA_generate_key_ex、RSA_public_encrypt、RSA_private_decrypt、RSA_sign以及RSA_verify接口进行封装;ECC采用secp256k1曲线和默认配置的sm2算法,使用EC_KEY_generate_key、ECDSA_sign、sm2_sign、ECDSA_verify以及sm2_verify接口进行封装;
对于ECDH密钥协商算法,使用ECDH_compute_key接口进行封装。
进一步,步骤三中,所述不同平台包括:Windows,Linux,Mac,Android,IOS,Webassembly共6个平台;
所述静态编译方法,基于固定的openssl-1.1.1g版本源码,通过修改总的Makefile文件,与实现全部API功能的c语言代码一起共同编译出对应平台下的c语言静态库;
所述跨平台的SDK包,由在不同平台上利用openssl库本身的跨平台特性静态编译出的静态库、API测试程序和各种文档组成。
进一步,步骤四中,所述基于nrf52840芯片进行再开发,包括:
(1)应用编写:
a)对NRF52840加密芯片在内置SDK的基础上进行再开发,封装实现并烧录所构建的密码学常用算法库,并使用串口通信和蓝牙技术与多个平台进行数据交互;
b)对于编码算法,将输入密钥的asn1格式解码,传入函数内运算,再将结果密钥asn1编码传出;
c)对于sha1算法,基于CryptoCell以及协处理器加速模块利用SaSi_LibInit,CRYS_HASH_Init,CRYS_HASH_Update,CRYS_HASH_Finish,SaSi_LibFini函数接口进行再封装;
d)对于md5算法,基于mbedtls模块利用mbedtls_md5_init,mbedtls_md5_starts,mbedtls_md5_update,mbedtls_md5_finish,mbedtls_md5_free函数接口进行再封装;
e)对于sha2算法,基于nrf_crypto模块利用nrf_crypto_hash_init,nrf_crypto_hash_update,nrf_crypto_hash_finalize函数接口进行再封装;
f)对于对称加密算法,基于nrf_crypto模块利用nrf_crypto_aes_init,nrf_crypto_aes_key_set,nrf_crypto_aes_iv_set,nrf_crypto_aes_finalize分布执行,通过指定nrf_crypto_aes_init的参数nrf_crypto_aes_context_t*设置aes-256-cbc或其他算法,指定枚举类型参数nrf_crypto_operation_t为NRF_CRYPTO_ENCRYPT(1),或NRF_CRYPTO_DECRYPT(0)设置加密或解密;
g)对于非对称加密算法,RSA采用1024位密钥,PKCS1v15填充方式,ECC使用secp256k1曲线;
对于通讯部分,基于cli模块进行芯片与用户设备之间的通信,在cli模块中,同时支持ble_nus的蓝牙后端和uart的串口后端,让用户选择使用蓝牙或者串口来与芯片进行通讯。
(2)芯片烧录
a)将nrf52840-mdk芯片主板头文件添加进SDK包中,并下载安装nRF芯片组件;
b)基于nRF52840-mdk与s140_nrf52_6.4.0协议栈以及应用层程序对芯片FLASH和RAM的占用配置芯片存储空间,烧录地址;
c)配置连接目录、主板头文件,修改sdk_config.h配置,添加加密所需模块,配置Programming Algorithm。
(3)芯片通讯
a)基于nRF52840芯片以及协议栈s140_nrf52_6.4.0对BLE的支持,确定BLE协议栈client/server架构以及ATT/GATT规格;
b)通过蓝牙或者串口让用户设备与芯片进行通讯,输入用户想要进行的密码库操作,传出结果;
c)对通讯操作进行再封装,提供端口输入操作模式,以及封装后的api与应用程序x-usb模式。
(4)BLE规格
a)ATT和GATT是本发明开发蓝牙应用打交道最多的两层,蓝牙应用中的service/profile都是调用的GATT API实现的,而GATT又调用了ATT API;
b)BLE c/s架构
i.ble采用常见的c/s架构;
ii.由于设备提供服务,故设备是server,手机使用设备提供的服务,手机便是client端;
iii.服务以数据为载体,server提供服务即为提供各种有价值的数据;
c)ATT
把每一条目的数据看成一个attribute,并给它分配句柄,类型,权限的属性;
d)ATT命令:协议数据交互单元ATT PDU
i.包括四类:读,写,通知notify,指示indicate;
ii.其中每一类又分为:需要response和不需要response;
iii.每个ATT命令发送出去后,会立刻等待ACK信息,如果收到ACK,则发送方认定命令完成;而如果没有收到ACK,则发送方将一直重传该命令知道超时导致BLE链接断开,即如果ble连接没有断开,则接收方一定收到了命令;
iv.如果产生丢包,则一定是数据没有安全送到协议栈射频FIFO中;
e)GATT
i.如果ATT层定义了一个通信的基本框架,那么GATT层就是定义service和characteristic,它赋予每个数据条目具体的内涵,让数据变得有结构和意义;
ii.通过service和characteristic提供心率服务;
iii.service/characteristic是attribute的逻辑表现形式,而attribute是service/characteristic具体实现方式,一个characteristic由多条attribute组成;
iv.一个characteristic包含三种类型的attribute;
①characteristic declaration:声明条目,同时也是characteristic分隔符,包含value的读写属性;
②characteristic value:值条目;
③characteristic descriptor:描述符条目,可有多个;
④descriptor:可选条目;
v.一种特殊的descripto:CCCD
①通过client访问server的characteristic;如果server想要主动把自己的characteristic告诉给client,需要通过notify或者indicate PDU;
②引入CCCD控制自己是否接受server的notify或者indicate PDU;当CCCD使能时接受,当CCCD禁止时拒绝;
③在芯片上开发server端,在用户设备上开发client端,遵守规范。
本发明的另一目的在于提供一种应用所述的区块链常用密码学算法SDK包的开发制作方法的区块链常用密码学算法SDK包的开发制作装置,所述区块链常用密码学算法SDK包的开发制作装置,包括一个跨六大平台的区块链常用密码学算法SDK包和一个芯片装置,二者实现同一套API标准,拥有相同使用方式的命令行程序。
其中,所述跨六大平台的SDK包由静态库、API测试程序和各种文档组成;所述六大平台客户端是指在电脑、手机、浏览器的常用的六个平台,包括Linux,Windows,Android,IOS,Mac和Webassembly。
本发明的另一目的在于提供一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如下步骤:
选取区块链常用的哈希算法、对称加密算法和非对称加密算法,设计出简明易懂、方便实用的API接口;确定单功能API和整合API接口的合适参数和具体工作流程;基于openssl库进行再封装,实现所设计的API接口,并利用openssl库本身的跨平台特性,在六大平台上静态编译出一致稳定的静态库,实现跨平台的SDK包;基于nrf52840芯片进行再开发,实现并烧录所设计的API接口以及能够传送大文件的串口通信和蓝牙通信。
本发明的另一目的在于提供一种信息数据处理终端,所述信息数据处理终端用于实现所述的区块链常用密码学算法SDK包的开发制作装置。
结合上述的所有技术方案,本发明所具备的优点及积极效果为:本发明提供的区块链常用密码学算法SDK包的开发制作方法,以一套极简的API标准基于openssl库开发出了跨六大平台的SDK包,并在nrf52840芯片上设计实现并烧录了本发明的API接口以及能够传送大文件的串口通信和蓝牙通信功能;其中,API包括多种区块链技术常用的哈希算法、对称加密算法和非对称加密算法,只含有数量非常少的直接对应具体功能的接口和整合接口,提供了极为简单、非常稳定、跨多平台的开发框架,方便专业或非专业的各类用户的使用和再开发。本发明基于openssl库的SDK包对包括电脑、手机、浏览器的共六个平台有统一实现,能够实现跨平台的兼容交互;基于nrf52840芯片的SDK实现还可以通过串口通信和蓝牙技术进行数据交互和大文件传输,使芯片内部能够进行密钥等信息的安全存储和常用密码学算法的加解密运算,实现物理层面的存储和计算隔离。本发明能够极大的方便各类用户的开发和使用,可广泛应用于区块链领域的硬件加密钱包等多种场景,为区块链技术的普及做出贡献。
本发明基于openssl库开发的跨平台SDK包,在安全性、稳定性、兼容性上更有保障,更容易获得市场认可而投入实际应用;基于较成熟且已经投入商用的nrf52840芯片实现了本发明的API和能够传送大文件的串口通信和蓝牙通信,并把程序烧录进芯片中,为跨平台SDK包提供了硬件支持;对同一套API标准分别提供了软件和硬件实现,整个***浑然一体,既提供了极为简单、非常稳定、跨多平台的开发框架,又提供了极简的API和物理隔离的硬件加密芯片,方便专业或非专业的各类用户的使用和借鉴。
本发明提供的***包含一个跨六大平台的区块链常用密码学算法SDK包和一个芯片装置,二者实现了同一套API标准,拥有相同使用方式的命令行程序,能够极大的方便各类用户的开发和使用,并可广泛应用于区块链领域的硬件加密钱包等多种场景,为区块链技术的普及做出贡献。芯片属于产品,可直接给普通用户使用;跨六大平台的SDK包是发明核心,由静态库、API测试程序和各种文档组成,方便专业用户的使用和再开发。
本发明用户可以通过串口通信和蓝牙把密钥等信息传入芯片,芯片内部能够封闭的进行区块链常用密码学算法的运算全过程,并直接得到输出并反馈给用户。整个过程不接触存储在芯片内部的密钥等信息,实现了物理层次的存储和计算隔绝。再通过跨平台的SDK包和命令行程序,芯片能够通过串口通信和蓝牙,与Windows,Linux,Mac,Android,IOS,Webassembly共六个平台进行交互,可以获得一致的处理结果,并验证和处理芯片输出的结果。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图做简单的介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的区块链常用密码学算法SDK包及装置的总体应用效果图。
图2是本发明实施例提供的区块链常用密码学算法SDK包及装置的开发制作方法流程图。
图3是本发明实施例提供的基于Openssl的SDK包的整体工作流程图。
图4是本发明实施例提供的基于Openssl的SDK包的详细构成图。
图5是本发明实施例提供的芯片整体使用流程图。
图6是本发明实施例提供的芯片内部应用程序层次结构示意图,分为加密层,命令行层和通讯层。
图7是本发明实施例提供的芯片加密层的mbedtls模块的md5操作流程图。
图8是本发明实施例提供的芯片内部总体工作流程图。
图9是本发明实施例提供的nRF52840-MDK芯片的结构图,图中⑤⑥⑩为三个指示灯,其中灯⑩是由程序控制的,可以亮绿、红、蓝三种颜色。
图10是本发明实施例提供的以0个参数直接执行文件,软件打印总的帮助信息图
图11是本发明实施例提供的只提供一个参数时,参数应为功能名,软件打印该具体功能的帮助信息图。
图12是本发明实施例提供的只提供show-demo一个参数时,软件直接对所有功能进行固定输入的测试,并打印出全部的输入和输出信息图。
图13是本发明实施例提供的为show-demo的打印内容2,主要是创建密钥功能的四个输入和输出界面图。
图14是本发明实施例提供的为show-demo的打印内容3,主要是签名和验证功能的多个输入和输出界面图。
图15是本发明实施例提供的为show-demo的打印内容4,主要是非对称加密和解密功能的多个输入和输出界面图。
图16是本发明实施例提供的为show-demo的打印内容5,主要是pem文件读写功能的输入和输出界面图。
图17是本发明实施例提供的蓝牙通信调用和命令行直接调用方式图。
图18是本发明实施例提供的demo程序示例,对芯片中的所有哈希算法、对称加密算法、非对称加密算法进行了测试,分别给出部分示例图。
图19是本发明实施例提供的展示了test aes的全部测试,针对aes对称加密算法,cip=...是输出加密后的结果图,msg=...是输出解密后的结果,即每一次测试就是从msg明文得到cip密文、从cip密文到msg明文。test_count为总次数,err_count为出错次数0。
图20是本发明实施例提供的分别截取了test ecc的部分输出,包括创建私钥、公钥,签名,验证,自创式加密和解密。图中ecc_prk是非对称加密算法ecc的私钥,ecc_puk是其公钥,sharekey是使用ECDH密钥协商算法获得的协商密钥;sign是对固定数据进行签名得到的数字签名信息,verify=0表示验证成功;cip和msg分别表示密文和明文,ecc_pukTmp是自创式加密方式中生成的随机ecc密钥对的公钥。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
针对现有技术存在的问题,本发明提供了一种区块链常用密码学算法SDK包的开发制作方法及装置,下面结合附图对本发明作详细的描述。
本发明提供的***包含一个跨六大平台的区块链常用密码学算法SDK包和一个芯片装置,二者实现了同一套API标准,拥有相同使用方式的命令行程序,能够极大的方便各类用户的开发和使用,并可广泛应用于区块链领域的硬件加密钱包等多种场景,为区块链技术的普及做出贡献。nrf52840芯片属于产品,能够进行密钥等信息的安全存储和常用密码学算法的加解密运算,实现物理层面的存储和计算隔离,可直接给普通用户使用。跨六大平台的SDK包是发明核心,由静态库、API测试程序和各种文档组成,方便专业用户的使用和再开发。六大平台客户端是指在电脑、手机、浏览器上常用的六个平台,包括Linux,Windows,Android,IOS,Mac和Webassembly。主要工作包括:
1.选取合适的算法,构造区块链常用算法库。
2.设计单功能API和整合API接口,确定合适参数和具体工作流程。
3.基于固定的openssl-1.1.1.g版本的Openssl库源码进行再封装,实现所设计的API接口,并利用openssl库本身的跨平台特性,在六大平台上静态编译出一致稳定的静态库,提供测试程序和各种文档,实现跨平台的SDK包。
4.基于nrf52840芯片进行再开发,实现并烧录所设计的API接口,以及能够传送大文件的串口通信和蓝牙通信。
下面结合实施例对本发明的技术方案作进一步描述。
如图1所示,本发明实施例提供的区块链常用密码学算法SDK包及装置的总体应用效果如下:
用户可以直接使用芯片或SDK包在六大平台上的命令行程序进行加解密、签名验证等操作,也可以基于六大平台或芯片中的SDK程序包再开发出自己的应用程序。由于使用了同一套API标准,本发明在电脑、手机、浏览器和芯片上的处理结果完全一致,且能够互相兼容交互。芯片还能够通过串口通信或蓝牙技术来与六大平台进行数据交互和大文件传输,实现了物理层面的存储和计算隔离,极大的拓展了本发明的应用场景,也方便了用户的使用。
如图2所示,本发明实施例提供的区块链常用密码学算法SDK包的开发制作方法包括以下步骤:
S101,选取区块链常用的哈希算法、对称加密算法和非对称加密算法,设计出简明易懂、方便实用的API接口;
S102,确定单功能API和整合API接口的合适参数和具体工作流程;
S103,基于openssl库进行再封装,实现所设计的API接口,并利用openssl库本身的跨平台特性,在六大平台上静态编译出一致稳定的静态库,实现跨平台的SDK包;
S104,基于nrf52840芯片进行再开发,实现并烧录所设计的API接口以及能够传送大文件的串口通信和蓝牙通信。
步骤S101中,本发明实施例所包括的具体算法见表1。
表1具体算法
Figure BDA0003122376900000131
Figure BDA0003122376900000141
步骤S102中,本发明实施例所述单功能API的参数配置见表2,所述整合API接口的详细功能见表3。
表2单功能API的参数配置:
Figure BDA0003122376900000142
Figure BDA0003122376900000151
表3整合接口的详细功能
Figure BDA0003122376900000152
Figure BDA0003122376900000161
步骤S103中,本发明实施例所述Openssl库的背景知识如下:
1)SSL是Secure Sockets Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输。Netscape公司在推出第一个Web浏览器的同时,提出了SSL协议标准。其目标是保证两个应用间通信的保密性和可靠性,可在服务器端和用户端同时实现支持。已经成为Internet上保密通讯的工业标准。
2)在计算机网络上,OpenSSL是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份。这个包广泛被应用在互联网的网页服务器上,已经成为了业界的商业标准。
3)OpenSSL整个软件包大概可以分成三个主要的功能部分:SSL协议库、应用程序以及密码算法库。作为一个基于密码学的安全开发包,OpenSSL提供的功能相当强大和全面,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用。
步骤S103中,本发明实施例所述基于Openssl的跨平台SDK包的实现步骤如下:
1)API实现:基于openssl库进行再封装,通过对库中接口的合适调用,实现所有API的主干功能,再进行一些提示和错误处理的开发工作,并对框架进行整合梳理。
2)静态编译:具体方法是基于固定的openssl-1.1.1g版本源码,通过修改总的Makefile文件,与实现全部API功能的c语言代码一起共同编译出对应平台下的c语言静态库。
3)测试程序及相关文档:同样用c语言开发一个命令行程序,可以直接提供给用户使用,并能够测试全部功能。此外,对每个API接口都给出较为详细的文档说明,并给出调用示例。
步骤S103中,本发明实施例所述基于Openssl的再封装API示例见表4,在多个平台的静态编译方法示例如图表5。
表4基于Openssl的再封装API示例
Figure BDA0003122376900000171
Figure BDA0003122376900000181
表5在多个平台的静态编译方法示例
Figure BDA0003122376900000182
步骤S104中,本发明实施例所述的nrf52840 dongle加密芯片的背景知识如下:
1)nRF52840 Micro Development Kit,简称nRF52840-MDK,是一款可用于开发程序的硬件平台。本发明可以在芯片上高效地实现一些特定的程序,比如加密程序。
2)nRF52840-MDK芯片的结构如图9所示,⑤⑥⑩为三个指示灯,其中灯⑩是由程序控制的,可以亮绿、红、蓝三种颜色。
3)程序需要烧写到芯片才能执行。芯片可以反复烧写,芯片每次通电,里面的程序会从头开始执行。
4)芯片支持多种方式的交互,包括蓝牙通信、串口通信等。蓝牙通信是指通过蓝牙网络和设备进行通信,采用的方式是BLE(Bluetooth Low Energy)。串口通信是指直接通过数据线和设备进行通信。
步骤S104中,本发明实施例所述基于nrf52840芯片进行再开发、设计实现、烧录的细节如下:
1.nRF52840-MDK与s140_nrf52_6.1.0协议栈:
a)nRF52840-MDK芯片主要属性如下:
Hardware Features
·Nordic nRF52840 System-on-Chip
·
Figure BDA0003122376900000191
processor optimized for ultra-low power operation
·Combining Bluetooth 5,Bluetooth Mesh,Thread,IEEE 802.15.4,ANT and2.4GHz proprietary
·On-chip NFC-A tag
·On-chip USB 2.0(Full speed)controller
·ARM
Figure BDA0003122376900000192
Cryptocell 310security subsystem
Figure BDA0003122376900000193
选用的这款芯片拥有1MB的FLASH和256kB的RAM空间。
b)s140_nrf52_6.1.0是nrf_sdk的蓝牙协议栈:
s140_nrf52_6.1.0
SoftDevice Properties
·This SoftDevice is production tested for nRF52840.
·This SoftDevice contains the Master Boot Record(MBR)version 2.3.0(DRGN-9755).
·The combined MBR and SoftDevice memory requirements for thisversion are the same as for the s140_nrf52_6.0.0:
Figure BDA0003122376900000201
chosen at sd_ble_enable()time.
·The Firmware ID ot this SottDevice is 0x00AE.
所用到的蓝牙协议栈(SoftDevice)需要152kB的Flash空间和至少5.54kB的RAM空间(根据实际配置会变化)。
c)本发明需要将协议栈和应用层程序都烧录进入芯片,就需要考虑到程序烧录到的对应的芯片的存储空间位置。
2.协议栈和应用程序的烧录:
a)协议栈已经由nordic官方实现了,本发明可以直接烧录进芯片里面,而本发明自定义的用户程序则需要本发明自己编写,在编写中需要定义程序烧录的位置。
i.不带协议栈:直接从FLASH和RAM的首地址开始。
ii.带协议栈:先从首地址烧录协议栈,然后再接着烧录应用程序。
b)本发明在芯片上开发用到了蓝牙通讯,所以需要同时烧录协议栈和应用程序,应用程序的烧录需要计算出协议栈所占用的FLASH和RAM
3.BLE协议栈及ATT/GATT规格:
a)其中,ATT和GATT是本发明开发蓝牙应用打交道最多的两层,蓝牙应用中的service/profile都是调用的GATT API实现的,而GATT又调用了ATT API。本发明将着重考虑这两层。
b)BLE client/server(c/s)架构
i.ble采用了常见的c/s架构。
ii.一般而言,设备提供服务,因此设备是server,手机使用设备提供的服务,手机便是client端。比如蓝牙手环,它提供了测心率等各项服务,因此它是server,而本发明的手机请求蓝牙手环的服务,这里的手机便是一个client。
iii.服务以数据为载体,所以说server提供服务其实就是提供各种有价值的数据
c)ATT(attribute protocol)
i.就像前文说的那样,提供服务就是提供数据,那么各种数据怎么管理呢?
ii.本发明把每一条目的数据看成一个attribute,并给它分配句柄,类型,权限的属性。
d)ATT命令:ATT PDU(Protocol Data Unit,协议数据交互单元)
i.包括四类:读,写,notify(通知),indicate(指示)。
ii.其中每一类又分为:需要response和不需要response。
iii.每个ATT命令发送出去后,会立刻等待ACK信息,如果收到ACK,则发送方认定命令完成;而如果没有收到ACK,则发送方将一直重传该命令知道超时导致BLE链接断开。也就是说,如果ble连接没有断开,则接收方一定收到了命令。
iv.因此,如果产生丢包,那一定是数据没有安全送到协议栈射频FIFO中。e)GATT(generic attribute profile)
i.如果说ATT层定义了一个通信的基本框架,那么GATT层就是定义service和characteristic,它赋予每个数据条目具体的内涵,让数据变得有结构和意义。
ii.比如在上述中提到的心率服务,如果只接受一个数据“87”过来,那么这个数据是每秒87次还是87秒一次呢?service和characteristic就解决了这个问题
iii.service/characteristic是attribute的逻辑表现形式,而attribute是service/characteristic具体实现方式。不过它们并不是一对一的关系,一个characteristic由多条attribute组成。就像心率服务一样,最有价值的是数据“87”(value),但光有value是不够的,还需要其他的描述。
iv.因此,一个characteristic包含三种类型的attribute
1)characteristic declaration:声明条目,同时也是characteristic分隔符,包含value的读写属性
2)characteristic value:值条目
3)characteristic descriptor:描述符条目(可有多个)
4)descriptor:可选条目
v.一种特殊的descripto:CCCD
1)一般来说,都是client访问server的characteristic。如果server想要主动把自己的characteristic告诉给client,就需要通过notify或者indicate PDU。
2)为了给client主动权,引入了一个CCCD来控制自己是否接受server的notify或者indicate PDU。当CCCD使能时接受,当CCCD禁止时拒绝。
f)本发明在芯片上开发server端,在用户设备上开发client端,就需要遵守上面的规范。
4.芯片编译、烧录、调试:
a)本发明用到了Keil5 MDK以及NORDIC官方的nRF SDK 15.2。
b)因为选用的芯片并非NORDIC官方芯片,所以需要去芯片官网下载主板头文件添加到SDK包中。
c)在Keil5 MDK中下载安装nRF芯片组件
(NordicSemiconductor.nRF_DeviceFamilyPack.8.17.0.pack)以支持nRF52840-mdk的开发。
d)修改项目配置(烧录地址空间与大小,包含目录,链接目录,修改主板头文件支持,添加加密所需的模块,修改sdk_config.h配置,配置Debug调试器,配置ProgrammingAlgorithm等。。。)
e)配置好后即可编译、烧录、调试
5.芯片代码部分:
a)sdk_config.h通过宏来定义各个模块是否需要编译以及配置模块参数,本发明在这里需要配置协议栈需要的模块,通讯所用到的uart模块,加密所用到的crypto模块,以及动态内存分配模块等。
b)对各个加密模块的核心调用
1)对NRF52840加密芯片在内置SDK的基础上进行再开发,封装实现并烧录所构建的密码学常用算法库,并使用串口通信和蓝牙技术与多个平台进行数据交互
2)对于编码算法,将输入密钥的asn1格式解码,传入函数内运算,再将结果密钥asn1编码传出。
3)对于sha1算法,基于CryptoCell以及协处理器加速模块利用SaSi_LibInit,CRYS_HASH_Init,CRYS_HASH_Update,CRYS_HASH_Finish,SaSi_LibFini函数接口进行再封装。
4)对于md5算法,基于mbedtls模块利用mbedtls_md5_init,mbedtls_md5_starts,mbedtls_md5_update,mbedtls_md5_finish,mbedtls_md5_free函数接口进行再封装。
5)对于sha2算法,基于nrf_crypto模块利用nrf_crypto_hash_init,nrf_crypto_hash_update,nrf_crypto_hash_finalize函数接口进行再封装。
6)对于对称加密算法,基于nrf_crypto模块利用nrf_crypto_aes_init,nrf_crypto_aes_key_set,nrf_crypto_aes_iv_set,nrf_crypto_aes_finalize分布执行,通过指定nrf_crypto_aes_init的参数nrf_crypto_aes_context_t*设置aes-256-cbc或其他算法,指定枚举类型参数nrf_crypto_operation_t为NRF_CRYPTO_ENCRYPT(1),或NRF_CRYPTO_DECRYPT(0)设置加密或解密。
7)对于非对称加密算法,RSA采用1024位密钥,PKCS1v15填充方式,ECC使用secp256k1曲线。
c)芯片接受传来的命令,在内部运算后将结果传出,
d)除了sha3和国密算法在SDK包中尚未支持,其他的hash,ecc的加密、签名,rsa的加密、签名,AES的加密,ecc、rsa密钥的生成都要实现
6.用户设备通讯程序:
用户设备与芯片的交互方式有串口与蓝牙的方式,尽可能的开发出Windows,Linux,Mac,Android,Ios,Webassembly的蓝牙client与芯片交互
尽可能将六大平台的client程序封装成go、python、java、java scrip等常用语言的SDK包,方便用户调用。
如图3所示,本发明实施例提供的基于Openssl的SDK包的整体工作流程如下:
1.用户在六大平台中的某个平台上,直接使用本发明的命令行程序或用户自己的再封装程序,调用对应平台上基于Openssl的SDK包。
2.命令行程序或用户再封装程序调用包括加密、解密、创建密钥、签名、验证签名、获取hash值、pem文件读写的共7个整合接口,执行对应功能。
3.整合接口分析接收到的参数,再调用对应的单个算法接口;用户再封装程序也可直接调用单个算法接口。
4.单个算法接口依次调用Openssl-1.1.1g版本算法库中的相关接口和源码,最终完成全部功能。
如图4所示,本发明实施例提供的基于Openssl的SDK包的详细构成如下:
1.静态库
1)将再封装代码与Openssl-1.1.1g固定版本的算法库源码组合起来。
2)修改总的Makefile文件,使再封装代码能够与Openssl库源码一起编译出静态库文件。
3)在六大平台分别编译出对应的静态库。
2.测试程序
1)提供能调用所有API功能的命令行程序,能通过标准输入输出与用户交互。
2)能够打印测试程序总体使用help信息、各个整合功能help信息。
3)能够接收用户命令输入,并打印对应输出结果或错误提示信息。
3.说明文档
1)提供再封装代码和相关Openssl库源码的结构和功能说明。
2)提供再封装代码中所有的整合接口和单个算法接口的参数和使用说明。
3)提供使用源码Makefile在六大平台上编译出静态库的操作说明。
4)提供测试程序的编译和使用说明。
如图5所示,本发明实施例提供的芯片整体使用流程如下:
1.用户通过前端的命令行程序x-usb与芯片交互。
2.前端的命令行程序x-usb根据用户选择的串口通信或蓝牙通信方式,调用后端的串口程序x-usb-serial或蓝牙程序x-usb-ble。
3.串口程序x-usb-serial或蓝牙程序x-usb-ble分别通过串口通信方式或蓝牙通信方式与芯片进行数据交互,并调用芯片内的硬件程序,完成用户功能。
如图6所示,本发明实施例提供的芯片内部应用程序层次结构如下:
1.加密层主要包含nrf_crypto,cc310,mbedtls三大模块,负责实现本发明所设计的全部API接口,包括对数据的加解密,签名验证,哈希算法等。
1)cc310模块是芯片基于CryptoCell及协处理器加速模块对常见的加密算法的实现与封装,比如sha1,rsa等算法。
2)nrf_crypto模块是芯片sdk对绝大多数算法的封装,比如sha2,aes,ecc等算法。
3)mbedtls是一个开源的加密库,在芯片sdk没有我们需要的算法时,我们需要用到它来实现这些算法,比如md5算法。其中的一个mbedtls模块的md5操作流程如图7所示。
2.命令行层采用cli模块,对用户设备通过蓝牙或者串口输入的指令进行解析并调用相应的函数进行处理。
例如我们蓝牙或串口输入”enaes 3132 313233”,在命令行层cli就会解析命令。解析到参数1为”enaes”,就会将之后的剩余参数传入到加密层相应的aes加密相关的处理函数,执行相应的加解密算法。在加密层处理完成后,cli根据函数的结果将aes加密后的明文或者其他的信息输出。
3.通讯层采用了s140_nrf52_6.1.0协议栈实现对BLE(蓝牙低功耗)的支持,s140_nrf52_6.1.0是NORDIC公司为芯片开发的协议栈,我们可以基于这个协议栈,轻松地完成BLE的连接,传输数据等。
如图8所示,本发明实施例提供的芯片内部总体工作流程如下:
1.通过串口通信(UART)或低功耗蓝牙通信(BLE)获取输入:
1)用户通过通信层与命令层cli模块进行交互。通信层包括串口通信和蓝牙通信,串口通信无需额外调用模块,蓝牙通信需要调用x-usb-ble模块。
2)Cli模块对通信层传入的命令进行解析,再将具体的参数和数据传递给加密层对应的功能函数。
2.使用加密层的功能函数处理输入:
加密层获取cli模块传入的参数和数据,调用对应子模块中的对应功能函数,调用烧录进硬件中的程序。
3.通过芯片进行硬件计算,生成输出:
烧录在硬件中的程序直接进行硬计算,根据输入快速生成输出,整个过程实现了物理层面的存储隔离和计算隔离。
4.通过串口通信(UART)或低功耗蓝牙通信(BLE)返回输出:
芯片生成的输出通过cli模块返回到通信模块,最终使用串口通信或蓝牙通信,把输出返回给用户。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用全部或部分地以计算机程序产品的形式实现,所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输)。所述计算机可读取存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘SolidState Disk(SSD))等。
下面结合应用例对本发明的效果作进一步描述。
nrf52840芯片和基于openssl的SDK都实现了同一套API标准,而API背后的加密算法的标准是固定的。因为芯片和openssl库遵循的商业算法标准是一样的,所以芯片加密的结果可以用openssl库解密,反过来openssl库加密的结果可以用芯片解密。于是用户可在6个平台上使用本发明基于openssl库的命令行程序和利用本发明SDK包再开发的程序软件,对芯片的加解密结果进行方便的验证和处理,而且用户也能够利用本发明SDK包轻松地再开发出跨6大平台兼容一致的应用程序和软件。
下面给出本发明基于openssl的SDK包在Linux下的命令行程序运行示例:
1.以0个参数直接执行文件,软件打印总的帮助信息,如图10。
2.只提供一个参数时,参数应为功能名,软件打印该具体功能的帮助信息,如图11。
3.只提供show-demo一个参数时,软件直接对所有功能进行固定输入的测试,并打印出全部的输入和输出信息,如图12。
图12为打印内容1,包括获取哈希值、对称加密、对称解密、创建密钥共四个功能的多个输入和输出,例如对称加密的输入命令为:“./afs-zsh";afs_f=en;symalgo=sm4;sympass=123456;in_str=hello world!;"”时,软件得到的输出为:“;_r=true;symalgo=sm4;en_str=599126ea24031c2a74bc8907d76d8f04”。
图13为show-demo的打印内容2,主要是创建密钥功能的四个输入和输出。
图14为show-demo的打印内容3,主要是签名和验证功能的多个输入和输出。
图15为show-demo的打印内容4,主要是非对称加密和解密功能的多个输入和输出。
图16为show-demo的打印内容5,主要是pem文件读写功能的输入和输出。
下面给出本发明芯片装置在linux下的命令行程序运行示例:
1.蓝牙通信调用和命令行直接调用方式,如图17。
图17中的“./nus XX:XX:XX:XX:XX:XX”命令:
1.通过BLE(蓝牙低功耗)连接芯片,XX:XX:XX:XX:XX:XX指定芯片蓝牙的MAC
2.输入cli命令"enaes 313233 313233",参数1指定操作类型:aes(aes-256-cbc)加密,参数2指定明文313233,参数3:aes对称加密算法所使用的密码。
3.芯片返回操作结果:_r=true表示操作成功,en_str_hex表示加密后的明文./x-usb"bfs_f=..."这一行命令:
将操作参数全部集成到一个字符串参数“bfs_f=...”中,字符串中有许多“参数=值”的组合。
1)bfs_f=x-de-usb,指定操作类型=解密。
2)symalgo=x-aes-256-cbc,指定对称加密算法=aes-256-cbc算法。
3)en_str_hex=...,指定密文=...。
4)sympass=313233,指定对称加密算法使用的密码=313233。
5)命令执行后将结果返回,返回方式同nus命令相同。
2.demo程序示例,对芯片中的所有哈希算法、对称加密算法、非对称加密算法进行了测试,分别给出部分示例,如图18。
此图18先以管理员权限执行了demo程序,test hash是在测试哈希算法,分别对md5、sha1、sha256、sha512算法进行了测试,每个算法分别使用固定的硬编码数据和8120×4bit的大文件作为输入,直接只输出了结果哈希值。
此图19展示了test aes的全部测试,针对aes对称加密算法,cip=...是输出加密后的结果,msg=...是输出解密后的结果,即每一次测试就是从msg明文得到cip密文、从cip密文到msg明文。test_count为总次数,err_count为出错次数0。
此图20分别截取了test ecc的部分输出,包括创建私钥、公钥,签名,验证,自创式加密和解密。图中ecc_prk是非对称加密算法ecc的私钥,ecc_puk是其公钥,sharekey是使用ECDH密钥协商算法获得的协商密钥;sign是对固定数据进行签名得到的数字签名信息,verify=0表示验证成功;cip和msg分别表示密文和明文,ecc_pukTmp是自创式加密方式中生成的随机ecc密钥对的公钥。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,都应涵盖在本发明的保护范围之内。

Claims (9)

1.一种区块链常用密码学算法SDK包的开发制作方法,其特征在于,所述区块链常用密码学算法SDK包的开发制作方法包括以下步骤:
步骤一,选取区块链常用的哈希算法、对称加密算法和非对称加密算法,设计出简明易懂、方便实用的API接口;
步骤二,确定单功能API和整合API接口的参数和工作流程;
步骤三,基于openssl库进行再封装,实现所设计的API接口,并利用openssl库本身的跨平台特性,在六大平台上静态编译出一致稳定的静态库,实现跨平台的SDK包;
步骤四,基于nrf52840芯片进行再开发,实现并烧录所设计的API接口以及能够传送大文件的串口通信和蓝牙通信;
步骤二中,所述API接口,包括整合API接口和单功能API;
(1)整合API 接口
加密接口en,用于加密字符串、文件、16进制字符数据,使用AES-128-ecb和SM4对称加密算法进行传统对称加密,或使用RSA-1024非对称加密算法进行普通的公钥加密和私钥解密,或使用ECC-secp256k1和SM2椭圆曲线的非对称加密算法以使用了密钥协商的自创方式进行文件加解密;
解密接口de,用于从en的结果解密出原始的字符串、文件、16进制字符数据,使用en中的对称加密算法和非对称加密算法;
创建密钥接口crtkey,用于创建RSA-1024、ECC-secp256k1和SM2非对称加密算法的密钥对,或只创建一个私钥,或从所给私钥创建一个公钥;
签名接口sign,用于签名字符串、文件、16进制字符数据,使用RSA-1024、ECC-secp256k1和SM2非对称加密算法;
验证签名接口verify,用于验证sign中所生成字符串、文件、16进制字符数据的签名,使用RSA-1024、ECC-secp256k1和SM2非对称加密算法;
获取哈希值接口Hash,用于获取字符串、文件、16进制字符数据的哈希值,使用md5、sha1、sha256、sha512、sha3、sm3国密算法;
pem格式密钥文件读写接口,用于对RSA-1024、ECC-secp256k1和SM2非对称加密算法的私钥和公钥pem文件进行读写操作;
(2)单功能API
每个Hash算法都有单独的获取哈希值接口;每个对称加密算法都有单独的加密和解密接口;每个非对称加密算法都有单独的创建密钥对、从私钥生成公钥、签名、验证接口;编码算法BASE64有单独的编码和解码接口,ASN1对每个非对称加密算法的密钥有单独的编码和解码接口;密钥协商算法有单独的协商接口。
2.如权利要求1所述的区块链常用密码学算法SDK包的开发制作方法,其特征在于,步骤一中,所述API涉及的多种算法包括:
Hash算法md5、sha1、sha256、sha512、sha3、sm3国密算法;编码算法BASE64、ASN1;对称加密算法AES-128-ecb、AES-256-cbc、SM4;非对称加密算法RSA-1024、ECC-secp256k1、SM2;密钥协商算法ECDH-secp256k1。
3.如权利要求1所述的区块链常用密码学算法SDK包的开发制作方法,其特征在于,步骤二中,使用ECC-secp256k1和SM2椭圆曲线的非对称加密算法以使用密钥协商的自创方式进行文件加解密的API接口,所述自创方式如下:
所述自创方式的加密过程为:1)使用与用户公私钥相同的算法来生成临时公私钥,用该临时私钥与用户公钥进行ECDH密钥协商,获取共享密钥;2)利用共享密钥使用aes-256-cbc算法对随机生成的对称密钥进行加密,得到加密后的对称密钥;3)对加密后的对称密钥进行base64编码,再与步骤1中的临时公钥进行拼接,得到传送密钥;4)利用步骤2中加密前的对称密钥使用aes-256-cbc算法对文件进行加密;
所述自创方式的解密过程为:1)读取加密过程步骤3中的传送密钥,拆分得到临时公钥,再进行base64解码得到加密过的对称密钥;2)利用临时公钥和用户私钥进行ECDH密钥协商,获取共享密钥;3)利用共享密钥使用aes-256-cbc算法对解密过程步骤1中加密过的对称密钥进行解密,获取原始对称密钥;4)利用解密过程步骤3中的原始对称密钥,使用aes-256-cbc算法对文件进行解密。
4.如权利要求1所述的区块链常用密码学算法SDK包的开发制作方法,其特征在于,步骤三中,所述基于openssl库的封装实现使用C语言进行,所述API的实现如下:
对于Hash算法,对整合接口使用通用的EVP_DigestInit、EVP_DigestUpdate、EVP_DigestFinal函数接口,通过指定EVP_MD*参数进行再封装;对单功能API使用该算法的init、update、Final系列接口进行封装;
对于编码算法,利用openssl库的EVP_Encode和EVP_Decode接口直接处理BASE64编解码数据;利用对应于pem文件的file与结构体之间的转换函数或PEM_read和PEM_write进行pem文件的编解码;利用对应的结构体与DER编码之间的i2d和d2i转换函数、EVP_PKEY结构体和相关函数方法进行ASN1的DER编解码;
对于对称加密算法,利用分步执行的EVP_CipherInit、EVP_CipherUpdate、EVP_CipherFinal对称加解密接口,通过设置EVP_CIPHER*参数指定AES-128-ecb、AES-256-cbc、sm4算法,通过int类型的enc参数指定执行加密或解密;
对于非对称加密算法,RSA采用1024位的密钥,使用RSA_generate_key_ex、RSA_public_encrypt、RSA_private_decrypt、RSA_sign以及RSA_verify接口进行封装;ECC采用secp256k1曲线和默认配置的sm2算法,使用EC_KEY_generate_key、ECDSA_sign、sm2_sign、ECDSA_verify以及sm2_verify接口进行封装;
对于ECDH密钥协商算法,使用ECDH_compute_key接口进行封装。
5.如权利要求1所述的区块链常用密码学算法SDK包的开发制作方法,其特征在于,步骤三中,所述六大平台包括:Windows,Linux,Mac,Android,IOS,Webassembly共6个平台;
所述在六大平台上静态编译出一致稳定的静态库包括:基于固定的openssl-1.1.1g版本源码,通过修改总的Makefile文件,与实现全部API功能的c语言代码一起共同编译出对应平台下的c语言静态库;
所述跨平台的SDK包,由在不同平台上利用openssl库本身的跨平台特性静态编译出的静态库、API测试程序和各种文档组成。
6.如权利要求1所述的区块链常用密码学算法SDK包的开发制作方法,其特征在于,步骤四中,所述基于nrf52840芯片进行再开发,包括:
(1)应用编写:
a)对NRF52840加密芯片在内置SDK的基础上进行再开发,封装实现并烧录所构建的密码学常用算法库,并使用串口通信和蓝牙技术与多个平台进行数据交互;
b)对于编码算法,将输入密钥的asn1格式解码,传入函数内运算,再将结果密钥asn1编码传出;
c)对于sha1算法,基于CryptoCell以及协处理器加速模块利用SaSi_LibInit,CRYS_HASH_Init,CRYS_HASH_Update,CRYS_HASH_Finish,SaSi_LibFini函数接口进行再封装;
d)对于md5算法,基于mbedtls模块利用mbedtls_md5_init,mbedtls_md5_starts,mbedtls_md5_update,mbedtls_md5_finish,mbedtls_md5_free函数接口进行再封装;
e)对于sha2算法,基于nrf_crypto模块利用nrf_crypto_hash_init,nrf_crypto_hash_update,nrf_crypto_hash_finalize函数接口进行再封装;
f)对于对称加密算法,基于nrf_crypto模块利用nrf_crypto_aes_init,nrf_crypto_aes_key_set,nrf_crypto_aes_iv_set,nrf_crypto_aes_finalize分布执行,通过指定nrf_crypto_aes_init的参数nrf_crypto_aes_context_t*设置aes-256-cbc算法,指定枚举类型参数nrf_crypto_operation_t为NRF_CRYPTO_ENCRYPT(1),或NRF_CRYPTO_DECRYPT(0)设置加密或解密;
g)对于非对称加密算法,RSA采用1024位密钥,PKCS1v15填充方式,ECC使用secp256k1曲线;
对于通讯部分,基于cli模块进行芯片与用户设备之间的通信,在cli模块中,同时支持ble_nus的蓝牙后端和uart的串口后端,让用户选择使用蓝牙或者串口来与芯片进行通讯;
(2)芯片烧录
a)将nrf52840-mdk芯片主板头文件添加进SDK包中,并下载安装nRF芯片组件;
b)基于nRF52840-mdk与s140_nrf52_6.4.0协议栈以及应用层程序对芯片FLASH和RAM的占用配置芯片存储空间,烧录地址;
c)配置连接目录、主板头文件,修改sdk_config.h配置,添加加密所需模块,配置Programming Algorithm;
(3)芯片通讯
a)基于nRF52840芯片以及协议栈s140_nrf52_6.4.0对BLE的支持,确定BLE协议栈client/server架构以及ATT/GATT规格;
b)通过蓝牙或者串口让用户设备与芯片进行通讯,输入用户想要进行的密码库操作,传出结果;
c)对通讯操作进行再封装,提供端口输入操作模式,以及封装后的api与应用程序x-usb模式;
(4)BLE规格
a)蓝牙应用中的service/profile都是调用的GATT API实现的,而GATT又调用ATTAPI;
b)BLE c/s架构
i.ble采用常见的c/s架构;
ii.由于设备提供服务,故设备是server,手机使用设备提供的服务,手机便是client端;
iii.服务以数据为载体,server提供服务即为提供各种有价值的数据;
c)ATT
把每一条目的数据看成一个attribute,并给它分配句柄,类型,权限的属性;
d)ATT命令:协议数据交互单元ATT PDU
i.包括四类:读,写,通知notify,指示indicate;
ii.其中每一类又分为:需要response和不需要response;
iii.每个ATT命令发送出去后,会立刻等待ACK信息,如果收到ACK,则发送方认定命令完成;而如果没有收到ACK,则发送方将一直重传该命令直到超时导致BLE链接断开,即如果ble连接没有断开,则接收方一定收到了命令;
iv.如果产生丢包,则一定是数据没有安全送到协议栈射频FIFO中;
e)GATT
i.如果ATT层定义了一个通信的基本框架,那么GATT层就是定义service和characteristic,它赋予每个数据条目具体的内涵,让数据变得有结构和意义;
ii.通过service和characteristic提供心率服务;
iii.service/characteristic是attribute的逻辑表现形式,而attribute是service/characteristic具体实现方式,一个characteristic由多条attribute组成;
iv.一个characteristic包含三种类型的attribute;
①characteristic declaration:声明条目,同时也是characteristic分隔符,包含value的读写属性;
②characteristic value:值条目;
③characteristic descriptor:描述符条目,可有多个;
④descriptor:可选条目;
v.一种特殊的descripto:CCCD
①通过client访问server的characteristic;如果server想要主动把自己的characteristic告诉给client,需要通过notify或者indicate PDU;
②引入CCCD控制自己是否接受server的notify或者indicate PDU;当CCCD使能时接受,当CCCD禁止时拒绝;
③在芯片上开发server端,在用户设备上开发client端,遵守规范。
7.一种应用如权利要求1~6任意一项所述的区块链常用密码学算法SDK包的开发制作方法的区块链常用密码学算法SDK包的开发制作装置,其特征在于,所述区块链常用密码学算法SDK包的开发制作装置,包括一个跨六大平台的区块链常用密码学算法SDK包和一个芯片装置,二者实现同一套API标准,拥有相同使用方式的命令行程序;
其中,所述跨六大平台的SDK包由静态库、API测试程序和各种文档组成;所述六大平台客户端是指在电脑、手机、浏览器的常用的六个平台,包括Linux,Windows,Android,IOS,Mac和Webassembly。
8.一种计算机设备,其特征在于,所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如下步骤:
选取区块链常用的哈希算法、对称加密算法和非对称加密算法,设计出简明易懂、方便实用的API接口;确定单功能API和整合API接口的合适参数和具体工作流程;基于openssl库进行再封装,实现所设计的API接口,并利用openssl库本身的跨平台特性,在六大平台上静态编译出一致稳定的静态库,实现跨平台的SDK包;基于nrf52840芯片进行再开发,实现并烧录所设计的API接口以及能够传送大文件的串口通信和蓝牙通信。
9.一种信息数据处理终端,其特征在于,所述信息数据处理终端用于实现如权利要求7所述的区块链常用密码学算法SDK包的开发制作装置。
CN202110680636.5A 2021-06-18 2021-06-18 一种区块链常用密码学算法sdk包的开发制作方法及装置 Active CN113783832B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110680636.5A CN113783832B (zh) 2021-06-18 2021-06-18 一种区块链常用密码学算法sdk包的开发制作方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110680636.5A CN113783832B (zh) 2021-06-18 2021-06-18 一种区块链常用密码学算法sdk包的开发制作方法及装置

Publications (2)

Publication Number Publication Date
CN113783832A CN113783832A (zh) 2021-12-10
CN113783832B true CN113783832B (zh) 2022-09-23

Family

ID=78835814

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110680636.5A Active CN113783832B (zh) 2021-06-18 2021-06-18 一种区块链常用密码学算法sdk包的开发制作方法及装置

Country Status (1)

Country Link
CN (1) CN113783832B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103248618A (zh) * 2013-03-08 2013-08-14 重庆城市管理职业学院 一种基于OpenSSL的Linux安全文件传输***及方法
CN111901105A (zh) * 2020-07-20 2020-11-06 上海龙旗科技股份有限公司 一种基于UEFI架构EDK2支持Openssl算法的方法与设备

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102185866B (zh) * 2011-05-13 2013-12-25 南京邮电大学 一种基于ip电话网络的信任模型构造方法
CN112148284A (zh) * 2020-09-24 2020-12-29 普华云创科技(北京)有限公司 一种通用型区块链软件开发工具包
CN112422507B (zh) * 2020-10-19 2023-04-07 北京电子科技学院 一种基于标识算法的国密ssl加密方法
CN112968778A (zh) * 2021-02-04 2021-06-15 西安电子科技大学 区块链国密算法的转换方法、***、计算机设备及应用

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103248618A (zh) * 2013-03-08 2013-08-14 重庆城市管理职业学院 一种基于OpenSSL的Linux安全文件传输***及方法
CN111901105A (zh) * 2020-07-20 2020-11-06 上海龙旗科技股份有限公司 一种基于UEFI架构EDK2支持Openssl算法的方法与设备

Also Published As

Publication number Publication date
CN113783832A (zh) 2021-12-10

Similar Documents

Publication Publication Date Title
CN109150499B (zh) 动态加密数据的方法、装置、计算机设备和存储介质
US8458480B2 (en) Method and apparatus for binding TPM keys to execution entities
CN111131278B (zh) 数据处理方法及装置、计算机存储介质、电子设备
CN110621014B (zh) 一种车载设备及其程序升级方法、服务器
CN104486343A (zh) 一种双因子双向认证的方法及***
CN109783077B (zh) 区块链***及其中间件***、数据上链方法、存储介质
CN103546289A (zh) 一种基于USBKey的安全传输数据的方法及***
WO2022251987A1 (zh) 一种数据加解密方法和装置
US11930118B2 (en) Authentication method and authentication device
CN113452522B (zh) 基于国密的硬件安全模块软件实现方法、存储介质及装置
US20230012013A1 (en) Secure device programming system with hardware security module and security interop layer
CN111427860B (zh) 分布式存储***及其数据处理方法
CN113038463B (zh) 一种通讯加密认证实验装置
CN111045722A (zh) 智能合约打包方法、装置、***、计算机设备及存储介质
CN109960935B (zh) 确定tpm可信状态的方法、装置及存储介质
CN107844707B (zh) 一种卡数据管理方法以及卡数据管理***
CN113783832B (zh) 一种区块链常用密码学算法sdk包的开发制作方法及装置
US20130283363A1 (en) Secure data transfer over an arbitrary public or private transport
CN114679287B (zh) 数据处理方法、***、电子设备及存储介质
CN114372245A (zh) 基于区块链的物联网终端认证方法、***、设备及介质
US20220303124A1 (en) Key exchange system, communication apparatus, key exchange method and program
CN116781292A (zh) 一种数据处理方法、装置、设备以及可读存储介质
CN108270741A (zh) 移动终端认证方法及***
CN115086428A (zh) 网络请求发送方法、装置与电子设备
RU2633186C1 (ru) Персональное устройство аутентификации и защиты данных

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant