你能够从别人那里汲取某些思想,但必须用你本身的方式加以思考,在你的模子里铸成你思想的砂型。——兰姆linux
本文已经收录至个人GitHub,欢迎你们踊跃star 和 issues。
https://github.com/midou-tech/articles
点关注,不迷路!!!git
上次say&see了密码学的DES算法,接下来就有人私信说是一开始就直接讲算法有点难理解,想让我给打打底,这么说固然没问题,那之后咱们就每周一篇,从最基础的东西讲起,下面我还会附上一张基础的知识框架图,感兴趣的盆友来看一看,跟着我带你学习密码学。程序员
刚开始接触密码学的时候,我也是一头雾水😳,每次看到加密和解密,各类类似又不一样的算法在个人大脑里转圈,我真的是太南了,可是随着学习的深刻,好像慢慢了解了其中奥秘,这件事情就再也不那么难了,因而我把本身的学习方法总结出来,和你们共同分享。github
个人全部写做内容会更多的照顾到初学者和进阶的大佬,每个大纲中的知识点都会从简单到复杂,不会一上来就讲些太难的,也不会只分享一些简单易学的、没有养分的内容。你们在看博文的过程当中遇到任何问题或者生活工做上遇到问题私聊我,点击<font face="宋体" color=blue size=4>联系做者</font>加我微信,or发e-mail至:2507367760@qq.com 或者 longyueshier@163.com 或者 longyueshier@gmail.com 。算法
关于在密码学中的数学基础(数学+密码学=......虽然有点难,我仍是得说给你听,困难的事情简单的道理),主要讲到群、环、域这三个基础的数学模型,听起来觉着复杂,但其实用起来简单,这个时候咱们已经不只仅知足于对单纯的数字进行普通的运算了,它们所描述的就是将数与运算结合起来的一种运算集合。安全
举个简单例子,我简单解释一下什么是群,群就是在一个非空集合上定义一个新的运算,使这个运算存在交换律、结合律、单位元(e·a=a)、逆元(a·a的逆元=e)就可称之为一个群。环和域和群相似,相比会增多其中的元数个数,以及自定义运算个数。关于代数的内容,推荐你们能够参考杨子胥的《近世代数》,里边关于密码学中所要用到的数学知识都有详细的介绍,看完书可谓是受益不浅。微信
讲完数学基础,接下来,我对后边要讲的知识的大概框架描述一下下,首先给你们讲讲在密码学中的一些基本概念,明文(可不是wang zhe rong yao铭文嗷~ ~)、密文、密钥等等这些词汇都是能够经过字面意思理解的,后边再遇到难以理解的词汇我在给你们解释,首先咱们要接触的第一个知识就是通讯保密系统,当咱们理解了这个系统的总体流程,咱们就能够知道,当消息泄露时候,咱们从哪里入手排查。网络
在框图中咱们能够看出,加解密的过程当中都须要使用到密钥,而密钥的不一样使用方法就将密码体制分为单钥体制(加密解密使用同一密钥)和双钥体制(使用不一样密钥进行加密和解密),而对于不一样的加密结果,都存在多种密码攻击方式,至于这里的具体内容,下次咱们来详细解释。框架
了解完这些基础,咱们就算是正式进军密码学了,开门见山的说,一来你遇到的第一个问题就是流密码,这算是密码学里第一个难懂的专业词汇,流密码主要就是指利用一个密钥流生成器产生一个密钥流,而后用这个密钥流来对明文消息进行加密和解密,所谓同步流密码和自同步流密码就是取决于其输入的明文是否会影响加密器中的记忆元件的存储状态。密钥流的产生依赖于密钥流生成器,这个东西主要由一个驱动系统和一个非线性系统,二者相互配合完成任务,目前所用最多的就是利用一个或者多个LFSR构成其驱动部分,这样看来线性反馈移位寄存器可谓是功不可没。流密码的安全性取决于密钥流的安全性,要求密钥流序列有好的随机性,,以使窃听者对它没法预测。也就是说,即便截获其中一段,也没法推测后面是什么。若是密钥流是周期的,要彻底作到随机性是困难的。严格地说,这样的序列不可能作到随机,只能要求截获比周期短的一段密钥流时不会泄露更多信息,这样的序伪随机序列。函数
分组密码与流密码最大的不一样在于,流密码的加密器中有一个记忆元件,而分组密码不存在,在许多密码系统中,分组密码也是系统安全的一个重要组成部分,用分组密码易于构造伪随机数生成器、流密码、消息认证码(MAC)和杂凑函数等,还可进而成为消息认证技术、数据完整性机制、实体认证协议以及单钥数字签字体制的核心组成部分。本部分主要介绍一下feistel结构,以及利用feistel结构构成的DES算法和AES算法,而且从一名学习者的角度介绍一下其安全性。
在公钥密码体制中,咱们首先须要掌握一些简单的数论知识,例如,模运算,费尔玛定理,欧拉定理,欧几里得定理,中国剩余定理等等,这些基础数论知识在以后的学习中再和你们一一道来,掌握了数论知识之后,咱们主要学习公钥加密体制以及RSA算法,以及基于椭圆曲线的密码体制,这一部分就稍稍有些难以理解,公钥密码体制的概念是在解决单钥密码体制中最难解决的两个问题时提出的,这两个问题分别是密钥分配和数字签字。公钥密码算法的最大特色是采用两个相关密钥将加密和解密能力分开,一个密钥是公开密钥,用于加密;另外一个密钥是秘密密钥,用于解密。RSA算法是1978年由R.Rivest,A.Shamir和L.Adleman提出的一种用数论构造的、也是迄今为止理论上最为成熟完善的公钥密码体制,该体制已获得普遍的应用。为保证RSA算法的安全性,它的密钥长度需一再增大,使得它的运算负担愈来愈大。相比之下,椭圆曲线密码体制ECC可用短得多的密钥得到一样的安全性,所以具备普遍的应用前景。ECC已被IEEE公钥密码标准P1363采用。
关于消息认证机制呢,简单来讲就是对所接受到的消息进行确认,保证其必定来自于发送方,且消息内容并未被篡改,在认证过程当中,需有产生认证符,这一基本功能又做为认证协议的一个组成部分。认证符也就是用于认证消息的数值,主要由消息认证码MAC(messageauthenticationcode)和杂凑函数(hashfunction)两个途径来产生认证符,因此在这个部分咱们就要主要讲二者的区别和联系。在杂凑函数中主要涉及两种算法,分别是MD系列以及SHA系列,二者类似又不一样,具体详情咱们之后慢慢说。
数字签名的主要目的就是对消息进行签字,确保其自己的身份,数字签字由公钥密码发展而来,它在网络安全,包括身份认证、数据完整性、不能否认性以及匿名性等方面有着重要应用。
以上就是密码学的基础框架图,想必看到这里你也理解了很多东西吧,固然这些都还只是基础部分,想要学好还须要多下功夫多了解,关于后边的具体内容呢,咱们下回详解😉
求点赞👍 求关注❤️
「转发」是明目张胆的喜欢,「在看」是偷偷摸摸的爱
若是有人想发文章,我这里提供有偿征文
(具体细则微信联系),欢迎投稿或推荐你的项目。提供如下几种投稿方式:
去个人github提交 issue:
https://github.com/midou-tech/articles
发送到邮箱: 2507367760@qq.com 或者 longyueshier@163.com 或者 longyueshier@gmail.com
微信发送: 扫描下面二维码,公众号里面有做者微信号。
精选文章都同步在公众号里面,公众号看起会更方便,随时随地想看就看。微信搜索龙跃十二
或者扫码便可订阅。