OpenSSL 3.0.0 暗号化ライブラリのリリース

19 年間の開発と 3.0.0 回のテスト リリースを経て、SSL/TLS プロトコルとさまざまな暗号化アルゴリズムを実装した OpenSSL 1.1.1 ライブラリがリリースされました。 新しいブランチには、API および ABI レベルでの下位互換性を破壊する変更が含まれていますが、この変更は、OpenSSL 1.1.1 から移行するために再構築が必要なほとんどのアプリケーションの動作には影響しません。 OpenSSL 2023 の以前のブランチは、XNUMX 年 XNUMX 月までサポートされます。

バージョン番号の大幅な変更は、従来の「Major.Minor.Patch」番号付けへの移行によるものです。 今後、バージョン番号の最初の桁 (メジャー) は、API/ABI レベルで互換性が壊れた場合にのみ変更され、3.0.0 桁目 (マイナー) は、API/ABI を変更せずに機能が追加された場合に変更されます。 修正アップデートは1.1.1桁目(パッチ)を変更して配信されます。 2 の直後の番号 XNUMX は、現在開発中の OpenSSL 用 FIPS モジュール (XNUMX.x 番号が使用されている) との重複を避けるために選択されました。

プロジェクトの 2.0 番目の重要な変更は、デュアル ライセンス (OpenSSL および SSLeay) から Apache 1.0 ライセンスへの移行でした。 以前の独自の OpenSSL ライセンスは、従来の Apache XNUMX ライセンスのテキストに基づいており、OpenSSL ライブラリを使用する場合はマーケティング資料で OpenSSL について明示的に言及する必要があり、OpenSSL が製品の一部として提供される場合には特別な通知が必要でした。 このような要件により、古いライセンスは GPL と互換性がなく、GPL ライセンスのプロジェクトで OpenSSL を使用することが困難になりました。 この非互換性を回避するために、GPL プロジェクトは特定の使用許諾契約を使用することを余儀なくされました。その使用許諾契約では、GPL の本文に、アプリケーションを OpenSSL ライブラリにリンクすることを明示的に許可する条項が追加され、GPL の要件は満たされていないと述べられました。 OpenSSLとの連携に適用されます。

