【问题标题】:TLS 1.0 - calculating the master keyTLS 1.0 - 计算主密钥
【发布时间】:2014-05-02 12:37:28
【问题描述】:

RFC 给出了公式

PRF(secret, label, seed) = P_MD5(S1, label + seed) XOR
                          P_SHA-1(S2, label + seed);

为了做到这一点。P_hash 依次有以下公式:

P_hash(secret, seed) = HMAC_hash(secret, A(1) + seed) +
                          HMAC_hash(secret, A(2) + seed) +
                          HMAC_hash(secret, A(3) + seed) + ...

RFC 也说

P_hash 可以根据需要进行多次迭代以生成 所需的数据量。例如,如果 P_SHA-1 被用于 创建 64 字节的数据,它必须被迭代 4 次 (通过A(4)),创建80字节的输出数据;最后 16 个字节 然后将丢弃最终迭代的 64 个字节 输出数据。

我发现“P_hash 可以根据需要迭代多次以生成所需数量的数据”令人困惑。到底需要多少次?是否有一个阈值,超过多少次都无关紧要?如果有,这个阈值是多少?

【问题讨论】:

  • '产生所需数量的数据所需的次数'对我来说似乎非常清楚。但是,我不会使用“迭代”这个词。真正发生的是使用了所需的表达式中的尽可能多的术语
  • 那么需要多少数据呢?我已经搜索了 RFC,它没有说明数据量。既然主密钥总是 48 字节长,那么它可能是 48 字节吗?
  • 如果我没记错的话,这用于多个地方,因此所需的数据量取决于上下文。
  • 啊,是的,这就解释了。另外,这个操作产生的数据量和最终导出的key的长度差不多。

标签: ssl hmac handshake hmacsha1


【解决方案1】:

我很确定在 TLS 1.0 中,premaster secret 和 master secret 的长度总是 48 字节,但是当您进一步创建密钥块时,它可能会超过 48 字节。即,如果您的密码使用 sha1 和 aes256,则需要 136 个字节。

【讨论】:

    猜你喜欢
    • 2013-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-03
    • 1970-01-01
    • 2012-03-25
    • 2017-01-19
    相关资源
    最近更新 更多