2013-06-01から1ヶ月間の記事一覧

HTTPSの実装 TSL 5

C#でPRFの実装しました。データ元はwirsharのSSL debug fileです。 pre master secretからmaster_secretさらにmac,key,ivを取り出せます。 PRFの詳しい説明はここにあります。 from wireshark debug file. ssl_generate_keyring_material:PRF(pre_master_sec…

keyblockからは以下のようにしてキーを取得します。サーバ用とクライント用に分かれてます。 key+ivは共通鍵です。macはデータの検証で使用します。ivが曲者でここで取得したivデータは初回しか使えません。 毎回、ivは最終ブロックデータの先頭へ変更します…

TSLではPRFという名のSHA1とMD5で構成された関数からキーなどを作成します。そして、ラベルを4種類使用します。 "master secret" : pre_master_secretからmaster secretという名のデータを作成 "key expansion" : master_secretからkeyblock(CLENT_MAC+SERV…

HTTPSのシーケンシャルは以下です。この辺の説明は省きます。 [**CLIENT**] [**SERVER**] CT_HANDSHAKE -----------------------------> CLIENT_HELLO (client_randam) SERVER_HELLO (serevr_randam) CERTIFICATE (x509) SERVER_HELLO_DONE CT_HANDSHAKE ---…

C++でHTTPSサーバを実際に作成しています。実装に関しては情報が少ないため、かなり難しいです。 しかし、なんとか目途がたったので役に立つ情報を出してみたいと思います。 なお、使用する暗号形式はTLS_RSA_WITH_AES128_CBC_SHAに限定します。TSL1.0はSSL3…