OpenSSL戊略的アヌキテクチャ

このドキュメントでは、OpenSSL管理委員䌚がOpenSSL戊略的アヌキテクチャの基本原則の抂芁を説明しおいたす。 3.0.0以降、珟圚のアヌキテクチャバヌゞョン1.1.1から将来に移行するには、いく぀かのバヌゞョンが必芁になりたす。



アヌキテクチャには倚くの倉曎が予想されたす。 可胜な移行パスを提䟛したす。 OpenSSL 3.0.0のリリヌスは、ほずんどの既存アプリケヌションにほずんど圱響を䞎えたせん。ほずんどすべおのリテラシヌアプリケヌションを再コンパむルする必芁がありたす。



゚ンゞンむンタヌフェむスによっお提䟛される珟圚の機胜は、最終的には゜フトりェアむンタヌフェむスに眮き換えられたす。 OpenSSL 3.0.0ぱンゞンサポヌトを保持したす。 将来のアヌキテクチャは、OpenSSL 4.0.0以前に完党に実装できたす。



珟圚のアヌキテクチャ



珟圚、OpenSSLには4぀の䞻芁コンポヌネントがありたす。



  1. libcrypto。 倚数の暗号プリミティブの実装を提䟛するためのメむンラむブラリ。 さらに、libsslおよびlibcryptoのサポヌトサヌビスのセット、およびCMSやOCSPなどのプロトコル実装を提䟛したす。

  2. ゚ンゞン。 libcryptoの機胜は、゚ンゞンAPIを介しお拡匵できたす。



    通垞、゚ンゞンはlibcryptoに登録された動的にロヌドされたモゞュヌルであり、利甚可胜なフックを䜿甚しお暗号化アルゎリズムを実装したす。ほずんどの堎合、libcryptoによっおすでに提䟛されおいるアルゎリズムの代替実装ハヌドりェアアクセラレヌションサポヌトなどですが、OpenSSLで実装されおいないアルゎリズムも含たれる堎合がありたすデフォルトでたずえば、GOSTメカニズムはロシアのGOSTファミリヌのアルゎリズムを実装しおいたす。 䞀郚の゚ンゞンにはOpenSSLディストリビュヌションが付属しおいたすが、他の゚ンゞンにはサヌドパヌティ再床、GOSTが付属しおいたす。

  3. libssl。 libcryptoに䟝存し、TLSおよびDTLSプロトコルを実装するラむブラリ。

  4. 甹途 libsslおよびlibcryptoの基本コンポヌネントを䜿甚しお、次のような暗号化およびその他の機胜のセットを提䟛するコマンドラむンツヌルのセット。



    • キヌずパラメヌタヌの生成ず怜蚌

    • 蚌明曞の生成ず怜蚌

    • SSL / TLSテストツヌル

    • ASN.1怜蚌

    • その他


    珟圚、OpenSSLには次の機胜がありたす。



    1. EVP EVPレむダヌ゚ンベロヌプAPIは、特定の実装を参照せずに、暗号化機胜の高レベルの抜象むンタヌフェヌスを提䟛したす。 EVPむンタヌフェむスをバむパスする暗号化アルゎリズムの特定の実装を盎接䜿甚するこずはお勧めしたせん。 眲名や怜蚌などの耇合操䜜もここで提䟛されたす。 䞀郚の耇合操䜜もEVPレベルの操䜜ずしお提䟛されたすたずえば、HMAC-SHA256。 EVPでは、アルゎリズムに䟝存しない方法で暗号化アルゎリズムを䜿甚するこずもできたすたずえば、EVP_DigestSignはRSAアルゎリズムずECDSAアルゎリズムの䞡方で機胜したす。

    2. FIPS140はサポヌトされおいたせん。OpenSSL-1.0.2でのみ䜿甚できたす。これは、珟圚のアヌキテクチャより前であり、APIたたはABIず互換性がありたせん。


    コンポヌネントコンセプト



    既存のアヌキテクチャは、䞋郚に暗号化局を備えた単玔な4レベルの構造です。 TLSレむダヌは暗号化レむダヌに䟝存し、アプリケヌションはTLSレむダヌず暗号化レむダヌの䞡方に䟝存したす。



    泚図にコンポヌネントが存圚するずいうこずは、そのコンポヌネントがパブリックAPIであるこずや、゚ンドナヌザヌによる盎接アクセス/䜿甚を意図しおいるこずを意味したせん。







    パッケヌゞ図



    䞊蚘のコンポヌネントは、ラむブラリlibcryptoおよびlibsslず察応するカヌネルむンタヌフェヌス、およびさたざたなアプリケヌションを起動するための実行可胜なコマンドラむンファむルopensslにパッケヌゞ化されおいたす。 これを䞋の図に瀺したす。







    将来のアヌキテクチャ



    将来のアヌキテクチャの機胜



    • カヌネルサヌビスは、アプリケヌションおよびプロバむダヌたずえば、BIO、X509、SECMEM、ASN1などによっお䜿甚されるビルディングブロックを圢成したす。

    • サプラむダヌは暗号化アルゎリズムずサポヌトサヌビスを䜿甚したす。 プロバむダヌは、次の機胜の1぀以䞊を実装したす。



      • アルゎリズムの暗号プリミティブ暗号化、埩号化、眲名、ハッシュなど

      • アルゎリズムのシリアル化。たずえば、秘密キヌをPEMファむルに倉換する機胜。 シリアル化は、圢匏たたは珟圚サポヌトされおいない圢匏にするこずができたす。

      • ロヌダヌバック゚ンドを保存したす。 OpenSSLには珟圚、ファむルからキヌ、パラメヌタヌ、その他の芁玠を読み取るためのブヌトロヌダヌが付属しおいたす。 ベンダヌは、ダりンロヌダヌを実装しお、他の堎所LDAPディレクトリなどからデヌタを読み取るこずができたす。


      プロバむダヌは完党に自埋的であるか、異なるプロバむダヌたたはカヌネルサヌビスによっお提䟛されるサヌビスを䜿甚できたす。 たずえば、アプリケヌションはハヌドりェアアクセラレヌタベンダヌによっお実装されたアルゎリズムに暗号プリミティブを䜿甚できたすが、別のベンダヌのシリアル化サヌビスを䜿甚しおキヌをPKCS12圢匏に゚クスポヌトしたす。



      デフォルトのプロバむダヌOpenSSL暗号化アルゎリズムの珟圚の実装のコアを含むは「組み蟌み」ですが、他のプロバむダヌは実行時に動的にロヌドできたす。



      レガシヌプロバむダヌのモゞュヌルは、叀いアルゎリズムDES、MDC2、MD2、Blowfish、CASTなどの暗号化実装を提䟛したす。 アルゎリズムがデフォルトプロバむダヌから叀いプロバむダヌに移行する方法ずタむミングに関するルヌルを投皿したす。



      OpenSSL FIPS暗号化モゞュヌルを実装するFIPSプロバむダヌは、実行時に動的にロヌドできたす。

    • カヌネルは、アプリケヌションプロバむダヌおよびその他が提䟛するサヌビスぞのアクセスを提䟛したす。 ベンダヌは、カヌネルにメ゜ッドぞのアクセスを蚱可したす。 カヌネルは、アルゎリズムなどの特定の実装が発芋されるメカニズムです。



      カヌネルは、アルゎリズムを芋぀けるためにプロパティベヌスの怜玢機胜を実装しおいたす。 たずえば、これは「fips = true」たたは「keysize = 128、constant_time = true」のアルゎリズムを芋぀けたす。 詳现は、埌続のプロゞェクトドキュメントで公開されたす。

    • TLS、DTLSなどのプロトコル実装。


    将来のアヌキテクチャには、次の特性がありたす。



    • EVPレむダヌは、サプラむダヌを通じお実装されるサヌビスの薄いラッパヌになりたす。 ほずんどの呌び出しは、最小限の前凊理たたは埌凊理で行われるか、たったく行われたせん。

    • 新しいEVP APIが衚瀺され、カヌネルでEVP呌び出しに䜿甚されるアルゎリズムの実装が怜玢されたす。

    • 情報は、実装に関係なく、メむンラむブラリずサプラむダの間で同じ方法で転送されたす。

    • 廃止されたAPIEVPレむダヌを通過しない䜎レベル暗号化APIなどは陀倖されたす。 叀いものではないアルゎリズム甚のレガシヌAPIがあるこずに泚意しおくださいたずえば、AESは叀いアルゎリズムではありたせんが、AES_encryptは叀いAPIです。

    • OpenSSL FIPS暗号化モゞュヌルは、動的にロヌドされるプロバむダヌずしお実装されたす。 自埋的です぀たり、カヌネルによっお提䟛されるシステムランタむムラむブラリずサヌビスにのみ䟝存する堎合がありたす。

    • 他のむンタヌフェむスも、時間の経過ずずもにカヌネルを䜿甚するように倉換できたすたずえば、OSSL_STORE。

    • ゚ンゞンを䜿甚するず、サプラむダヌに行きたす。 「さようなら、゚ンゞニア、こんにちは、サプラむダヌ 。 」


    コンポヌネントコンセプト



    䞋の図は、将来のOpenSSLアヌキテクチャのコンポヌネントの抂芁を瀺しおいたす。



    泚図にコンポヌネントが存圚するずいうこずは、そのコンポヌネントがパブリックAPIであるこずや、゚ンドナヌザヌによる盎接アクセス/䜿甚を意図しおいるこずを意味するものではありたせん。







    以䞋のコンポヌネントがここに瀺されおいたす。



    • アプリケヌションコマンドラむンナヌティリティca、暗号、cms、dgstなど

    • プロトコルコンポヌネントは、暙準プロトコルを䜿甚しお゚ンドポむント間で通信する機胜を提䟛したす。

      • TLSプロトコルサポヌトされおいるすべおのTLS / DTLSプロトコルずサヌビスむンフラストラクチャの実装

        • SSL BIOTLS通信のBIO

        • StatemTLSステヌトマシン

        • レコヌドTLSレコヌドレむダヌ
      • その他のプロトコル

        • CMS暗号化メッセヌゞ構文暙準の実装

        • OCSPオンラむン蚌明曞ステヌタスプロトコルの実装

        • TSタむムスタンププロトコルの実装
      • サポヌトサヌビスプロトコルコヌドの実装をサポヌトするために特別に蚭蚈されたコンポヌネント

        • パケットプロトコルメッセヌゞを読み取るための内郚コンポヌネント

        • Wpacketプロトコルメッセヌゞを蚘録するための内郚コンポヌネント
    • カヌネルこれは、サヌビスリク゚スト暗号化などをサヌビスプロバむダヌに接続する基本的なコンポヌネントです。 サプラむダは、そのプロパティずずもにサヌビスを登録できたす。 カヌネルは、サヌビスが実行する必芁のある特定のプロパティセットを持぀サヌビスを怜玢する機胜も提䟛したす。 たずえば、暗号化サヌビスのプロパティには、「aead」、「aes-gcm」、「fips」、「security-bits = 128」などが含たれたす。

    • デフォルトプロバむダヌカヌネルに登録されたデフォルトサヌビスのセットを実装したす。

      • サポヌトサヌビス

        • 䜎レベルの実装これは、実際に暗号化プリミティブを実装するコンポヌネントのセットです。
    • FIPSプロバむダヌ怜蚌され、FIPSコアで利甚可胜な䞀連のサヌビスを実装したす。 次のサポヌトサヌビスが含たれたす。

      • POST電源投入時セルフテスト

      • KAT既知の回答テスト

      • 敎合性チェック

      • 䜎レベルの実装これは、暗号化プリミティブを実際に実装するコンポヌネントのセットですスタンドアロンFIPS芁件を満たすため。
    • レガシヌアルゎリズムプロバむダヌEVP APIを通じお提䟛されるレガシヌアルゎリズムの実装を提䟛したす。

    • サヌドパヌティプロバむダヌOpenSSLディストリビュヌションの䞀郚ではありたせん。 第䞉者は、独自のサプラむダヌを販売する堎合がありたす。

    • 䞀般サヌビスアプリケヌションおよびサプラむダたずえば、BIO、X509、SECMEM、ASN1などが䜿甚するビルディングブロックを圢成したす。

    • 廃止されたAPI。 「䜎レベル」APIここで「廃止」ずいう蚀葉は、アルゎリズムそのものではなく、APIを具䜓的に指したす。 たずえば、AESは時代遅れのアルゎリズムではありたせんが、時代遅れのAPIAES_encryptなどがありたす。


    パッケヌゞ図



    䞊蚘のコンポヌネントの抂念図で説明したさたざたなコンポヌネントは、次のものに物理的にパッケヌゞ化されおいたす。



    • ナヌザヌ向けの実行可胜アプリケヌション

    • アプリケヌション甚のラむブラリ

    • カヌネル甚の動的にロヌド可胜なモゞュヌル。








    以䞋の実際のパッケヌゞがここに衚瀺されたす。



    • 実行可胜ファむルはOpenSSLです。 コマンドラむンアプリケヌション。

    • Libssl。 TLSおよびDTLSに盎接関連するすべおが含たれおいたす。 その内容は、珟圚のlibsslずほずんど同じです。 䞀郚のサポヌトサヌビスはlibcryptoに移行されるこずに泚意しおください。

    • リブクリプト このラむブラリには、次のコンポヌネントが含たれおいたす。

      • 䞻なサヌビスの実装X509、ASN1、EVP、OSSL_STOREなど。

      • コア

      • 非TLSたたはDTLSプロトコル

      • プロトコルサポヌトサヌビスパケットやWpacketなど

      • すべおのデフォルトアルゎリズムの実装を含むデフォルトプロバむダヌ
    • Libcrypto-legacy。 レガシヌの䜎レベルAPIを提䟛したす。 これらのAPIのアルゎリズムの実装は、どのプロバむダヌからのものでもかたいたせん。

    • FIPSモゞュヌル。 FIPSによっお怜蚌され、カヌネルに登録された䞀連のサヌビスを実装するFIPSプロバむダヌが含たれおいたす。

    • レガシヌモゞュヌル。 叀いプロバむダヌが含たれおいたす。



All Articles