組み込みプロトコルスタックでランタイムライセンスを実装する必要があります。実行時ライセンスを実装する方法は?
私はすでにこれを達成する方法についてのアイデアを持っていますが、私は他のアプローチや注意すべき落とし穴に興味があります。スタックを実行する各デバイスには、一意のハードコードされた識別子(MACアドレスに相当)と、いくつかの不揮発性ストレージへのアクセスがあると想定できます。
私が計画しているアプローチは、メーカーが不揮発性ストアに保存するデバイス識別子からハッシュ関数を介して生成されたライセンスキーを提供することです。スタックは、同じハッシュ関数を使用して識別子をハッシュし、実行前に格納されたキーと一致することを確認します。
私は最近、実行時ライセンスを実装しなければなりませんでしたが、私の場合は特定のハードウェアに縛られていません。私の解決策は、すべてのライセンス情報をJSONオブジェクトとしてエンコードし、サーバーの秘密鍵(OpenSSLがRSA_private_encryptと呼ぶもの)で暗号化することでした。これは、基本的に署名された平文がハッシュの代わりにメッセージ全体であることで署名され、クリアされたハッシュと署名されたハッシュでデータを送信するよりも小さく、トランスポートと検証が容易でない不透明なビット列になります。 – Guss
パブリックキーがソフトウェアに埋め込まれていないこと、公開されているSSLサーバーの証明書から取得されているため、スキーム全体が移植性が高く、簡単なキー置換をサポートしているという点も欠点です。これはもちろん、クライアントがパブリックインターネット上で動作することが予想される場合にのみ有効です。そうしないと、パブリックキーの取得を簡単に回避できます。 – Guss