【问题标题】:Understanding session entropy了解会话熵
【发布时间】:2014-06-17 11:20:09
【问题描述】:

在文章https://www.owasp.org/index.php/Insufficient_Session-ID_Length 您可以阅读有关会话猜测攻击的信息。

攻击者需要多长时间才能找到有效/活动会话?

B is the number of bits of entropy in the session identifier
A is the number of guesses an attacker can try each second
S is the number of valid session identifiers
  that are valid and available to be guessed at any given time 

大多数 PHP 默认设置使用 md5 散列(128 位)。 当我对 B 使用 128,对 A 使用 1000,对 S 使用 500 时,我得到的结果是 3,4028236692093846346337460743177e+32 秒,或者大约是 10790283070806014188970529,15499 年。

看起来还不错。我从未在任何小于 128 位的网站上看到任何会话,(问题:)还是我的假设有问题?

默认值是否安全

现在使用这个(偏执模式)

ini_set('session.hash_function', 'sha512');
ini_set('session.hash_bits_per_character', 6);
ini_set('session.entropy_file', '/dev/urandom');
ini_set('session.entropy_length', 128);

生成会话 ID,例如:

K7ZvnlbRth5JbbJIRIDWdljiKHnP2fRrOVpCMxSbp9rO4OWzynraCon3O-Gfu9beuy2YGHEBpE14uvMzOfVvj3

【问题讨论】:

    标签: php session entropy


    【解决方案1】:

    是也不是,蛮力攻击是非常原始的攻击类型。

    没有人会尝试暴力破解具有当前性能边界的哈希算法。

    我相信每秒 1,000 次会话猜测也远非现实。任何暴力攻击都受到带宽的限制,大多数防火墙每秒都会阻止这样数量的请求。

    如果您关心会话安全,则需要考虑客户端和服务器之间的安全数据传输,因为大多数攻击会尝试窃取会话密钥,而不是尝试暴力破解。 (wiki link)

    【讨论】:

    • 人们是在何时何地使用 32 位会话 ID 的?
    • 我的假设是针对具有短 TTL 的会话,例如用于获取/重新获取一些无意义的数据的短连接。
    猜你喜欢
    • 2016-04-30
    • 1970-01-01
    • 2018-09-03
    • 2014-09-10
    • 1970-01-01
    • 2014-06-14
    • 1970-01-01
    • 2013-05-14
    • 2019-05-14
    相关资源
    最近更新 更多