我想安全地通过互联网发送数据。为此,我使用接收器的公钥对数据进行加密。在这种情况下,如果网络中的入侵者修改数据,比如通过旋转放置比特,我能成功地解密数据吗?
而且我一直在通过网络发送数据。如果入侵者修改了上述方法中提到的数据,那么如何安全地发送?
同样,这种情况是否适用于所有对称加密?
发布于 2014-07-26 06:16:59
说到加密,而不是仅限于RSA,如果中间人修改加密消息,该消息将不会像您发送的消息一样解密。这取决于所使用的加密算法。例如,如果使用了块密码,只有被修改数据的块不能正确地解密,其余的块将解密很好,尽管无法判断哪些已被更改。如果字节被更改,其他类型的加密将无法解密消息。
也就是说,加密的主要目的是提供机密性,因为它是用来确保你和对方之间的对话不会被其他人截获和读取。您似乎要求的是一种确保您发送的数据在传输过程中不被修改的方法。加密可以帮助这一点,从简单的基本哈希,到使用DSA (数字签名算法)。如果您获取消息的哈希,将哈希放在消息的末尾,并对整个消息进行加密,当接收方获得并解密消息时,他们可以重新散列消息,并根据提供的哈希验证消息。如果他们是一样的,他们可以几乎肯定地说,信息并没有改变在运输。
旁注- RSA是缓慢的,通常保留给小消息使用,例如交换对称密钥,或“签名”一条消息的散列。它通常不用于加密大型消息。
发布于 2014-07-28 15:29:22
一般来说,加密提供的是机密性,而不是完整性。根据算法的不同,攻击者可能或多或少地控制解密后显示的内容。
无论如何,我们在这里讨论的是RSA,其中加密使用接收者的公钥。顾名思义,公钥是公开的(而保持它的“秘密”可能很难)。因此,攻击者可能试图自己创建一个数据元素,使用收件人的RSA密钥对其进行加密,并将其发送,就像来自真正的客户端一样。如果您想保护自己不受此影响,那么您需要某种方法来区分合法发送者发送的消息和攻击者发送的假消息。这需要身份验证。
实现这种身份验证的方法主要有两种,它们都依赖于现有的协议和软件(这是一件非常好的事情,因为实现您自己的密码是一个错误的想法,它多次导致灾难):
https://security.stackexchange.com/questions/63999
复制相似问题