壹 前言
这系列为本人学习密码学的笔记,是基于《图解密码技术》为基础学习的。
在现实生活中,当我们进行数据传输时,可能会面临的安全问题无非就是三点:数据窃取、数据篡改、身份伪装。
这时候为了保密我们就需要将数据进行加密,防止别人窃取或者篡改等操作。
一些概念:
- 明文:明文就是可以直接了解到的数据信息
- 密文:密文就是通过某种特殊的算法改变原有的明文数据信息
- 加密:加密是以某种特殊的算法将明文转换为密文的过程
- 解密:解密是根据某种特殊的算法将密文转换为明文的过程
- 可以看出加密和解密是相反的,并且互相依赖!
- 破译:破译也是根据某种特殊的算法将密文转换为明文的过程,不过破译是未授权的人进行的,而解密是被授权的人进行的
一些密码信息使用常识:
- 不要使用保密的密码算法。我觉得这个不仅仅局限于密码,还包括其他领域等,因为一般情况下公开的东西很多人都在用,是经过了无数次检验的,就算有问题也会有人帮忙解决,推出新版本,而私有的由于只是特定的人使用,很容易出现bug,很若依不经推敲,就算有问题也是部分人会修改,很局限。
- 低密码其实比无密码更威胁。因为人在本能里会觉得一个页面肯定会有密码存在,而不会想到无密码这种情况。
- 任何的加密算法都会被破解。例如非对称加密算法由英国安全局1973年发明,后由RSA于1977公开
贰 加密解密三要素
2.1 三要素分析
个人见解:当A需要将数据传输给B时,为了不让其他人窃取,这时候A就需要对数据进行加密,如何加密呢?首先需要传输的数据(明文),通过特定的规则或者算法(加密算法)对数据进行加密,这个时候就算完成一次加密操作,但是通常情况下加密算法是公开的,全世界人都知道,所以我们通常叫这种方式为编码,因为这种加密方式所有人都知道,如果只希望A和B知道加密数据,而其他人不知道,那么就需要密钥,即解开这个算法的自定义钥匙,所以加密三要素为:明文、加密算法、密钥。解密也一样,需要解密算法和密钥对密文进行解密。其实如何区别加密和编码,就看有没有密钥!例如Base64不叫加密,而是编码,就是因为没有密钥!
2.2 加密三要素
- 明文:指要传输的数据
- 加密算法:通过一个什么样的算法或者说是规则,对传输的数据进行加密,一般是公开的
- 密钥:加密用的一段字符串,会根据算法的不同,而长度也不同,需要自己自定义
2.3 解密三要素
- 密文:明文经过加密后的数据
- 解密算法:解密算法可能与加密算法相同,也可能不同
- 密钥:解密用的一段字符串,会根据算法的不同,而长度也不同,需要自己自定义
叁 加密的类型
3.1 加密类型
加密一般有两种:对称加密与非对称加密
3.2 对称加密
对称加密:指双方使用同一个密钥,既可以加密,也可以解密,可以看出这个密钥不能被其他人知道,只能是对应的人,这个就会造成如果要和多个人进行数据传输,那么保管大量的密钥就成为一个问题。
特点:
- 优点:加密效率高,加解密速度快,通常发送大量数据时使用
- 缺点:加密强度低,密钥分发困难,因为需要约定好相同的密钥,而且若与多个用户发送数据,都需要不同的密钥,就需要保管大量的密钥成为负担
3.3 非对称加密
非对称加密:指由密钥对,即公钥与私钥组成,公钥可以分发,私钥不能泄露。如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。例如A需要传信息给B,那么A就需要用B的公钥进行加密,传给B,这时候B需要使用B的私钥进行解密,这时候倾听者C只知道B的公钥是不能对密文进行解密的。
特点:
- 优点:加密强度高,因为密钥比对称加密的长度长
- 缺点:加密效率低,加密解密速度慢