不对称或对称——在这种情况下这有意义吗?

信息安全 加密 不对称
2021-09-08 18:38:40

我正在创建一个系统,其中将有 oe 客户端和一个服务器。

客户端定期(每 5 或 10 秒)向服务器发送少量数据(使用 UDP)。

我能够在客户端和服务器上安全地放置密钥/密码短语,而无需任何人或任何其他人知道这些密钥/密码短语是什么。我将始终可以访问服务器,如果我无法访问客户端,我可以在服务器上轻松更改密钥/密码。

我的安全问题有两个:

  1. 除了我的客户之外,我不希望任何东西能够将东西提交到服务器。
  2. 我不希望从客户端传输到服务器的数据是纯文本的。

我是否能够在客户端上使用对称加密并在有效负载中嵌入某种可识别且唯一的令牌,服务器(当它已解密时)可以用来验证客户端是它所说的那个人?或者是否需要非对称(DTLS?)公钥/私钥对解决方案?或者这些都不会做我想要的?

1个回答

您在问题中所说的“关注点”是信息安全领域中通常称为“保护目标”的内容。在您的情况下,您正在寻找机密性(中间没有人应该能够读取交换的数据)和真实性(只有已知良好的实体应该能够提交数据)。

请注意,真实性通常被定义为意味着一条消息或一段数据实际上来自它声称的来源——这正是你问题的症结所在。如果您知道永远只有一个客户端,那么分发对称密钥就足以保证数据的机密性和真实性(假设密钥不会泄漏)。

但是,如果有(或将来可能有)多个客户端(或服务器,就此而言),您将需要

  1. 为每个客户端-服务器关系分配不同的对称密钥,或
  2. 使用相同的对称密钥并使用其他方式来确保交换数据的真实性(即确保客户端不能发送声称是另一个客户端的数据)

因此,使用非对称加密和 PKI 向方案中的每个参与者颁发证书可能是更面向未来的解决方案。这将允许您使用每个客户端的私钥正确签署消息以确保真实性。

请注意,无论哪种方式,您可能不仅仅在寻找真实性和机密性(考虑完整性 - 您可能不希望中间的潜在人能够修改客户端和服务器之间交换的数据)。因此,请确保使用经过适当审查的高级加密 API,为您的所有加密操作实施已建立的算法和协议。

(加密有很多陷阱。例如,在许多情况下,中间人捕获正确构造的消息并在稍后重放它是微不足道的。考虑此类攻击并通过组合来防御它们自己的密码原语可能不是一个好主意)。