一、前言
说到加解密也许有些人会有些陌生(仅对于初学者或其他行业的学者),先不说那些让人看到千篇一律的概念,就是如果两个人发信息怎样才能不被第三个人知道呢?是不是脑海里冒出了使用某种暗号,只有相互传信的人了解其中的奥秘,就算别人看到了也没有办法解开你们传递的真正含义。
二、前世今生
2.1、前世(历史的加密算法应用)
既然说到了加密就不得不提加密工具提到加密工具,下面简单列举下历史中加密算法出现的场景。
时间回到公元前1000年相传商纣王末年,姜太公辅佐周室。有一次,他们带领的周军指挥大营被叛兵包围,情况危急,姜太公令信使突围,回朝搬兵,他怕信使遗忘机密,又怕周文王不认识信使,耽误军务大事,就将自己珍爱的鱼竿折成数节,每节长短不一,各代表一件军机,令信使牢记,不得外传。信使几经周折回到朝中,周文王令左右将几节鱼竿合在一起,亲自检验,周文王辨认出是姜太公的心爱之物,亲率大军到事发地点,解了姜太公之危。事后,姜太公拿着那几节使他化险为夷、转危为安的鱼竿,妙思如泉涌,他将鱼竿传信的办法加以改进,便发明了“阴符”。
再回到公元前405年伯罗奔尼撒战争进入尾声。斯巴达统帅抓住一名雅典信使并在他身上搜到了一条布满杂乱无章字母的腰带,看起来并没有重要信息,无意中,统帅将腰带缠到剑鞘上,竟发现杂乱的字母有序地对接到一起,重要的军事情报显露出来。这实际上就是人类历史上最早的加密器械之一“斯巴达棒”。
在近现代历史中,加密技术在两次世界大战中发挥了重要作用。例如,恩格玛密码机是纳粹德国在二战期间使用的一种复杂加密机器,它采用了旋转轮盘和电气线路来生成复杂的密码。盟军曾花费大量时间和精力来破解恩格玛密码,最终由艾伦·图灵领导的破解小组成功破解了这种密码,为盟军取得了重要的胜利,他因此挽救了数百万人的生命。
细思极恐,是不是发现这些都源于战争
2.2、今生(现代的加密算法应用)
2.2.1 、金融领域
现代科技的不断进步,现代生活中也演变出了很多新的加密技术,让人最耳熟能详的就是区块链技术了;实际把区块链应用到金融货币领域就是耳熟能详的比特币了。说到这里可能有些人会对区块链有点好奇但是又不知它其中的奥秘,最大的疑问莫过于区块链能防止篡改,怎么我就改不了你的账本了呢?
其实就是一群人在记账的过程,区块链系统中的每一个人都有机会参与记账。系统会在一段时间内,可能选择十秒钟内,也可能十分钟,选出这段时间记账最快最好的人,由这个人来记账,他会把这段时间数据库的变化和账本的变化记在一个区块(block)中,我们可以把这个区块想象成一页纸上,系统在确认记录正确后,会把过去账本的数据指纹链接(chain)这张纸上,然后把这张纸发给整个系统里面其他的所有人。然后周而复始,系统会寻找下一个记账又快又好的人,而系统中的其他所有人都会获得整个账本的副本。这也就意味着这个系统每一个人都有一模一样的账本,这种技术,我们就称之为区块链技术(Blockchain)。
2.2.2、数据存储领域
主要是用于数据库存储数据加密,比如说现在的购物网站或者医疗网站一些用户隐私的数据都是加密存储的,就算有人直接拿到用户的数据也是无法直接查看使用的,比如某一个用户的银行卡号实际号码是abc那么实际数据库存储的可能就是:sfsdfdssf=== 。
2.2.3、互联网通信领域
互联网高速发展的现代,诞生了许多社交软件,也方便了大家沟通传递各种信息,再也不用之前那样繁琐的去寄邮件了,但是有利就有弊端,怎么样防止两个人聊天的内容在传递过程中被黑客截获呢?这样就引出了HTTPS,so?又来一个不认识的单词,别着急用一种生动的方式给大家介绍下它的工作原理。
小明和小红想通过飞鸽传达信件,但是呢又害怕被别人截取信件进而看到信件的内容,小明思索再三就想到了用加密的方法(对称加密),这样就万无一失了。但是呢小明突然发现如果他和小红不认识怎么办?用这种商量的办法貌似不太行哈,所以就改进了一下传信方案,给小红的信件里面只带一个空的信箱,信箱上面带一个开着的锁头,小红写完信将信件上锁,这样小明收到的信件就可以用钥匙解锁查看了(悄悄的说其实这个就是非对称加密哦)。然而仔细想想这样其实还有问题,就是小红不能确定这个信箱是不是小明发过来的呀,万一是别人冒充小明呢发写信呢?于是呢就找到了小镇上面有权威的小信,每次发信息除了收件人和发件人的签名还有一个小信的签名(这个签名就是SSL签名)。但是呢这并不是最终结果,最终结果是鸽子要罢工,因为每次带着一个锁太重了,于是小明和小红优化了加密的方案把一开始携带的锁头更换为了对称加密的规则传递,这样后续双方就使用对称加密就能进行通讯啦。大概就是下面这张图这样
三、洞若观火(加密算法的如何工作的)
上面说了这么多那么实际有哪些加密算法呢?他们是咋样加密工作的,别着急下面娓娓道来。
3.1、对称加密
通俗的说其实就是一把锁两把钥匙,小红和小明写信害怕被人看到信件内容,所以买了一个密码本,然后呢只有小明和小红有这个密码本的密码,你以为这样就万无一失了?小黑是个偷窥狂,有一次无意间窃取了小红的密码。如果用绘图的方式呢大概就是这样(图片画的有点粗糙见谅哈)。
常见的有SM1(国产)、AES、DES、3DES(TDEA)、RC5等加密算法都是对称加密算法。虽然这些算法很多但是大部分属于阉割版,也就是说因受到美国军事出口限制在其密钥长度上有所缩减,加密强度有所降低。例如,DES算法因受到军事出口限制,目前仅提供56位的密钥长度,而事实上,安全要求则至少需要128位。不过别灰心,我们强大的祖国也研发了自己的对称加密算法SM1虽然它没有对外公布商用但是在不久的将来它会公布于众的。
3.2、非对称加密
顾名思义它的加密方式是非对称的,这次小明发现她和小红的聊天被人窃取了,然后小明想了下就采用了新的方式买了一个高级信箱有两个柜子一个柜子可以放入信件(寄件箱),放入的信件就会进入下面的柜子(收件箱),这样小明把寄件箱的钥匙送给了小红,小明自己保留了信箱的收件箱钥匙,只有他自己能打开。
大概就是这么个意思,但是这时候就有人会问你这样也不安全啊,给小红的钥匙还是会被人偷走或者被人复制,这样中间人篡改信件内容或者冒充小红写信了?早就防着小黑子了,其实就算小红的钥匙被窃取也没有关系,这里还有一个重要的概念,签名防止小黑子冒充(证书具有权威机构颁发的授权证书),当然这里只是简单介绍方便大家理解,其实里面有很多专业术语,这里就不再赘述了。
常见的非对称加密算法有SM2(国产)、RSA、Elgamal,也许耳熟能详的大概大家对于RSA比较熟悉,但是这里要说下SM2国密加密算法(因为他是中国研发的加密算法),SM2是国家密码管理局于2010年12月17日发布的椭圆曲线公钥密码算法,随着密码技术和计算机技术的发展,目前常用的1024位RSA算法面临严重的安全威胁,我们国家密码管理部门经过研究,决定采用SM2椭圆曲线算法替换RSA算法。
3.3、摘要
最后说一下不可逆加密算法,它将任意长度的输入数据映射为固定长度的输出数据,称为摘要。消息摘要算法的主要特征是加密过程不需要密钥,并且经过加密的数据无法被解密。摘要算法通常用于文件完整性验证、密码存储、数字签名等领域,因为任何对数据的修改都会导致摘要的改变。
常见的摘要算法有SM3(国产)、MD5、SHA-256等,这里的SM3性能以及安全性和SHA-256是相当的。下面罗列了下他们之间的性能比较。
信息摘要算法 | 信息输入长度 | 摘要输出长度 | 安全性 |
---|---|---|---|
SM3 | * | 256bits(32字节) | 高,推荐使用 |
MD5 | * | 128bits(16字节) | 低,有被碰撞的可能性 |
SHA256 | <2^64 | 256bits(32字节) | 高,推荐使用,最长使用 |
*是任意长度 |
四、蓦然回首
加密安全贯穿古今事件,是人类发展的印证,但加密不仅仅文中提到的这些,文中提到的只是加密发展的冰山一角;如果你问上面这些加密算法那个是最安全的,那个是万无一失的,我会回答没有绝对的安全,因为随着计算机算力的提高任何加密数据会逐渐缩短,只能说我们在信息传递过程或信息存储过程中避免数据直接暴露给外部让小黑子拿到不是可以直接使用的,这其实也是加密安全的初衷。说了这么多的加密的事,希望大家有所收获,当然有什么疑惑或者想探讨的也欢迎大家留言,在下知无不言。