密码学介绍

密码学是使用数学结构(代码)来确保通信安全的科学。密码学领域是信息安全领域的一个子集。

有许多加密操作可能; 一些最着名的例子是:

  • 加密: 将明文消息转换为密文消息,以使消息保密
  • 解密: 将密文消息转换回明文消息
  • 安全散列: 执行不可逆(单向)压缩,为特定消息创建静态大小,计算不同的表示。

密码学基于数学,并且算术经常用于与密码学相关的算法中。开发人员使用了一小部分原语,方案和协议。开发人员通常不会自己实现算法,而是使用加密 API 和运行时提供的方案和协议。

一个原始可能是一个块密码,如 AES。基元是用作加密方案的构建块的任何算法。甲方案是例如一个块密码的操作模式,例如 CBC 或 GCM。一个或多个加密方案可以构成加密协议。诸如 TLS 的协议使用许多加密方案,但也使用消息编码/解码技术,消息排序,使用条件等。低级加密 API 仅提供对基元的直接访问,而高级 API 可提供对完整协议实现的访问。

由于书面文字的发明,消息已经手工加密和解密。至少自古希腊社会以来,机械装置一直被使用。这种密码术被称为经典密码术。密码学的许多介绍都是从经典密码学开始的,因为它相对容易分析。然而,经典算法不符合现代结构所要求的安全性,并且通常很容易破解。经典方案的例子是 Caesar 和 Vigenère。最着名的机械设备无疑是 Enigma 编码机。

现代密码学基于科学 - 主要是数学和数字/群论。它涉及更复杂的算法和密钥大小。这些只能由计算设备有效地处理。因此,现代密码学主要使用面向字节的输入和输出。这意味着消息需要转换为二进制并返回,然后才能通过加密算法的任何实现进行转换。这意味着(文本)消息需要在加密之前使用字符编码进行转换。

文本消息的字符编码形式是 UTF-8。结构化消息可以使用 ASN.1 / DER 或规范 XML 表示 - 或任何数量的专有技术来编码。有时二进制输出也需要转换回文本。在这种情况下,诸如基本 64 或十六进制的编码方案可用于表示文本内的二进制数据。

众所周知,密码学很难做到。开发人员应该只使用他们完全理解的结构。如果可能,开发人员应使用更高级别的协议(如 TLS)来创建传输安全性。没有正规教育或丰富经验,没有实际机会创建安全的算法,方案或协议。从互联网复制/粘贴示例不太可能导致安全的解决方案,甚至可能导致数据丢失。