Category: Cryptography

  • RSA Key Exchange

    RSA Key Exchange

    本篇文章, 我们以 TLS_RSA_WITH_AES_253_CBC_SHA256 为例,来学习一种 TLS Key 交换算法.: RSA key 交换算法. 注意, 这种 key 交换算法已经被证明并不安全,因此请在实践中不要使用它, 这里我们只是以此来学习以下相关算法原理. 握手过程 使用 RSA Key 交换算法的 TLS 握手流程大体如下: Client Server ClientHello{CipherSuites: TLS_RSA_…} –> <– ServerHello{CipherSuite: TLS_RSA_…} <– Certificate(RSA) <– ServerHelloDone ClientKeyExchange** –> ChangeCipherSpec –> EncryptedHandshakeMessage –> <– ChangeCipherSpec <– EncryptedHandshakeMessag 算法解析 RSA Key 交换算法流程: 1. TLS 服务器端 当 TLS 握手过程中选择了 RSA…

  • TLS13 Session resumption

    TLS13 Session resumption

    TLS13 的 Session resumption 和之前版本不同 什么是 Session resumption: 在之前的 TLS 连接之上,基于已经交换过的信息, 快速的建立另外一个TLS 连接的机制。 为什么需要 Session resumption: 加速TLS握手, 更快的准备好安全的数据通道. 常见的使用场景: FTP 协议。 在 FTP 协议中,当 control channel 使用 TLS 协议进行通信,通常会要求 Data channel 也进行 TLS 加密通信,并且强制要求 Data channel 使用 Session resumption 机制建立 TLS 连接。 HTTP 协议中,当我们需要和同一个服务器建立多个 TLS 连接时,我们可以选择在成功的建立一条TLS连接之后,后续连接使用 Session resumption 来加速 TLS 连接建立的速度。 其他场景。 概述 正如前面所说, Session…

  • PRF

    PRF

    PRF = Pseudorandom function 它的作用是: 扩展密钥. 也就是说从一个密钥,生成另外一个密钥. 它的输入是: secret, seed, label. 它的输出是: 任意长度的字节数组 它的定义: PRF(secret, label, seed) = P_<hash>(secret, label+seed) P_hash(secret, seed) = HMAC_hash(secret, A(1) + seed) + HMAC_hash(secret, A(2) + seed) + HMAC_hash(secret, A(3) + seed) + … A() = A(0) = seed A(i) = HMAC_hash(secret, A(i-1)) 上述表达式中 + 号代表字符数组拼接. P_hash 定义中, HMAC_hash 可以重复无数次,直到生成的结果长度达到期望。…