IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 山东大学软件工程应用与实践——GMSSL开源库(十三)——总结 -> 正文阅读

[网络协议]山东大学软件工程应用与实践——GMSSL开源库(十三)——总结

2021SC@SDUSC


写了这么多篇文章,也该最后做个总结了。这学期无论是课程也好,写这些文章也好,对密码、对openssl、对gmssl都有了相应的一定的认识。作为软件工程应用与实践这门课的最后一篇文章,我将总结一下我在这学期的所学、所理解、所感悟。

关于密码

有幸认识一位公司里的前辈领导,他曾经问过我:“能用一句话概括密码吗?”我当时想了很久,感觉并没有能得到一个比较合适的答案。最后前辈告诉了我他对于密码的理解,即“让正确的的人看见正确的事”。

回去仔细想了想,前辈总结的确实非常的精炼且确切。保密性、认证、访问控制、数据完整性和不可否认性作为五大网络安全服务,密码技术都在其中扮演着非常重要的角色,也正是这五大安全服务,确保了“让正确的人看见正确的事儿”。

作为刚刚接触密码的小白,对密码的理解可以说是非常浅薄,通过课程的学习以及自己的学习,对密码学这个发展已经较为完善的安全领域的体系有了一定的认识。从古典密码、到恩格玛机、到DES AES、到RSA、到我国的SM2/3/9系列、到全同态密码、再到最先前沿的量子密码……可以看出,密码技术在上个世纪70年代左右到现在飞速发展,密码体制的整体革新,新算法的不断发明,都要归结于网络的发展与普及。Internet的发明,使得数据不再拘泥于以往的纸质形式,可以通过电缆发送到大洋彼岸,连接到你想发去的地方。数据传送的便捷性和网络基础设施的建设成本越来越低,使越来越多的人接入到世界互联网中,数据的吞吐量越来越大,用户对于隐私的要求也越来越大,于是诞生了上文所说的安全服务,而解决问题的最基础的方法就是“加密”,也就逐步诞生了安全性越来越高的密码算法。

网络传输需要遵守一系列的网络协议,将这些传输的协议与加密的技术相结合,就诞生了一种安全传输协议——SecureSocketLayer缩写SSL,即安全套接层协议。为了与编程相结合,OPENSSL开源代码应运而生。GMSSL作为集成了国密算法的开源库,在OPENSSL的基础架构上,增加了国密的算法,为国密在实际编程的应用做出了贡献。

关于OPENSSL\GMSSL

开题的时候,我和组员已经确定好了主要的分析方向。我们聚焦于SM2和SM9算法,先阅读了国家发布的国标白皮书里的内容进行密码算法的初步学习,再对下载的源代码进行逐步分析,学习他们对于具体算法步骤的代码实现。

我针对SM9所构造的公钥密码体制,初步学习了SM9的数字签名算法、密钥交换协议、密钥封装机制和加解密算法,并分析了GMSSL中具体实现的代码,细节情况可参考之前的文章。SM9算法利用了在椭圆曲线有限域上离散对数的困难性问题,构造了一个公钥密码体制。而现阶段的密码体制,对大整数大素数的使用非常频繁。而计算机对于大整数的处理,并不像对普通整数那样进行简单的加减乘除取模乘幂指数等的运算,而是需要一些算法来加快其运算速度。听了指导老师的提示后,我便转向了对于大整数运算的代码分析中去。由于GMSSL是基于OPENSSL架构的,其\crypto\bn文件夹内没有任何的文件,所以我转去了OPENSSL中分析bn文件夹内的代码。

我主要针对大整数的加减乘运算进行了相关算法的学习,然后进行了OPENSSL的代码分析,详情可以参阅之前的文章https://blog.csdn.net/m0_51588039/article/details/121341857。由于大素数在其中的重要性,我进一步分析了大素数相关的问题,包括随机数的产生、Miller-Rabin素性检测等,详情可见:https://blog.csdn.net/m0_51588039/article/details/121401846

在阅读代码分析代码的过程中,为了封装在实际问题中不同情况的不同解决方案,OPENSSL\GMSSL使用了ctx的方法来为函数传递不同的参数,来控制源代码回调不同的函数。但是由于OPENSSL\GMSSL的封装性确实做的很好,把一些参数变量都进行宏定义、进行封装,当我直接对默写具体函数进行阅读分析时,时常不是很能理解一些参数变量函数的意义。

以上主要就是这一段时间内我对GMSSL和OPENSSL的相关学习情况。我这段时间主要专注于SM9以及其他少部分的密码算法的底层代码的实现,也就是Gmssl-master\crypto和openssl-master\crypto内的文件。由于该开源代码库实在是过于庞大,对于SSL协议的实现、engine模式的引入和运行模式等我都没有进行进一步的学习份代码的分析。

关于自己

无论是一开始的GMSSL的安装与编译过程、还是后面对源代码的阅读或者对于相关算法的理解,我都多多少少遇到了一些困难。利用现有的网络资源,可以搜索到非常多的相关内容,在搜素搜到的内容中进行浏览并筛选自己认为正确的内容进行精读和学习,是我解决近期所有问题的一个基本的方法。而且,在解决问题的过程中学习,要比在课堂上把知识“硬塞给我”学到的东西更多。

在这门课的契机下,使我对密码学有了进一步较为深刻的认识,让我领略了密码的奥秘所在。由于我对密码方向有着一定的兴趣,在今后的学习中,我也会不断的对密码知识进行进一步的学习与挖掘,争取进一步掌握openssl的源码内容。学习过网络协议相关内容后,争取能做到熟练运用openssl进行编程。同时,对国密的相关其他密码算法,我也会逐步去了解一些相关的内容,学习与掌握SM系列算法。

以上就是这段时间我在学习OPENSSL\GMSSL中所领会到的内容,期望对以后想要对OPENSSL\GMSSL进行学习的小伙伴有所启发。

欢迎批评指正!

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-11-30 15:58:44  更:2021-11-30 16:00:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年7日历 -2024/7/6 8:13:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码