SSブログ

TLS1.3 のラッパー書いた [Python]

これは、 Python Advent Calendar 2021 https://qiita.com/advent-calendar/2021/python の7日目の記事です

今年、 Python で、 TLS 1.3 のラッパー書きました
https://github.com/nakagami/tinytls
https://pypi.org/project/tinytls/

簡単に言えば、ssl モジュール https://docs.python.org/ja/3/library/ssl.html みたいなやつ
ssl モジュールと比較すると

- TLS1.3 の TLS_CHACHA20_POLY1305_SHA256 暗号スィートしか使えない
- X25519 による鍵交換しかできない
- サーバー証明書を検証していない
- Python で実装しているので遅い

と、できないことだらけです。
普通は ssl モジュールを使えばいいので、役に立つものではないんですが、SSL/TLS のラッパーを書いてみるのは、昔からの憧れでしたので(なぜなら、実装するのが難しそうだから。そして、確かに難しかったのですが)曲がりなりにも形になって、とても嬉しいです。

Firebird のドライバーで ChaCha20 がどんなものかわかってきて
https://nakagami.blog.ss-blog.jp/2021-12-02
そういえば、 TLS1.3 で ChaCha20 が使われるようになったぞ。
プロトコルが、TLS1.2から比べて簡素化されたらしいし、サーバー証明書の検証を省略すれば TLS1.3 のラッパーが書けるかもしれないぞ
・・・と思ったのですが、楕円暗号による共通鍵交換とか、HMAC による署名とか、
色々組み合わされていて、ChaCha20 はその中の一部でしかなく、自分には予想以上に難しかったです。

このリポジトリー https://github.com/tex2e/mako-tls13 がとても参考になりました
そして、このブログ https://tex2e.github.io/blog/ 中でも https://tex2e.github.io/blog/crypto/chacha20poly1305 この記事が参考になりました。
どちらも @tex2e さん、すごい。

Python は、遅いんですが、sha256 などのハッシュ関数が組み込みライブラリにあって、数値が多倍長整数型に自然に拡張されるので暗号関連の
実証コードを書くには便利だなと思っています。
コメント(0) 
共通テーマ:日記・雑感

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

Facebook コメント