xiaoyuzhou1228

嵌入式设备中支持国密算法的方法(三)——移植Openssl库的步骤说明

0
阅读(225) 评论(18)

本篇文章是介绍国密算法在嵌入式设备中应用方法系列文章的第三篇,介绍移植openssl库到嵌入式设备中的具体方法,当然最终的目的还是使我们的设备能支持国密算法。同上一篇文章中介绍的miracl密码库相比,openssl库的应用更加广泛,资料支持度更好,但是代码体量要大于miracl库。需要再次说明的是,同miracl库一样,openssl的库也并不能直接提供国密算法的接口,我们是利用库中相应的API接口(如椭圆曲线等)来构建自己的国密算法,下面我们具体介绍移植的步骤。

第一步 获取库

作为应用广泛的开源密码库,可以轻松获取源码,https://www.openssl.org/source/ ,若是对openssl库的使用不太熟悉,可以借助使用手册来了解用法:

图片1.png

第二步 利用openssl构建SM算法库

我们构建一个新的工程用以实现国密算法,由于linux下通过makefile编译项目的方式不太直观,我们使用windoes环境下VSstudio编译环境来演示。

首先将openssl库的源码添加到工程文件夹的路径下,其次要在代码中增加文件包含,如下图:

编译正确之后,开始着手构建SM算法的源码了,这一部分的代码是基于国密算法的原理,利用openssl库的接口构建的,这需要开发者了解国密算法原理。限于篇幅,本例中仅截取了作者实现的API,如下图:

图片4.png

整体代码完成之后,我们可以选择生动态库或静态库供调用。此外,若是开发者准备在linux环境下使用gcc或某一嵌入式设备指定的编译工具来完成上述操作,则需要完成更多的工作,比较重要的是,开发者需要手动完成整个编译过程,这需要清楚openssl代码库本身的文件依赖关系,这部分内容作者不做更多介绍。

第三步 将生成的库添加到个人的设备代码中

在上一步中,作者成功完成了国密SM2(对称算法)的动态库制作,如下图:

图片5.png

为了便于介绍,作者整体的库制作过程和测试过程都是在windows环境下完成的,此处生成的.dll动态库也仅能在windows pc下运行。若是开发者在linux环境下完成上述操作,则应该生成.so为后缀的动态库文件,才能成功的添加到嵌入式设备中运行。

这一步代码的实现要根据各自嵌入式硬件设备的特点来实现,在这里不做过多介绍!


  1. 其实没必要去研究国密算法,因为会投入人力和物力,不如直接找一款加密芯片,减少投入,安全又有保障,市面上已经有成熟的产品,足够满足你产品安全的需求


  2. 太高深了,有生成国密的实例就更好了。

  3. 确定这方法行的通吗?

  4. 国密算法是国家密码局制定标准的、安全性超高的算法,想必支持国密算法的加密芯片应该是足够安全有保障的。

  5. 有谁知道楼上说的那款LKT4305GM是哪家公司的,有没有谁能详细的介绍下这款国.密芯片?安全性能怎么样?开发困难么?多谢了


  6. 我知道一款国密芯片,代号LKT4305-GM,感兴趣的上网搜一下.....

  7. 这个不能说谁更好,openssl和miracl两个各自有各自的优点,不能单纯的说这个比那个好。看你具体需求了,有可能这次两相比较一个更适合,但是下回做的项目可能另一个比这个更适合,so,都一样是工具,没有谁更好一说,


  8. 这个问题很专业了!需要专业人士回答下吧。


  9. 好象openssl库各方面都比miracl密码库要更好用,那是不是说openssl库就可以完全替代miracl密码库呢?


  10. 你可以上网查一下加密芯片,有些加密芯片是支持国密算法的,这样会节省很多开发时间

  11. 学到了,但是过程太复杂了,有没有更为简单的方法,可以快速的实现让嵌入式设备支持国密算法呢?


  12. 国密算法是我国自主研发创新的一套数据加密处理系列算法,广泛应用于嵌入式物联网等相关领域。前提是算法密钥必须要保证安全性,因此将国密算法嵌入到硬件加密芯片中结合使用才能保证安全。


  13. @MrWang   

    国密算法的优势是什么?是不是说安全等级高?

    国密算法从SM1-SM4分别实现了对称、非对称、摘要等算法功能,适合应用于嵌入式物联网等相关领域,完成身份认证和数据加解密等,安全性上要高于RSA、3DES、SHA


  14. 国密算法的优势是什么?是不是说安全等级高?

  15. 国密算法SM2非对称使用上跟RSA类似,SM1、SM4、SM7是对称算法使用跟3DES类似,SM3是数据摘要,类似SHA-256,这些使用大多可以百度查到基本使用方式