2017-04-07
TLS 1.3 開発日記 その15 RSAPSSとX25519
開発日記 その8に書いた「拡張の再利用」の問題に進展があったので、記録しておく。
これまでの方針
拡張が再利用されていても、TLS 1.2 と TLS 1.3 では異なる拡張として扱う。
生じた問題
SignatureSchemeに対する問題:
- TLS 1.3 クライアントが SignatureScheme に RSA PSS SHA256 を含める
- サーバは TLS 1.2 を選んでいるのに RSA PSS SHA256 を選択する
- TLS 1.3 クライアントの TLS 1.2 用の部分は RSA PSS SHA256 に対応していないのでエラーが発生
NamedGroupに対する問題:
- TLS 1.3 クライアントが NamedGroup に X25519 を含める
- サーバは TLS 1.2 を選んでいるのに X25519 を選択する
- TLS 1.3 クライアントの TLS 1.2 用の部分は X25519 に対応していないのでエラーが発生
www.google.com がこのような挙動をする。
対処
SignatureSchemeに関しては、TLS 1.3 のドラフトには以下のように書かれている。
Implementations that advertise support for RSASSA-PSS (which is mandatory in TLS 1.3), MUST be prepared to accept a signature using that scheme even when TLS 1.2 is negotiated. In TLS 1.2, RSASSA-PSS is used with RSA cipher suites.
NamedGroupに関しては、RFC 4492 bis で、X25519 と X448 が追加されている。
つまり、このオプションを独立に扱うのは筋が悪い。TLS 1.3 と TLS 1.2 の両方から、同じ拡張のコードを使うべき。
というわけで、まず Haskell tls ライブラリの master ブランチに、RSA PSS SHA256 たちと X25519 たちをサポートする pull request を出した。
TLS 1.3 ブランチは、マージされた後に rebase する(たぶん大変)。
トラックバック - http://d.hatena.ne.jp/kazu-yamamoto/20170407/1491536444
リンク元
- 1634 https://www.google.co.jp/
- 69 http://search.yahoo.co.jp/
- 59 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CCQQFjAG&url=http://d.hatena.ne.jp/kazu-yamamoto/20170407/1491536444&ei=CgvnWJbZGJ3YwwH8dQ&usg=AFQjCNEe_DhjZKjLGtfxJhuDPzMdChXMyg
- 44 http://www.mew.org/~kazu/doc/book/haskell.html
- 36 https://www.google.co.jp
- 36 https://www.google.com/
- 28 http://www.mew.org/~kazu/
- 26 https://goo.gl/ZaqSFJ
- 21 http://www.geekpage.jp/blog/?id=2010/11/9/2
- 19 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0ahUKEwi26I6D_5HTAhWLWrwKHXtfDRIQFggfMAE&url=http://d.hatena.ne.jp/kazu-yamamoto/20141219/1418976024&usg=AFQjCNFTi9KxzpCnT5qCb-Ml6YyS43a79Q