密码学八卦:第一部分和第二部分
密码学八卦:第一部分和第二部分
在这个博客系列中,我们将以一种非正式的方式学习加密和解密的基础知识。我们将从密码学的起源开始讨论,然后学习现代技术。
加密中的一个重要和主要技术是密码学。
密码学是一种非常常见的技术,现在无处不在地使用,包括以下任何软件:
- 我们家里使用的路由器。
- 我们用来发送和接收消息的WhatsApp。
- 我们打开的任何使用HTTPS的网站。
- 等等…
现在,同时,密码学非常常见,但它非常复杂。它在理解、实现甚至正确使用方面都很复杂。
密码学的需求
为了回答这个问题,让我们回答以下问题:
- 为什么我们需要手机密码?
- 为什么在外出时要锁上家门并带上钥匙?
使用密码学的原因是相同的 – 确保发送者或接收者是正确的,并且他们只能看到正确形式的数据。
为了理解它的工作原理,让我们从古老的一种方法开始,即凯撒密码。
凯撒密码
凯撒密码是一种替换密码,其中明文中的每个字母都向字母表的后面移动了一定数量的位置。这种简单的加密技术以朱利叶斯·凯撒的名字命名,他曾用它来加密发送给他的官员的消息。加密的过程很简单:选择一个移位值(也称为密钥),然后将明文中的每个字母向下移动相同数量的位置。
例如,偏移值为3,A将被替换为D,B将被替换为E,依此类推。
明文:Sahil
偏移(密钥):3
密文:Vdklo
要解密消息,将移位值反向使用。
密文:Vdklo
偏移(密钥):-3
明文:Sahil
需要注意的是,凯撒密码很容易被破解,不应用于任何严肃的加密目的,因为它可以通过简单的方法如频率分析来破解。
在这里,算法很简单:将一个字母N移动若干次,然后用该字母替换它,并继续这个过程,直到我们的明文转换为密文。
凯撒密码表是一个工具,可以使用凯撒密码方法手动加密和解密消息。它是一个表格,列出了字母表中所有字母及其相应的加密或解密字母,根据选择的移位值(或密钥)。
下面是一个移位(密钥)值为3的凯撒密码表的示例:
等等…
通过凯撒密码,有人可以轻松地逆向工程这个凯撒密码文本,并解码使用此算法加密的消息,通过识别模式,可以轻松确定密钥。这只是一个示例,让读者熟悉密码学和加密解密概念。
正如我们讨论的,凯撒密码不够安全;比它更安全的算法是维吉尼亚密码。
这个算法与凯撒密码基本相同,但是不同的是,我们不是用相同的数字旋转每个单词,而是用不同的数字旋转每个字母,这些数字的组合被称为密钥。
让我们从相同的例子开始加密:
要加密的明文 — SendHelp
密钥 — BULGE
我们将从以下表中得到的密文。
现在,我们讨论到目前为止的所有算法都是对称算法 – 这意味着加密和解密消息使用相同的密钥。
正如我们在这里看到的,加密世界有两个东西:一个是密钥,另一个是算法。
现在,让我们考虑一个本地的例子,我们的房屋锁和钥匙。应该保密锁定和解锁机制,还是只保密钥匙?如果我们有太多算法,那么维护它们并将它们传递给每个算法与数据一起解密消息将会很繁琐且难以维护。
由于所有这些原因,我们有一些受公众欢迎的算法,并且只有密钥管理和如何分享密钥仍然是我们唯一的问题。
现在,AES是用于数据静态加密的最流行和安全的算法,许多人都试图打破这个算法出于好的原因。
现在出现另一个问题:
当我们使用相同的密钥对相同的明文进行加密时,应该得到相同的密文吗?
嗯,对此的回答是是/否。这取决于使用情况以及我们需要多少安全性。
现在,在加密中,每次都会产生相同的密文。这被称为收敛加密。
现在,这取决于初始化向量(IV)。如果我们在加密数据时传递相同的IV,那么密文将是相同的。
初始化向量(IV)定义-在加密中,初始化向量(IV)是用于在加密或解密数据之前初始化加密算法的初始状态的随机或半随机值。IV的目的是确保使用相同的加密密钥加密相同的明文每次都会产生不同的密文。这个属性对于安全性至关重要,特别是在使用相同密钥加密多个数据片段时。
现在的问题是,我们何时需要收敛加密:
有很多用例,比如,有时当我们想要在数据库中搜索一个加密的名称时,我们有两种方法:
- 解密存储在数据库中的所有名称,将它们加载到内存中并进行搜索。
- 加密作为搜索输入的名称,然后在SQL查询中搜索该密文。
第二个选项更优化和快速,并且将消耗更少的资源。但要实现它,我们需要收敛加密算法。
到目前为止,我们已经听说了一些重要的术语,如下:
- 密码学
- 算法
- 明文
- 密钥
- 密文
- 对称加密
- 收敛加密
- 初始化向量
请记住它们,因为这些是在加密和解密的世界中到处使用的通用术语。
在接下来的博客中,我们将讨论其他一些事情,例如:
- 哈希
- 非对称算法
- PKI基础设施
- 信封加密
- 以及更多的东西
敬请关注下一部分…