ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

加密原理详解:对称式加密VS非对称式加密

加密原理详解:对称式加密VS非对称式加密 一、前言在了解加密原理前我们来看看这样一个故事。小红和小明是情侣一天小红给小明发短信说“亲爱的我银行卡上没有钱了你给我转1万块吧。”有过上当受骗经历的人都知道这有可能是小偷偷了小红手提包然后拿手机发的短信。不过我们小明学过加密原理于是他回复说“你直接拿我的银行卡刷吧密码加上我们第一次约会的日期就是663156。”很明显只有小明和小红知道他们第一次约会是什么时候假设是2008年4月1号那么小红就可以根据计算663156-200841462315得到银行卡密码就可以消费了。这就是加密的本质将信息与密钥相加得到加密后的信息。只有知道密钥的人才能解密。二、什么是秘钥既然加密需要密钥那么密钥是什么呢密钥是作用于加密时的一串密码通过密钥进行信息加密传输到达接收者和监听者由于接收者也有密钥所以接收者可以根据密钥进行解密。从而防止通讯信息泄露。三、什么是对称加密前言讲的故事就是一个对称式加密小明和小红都知道第一次约会的日期。所以传统的对称式加密需要通讯双方都保存同一份密钥通过这份密钥进行加密和解密。所以非对称加密也称为单密钥加密。对称加密的优势在于加解密速度快但是安全性较低密钥一旦泄露所有的加密信息都会被破解。同时密钥的传输和保密也成为难题。为了解决密钥传输的问题出现通过密钥交换建立共享密钥的技术。具体如何建立共享密钥呢我们往下看。3.1 建立共享密匙在小明、小红和小偷的三人世界中由于小明是学过加密原理的知道迪菲–赫尔曼密钥交换Diffie-Hellman Key Exchange所以他知道如何建立共享密钥。3.1.1 颜料混合把戏接下来我们看看如何通过颜料混合把戏建立共享密钥吧。假设在房间中有小明、小红和小偷三个人每个人各自拥有相同颜色的颜料。在房间的正中间也有这些颜料。接下来小明要和小红建立共享密钥了。此时小明对大家说“我要用蓝色。”然后小明从自己的颜料里选择了黄色这个黄色就是小明的私钥小红和小偷都不知道。小明将自己的私钥黄色与公钥蓝色混合后得到了一种不能分解的颜色我们就叫“小明-蓝色”吧虽然大家都知道黄蓝变绿但是这里我们为了知道是谁的混合色还是以名字加公钥颜色来称呼然后小明将“小明-蓝色”公布了出来。同样小红听到了小明说用蓝色后也选择了自己的私钥红色与公钥蓝色混合得到了“小红-蓝色”并公布了出来。此时房间中小明、小红、小偷三人都知道了几个信息。1.他们都用了蓝色2.小明公布了“小明-蓝色”小红和小偷不知道是什么颜料与蓝色的混合3.小红公布了“小红-蓝色”小红和小偷不知道是什么颜料与蓝色的混合接下来见证奇迹的时刻到了小明拿到“小红-蓝色”与自己的私钥“黄色”混合得到“小红-蓝色-小明”的新颜料。同样的小红拿到“小明-蓝色”与自己的私钥“红色”混合得到“小明-蓝色-小红”。大家发现了吗“小红-蓝色-小明”和“小明-蓝色-小红”是一模一样的颜色。而小偷不知道小明和小红的私钥颜色无法混合出与他们相同的颜色。至此共享密钥建立起来了。在了解了共享密钥的建立过程后我们将告别实体颜料采用数字的方式来建立共享密钥。注大家可能想到了小偷可以根据自己的颜料与公钥“蓝色”混合尝试得出“小明-蓝色”和“小红-蓝色”。这样的方法称之为穷举法也就是尝试所有的可能性进行信息破解所以加密算法在理论上都是可以通过穷举法破解的只不过实际上超级计算机都需要计算万亿年才能穷举出所有可能性。3.1.2 乘法把戏首先我们假设乘法如同颜料混合一样是不能分解的看看如何用乘法与数字建立共享密钥。小明公开了一个数字5然后小明选择了一个私人数字4然后利用乘法将两者混合起来得到“小明-5”20接下来小红也选择了一个私人数字7得到“小红-5”35小明拿到35*4140小红拿到20*7140。共享密钥建立完成。大家也发现了小偷知道20,35,5这三个数字后用除法就能算出小明和小红的私钥。所以接下来我们将了解实际使用中的如何使用乘法把戏来防止私钥被计算出来的。3.2 迪菲–赫尔曼密钥交换算法我们都知道幂运算但是要让计算机计算就比较难了。所以我们会用幂运算作为建立共享密钥的乘法把戏。同时我们还要了解钟算的原理这里的钟可以理解成我们经常看到的时钟我们常见的时钟最大是12如果当前是10点过了4个小时后就变成了下午2点。也就是(104)mod122。了解了钟算和幂运算后就开始进入正题吧。还是小明、小红和小偷的房间小明声明了钟为11幂运算的底为2接下来小明和小红分别选择了自己的私钥4和7。第一步小明混合自己的“小明-11,2”得到小红混合自己的“小红-11,2”得到。第二步小明拿到“小红-11,2”7进行计算小红拿到“小明-11,2”5进行计算。大家注意到了吗小明和小红建立了共享密钥3而小偷无法根据已知的11,2,5,7这几个数字计算出密钥或小明小红的私钥。有了共享密钥后小明和小红就可以安全进行加密传输了。3.3 AES对称加密过程AES 的全称是 Advanced Encryption Standard 是最流行的对称加密算法其加解密速度快。AES支持128位192位256位三种长度的密钥密钥越长安全性越高。AES加密时会把明文切分成许多小块的明文然后对每块明文单独加密将加密后的密文传送出去接收方再将密文切块解密得到明文。如下图所示上一步中小明和小红已经协商好了密钥3。接下来就可以通过对称加密进行通信了。在小明、小红和小偷的房间中小明想把密码“462315”告诉小红于是第一步将密码按照一位的长度进行切分实际中通常按128位进行切分就变成了“4”“6”“2”“3”“1”“5”第二步对每块明文通过密钥3进行加密结果就是“795648”然后小明告诉小红和小偷“我的密码是795648”第三步小红拿到密文后对密文进行切块对每块通过密钥3进行解密就得到了正确的密码“462315”而小偷由于不知道密钥就无法解密出正确的信息。四、什么是非对称加密在对称加密中加密和解密使用的是同一份密钥。所以在非对称加密中加密和解密使用的是不同的密钥。非对称加密中的密钥分为公钥和私钥。公钥顾名思义就是公开的任何人都可以通过公钥进行信息加密但是只有用户私钥的人才能完成信息解密。非对称加密带来了一个好处避免了对称式加密需要传输和保存同一份密钥的痛苦。现在最流行的非对称加密算法就是RSA加密算法具体是怎么做的呢我们继续往下看。4.1 RSA非对称加密过程维基百科是这么解释的RSA加密算法是一种非对称加密算法在公开密钥加密和电子商业中被广泛使用。RSA是由罗纳德·李维斯特Ron Rivest、阿迪·萨莫尔Adi Shamir和伦纳德·阿德曼Leonard Adleman在1977年一起提出的。当时他们三人都在麻省理工学院工作。RSA 就是他们三人姓氏开头字母拼在一起组成的。前面我们讲了如何通过钟算和幂函数建立不可逆计算机可以通过穷举法计算出私钥实际场景中就算是超级计算机也要计算几万亿年之久的共享密钥。由于小红是小明的女朋友小明天天在小红面前给她讲RSA加密算法的原理所以小红也知道怎么得出自己的公钥和私钥。接下来我们一起跟着小红的脚步看看RSA加密的公钥和私钥是怎么计算出来的。第一步小红选择了两个很大的质数p和q这里为了便于计算选择2和11;第二步计算p和q的乘积np*q2*1122第三部计算n的欧拉函数φ(n)(p-1)*(q-1)10第四步选择一个小于φ(n)且与φ(n)互质的整数e{1,3,7,9}这里选择e7第五步计算e对于φ(n)的模反元素ed mode φ(n) 1dd3到这里小红就得到了他自己的公钥(n,e)和私钥(n,d)。其中n就是钟大小e和d就是幂函数的幂。接下来就通过计算出来的公钥和私钥进行数据的加解密。还是小明、小红和小偷三个人小红对大家说我的公钥是22,7小明知道了小红的公钥后想讲自己的信息“14”告诉小红于是就用小红公开的公钥进行加密。具体步骤如下第一步小明根据要加密的信息14进行计算得到加密后的信息20然后将20告诉小红和小偷第二步小红有自己的私钥将加密信息20进行解密得到了小明想传递给小红的信息。而小偷呢知道22,7,20但是不知道小红的密钥22,3无法解密出正确的信息。RSA加密算法在数字签名中也发挥着巨大的作用假设小偷可以假冒小红说小红的公钥是22,9而小明不知道是小偷假扮的按照小偷的公钥加密后结果被小偷解密了。数字签名的作用就是防止信息被篡改小红说她的公钥是22,7的同时使用私钥给这段信息通常使用MD5值计算签名加上签名小明得到公钥22,7和签名13小明拿到签名后利用公钥计算出信息是否被篡改。五、加密的实际作用本文使用的很小的数来进行加密原理的讲解为了是读者可以方便进行计算。在实际使用中n,e都是特别大的数其中n的长度都在768以上1024长度被认为是基本安全的。1230186684530117755130494958384962720772853569595334792197322452151726400507263657518745202199786469389956474942774063845925192557326303453731548268507917026122142913461670429214311602221240479274737794080665351419597459856902143413 33478071698956898786044169848212690817704794983713768568912431388982883793878002287614711652531743087737814467999489 × 36746043666799590428244633799627952632279158164343087642676032283815739666511279233373417143396810270092798736308917六、总结最后总结一下首先我们通过一个诈骗短信的例子引出了加密的原理就是信息密钥密钥就是对信息进行加解密的一串数字。然后通过颜料混合把戏形象的演示了如何建立共享密钥。在使用乘法建立共享密钥的过程中学习了钟算和幂运算接着我们了解了RSA加密算法的过程通过两个质数生成公钥和私钥最后我们根据公钥进行信息加密再通过私钥完成信息解密。七、写在最后或许看到这里大家心里还有许多疑惑。为什么小明和小红建立共享密钥时通过几次幂运算和钟算就能得到一样的共享密钥为什么RSA加密算法要用两个质数为什么通过公钥加密的信息可以通过私钥解开加密算法的背后是一道道迷人的数学难题而RSA加密算法之所以被广泛运用是因为一个名为整数分解的古老数学问题你可以轻易找到两个很大的质数相乘得到一个结果n但是要将这个结果n分解回两个质数就变得极其困难。尽管这个所谓的“整数分解”问题被研究了数个世纪还没人能找到一个足够高效的通用方法解决它并对标准RSA钟大小造成危害。数学史中充满了未解决的问题尽管这些迷人的问题缺乏任何实际应用却单靠其美学特质就吸引了数学家进行深入探究。令人颇感惊讶的是许多这类迷人但显然无用的问题后来都有了很大的实用价值这一价值只有在问题被研究数个世纪后才得以破解。整数分解这一问题由来已久。对其最早的严肃研究似乎是在17世纪由数学家费马Fermat和梅森Mersenne进行的。欧拉Euler和高斯Gauss两位数学“泰斗”也在接下来的世纪里对这一问题做出了贡献。但直到公钥加密于20世纪70年代被发明分解大数字的困难才成为一个实际应用的关键。关于网络安全技术储备网络安全是当今信息时代中非常重要的一环。无论是找工作还是感兴趣黑客都是未来职业选择中上上之选为了保护自己的网络安全学习网络安全知识是必不可少的。如果你是准备学习网络安全黑客或者正在学习下面这些你应该能用得上①网络安全学习路线②20份渗透测试电子书③安全攻防357页笔记④50份安全攻防面试指南⑤安全红队渗透工具包⑥网络安全必备书籍⑦100个漏洞实战案例⑧安全大厂内部视频资源⑨历年CTF夺旗赛题解析一、网络安全黑客学习路线网络安全黑客学习路线形成网络安全领域所有的知识点汇总它的用处就在于你可以按照上面的知识点去找对应的学习资源保证自己学得较为全面。二、网络安全教程视频我们在看视频学习的时候不能光动眼动脑不动手比较科学的学习方法是在理解之后运用它们这时候练手项目就很适合了。三、网络安全CTF实战案例光学理论是没用的要学会跟着一起敲要动手实操才能将自己的所学运用到实际当中去这里带来的是CTFSRC资料HW资料毕竟实战是检验真理的唯一标准嘛~四、网络安全面试题最后我们所有的作为都是为就业服务的所以关键的临门一脚就是咱们的面试题内容所以面试题板块是咱们不可或缺的部分这里我给大家准备的就是我在面试期间准备的资料。网安其实不难难的是坚持和相信自己我的经验是既然已经选定网安你就要相信它相信它能成为你日后进阶的高效渠道这样自己才会更有信念去学习才能在碰到困难的时候坚持下去。机会属于有准备的人这是一个实力的时代。人和人之间的差距不在于智商而在于如何利用业余时间只要你想学习什么时候开始都不晚不要担心这担心那你只需努力剩下的交给时间这份完整版的网络安全学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
返回列表