Encryption 可以为端到端加密上的每条消息更改密钥对吗?

Encryption 可以为端到端加密上的每条消息更改密钥对吗?,encryption,public-key-encryption,private-key,Encryption,Public Key Encryption,Private Key,我在考虑加密应用程序中的安全性,并想知道这是否可行,如果为用户创建的密钥对可以随每条消息的发送而更改,那么是否会以任何方式为应用程序添加任何安全性,因此每条消息都用不同的私钥加密?我知道在用户的键之间进行同步是非常必要的,但这只是我正在考虑的一个假设。 谢谢当然,每条消息只能使用一个键,我们称之为。要实现这一点,您需要使用密钥交换协议。这将增加通信,但安全性并不便宜,它被用于 由于具有前向保密性,即使攻击者成功地进行了多方攻击,如果进行了加密操作,攻击者最多也可以访问当前密钥。消息发送后不会存储

我在考虑加密应用程序中的安全性,并想知道这是否可行,如果为用户创建的密钥对可以随每条消息的发送而更改,那么是否会以任何方式为应用程序添加任何安全性,因此每条消息都用不同的私钥加密?我知道在用户的键之间进行同步是非常必要的,但这只是我正在考虑的一个假设。
谢谢

当然,每条消息只能使用一个键,我们称之为。要实现这一点,您需要使用密钥交换协议。这将增加通信,但安全性并不便宜,它被用于


由于具有前向保密性,即使攻击者成功地进行了多方攻击,如果进行了加密操作,攻击者最多也可以访问当前密钥。消息发送后不会存储以前的密钥,因此不会出现密钥泄露。

这很有可能,但可行性可能取决于您如何使用密钥

如前所述,临时(一次性临时)密钥用于TLS中,以实现密钥交换中的前向保密性,从而导出对称会话加密密钥。因此,它并不是每封邮件都有一个新的密钥对,而是用于建立会话。生成一个新的好密钥可能需要一些性能和时间

即使如此,您的应用程序仍需要维护一个长时间密钥来签署临时公钥,以确保完整性,以便接收方可以确保临时密钥确实来自其声称的方。这也是te TLS密钥交换的一部分


如果您不使用直接(会话)通信,而是异步发送消息,那么我认为没有必要生成新的密钥对。您只需创建一个新的随机加密密钥(假设为混合加密)。为了确保消息的完整性,发送方也需要对消息进行签名,因此需要一个长寿命的持久密钥

对于加密,消息接收方可以生成新的公钥/私钥对,并将公钥发送给消息发送方。然后,发送方可以使用此公钥进行加密。这降低了由于密钥对受损而导致的风险。如果临时密钥泄露,您只会丢失一条消息,而如果长期密钥泄露,则会丢失所有消息。

但是,仅加密并不能提供安全性。您还需要验证发送方和接收方,并提供完整性

对于身份验证,您需要一大组预先生成的密钥,这些密钥以安全的方式映射到特定身份(例如,由可信证书颁发机构签署的证书,如PKI),或者以其他方式证明是谁生成了每个密钥对。这就是您提到的巨大同步努力

PKI方法引入了许多方法来作为用户进行身份验证,因为它们有许多密钥,因此它实际上通过增加攻击面来降低安全性。如果你做得对,那么更大的攻击面将被一个事实所平衡,即对一个短暂键的攻击限制了对单个消息的伤害。但是,要强制执行此限制,您必须有一个安全的公共场所,其中实时维护有效/已使用密钥的列表。否则,可以重复使用一次性钥匙

如果不预生成密钥,则需要一个长期公钥/私钥对,以便通过签名等方法建立临时密钥对的所有权。您可以将长期密钥对用于签名临时密钥对,从而降低长期密钥对受损的风险。然而,这只是减少了与长期密钥对相关的一种风险。您仍然存在与生成、分发、存储和将长期密钥对绑定到特定用户相关的风险,临时密钥对的安全性依赖于长期密钥对

为了完整性,您可以使用数字签名。许多数字签名方法类似于身份验证方法,其中私钥操作是密钥安全操作

一句话:您可以通过为每条消息使用临时密钥对来提高安全性,但是性能会受到影响,您必须小心实现,并且安全性好处是最小的