thesis/memo.txt が 6,816 文字になった。
一般に、卒論といえば 20,000 〜 40,000 文字書くものである、という主張をインターネットで見ることがあるが、確かに庄司さんの卒論・修論を見ていると、ページ数こそ多いものの図面やソースコードでほとんどページを埋めているケースもあり、地の文に相当する箇所だけ数えれば 40,000 字程度であるかもしれないと考えられた。
ソースコードより日本語が書きたい時期なため、それをしている。庄司さんによる先行研究があるおかげで割と気が楽な気がしている。あとは実装を頑張る必要がある。例えば、以下のことが急務。- TLS 1.3 のパケットと、それに対応するであろう鍵を与えた際に平文を得るための関数を作る
- rustls がいくつかの便利そうな decryptor struct を内部で持っているが pub(crate) に制限しているのでフォークして expose してあげる必要がありそう
- ユーザとの対話的な TUI アプリケーションによるルールの追加・変更
- 論文に書きたいところなので実装しないと嘘になる!
- 復号された payload が表示されたらアツいと思うが、そのためには上が requirement になる
- アプリケーションごとにコンテナを生やして ebpf-afw をアタッチするところの様子
- コンフィグは network interface ごとに名前を変えて保存してあげる必要がありそう
- SSLKEYLOGFILE parser
- rustls の KeyLogFile の実装を見て書き出し側がなにをしているのか見れば deserialize もうまくできるのではないか
もうちょっとはやくから卒論書いておいてもよかったな〜と思いつつ、モチベが湧いてきたのは今だから今からでもできることをどんどんやるしかないし、最終的にいい感じになるところまで持っていけそうという自信が出てきた。https://github.com/vadorovsky/network-types/pull/6 ← 早くからマージされていれば https://github.com/private-yusuke/network-types を用意する必要は無かったかも……。TLS13_AES_256_GCM_SHA384.tls13().unwrap().aead_alg.decrypter(key, iv).decrypt(msg, seq) みたいにすれば TLS 通信が復号できそうな気がしてきた。つまり、rustls 側に手を入れる必要はなさそう。TLS 1.2 の暗号スイートについてもパターンマッチで内側の struct を取得すれば decryptor を用意できそう。iv とかとして与えるものをどのように用意すればいいのかは rustls のソースを読んであげる必要がありそう。そもそもとして、何を準備しておけば復号ができるのかまず整理する必要がある。
https://github.com/rustls/rustls/blob/26ec868b8c03a872b37e7d4604d9f6ed38ea5189/rustls/src/client/tls12.rs#L977-L989 が最後に読んでいたソースコードになる。CLIENT_SECRET の形式
https://tkt182.hatenablog.com/entry/2019/03/19/223823留守番電話がかかってきていたので確認したところ LINE ヤフー株式会社からだった。野菜炒めにはパスタではなくうどんを入れてもいいかもしれない。snot