Michael.W谈密码学-密码学相关基础知识 第一期

1. 前言

之前在学校的时候跟着学长研究过一段密码学,如今回想起来仍是觉得妙趣横生。所以最近凭着闹钟的记忆重新整理成文。

2. 一些基础概念

2.1为什么需要密码

这个问题很白痴,但是我还是要说一下。
为什么需要密码?比如,在生活中我是一个十分正经的三好学生,但是心里一直喜欢隔壁班那个36D的妹子。有些事情总会引起男孩子身体的肿胀,既然肿胀那么就要释放。所以,我在某天晚上在微信上跟那个36D的妹子表达爱意。
这些都是纯洁的不能再纯洁的事情了,但是信息在网络传输中,由于http或其他协议的不安全性导致你的数据内容可能被已经看你不爽多年的小伙伴通过抓包的手段拦截到。这样,他就可以看到你发出的信息,甚至是修改你的信息。
作为每一个外表正直且纯洁的男孩子,当然不希望这样的事情发生在自己身上。于是,密码的作用就凸显出来。只要我对我发出的内容进行加密,即使被人截获到也无妨。他看到的都是一堆杂乱无章的数字和字母。等妹子接收到之后用我给她的秘钥解密即可。

2.2 基础词汇

这里,我是消息的发送者,36D的妹子是接受者,看我不爽的那个王8蛋就是窃听者。
我将要给妹子发去的风情万种的文字是明文,我加密后的乱码是密文,我加密使用的某种方法就是加密算法,基于这种标准所需要的物理凭证就是秘钥
注意:无论是加密还是解密的过程,都需要秘钥
所以,加密过程的三要素就是:

  1. 明文
  2. 加密算法
  3. 秘钥

3.凯撒密码

密码最初的应用就是凯撒密码。通过将明⽂中所使⽤到的字母表按照一定的个数的“平移”操作来进行加密。比如我们的汉语拼音,日语的平假名,甚至是ASCII中的所有字符都适用。
网上扒一张图,大家一看便知道其中的猫腻:
在这里插入图片描述
所以,我的英文名叫michael,把所有的字母按照图中规则进行5位的右平移:
m -> R
i -> N
c -> G
h -> M
a -> F
e -> J
l -> Q

加密后的字符串就是RNGMFJQ。除了英雄联盟RNG战队的粉丝以外的所有人要是能看出来一点儿这字符串想表达出的意思,我直播花式吃翔

4. 对称加密和非对称加密

简单的讲,对称加密中加密和解密需要的秘钥是相同的,秘钥只有一个。加密效率非常高,但是破解也很容易。
比如上面的凯撒密码就是一种对称加密。任何名文中一样的字符,在进行对称加密后仍然是一样的,这样的加密方式很容易被看出来。剩下的就靠暴力枚举就可以了。
非对称加密的秘钥有两个,一个是私钥,一个是公钥。公钥是私钥使用秘钥使用算法得到。一般,非对称加密的公钥是可以公开在网络上的。加密者利用公钥对数据加密,但是只有拥有私钥的人才能解出来正确的数据
相比较之下,对称加密效率高,适合大数据大文件加密。但是安全性较非对称加密弱很多。非对称加密则只适合加密少量数据,加密强度高,但是效率低。

5.关于使用密码的一些小常识

5.1 不要使用加密算法保密的加密算法

很多人会有这样的想法:
很多企业都有下⾯面这样的想法:
我自⼰开发⼀种密码算法,谁也不告诉,这样就没有人能破解我。
大错特错!
经典的加密算法是通过大量的破解测试测试过,并安全性得到确认的。经过多重数学理论验证后的算法一定要比你自己想出来的要保靠。
反过来说,将加密算法的详细信息告诉专业的密码破译者,如果在这样的情况下破译一段新的密⽂依然需要消耗相当长的一段时间,就说明这是高强度的加密算法。

5.2 任何加密的算法早晚都会被公布与众

从以往的经验上来看,所有保密的算法最后都会被后人发现规律。
如:RSA公司开发的RC4密码算法曾经是保密的,但最终还是有⼀位匿名高手发现了与其等效加密方法。
一旦密码算法的加密过程暴露之后,依靠对密码算法本身进行保密来确保机密性的密码系统也就随之土崩瓦解。

5.3 使用低强度的密码比不设密码更危险

因为低强度密码对于专业的密码破译者就是一张纸,捅一下就支离破碎。
如果你不设置密码,肯定会警醒自己不要把隐私的东西写上去。这样反而会更好的保护自己的数据安全。

5.4 只要时间够长,任何密码都会被攻破

这个就不详细解释了,最傻逼的暴力枚举在时间无穷大的时候可以便利出所有密码。只要接受过九年义务教育的朋友一定明白我在说什么。

5.5 密码只是安全的一部分

不是只要密码不被破译就能保证安全。往往人是最微弱的一个环节,钓鱼、社会工程学、美人计等都可以绕过破译密码的步骤,直捣黄龙。懂的自然懂!

6.加密过程类似于编码解码

任何文件-图片、视频、音频甚至是可执行程序都可以进行加密,因为他们底层就是0和1构成的二进制字节流:
在这里插入图片描述
上面是我用sublime打开的一个可执行程序文件。只要能由字节流表示的文件,就可以进行加密。
对文件加密的过程,就是将表示明文的比特序列转换为表示密文的比特序列(字节流)。

7.一点小常识

计算机单位换算
位:bit,0或1
计算机操作的最⼩单位:字节(Byte)
1字节 = 8bit
千字节:KByte,1K = 1024B
兆字节:MByte,1M = 1024K = 1024B = 1024 * 8 bit
1GB = 1024M = 1024K = 1024B =1024 * 8 bit
1TB = 1024GB
1PB = 1024TB

ps:
本人热爱图灵,热爱中本聪,热爱V神,热爱一切被梨花照过的姑娘。
以下是我个人的公众号,如果有技术问题可以关注我的公众号来跟我交流。
同时我也会在这个公众号上每周更新我的原创文章,喜欢的小伙伴或者老伙计可以支持一下!
后现代泼痞浪漫主义奠基人
公众号名称:后现代泼痞浪漫主义奠基人

猜你喜欢

转载自blog.csdn.net/michael_wgy_/article/details/88079063
今日推荐