OpenSSL 1.1.1 ブランチと比較して、OpenSSL 3.0.0 では、7500 人の開発者によって貢献された 350 以上の変更が追加されました。 OpenSSL 3.0.0 の主な革新:

  • FIPS 140-2 セキュリティ標準に準拠した暗号アルゴリズムの実装を含む、新しい FIPS モジュールが提案されました (モジュールの認証プロセスは今月開始される予定で、FIPS 140-2 認証は来年になる予定です)。 新しいモジュールは非常に使いやすく、多くのアプリケーションに接続することは、構成ファイルを変更することと同じくらい難しくありません。 デフォルトでは、FIPS モジュールは無効になっており、enable-fips オプションを有効にする必要があります。
  • libcrypto は、エンジンの概念に代わるプラグ可能プロバイダーの概念を実装します (ENGINE API は非推奨になりました)。 プロバイダーの助けを借りて、暗号化、復号化、キー生成、MAC 計算、デジタル署名の作成と検証などの操作のためのアルゴリズムの独自の実装を追加できます。 新しいものを接続することも、すでにサポートされているアルゴリズムの代替実装を作成することも可能です (デフォルトでは、OpenSSL に組み込まれているプロバイダーが各アルゴリズムに使用されるようになりました)。
  • 証明書管理プロトコル (RFC 4210) のサポートが追加されました。これは、CA サーバーからの証明書の要求、証明書の更新、および証明書の取り消しに使用できます。 CMP の操作は、新しい openssl-cmp ユーティリティを使用して実行されます。このユーティリティは、CRMF 形式 (RFC 4211) と HTTP/HTTPS 経由のリクエストの送信 (RFC 6712) もサポートしています。
  • HTTP および HTTPS プロトコル用の本格的なクライアントが実装されており、GET および POST メソッド、リクエストのリダイレクト、プロキシを介した動作、ASN.1 エンコード、およびタイムアウト処理をサポートしています。
  • 新しい EVP_MAC (メッセージ認証コード API) が追加され、モック挿入の新しい実装を簡単に追加できるようになりました。
  • キーを生成するための新しいソフトウェア インターフェイスである EVP_KDF (キー導出関数 API) が提案されています。これにより、KDF と PRF の新しい実装の追加が簡素化されます。 scrypt、TLS1 PRF、および HKDF アルゴリズムを利用できた古い EVP_PKEY API は、EVP_KDF および EVP_MAC API の上に実装されたレイヤーの形式で再設計されました。
  • TLS プロトコルの実装により、Linux カーネルに組み込まれた TLS クライアントとサーバーを使用して操作を高速化できるようになります。 Linux カーネルによって提供される TLS 実装を有効にするには、「SSL_OP_ENABLE_KTLS」オプションまたは「enable-ktls」設定を有効にする必要があります。
  • 新しいアルゴリズムのサポートが追加されました。
    • 鍵生成アルゴリズム(KDF)は「SINGLE STEP」と「SSH」です。
    • 模擬挿入アルゴリズム(MAC)は「GMAC」と「KMAC」です。
    • RSA キー カプセル化アルゴリズム (KEM)「RSASVE」。
    • 暗号化アルゴリズム「AES-SIV」(RFC-8452)。
    • AES アルゴリズムを使用してキーを暗号化する逆暗号 (キー ラップ) をサポートする EVP API への呼び出しを追加しました: 「AES-128-WRAP-INV」、「AES-192-WRAP-INV」、「AES-256-WRAP- 「INV」、「AES-128-WRAP-PAD-INV」、「AES-192-WRAP-PAD-INV」、および「AES-256-WRAP-PAD-INV」。
    • EVP API に暗号文借用 (CTS) アルゴリズムのサポートを追加しました: 「AES-128-CBC-CTS」、「AES-192-CBC-CTS」、「AES-256-CBC-CTS」、「CAMELLIA-128-CBC」 -CTS」、「CAMELLIA-192-CBC-CTS」、「CAMELLIA-256-CBC-CTS」。
    • CAdES-BES デジタル署名 (RFC 5126) のサポートが追加されました。
    • AES_GCM は、AuthEnvelopedData (RFC 5083) パラメーターを実装し、AES GCM モードを使用して認証および暗号化されたメッセージの暗号化と復号化を有効にします。
  • PKCS7_get_octet_string 関数と PKCS7_type_is_other 関数がパブリック API に追加されました。
  • PKCS#12 API は、PKCS12_create() 関数で使用されるデフォルトのアルゴリズムを PBKDF2 および AES に置き換え、SHA-256 アルゴリズムを使用して MAC を計算します。 過去の動作を復元するために、「-legacy」オプションが提供されています。 PKCS12_add_key_ex().PKCS5_create_ex() や PKCS8_decrypt_skey_ex() など、PKCS12_*_ex、PKCS12_*_ex、PKCS12_*_ex に多数の新しい拡張呼び出しが追加されました。
  • Windows プラットフォームの場合、SRWLock メカニズムを使用したスレッド同期のサポートが追加されました。
  • 新しいトレース API が追加され、enable-trace パラメーターで有効になりました。
  • EVP_PKEY_public_check() および EVP_PKEY_param_check() 関数でサポートされるキーの範囲が拡張されました: RSA、DSA、ED25519、X25519、ED448、および X448。
  • RAND_DRBG サブシステムは削除され、EVP_RAND API に置き換えられました。 FIPS_mode() 関数と FIPS_mode_set() 関数は削除されました。
  • API の重要な部分が廃止されました。プロジェクト コードで廃止された呼び出しを使用すると、コンパイル中に警告が表示されます。 アルゴリズムの特定の実装 (AES_set_encrypt_key や AES_encrypt など) に関連付けられた低レベル API を含むものは、廃止されたことが公式に宣言されました。 OpenSSL 3.0.0 での公式サポートは現在、個々のアルゴリズム タイプから抽象化された高レベルの EVP API に対してのみ提供されています (この API には、EVP_EncryptInit_ex、EVP_EncryptUpdate、EVP_EncryptFinal 関数などが含まれます)。 非推奨の API は、次のメジャー リリースのいずれかで削除される予定です。 EVP API を通じて利用可能な MD2 や DES などのレガシー アルゴリズムの実装は、デフォルトでは無効になっている別の「レガシー」モジュールに移動されました。
  • ドキュメントとテスト スイートが大幅に拡張されました。 ブランチ 1.1.1 と比較して、ドキュメントの量は 94% 増加し、テスト スイートのコードのサイズは 54% 増加しました。

出所: オープンネット.ru

コメントを追加します