Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 加密算法_Security_Encryption_Key_P2p - Fatal编程技术网

Security 加密算法

Security 加密算法,security,encryption,key,p2p,Security,Encryption,Key,P2p,我有一个P2P备份网络,一个对等方可以存储数据,然后从另一个对等方检索数据。我能采取的最好的安全措施是什么,以便数据不会被其他未创建数据的用户读取?我打算使用单密钥加密和数字签名,但我确信这是否是正确的方法。 提前感谢您的帮助据我所知,如果只有创建者检索存储的数据,那么单密钥加密机制就足够了,因为数据只由该用户加密和解密,无需密钥交换 证书(或公钥/私钥)不是必需的,因为加密过程中没有其他用户参与 还应考虑使用MAC功能(消息身份验证码)以确保存储的数据不会被修改的需要。问题很模糊,但无论如何,

我有一个P2P备份网络,一个对等方可以存储数据,然后从另一个对等方检索数据。我能采取的最好的安全措施是什么,以便数据不会被其他未创建数据的用户读取?我打算使用单密钥加密和数字签名,但我确信这是否是正确的方法。
提前感谢您的帮助

据我所知,如果只有创建者检索存储的数据,那么单密钥加密机制就足够了,因为数据只由该用户加密和解密,无需密钥交换

证书(或公钥/私钥)不是必需的,因为加密过程中没有其他用户参与


还应考虑使用MAC功能(消息身份验证码)以确保存储的数据不会被修改的需要。

问题很模糊,但无论如何,这里是:

每个对等方生成一个唯一的加密密钥——只有它自己知道。当需要存储数据时,它应该使用SHA算法对数据进行散列,连接数据和散列,加密,存储。这允许在检索后对数据进行廉价的验证,而不必处理非对称算法

总结:使用哈希和对称加密算法,但不存在已知的弱点,如SHA-2和AES,避免MD5和DES。不需要像RSA/DSA这样的非对称算法,而是使用嵌入的散列进行签名。

对称密钥(单密钥)加密可以工作。然而,正确的操作有点棘手——一定要了解密码操作模式。您应该向用户请求密码,并使用该密码派生主加密密钥。然后,您应该使用基于主密钥和块编号的密钥加密每个数据块(您正在将数据拆分为块,对吗?)


数字签名不会阻止窃听,但无论如何你都应该对内容进行签名,因为你不能相信对方会给你正确的内容。您应该使用MAC(消息身份验证码),因为您已经建立了对称密钥,并且用户是唯一需要验证签名的一方。

破坏encryptionsm的主要方法,尤其是在这种情况下,仍然是暴力。在大多数情况下,它工作得很好,效率也很高

例如,要破解用于签名某个URL的秘密令牌或md5哈希背后的密码,您只需启动一组Amazon EC2实例,只需按需要的时间支付费用,然后分发暴力攻击。大多数算法在GPU上比在CPU上工作得更好,但它更方便,因为您可以更好地租用和共享CPU

那么这意味着什么呢?从理论上讲,如果您能够分发攻击,您可以在几分钟内闯入任何密码或密钥保护帐户。实际上,这通常不起作用,因为身份验证服务器限制了请求的数量,因此限制了您应用暴力的能力

在这种情况下,听起来您完全是在将数据泄露给潜在的攻击者

所以,如果你把文件存储在我的电脑上,而我想破解它们,我可以把它们分发到一个巨大的计算云上(这只花了我几百美元就可以搞定你的签名)

如果这是可能的,那么即使长的数字签名用户也不安全。当然,所需的计算能力随着键的长度呈指数增长,但这还不够

所以在介绍之后。。。那怎么办呢

在我看来,最好是为每个文件生成一个唯一的签名,并将其留在客户端。不要使用共享签名

因此,如果我通过fileA.zip发送到您的服务器,我会保留一个fileA.zip.key,使我能够对其进行解密。这样你就可以破获一个文件,但我的账户是不完整的

如果你做一个2048位的密钥或者其他一些对每个文件单独加密的东西,这应该是非常安全的


您还可以考虑使用bcrypt,在这里您可以故意减慢加密过程,使攻击更加困难。但请记住,这也会减缓你这一端的去加密。但如果只是备份存储或其他什么,这将是一个相当大的安全增益。

是的,这正是我的意思,创建者应该能够解密数据。在这种情况下,我是否仍然需要使用数字证书,或者这些证书不是必需的?谢谢你的帮助help@Tzer001:是的..你不需要数字证书,但她需要一个消息验证机制-它不必是由非对称加密算法生成的签名。@Erik:是的,你是对的。。否则消息可能会被误解。。谢谢你的建议。我会修正我的答案。-1:蛮力效率?您将一个经过验证的弱散列算法(MD5)与完美的加密算法(如AES)混合在一起。而且这个星球上仍然没有足够的计算能力来有效地强制执行一个没有固有弱点的现代散列/加密算法。我同意aes仍然是安全的。但是暴力并不关心算法。这就是为什么它被称为蛮力。当然,破坏md5参数要比破坏aes密钥容易得多,因为它要长得多,但原理是一样的。“一个每秒可以检查十亿(1018)个AES密钥的设备理论上需要大约3×1051年来耗尽256位密钥空间。”但很有可能发现密钥空间中缺少entrophy,就像ibms ssl实现和openssl一样。我只是建议不要对所有文件使用1个密钥,以提高安全性。我强烈建议您在实现此功能之前先阅读加密和散列-如果您不完全了解自己在做什么,有很多方法可以实现可破解的实现。