代码之家  ›  专栏  ›  技术社区  ›  Adam Davis

密码的陷阱

  •  4
  • Adam Davis  · 技术社区  · 17 年前

    我正在修改现有的安全代码。规范非常明确,有示例代码,但我不是加密专家。事实上,示例代码有一个免责声明,实际上是“不要逐字使用此代码。”

    在审核我要修改的代码(据称是功能完整的)时,我遇到了这个用于生成挑战的小gem:

    static uint16 randomSeed;
    
    ...
    
    uint16 GetRandomValue(void)
    {
      return randomSeed++;/* This is not a good example of very random generation :o) */
    }
    

    • 我需要了解的密码学中最常见的安全问题是什么?
    • 除了常见的错误之外,有哪些好的资源可以让我对应该知道的事情有适当的了解?

    6 回复  |  直到 16 年前
        1
  •  18
  •   Tai Squared    17 年前

    不要试图自己动手——如果可能的话,使用标准库。对安全代码的细微更改可能会产生巨大的影响,不容易发现,但会打开安全漏洞。例如, two modified lines 一个图书馆打开了一个洞,这个洞在很长一段时间内都不太明显。

        2
  •  12
  •   Tom Ritter    17 年前

    Applied Cryptography

    需要注意的一些事情:

    • Poor Sources of Randomness
    • 没有对代码进行审查。最好是在网上发布。
    • 加密货币是灵丹妙药——加密数据并不能神奇地使其安全
    • 密钥管理。如今,通过侧信道攻击窃取密钥往往比攻击加密货币更容易。
        3
  •  6
  •   Darron    17 年前

    第二点可能是假设你可以比专家更好地设计一个系统。在这个领域,标准的高质量实施几乎肯定会比创新更好。记住,SSL真正安全之前需要三个主要版本。我们认为。

        4
  •  4
  •   user51568    17 年前

    依我之见,你应该注意四个级别的攻击:

    1. 不要执行任意代码(缓冲区溢出、xss漏洞、sql注入都在这里分组)。要了解这一点,最简单的事情就是阅读微软某位员工的《编写安全代码》,并观看《如何破解网络软件》谷歌技术讲座。这也应该教会你一些关于深度防御的知识。

    2. http://www.soe.ucsc.edu/~abadi/Papers/gep-ieee.ps

      • 除非尽可能保持最新,否则无法避免的事情:对哈希函数或加密函数的新攻击(例如,最近的MD5谈话),新的攻击技术(例如,对通过网络发送加密语音的协议的最新攻击)

    此外,让我非常担心的是,移动设备上可能被锁定且难以更新的内容是由询问stackoverflow安全性的人编写的。我相信你的案例将是少数几个需要外部(好)顾问帮助你正确处理细节的案例之一。即使你聘请了安全顾问,我建议你这样做,也请阅读上述(极简主义)参考。

        5
  •  2
  •   Community Mohan Dere    9 年前

    我需要了解的密码学中最常见的安全问题是什么?

    很简单——你(1)不够聪明,无法想出自己的算法。

    (1) 我所说的你,是指你、我和其他阅读这个网站的人。..除了可能 Alan Kay Jon Skeet .

        6
  •  1
  •   Eduard - Gabriel Munteanu    17 年前

    我也不是一个加密货币的人,但S盒在被弄乱时可能会很麻烦(它们确实有所作为)。你还需要一个真正的熵源,而不仅仅是一个PRNG(无论它看起来多么随机)。PRNG是无用的。接下来,您应该确保熵源不是确定性的,并且不能被篡改。

    我谦逊的建议是:坚持使用已知的加密算法,除非你是专家并了解其中的风险。你最好使用一些经过测试的、公开可用的开源/公共领域代码。