Kerckhoffs 的原则指出:
一个密码系统应该是安全的,即使系统的所有内容,除了密钥,都是公共知识。
因此,如果 AES 被破坏,您的自制算法可能会更容易并且已经被破坏。
我意识到您最初的问题的一部分是:
provided they do not have the algorithm
然而,由于这违反了 Kerckhoffs 的原则,您的自制方法本身就有缺陷且不安全。
这是一个问题的主要原因是它为您的系统增加了多少安全性是无法量化的。我在这里向您推荐 Thomas Pornin对类似问题的回答:
另一个转折是算法晦涩难懂会损害安全性。我在上面解释的是,在安全性方面不能信任模糊性:它可能会增加安全性,但不会增加太多(而且你无法真正知道“多少”)。事实证明,它也会降低安全性。问题如下:制定安全的密码算法非常困难。唯一已知的方法是发布该算法,并等待世界各地密码学家的集体智慧来啃它并得出一个结论,该结论可以表示为“可以那样破解”或“显然很健壮”。一个算法只有在至少三四年内抵抗了数十或数百名有能力的密码学家的猛烈攻击时,才被宣布为“好”。
因此,如果您担心 AES 可能很快会被破坏(或者根本不使用 AES),那么您应该使用另一种算法。我假设您系统的其余部分不是 100% 安全的 - 因此,与其浪费时间、精力、精力和资源来创建自制算法,不如将这项工作花在其他地方,在那里可以量化它实际上正在增加安全。所有代码都有成本,而不仅仅是初级开发人员的薪水在创建它。每个人都需要维护和理解它——每个额外的人学习它是如何工作的都是算法被泄露的额外途径。不要浪费你的时间。