【问题标题】:Encryption security加密安全
【发布时间】:2013-10-02 01:20:32
【问题描述】:

假设我们有一个数字 (12345),我们想将它存储在数据库中,但以某种方式加密。

我们希望避免使用任何常见的加密方法。

我们想知道这样做是否安全,如果安全,安全性如何。

原号码:12345

随机播放:35124

添加一些数据:53412-35124-14352

然后将其存储在数据库中...

您可以阅读原始号码,因为您知道在哪里查找。 这种方法容易逆向工程吗?

【问题讨论】:

  • 这没有加密,所以是的。
  • 为什么要避免使用常见的加密算法?它们很常见,因为它们运行良好。
  • 好的,你告诉我这很容易坏,但你会怎么做呢?这就是我在这个问题上的主要观点。你会如何打破它?
  • 非常容易破解,只需一点点已知的明文——可能只是通过检查
  • 加密规则之一是你不要发明自己的算法。我建议你阅读this question and its answers

标签: encryption public-key-encryption


【解决方案1】:

假设我有办法向您发送一些号码以进行存储。我给你发了几个号码,然后我检查你的“加密”号码。

Number I Sent       Number You Stored
12345               53412-35124-14352
11111               73671-11111-78162
67890               98126-80679-98983

只要看一下,你就可以很容易地看到发生了什么。

您真的不应该发明自己的加密算法。我只引用Bruce Scheier

从最无知的业余爱好者到最优秀的密码学家,任何人都可以创建自己无法破解的算法。这甚至不难。困难的是创建一种其他人都无法破解的算法,即使经过多年的分析。而证明这一点的唯一方法是让算法接受周围最好的密码学家多年的分析。

【讨论】:

  • 假设您向我发送了一个 GUID,我使用相同的算法进行存储。你真的能说出原来的数字吗?
  • 嗯,问题不是“我可以吗?” - 它是“任何人都可以吗?”。但是,是的,很可能,如果您所做的只是将数字改组并使用随机数字进行预订。
【解决方案2】:

该方法非常很容易进行逆向工程和破坏。

这种简单的东西可能会被人类看着它并注意到位置的恒定映射而破坏。我给你abcd,你给我bdca-bafd-jc6f。您添加的额外数据不会掩盖前 4 个字符的链接

但是,如果有更复杂的方法,则可以应用类似于机器学习的方法,让计算机检测这些直接模式。 Google 翻译使用此版本通过纯数学和已翻译成多种语言的书籍生成翻译。

另外,如果你只是洗牌,加密的样本空间会非常小。

例如。如果密文是:1342

更好的加密意味着它最初可能是 0 - 9999(总共 10,000 个)

你的加密告诉我它是从这 24 个字符之一开始的:

1234 | 2134 | 3124 | 4123

1243 | 2143 | 3142 | 4132

1324 | 2341 | 3214 | 4213

1342 | 2341 | 3241 | 4231

1423 | 2413 | 3412 | 4312

1432 | 2431 | 3421 | 4321

最后:

因为你的加密的“保密性”来自不知道如何执行它的人,所以你不能要求社区在他们不知道你是如何做到这一点并因此破解它的情况下检查它的强度。

所有好的加密方法“保密”都来自密钥或密码,这意味着您可以共享该方法并要求社区测试其强度,因为您没有给他们密钥。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-05
    • 2011-03-09
    • 2011-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多