HTTPSリクエストを処理するために、Lispを使用してWebサーバーを作成しています。私はTLS 1.2に従っており、すでにハンドシェイク プロセスを完了しています。私が選んだ暗号スイートは TLS_RSA_WITH_RC4_128_SHA です。私はすでにclient_write_MAC_secret、server_write_MAC_secret、client_write_key、server_write_keyを計算しました。これらのキーは正しいと思われます。ブラウザからの「Finished」メッセージを復号化し、内部のデータを検証できるからです。また、レコード層の HMAC も検証します。次に、サーバーから「Change Cipher Spec」と「Finished」を送信します。これまでのところ、すべてがうまく機能しているようです。
次に、ブラウザからのメッセージを受け取りました#(23 3 3 1 61 ...)
。23
アプリケーションデータであることを意味します。#(3 3)
TLS 1.2 を意味します。#(1 61)
これは、長さが 256+61=317 であることを意味します。これは、残っているデータが実際には 317 バイトの長さであるためです。これが私の質問です。「client_write_key」を使用してこれらの 317 バイトを RC4 で復号化すると#(148 104 81 182 67 111 28 201 202 50 207 57 126 209 19 ...)
、テキストに変換できないようなデータが得られました。のようなものを手に入れるべきだと思いGET / HTTP/1.1
ました。私は何を間違えますか?
ありがとう。