论计算机加密算法的原理与实践

论计算机加密算法的原理与实践

本期论文我们来简单讨论一下计算机加密算法的原理与实践。

友情提示:不要看到论文二字就吓跑了,其实读懂一篇高水平的论文是非常简单滴!

经常上网的童鞋肯定都知道,现在电脑和手机的安全实在是太重要了。很久很久以前,就有一个不懂数据安全的小伙,他叫陈冠希,后来的故事大家都知道了。

怎么才能保护好重要的数据呢?有个重要的方法就是加密。经常听说各种加密算法、数字证书啥的,那到底计算机是如何加密的呢?读完这篇论文你就明白了。

签名算法

签名算法不是领工资的时候把自己的名字写到“签名”一栏里。这里的签名是对消息内容做个计算,得到一个特征码,用这个特征码作为签名。

搞个签名有啥用?

我们来看发生在教室里的一个真实故事。

小明(性别:男)对女神小红仰慕已久,终于在上课的时候鼓足勇气在数学书背面写了几句话,举起来希望女神能看见。无奈女神坐得离他比较远,于是小明委托死党老王(老王坐在小明和女神中间位置)复制一下自己的消息,这样小明就表白成功了:

然而老王有个特点就是特别不靠谱,加上眼神不好,结果把“xiao ming”抄成了“xiao ning”,让女神误以为是班长小宁对自己表白了:

经过这次惨痛的教训,小明决定给消息加上一个签名,这样如果老王抄错了,女神核对签名就会发现这个问题:

可见签名就是用来判断消息是否被修改过。如果消息被修改了,计算出来的签名就和原始签名对不上。

在计算机中,经常用MD5或者SHA1作为签名算法,你看到的一串乱七八糟的数字d41d8cd9...就是MD5签名。经常用迅雷在网上乱下软件的童鞋,可以用专门的软件计算下载文件的MD5签名,再去官网对比,如果一致,说明软件没有被篡改过。

但是签名算法不是加密算法,不能用来加密,它的作用是防篡改。

对称加密算法

如果用一个密码把消息加密,解密的时候还用这个密码,这种加密算法就是对称加密算法。

小明自从勾搭上女神后,经常上课的时候给女神传纸条,当然必须通过中介老王。

没想到老王其实对女神也垂涎已久,他偷偷改了小明的纸条,结果一下课女神就要和小明绝交:

小明用了九牛二虎之力终于向女神解释明白了。不过要继续传纸条,始终绕不开老王,怎么办?小明用手机几番搜索,终于找到了AES加密算法!

AES加密就是用一个密码把消息加密成密文,对方再用同一个密码解密。因为用的密码是同一个,所以称为对称加密。

小明和女神约定用女神的生日做密码:

然而身经百战的老王很快就猜出了密码。难道要定期更换一个新密码?

如果每次都用一个随机密码,那老王不就猜不到了?小明想到了这个好办法,不禁为自己的机智点赞!

但是,每次传纸条前,随机密码怎么告诉女神?通过老王告诉她?呵呵!

小明又陷入了沉思。

DH密钥交换算法

数学课代表提醒小明:你现在面临的问题是,通信双方需要约定一个密码,但是又必须通过一个不安全的信道传递密码,所以你需要DH密钥交换算法喔!

原来学数学这么有用!小明赶快恶补了Diffie-Hellman密钥交换算法,一看非常简单!

首先,小明先选一个素数和一个底数,例如,素数p=23,底数g=5(底数可以任选),再选择一个秘密整数a=6,计算A=g^a mod p=8,然后传纸条给女神:p=23,g=5,A=8;

女神收到纸条后,也选一个秘密整数b=15,然后计算B=g^b mod p=19,并传纸条告诉小明:B=19;

小明自己计算出密码s=B^a mod p=2,女神也自己计算出密码s=A^b mod p=2,因此,小明和女神最终协商的密码s为2。

而这一切都发生在老王的眼皮底下,他却无法计算出小明和女神协商的密码:

中间人攻击

既然老王无法获知小明和女神协商的密码,他就换了一个思路:小明要协商密码的时候,老王就假装自己是女神,和女神协商密码的时候,老王假装自己是小明,这样,老王成功地使用了中间人攻击得到了密码!

非对称加密

小明再次向数学课代表求助。

“看来对付老王这种高手,你得用RSA非对称加密了。”数学课代表缓缓地说,“你和女神各自生成自己的公钥和私钥,然后把公钥公开,比如写在教室后面的黑板上,如果你要给女神发信息,你就用她的公钥加密,再用你的私钥签个名,她用自己的私钥解密信息,再用你的公钥验证签名。老王没有你俩的私钥,没法解密也没法篡改!”

小明兴奋地和女神生成了各自的RSA公钥和私钥。这下小明再也不用担心老王了,从上课开始,小明就开始用RSA算法对纸条的内容进行加密计算。由于RSA算法计算量非常大,直到下课小明也没有算完。

数学课代表拍了拍小明的肩膀,说:“加密这个事,还得用计算机算。学点JavaScript,你就可以直接写代码让计算机帮你加密了!点这里,直接学习如何用JavaScript实现加解密!”

编辑于 2016-07-07