遨游密码世界(一)

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

去年,在工作中接触了一些新的技术名词:数字签名数字证书Oauth2认证SSL/TLSXOR异或加密RSA算法单钥加密公钥加密三方认证 等。这些名词单独来看就是一个个技术点,相关技术文档也看了很多,但一直无法做到了然于心,运用自如的地步。直到阅读了《图解密码技术》这本图书,发现原来这些东东都属于密码学的范畴,理清关系之后并没有想象中的那么繁琐。 本文打算从三个部分捋一捋这些关系:第一部分介绍信息传递过程中存在的问题,凡事都是先抛出问题,再谈解决方案;第二部分就介绍解决这些问题的方法了,就像学习数学一样,公式啊、定理啊啥的前人已经帮我们做了,我们要做的只是了解它,认识它,所以这部分并不会很难;第三部分为探索阶段,那些 hacker 们是怎么拦截消息的,如何篡改消息内容,又是如何伪装它人身份,这些我很感兴趣,但由于底子薄,探索周期可能会有点长,权当自娱自乐吧.............

目录:
一、消息传递的特性 —— 存在哪些安全问题
1. 机密性 —— 不想让窃听者知道消息的内容,所以就进行加密
2. 完整性 —— 消息传递过程中有没有被修改过内容
3. 认证 —— 是否是不怀好意的人伪装你的朋友发送的邮件
4. 不可否认性 —— 借了钱要打欠条防止抵赖,信息如何防止抵赖
二、密码学工具箱 —— 解决消息传递过程存在的问题
1. 对称加密
2. 公钥加密
3. 单向散列函数
4. 消息认证码
5. 数字签名
6. 数字证书
7. 随机数生成器
三、探索阶段
1. 怎么拦截 http 请求内容
2. 怎么篡改 http 内容
3. 怎么伪装身份获取权限

一、消息传递的特性

1. 机密性

读书的时候喜欢在课堂和好朋友上递小纸条,这过程存在被老师发现的可能性,如果小纸条的内容涉及到说老师的坏话,那被发现少不了一顿批评教育。倘若能对小纸条的内容进行 加密,只有你和你的朋友知道如何 解密 得到正确的内容,这样即使被老师发现,也可以胡邹一些无关紧要的话糊弄过去。

你可以和小伙伴提前商量好 加密 方式,比如:先将汉字写成拼音,再将每个字母往后平移三个字母,像下面这样。

遨游密码世界(一)_第1张图片

明文:老师今天好丑

明文转拼音:lao shi jin tian hao chou

拼音转密文(每个字母往后平移三个字母):dor vkl mlq wldq kdr fkrx

这样即便老师发现了你们的小纸条也不知道你们在说啥,你的朋友在接收到小纸条时先往前平移 3 个字母再将拼音转换为汉字即可得到明文信息。

并不是所有的消息都需要加密,如果你不想你的“秘密”被别人知道,那就加密消息吧。

2. 完整性

遨游密码世界(一)_第2张图片

在下载一些免费软件的时候,我们很难保证我们下载的软件与作者发布的软件是一模一样的,这中间会不会被一些不怀好意的人植入了病毒,等着我们掉进陷阱。这里被植入病毒就改变了软件的完整性,而这个过程通常是 病毒作者软件作者 (消息发布者)下载软件的用户(消息接受者) 毫不知情的情况下进行的篡改。

遨游密码世界(一)_第3张图片

软件作者发布软件好比发送消息,用户下载软件好比接受消息,病毒作者对软件植入病毒就好比在消息传输过程修改了消息的原本内容。

我们想要的是消息保持完整性,现实生活中可以给朋友打个电话询问收到的信件内容是否完整,但在网络世界或其它很多场景是无法做到这种询问的,这需要特定的技术来保证这一点。

3. 认证

不知道你们会不会收到许久不联系的老同学发来的短信:“老同学,借两千块钱”。

遨游密码世界(一)_第4张图片

我每次收到这种消息,第一反应总是会想 这是不是他本人 ,接着问一些只有我和他才知道的秘密来验证他的身份,或者直接打个电话进行确认,毕竟在当今这个社会,社交账号被盗取是很正常的一件事情。

遨游密码世界(一)_第5张图片

花道相约晴子妹子出来玩,无奈人晴子只中意阿枫,花道不得已就伪装成阿枫的语气给晴子写信,晴子一看这是 “阿枫” 的信就会立马出来,然后才发现自己被骗了...........

由此可见,消息也存在 伪造发送人身份 这一特性,而 认证 就是一种特殊的手段来判别发送人到底是 本人 还是 不怀好意 的人。

4. 不可否认性

朋友刚来上海这边身无分文,找我借了 ¥5000.00 租房子,因为他和我离得比较远,没办法直接给我写借条,就想着通过电子邮件给我来电一封,记录借款事项。

遨游密码世界(一)_第6张图片

几个月过去了,我想着他也有了钱可以还我了就去找他要钱,结果他狗日的给我耍赖,说自己并没有给我写过信,顿时感觉古人的伟大,知道写完欠条要按个指纹,想赖账还可以根据指纹判断确实你这个人写的。(其实一直有个疑惑,古人没有指纹鉴别仪器,是怎么根据指纹判断人的唯一性??)

遨游密码世界(一)_第7张图片

消息的传递存在 诋毁,不承认 的特性,尤其是在互联网上,文字都是印刷版的冷冰冰的。如果需要签订合同都是打印出纸质版本,盖上公司章再邮寄给他人。

不可否认性 又是通过特定手段将消息发送者的身份和消息绑定在一定,现实生活中很方便,比如签字、按指纹、盖章等,网络中出现此问题,也衍生了对应的解决方案。

5. 总结

消息的特性:

  • 机密性
  • 完整性
  • 认证
  • 不可否认性

这些特性在日常生活中也会出现,但有时我们并不在乎它。

我们与他人的日常交流就不需要时时刻刻加密对话内容;我们收到朋友发的微信也没必要打个电话询问内容是否完整;和朋友之间周转个千儿八百的也没打欠条的习惯。

这是因为这些事儿的重要性都不够高,即便存在这些安全性问题也不会对我们造成太大的损失。但是像一些大型公司、银行,如果不注重信息的安全性,就会让那些不会好意的人有机可乘,结果也许会很糟糕。

未完待续.................

下一篇介绍密码工具箱,即解决本文提出的四个消息传递存在的问题。

转载于:https://my.oschina.net/dkvirus/blog/1618792

你可能感兴趣的:(密码学,python)