CN104484153A - 一种应用层获取真随机数的方法 - Google Patents
一种应用层获取真随机数的方法 Download PDFInfo
- Publication number
- CN104484153A CN104484153A CN201410837653.5A CN201410837653A CN104484153A CN 104484153 A CN104484153 A CN 104484153A CN 201410837653 A CN201410837653 A CN 201410837653A CN 104484153 A CN104484153 A CN 104484153A
- Authority
- CN
- China
- Prior art keywords
- random number
- true random
- application layer
- interface
- user space
- 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.)
- Granted
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种应用层获取真随机数的方法,包括步骤:A1、应用层调用OpenSSL库中获取随机数的接口函数;A2、所述接口函数调用OpenSSL库的引擎插件;A3、所述引擎插件访问随机数用户态接口;A4、所述随机数用户态接口通过Crypto框架获取真随机数;A5、所述随机数用户态接口将所述真随机数返回所述引擎插件;A6、所述引擎插件将所述真随机数返回所述应用层。本发明使得应用层通过crypto架构获取硬件的真随机数,并且能够无缝支持用户态OpenSSL库,具有较好的兼容性和可扩展性。
Description
技术领域
本发明涉及数据加密技术领域,具体涉及一种应用层获取真随机数的方法。
背景技术
目前许多硬件芯片都支持真随机数(TRNG)特性,而真随机数在安全类应用中尤为重要,由芯片内部硬件产生密钥,密钥的随机程度更加抗干扰和可靠,这也是一个系统安全性的关键所在。
如图1所示,Linux内核中的crypto框架管理了内核中所有的加解密算法,包括MD5、SHA1、AES、DES、RNG等,Crypto框架最初是为了内核中网络安全套接层SSL协议而设计的,不支持直接给用户态使用。后期内核为了满足用户态使用crypto的需求,借助网络协议中socket通讯协议族的管理机制实现此功能。所以,增加了一种AF_ALG协议的socket,目前可以给用户态使用的算法有AES类和摘要类(MD5和SHA1等)算法,但并不支持RNG(随机数)算法。
发明内容
本发明要解决的技术问题在于,针对现有技术的不足,提供一种应用层获取真随机数的方法,克服现有技术Linux应用层不能使用硬件芯片生成的真随机数的缺陷。
本发明为解决上述技术问题所采用的技术方案为:
一种应用层获取真随机数的方法,包括步骤:
A1、应用层调用OpenSSL库中获取随机数的接口函数;
A2、该接口函数调用OpenSSL库的引擎插件;
A3、该引擎插件访问随机数用户态接口;
A4、该随机数用户态接口通过Crypto框架获取真随机数;
A5、该随机数用户态接口将该真随机数返回该引擎插件;
A6、该引擎插件将该真随机数返回该应用层。
根据本发明的实施例,该步骤A3包括步骤:该引擎插件通过AF_ALG协议的套接字socket访问该随机数用户态接口。
根据本发明的实施例,该步骤A4包括步骤:该随机数用户态接口通过套接字socket操作集访问Crypto框架。
根据本发明的实施例,该步骤A4还包括步骤:该Crypto框架通过真随机数驱动程序获取该真随机数。
根据本发明的实施例,该随机数用户态接口执行如下步骤:
B1、申请Crypto框架资源;
B2、申请rng算法上下文;
B3、获取该真随机数;
B4、释放该Crypto框架资源。
根据本发明的实施例,该引擎插件通过一数据结构封装调用接口。
实施本发明的技术方案,具有以下有益效果:本发明使得应用层通过crypto架构获取硬件的真随机数,并且能够无缝支持用户态OpenSSL库,具有较好的兼容性和可扩展性。
附图说明
下面通过参考附图并结合实例具体地描述本发明,本发明的优点和实现方式将会更加明显,其中附图所示内容仅用于对本发明的解释说明,而不构成对本发明的任何意义上的限制,在附图中:
图1为现有技术crypto架构使用方法示意图;
图2为本发明的应用框架示意图;
图3为本发明流程图;
图4为本发明获取真随机数过程示意图。
具体实施方式
如图2所示,应用程序是OpenSSL的安全类用户应用层,安全应用的场景很广,包括流媒体、签名、证书等。应用层之前一般都使用伪随机数,通过本发明应用层可以调用OpenSSL库中获取随机数的接口函数来获取真随机数,OpenSSL是用户空间的一个开源的安全算法库,本发明在OpenSSL库中设置engine(引擎)插件,rng用户态接口处于Linux内核中,介于内核Crypto框架和用户态之间,使用网络socket的方式和用户态交互数据,Linux内核中的crypto框架,负责管理内核中所有的加解密算法,TRNG驱动是真随机数驱动程序,通过控制硬件的真随机数发生器来产生随机数,并返回给Crypto框架。
如图3所示,本发明应用层获取真随机数的方法包括步骤:
A1、应用层调用OpenSSL库中获取随机数的接口函数;
A2、该接口函数调用OpenSSL库的引擎插件;
A3、该引擎插件访问随机数用户态接口;
A4、该随机数用户态接口通过Crypto框架获取真随机数;
A5、该随机数用户态接口将该真随机数返回该引擎插件;
A6、该引擎插件将该真随机数返回该应用层。
根据本发明的实施例,步骤A3包括步骤:该引擎插件通过AF_ALG协议的套接字socket访问该随机数用户态接口。步骤A4包括步骤:随机数用户态接口通过套接字socket操作集访问Crypto框架。步骤A4还包括步骤:Crypto框架通过真随机数驱动程序获取真随机数。
如图4所示,本发明随机数用户态接口执行如下步骤:
B1、申请Crypto框架资源;
B2、申请rng算法上下文;
B3、获取真随机数;
B4、释放Crypto框架资源。
随机数用户态接口的AF_ALG协议socket的操作集如下:
bind():调用crypto_alloc_rng(),匹配算法类型(即AF_ALG协议socket的类型),并申请用于Crypto框架管理的资源;
accept():申请rng算法的一个上下文结构,此结构将用于管理rng算法的私有数据。并注册一个析构接口到socket->sk_destruct(),便于在关闭socket时释放私有数据的资源。
recvmsg():获取随机数。根据用户指定的长度,调用crypto_rng_get_bytes()(其内部调用硬件的真随机数驱动)从底层获取随机数,然后将随机数返回给应用层指定的缓冲区buf。
release():调用crypto_free_rng(),释放bind接口申请的相关Crypto框架资源。
OpenSSL中的算法引擎实现一个RAND_METHOD结构,此结构是OpenSSL中注册随机数引擎的标准数据接口。算法引擎通过ENGINE_set_RAND()向OpenSSL中传入RAND_METHOD结构,RAND_METHOD结构封装的接口bytes(),可用于获取指定长度的随机数。接口bytes()中的处理流程是,首先创建一个AF_ALG协议的侦听socket,通过bind()指定rng类型,然后accept()获取一个传输socket,从此socket中读取指定长度的数据,最后关闭socket资源。
对于OpenSSL的应用层来说,使用真随机数的接口只有一个:RAND_bytes()。调用RAND_bytes()时,OpenSSL会进入引擎插件已注册的真随机数引擎bytes()接口,然后再通过socket与Linux内核交互数据。
本领域技术人员不脱离本发明的实质和精神,可以有多种变形方案实现本发明,以上所述仅为本发明较佳可行的实施例而已,并非因此局限本发明的权利范围,凡运用本发明说明书及附图内容所作的等效结构变化,均包含于本发明的权利范围之内。
Claims (6)
1.一种应用层获取真随机数的方法,其特征在于,包括步骤:
A1、应用层调用OpenSSL库中获取随机数的接口函数;
A2、所述接口函数调用OpenSSL库的引擎插件;
A3、所述引擎插件访问随机数用户态接口;
A4、所述随机数用户态接口通过Crypto框架获取真随机数;
A5、所述随机数用户态接口将所述真随机数返回所述引擎插件;
A6、所述引擎插件将所述真随机数返回所述应用层。
2.根据权利要求1所述的应用层获取真随机数的方法,其特征在于,所述步骤A3包括步骤:所述引擎插件通过AF_ALG协议的套接字socket访问所述随机数用户态接口。
3.根据权利要求1所述的应用层获取真随机数的方法,其特征在于,所述步骤A4包括步骤:所述随机数用户态接口通过套接字socket操作集访问Crypto框架。
4.根据权利要求3所述的应用层获取真随机数的方法,其特征在于,所述步骤A4还包括步骤:所述Crypto框架通过真随机数驱动程序获取所述真随机数。
5.根据权利要求4所述的应用层获取真随机数的方法,其特征在于,所述随机数用户态接口执行如下步骤:
B1、申请Crypto框架资源;
B2、申请rng算法上下文;
B3、获取所述真随机数;
B4、释放所述Crypto框架资源。
6.根据权利要求1所述的应用层获取真随机数的方法,其特征在于:所述引擎插件通过一数据结构封装调用接口。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410837653.5A CN104484153B (zh) | 2014-12-29 | 2014-12-29 | 一种应用层获取真随机数的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410837653.5A CN104484153B (zh) | 2014-12-29 | 2014-12-29 | 一种应用层获取真随机数的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104484153A true CN104484153A (zh) | 2015-04-01 |
CN104484153B CN104484153B (zh) | 2017-07-07 |
Family
ID=52758701
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410837653.5A Active CN104484153B (zh) | 2014-12-29 | 2014-12-29 | 一种应用层获取真随机数的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104484153B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108234114A (zh) * | 2016-12-22 | 2018-06-29 | 中标软件有限公司 | 一种基于硬件加密算法的ssl的实现方法 |
CN111708762A (zh) * | 2020-06-18 | 2020-09-25 | 北京金山云网络技术有限公司 | 一种权限认证方法、装置及服务端设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1381813A (zh) * | 2001-04-19 | 2002-11-27 | 香港城市大学 | 用于随机数和流密码生成的小型密码引擎 |
CN101620523A (zh) * | 2009-07-29 | 2010-01-06 | 深圳国微技术有限公司 | 一种随机数发生器电路 |
CN102609237A (zh) * | 2011-01-06 | 2012-07-25 | 微软公司 | 可扩展的随机数生成 |
-
2014
- 2014-12-29 CN CN201410837653.5A patent/CN104484153B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1381813A (zh) * | 2001-04-19 | 2002-11-27 | 香港城市大学 | 用于随机数和流密码生成的小型密码引擎 |
CN101620523A (zh) * | 2009-07-29 | 2010-01-06 | 深圳国微技术有限公司 | 一种随机数发生器电路 |
CN102609237A (zh) * | 2011-01-06 | 2012-07-25 | 微软公司 | 可扩展的随机数生成 |
Non-Patent Citations (2)
Title |
---|
YXRYKDS: "怎样安全的生成随机数", 《开源中国社区HTTPS://MY.OSCHINA.NET/TEN/BLOG/204105#COMMENT-LIST》 * |
黄枫等: "基于CryptoAPI的生物医学真随机数的生成器", 《第四军医大学学报》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108234114A (zh) * | 2016-12-22 | 2018-06-29 | 中标软件有限公司 | 一种基于硬件加密算法的ssl的实现方法 |
CN111708762A (zh) * | 2020-06-18 | 2020-09-25 | 北京金山云网络技术有限公司 | 一种权限认证方法、装置及服务端设备 |
CN111708762B (zh) * | 2020-06-18 | 2023-09-01 | 北京金山云网络技术有限公司 | 一种权限认证方法、装置及服务端设备 |
Also Published As
Publication number | Publication date |
---|---|
CN104484153B (zh) | 2017-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9807066B2 (en) | Secure data transmission and verification with untrusted computing devices | |
CN108345806B (zh) | 一种硬件加密卡和加密方法 | |
US20190036693A1 (en) | Controlled access to data in a sandboxed environment | |
CN110266639B (zh) | 用于安全环境中的端点硬件辅助的网络防火墙的系统和方法 | |
TWI740399B (zh) | 資料處理方法、裝置和電子設備 | |
CN109726598A (zh) | 基于云服务器的嵌入式安全加密芯片 | |
US10769272B2 (en) | Technology to protect virtual machines from malicious virtual machine managers | |
CN104378649B (zh) | 一种利用国密sm1算法对视频流进行实时加密的方法及系统 | |
US20160285892A1 (en) | Protecting a memory | |
CN106326751B (zh) | 一种可信道系统及其实现方法 | |
US10262146B2 (en) | Application-to-application messaging over an insecure application programming interface | |
CN111274611A (zh) | 数据脱敏方法、装置及计算机可读存储介质 | |
CN107634946A (zh) | 一种微服务节点合法性验证方法和装置 | |
CN103136458A (zh) | 一种Linux操作系统的代码保护方法及其模块 | |
CN114124364A (zh) | 密钥安全处理方法、装置、设备及计算机可读存储介质 | |
CN111181944B (zh) | 通信系统及信息发布方法、装置、介质、设备 | |
Liu et al. | Secure Video Streaming with Lightweight Cipher PRESENT in an SDN Testbed. | |
CN111241492A (zh) | 一种产品多租户安全授信方法、系统及电子设备 | |
CN104484153A (zh) | 一种应用层获取真随机数的方法 | |
US20170118197A1 (en) | Sharing data between sandboxed applications with certificates | |
CN102970134B (zh) | 将硬件密码设备的算法用于pkcs#7数据封装的方法及系统 | |
WO2019223098A1 (zh) | 一种文件的读写方法及设备 | |
CN103150523B (zh) | 一种简易的嵌入式可信终端系统及方法 | |
Saarinen | Simple AEAD hardware interface (SÆHI) in a SoC: implementing an on-chip Keyak/WhirlBob coprocessor | |
Mandebi Mbongue et al. | Domain isolation in FPGA-accelerated cloud and data center applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |