LibreSSL 3.7.2
ここまでの作業を r10432 でコミットしました。
問題点は ticket の詳細に書いたとおりです。書き方を変えたら通るようになるでしょうか?
LibreSSL の issue に、同じように SSH で CTR の暗号方式をサポートしようとして、同じことを書いている人がいました。
https://github.com/libressl-portable/portable/issues/790
LibreSSL 3.5 から構造体が opaque になり、これは変わらなそうです。LibreSSL 3.7 で EVP_CIPHER_meth_* 関数を追加することについては、検討が必要なようです。
3.7.0 (development release, 2022-12-12) には、これらの関数はありませんでした。リリースノートを見ると API の変更は development release のときに行われているようなので、入るとしたら 3.8 になるかもしれませんね。
3.8まで待ってみましょう。
3.8.0 が出るのが 2023 春になり、3.8.1 (stable) が出るのがさらに先になるでしょうか。
少なくともそれまでは LibreSSL 3.4.x で止めておく、ということでよいですか?
「最新」を使うことになっているもので、最新にしたことで不具合が出た場合には協議する
が発動するということを確認しました。
3.4.x はまだサポートされている印象です
おそらくいいえ。
2022-10-20 に OpenBSD 7.2 が出て、OpenBSD 7.0(LibreSSL 3.4.1を含む)のサポートが切れました。
LibreSSL のリリースは OpenBSD から生えてくるもので、OpenBSD がサポート対応するリリースは「過去2回ぶん」です。(OpenBSD 7.1 は LibreSSL 3.5.2 です。)
LibreSSL が今のまま EVP_CIPHER_meth_* を追加しなかったら、ずっとアップデートできないことになります。
その場合に取れる対応:
なお、OpenSSL 3 では、同じ箇所(*-ctr のアルゴリズム)で使っている EVP_CIPHER_meth_* 関数は非推奨になりました。
これを回避する方法が、今のところわかっていません。
LibreSSL 3.4.3 で止めておく。ただしすでにサポート(security fix の提供)は切れている。
ここまでの確認よろしいでしょうか。
LibreSSL 3.4.3 で止めておく。ただしすでにサポート(security fix の提供)は切れている。 ここまでの確認よろしいでしょうか。
了解です。
確認ありがとうございました。
LibreSSL の次のリリースでどうなるか様子を見ましょう。できることとして、issue に「EVP_CIPHER_meth_* を使いたい人が他にもいる」と書いておきました。
ありがとうございます。
試しに、LibreSSL 3.7.0 を使って *-ctr アルゴリズムを切ったバイナリを 手もとで作ってみました。
クラッシュせず動作して、WSLのsshに接続できました。
設定GUIなど全然見てませんが、とりあえず接続できたので安心しました。
書き忘れました。wiki:決定事項 を更新しました。
「ライブラリのバージョンアップについて行く必要性」は低いものではないので、優先度を上げておく。
まえに試しに LibreSSL 3.7.0 を使ってビルドしたときの修正を整理して libreSSL_370 ブランチに置きました。
LibreSSL に EVP_CIPHER_meth_* 関数が作られました
LibreSSL 3.7.1 に入りました。LibreSSL 3.7.1 は development release で、3.7.x の最後の development release だそうです。
OpenBSD 7.3 には LibreSSL 3.7.2(stable release)が入る予定ですので「LibreSSL 3.7.2 が出たら TTSSH は追従する」にしましょう。
数日中に LibreSSL 3.7.1 で問題なくビルドできるか確認します。
LibreSSL 3.7.1 でビルド/aes256-ctrで接続できることを確認しました。
r10648 で LibreSSL -3.4.3, 3.5.0-3.7.0, 3.7.1- のどれでもコンパイルできるようになった。
LibreSSL 3.5.0-3.7.0 では以下のアルゴリズムが無効になる
手もとでLibreSSL 3.7.1 に置き換えてみました。 エラーで通りませんでした。
3.7.1をダウンロードする修正を添付します。
zmatsuo への返信
手もとでLibreSSL 3.7.1 に置き換えてみました。
エラーで通りませんでした。
このエラーが、「LibSSL のスタティックリンクライブラリのファイル名が crypto-47.lib から crypto-50.lib に変わっていてリンクできない」というものであれば、それはそうと言うしかないです。そこは ifdef でカバーできず、vcxproj を編集する必要があります。ソースが OpenSSL と共通でも vcxproj は共通に出来ないのと同じです。今のところ「まだ 3.4.3 を使う」で合意していて「3.7.2 が出たら追従しましょう」の段階ですので、そこは変更していません。
違うエラーでしたら、エラーの内容を教えて頂けますか。
エラー内容はこんな感じで
27>cipher-3des1.obj : error LNK2019: 未解決の外部シンボル _EVP_CIPHER_meth_new が関数 _evp_ssh1_3des で参照されました 27>cipher-ctr.obj : error LNK2001: 外部シンボル _EVP_CIPHER_meth_new は未解決です 27>cipher-3des1.obj : error LNK2019: 未解決の外部シンボル _EVP_CIPHER_meth_set_iv_length が関数 _evp_ssh1_3des で参照されました 27>cipher-ctr.obj : error LNK2001: 外部シンボル _EVP_CIPHER_meth_set_iv_length は未解決です : :
「LibSSL のスタティックリンクライブラリのファイル名が crypto-47.libから crypto-50.lib に変わっていてリンクできない」
の指摘通りでした。失礼しました。
パッと見た感じ3.7.1に入れ替えて問題なく動作しました。 よさそうな感じです。手もとでは3.7.1で試してみようと思います。
手もとでは3.7.1で試してみようと思います。
手もとの修正をsvnに入れました。libressl_3_7_1です。
引き続き試しに使ってみます。
LibreSSL 3.7.2 (stable) が出ていました。問題なさそうなので、あとで trunk にコミットします。
nmaya への返信
👍
r10688 でコミットしました。
LibreSSL 3.5.3
LibreSSL 3.5.3 がリリースされていました。
https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-3.5.3-relnotes.txt
LibreSSL 3.6.1
LibreSSL 3.6.1 がリリースされていました。
https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-3.7.0-relnotes.txt
LibreSSL 3.7.1
LibreSSL 3.7.1 がリリースされていました。
https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-3.7.1-relnotes.txt
LibreSSL 3.7.2
LibreSSL 3.7.2 がリリースされていました。
https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-3.7.2-relnotes.txt
対応状況
問題点
LibreSSL 3.5.0 から、カスタム cipher を作っている部分でコンパイルエラーとなる。
カスタム cipher は des3_ctr, aes_ctr, blowfish_ctr, cast5_ctr, camellia_ctr のサポートのために作っているようです。
LibreSSL, OpenSSL3 の対応の時に、EVP_CIPHER_meth_new が LibreSSL にはなくて行ったり来たりした箇所。(r9623, r9658)
これまで
いま
ちなみに OpenSSL3 では EVP_CIPHER_meth_new() は非推奨になった。代わりに OSSL_PROVIDER API を使うように書いてある。