カテゴリ: セキュリティ
CodeMeterとX.509の証明書
セキュリティや認証に関する話は、遅かれ早かれ証明書の問題に行き着きます。しかし、証明書は多くの人にとって未知の概念であり、実際のアプリケーションと管理は複雑かつ面倒になりがちです。
このトピックを掘り下げて、証明書の機能とCodeMeterを使用して証明書を管理する他のすべてのプロセスが、ユーザーにとってより簡単で快適なものにする方法を探りましょう。
X.509の証明書とPKI
証明書は、IDを公開鍵と関連する秘密鍵とをリンクするために使用されます。証明書は、RSAやECCなどの公開鍵のアルゴリズムでのみ使用されます。これらのアルゴリズムでは、鍵は秘密鍵と一致する公開鍵で構成されます。したがって、これらは常に鍵ペアと呼ばれます。この場合のIDとは、実際の個人のIDだけではありません。マシン、デバイス、または役割のIDを参照することもできます。いずれの場合も、証明書がIDと鍵ペアをリンクするためには、デバイス名やIPアドレスなどの特定の情報と公開鍵に関する情報が含まれている必要があります。
これで、このリンクは確立されましたが、指定されたIDが実際に指定された鍵ペアの所有者に属していることの証明はまだありません。このため、指定されたIDが実際に使用する鍵に属するかどうかを第三者がチェックし確認する必要があります。そのためには、階層的に構成された1つ以上のトラストアンカー(Certificate Authority、略してCA)からなる公開鍵基盤が必要です。証明書を取得するためには、証明書署名要求(CSR)をCAに提出する必要があります。この要求は、証明書と一致する秘密鍵で署名され、認証局は申請者が秘密鍵を所有しているかどうかを確認することができます。また、認証局は、証明書に記載された身元が申請者のものと一致するかどうかを確認する必要があります。個人の場合は、通常、身分証明書の提示や電話確認によって行われます。機器や機械の証明書の場合、申請は、「機械の責任者」、すなわち身元確認が可能な人物を介して行うか、あるいは、認証局が自動的に確認できる固有の機器特性に基づいて行うことが望ましいです。どのルートを採用しても、検証が成功すれば、CAは証明書に署名して ID と鍵ペアの間のリンクを確認します。X.509 証明書では、発行する CA が信頼できる場合にのみ証明書が信頼できるため、CAの信頼性に依存することにな ります。このため、CAが単一障害点となります。
OPC UAプロトコルでの証明書の使用法を見て、証明書を認証に使用する方法を見てみましょう。
OPC UAとCodeMeterでより安全な通信を実現
産業界の機械・装置間の通信手段として、OPC UAの普及が進んでいます。この種の通信には、盗難や改ざんから保護する必要のある機密データが含まれることが多いため、特に安全対策が必要です。OPC UAでは、クライアントとサーバーがOPC UA通信においてお互いを認証するために、X.509証明書を使用します。すべての機器が証明書を持ち、すべての機器が互いの証明書を信頼していれば、OPC UAサーバーとクライアントに含まれるTLS実装を利用して、確実に安全な通信を確立することができます。
課題は、OPC UAサーバーやクライアントに証明書や鍵を装備し、OPC UAプロセスに統合することでPKIを構築することです。現在、鍵は各機器のファイルシステムに保護されることなく保存されているため、状況はさらに複雑になっています。そこで、CodeMeterの出番です。CmDongleには、鍵を保管するのに最適なセキュアストレージエレメントが含まれています。CmDongleに隠されたこれらの鍵にOPC UAでアクセスするために、前述のように、CodeMeterの技術がOPC UAサーバーとクライアントに統合されています。
これらの機能は、OpenSSLのような一般的なTLS実装に必要なインターフェースを提供するCodeMeter Certificate Vaultによって統合されています。CodeMeter Certificate Vault自体は、CmDongle上の鍵にアクセスするためにCodeMeter APIを使用します。OPC UAスタックは、TLS実装(この場合はOpenSSL)を通じてこれを可能にします。OpenSSLは、独自の暗号化アルゴリズムを使用しない方法で、サーバーとクライアントに統合されています。代わりに、CodeMeter Certificate Vaultが方程式に入り、必要な暗号アルゴリズムのハードウェア実装(例えば、CmDongle上のRSA)を使用します。マシンBとの認証を容易にするために、マシンAで同じことが行われます。
OPC UAで鍵を安全に利用する方法を説明しましたが、では鍵はどのように機器に取り込まれ、証明書はどこから来るのでしょうか。
CodeMeter License Centralを使用した鍵と証明書の管理
ソフトウェア開発者や製造工場のオペレーターは、利用可能な鍵や証明書を管理し、割り当てるための中央手段を持つ必要があり、理想的には既存のプロセスを変更することなく、鍵や証明書を割り当てることができます。
Wibu-Systemsは、鍵および証明書の管理システムを統合するための最適な選択肢として、CodeMeter License Centralとその拡張機能であるCodeMeter Certificate Vaultを提供しています。
CodeMeter License Centralは、既存のCRM、ERP、またはeコマースソリューションとシームレスに統合することで、すでにライセンス管理を容易にしており、確立されたプロセスのサポートが保証されています。ライセンスは、ブラウザベースのソリューション、または特定のソフトウェア製品に専用インタフェースを統合することでアクティベートすることができます。
CodeMeter Certificate Vaultモジュールは、鍵と証明書を作成、管理、割り当てるためのCodeMeter License Centralエクステンションです。証明書は、注文時またはライセンスがアクティベートされたときに作成することができます。この拡張機能には、外部プロセスが新しい証明書に必要なデータにアクセスするために必要なインターフェイスが付属しています。この図は、CodeMeter License CentralとCertificate Vaultエクステンションがどのように鍵と証明書を管理するのかを示しています。オペレーターは、まずCodeMeter License Centralで、どのデバイスに証明書または鍵が必要かを決定し、そのための注文をCodeMeter License Centralで作成します。
新しい証明書を取得するには、権利付きデバイスはWibuCmRaCファイルと証明書に必要なすべての追加情報をCodeMeter Certificate Vaultエクステンションに送信することになります。すでに外部で作成されたRSAキーが使用されない場合、CodeMeter Certificate Vaultは新しい鍵ペアを作成することができます。
そして実際の証明書の作成には、クライアント固有の実装を持つ定義されたインターフェイスが使用されます。ソフトウェア開発者やマシン製作者は、さまざまな選択肢の中から証明書の作成方法を選ぶことが可能です。図のステップ3では、自己署名証明書から外部の認証局まで、さまざまな選択肢を紹介しています。
証明書の準備ができると、CodeMeter License Centralによって秘密鍵と一緒にWibuCmRaUファイルにパッケージングされ、要求元のマシンに送り返されます(ステップ4)。さらに、鍵はCodeMeter License Centralでバックアップされます。ファイルが到着した後、証明書と鍵はCmDongleに保存され、CodeMeter Certificate Vaultによって、安全な通信を確立するためなどに使用することが可能です。
まとめ
CodeMeter Certificate Vaultは、CodeMeter Dongleの信頼できるセキュリティを、鍵と証明書の保存と使用の世界に持ち込みます。
CodeMeter Certificate Vaultエクステンションを使えば、既存のプロセスをCodeMeter License Centralとリンクさせ、スムーズでシームレスな証明書の作成と管理を行うことができます。
KEYnote 39 – Edition Spring 2020