加密 - 很好地刷字节数组中的一些位?

时间:2014-01-19 18:35:26

标签: encryption cryptography xor bitmask

我目前已经了解了很多关于加密的信息。 我想知道,在加密字节数组中的某个已知位置切换一些位(XOR和位掩码)并在解密之前再次切换它们是不错的。

因为即使您知道算法和密钥,也不可能在不知道切换位的情况下解密它们不会吗?

2 个答案:

答案 0 :(得分:2)

位切换成为算法的一部分,因此,如果“他们知道算法”,则包括切换哪些位。

找出“算法”确实变得非常困难,但这种增益很小。如果他们可以拿到钥匙,我认为你的问题就在其他地方......

这也有一些缺点。首先,您可能会在系统中引入安全漏洞。我不认为这会发生,但我不知道我不会,并且在安全方面你应该假设你可能会造成安全漏洞,除非你知道你不会。

第二个问题是,如果你在某处犯了错误,可能会破坏数据。当然,严格的测试将确保错误不会使其生产,但它不如使用安全库的功能那么安全。

最后,存在您的代码和数据难以使用的问题。如果您将来需要使用它,或者有人必须使用它,它可能需要花费更多的精力。

那些不是大事,但我说的不仅仅是收益。在一天结束时,这只不过是“通过默默无闻的安全”,所以不,我不会说这是一个好主意。

答案 1 :(得分:0)

您需要查看Kerckhoff's Principle。即使攻击者知道整个算法,任何加密系统都需要是安全的。只有密钥必须保密。你的比特是算法的一部分,所以任何敌人都会知道。

考虑AES。有一些公开文件详细描述了AES的工作原理:NIST AES Description。该算法的描述是公开的,但AES仍然是安全的,因为如果遵循Kerckhoff。您需要确保您的算法是安全的。如您所描述的那样简单的bit-twiddling将不会使不安全的算法安全。任何攻击者都会知道有什么东西可以扭曲,可以解开它们并打破潜在的不安全密码。

作为替代方法,您可以将您使用的位掩码添加到密钥中。这增加了密钥大小和处理时间,从而获得非常小的安全性。通常有更好的方法来增加密码的安全性,例如添加更多轮次。