ライセンスキーを作成したいのですが、どの暗号アルゴリズムがお勧めですか?
基本的に、入力は次のようになります。
会社名
メジャー バージョン番号
作成
日 有効期限
has feature1:
has feature2:
has feature3:
例: Acme Inc 5.0 20081102 20081102 0 1 0
ライセンスキーを作成したいのですが、どの暗号アルゴリズムがお勧めですか?
基本的に、入力は次のようになります。
会社名
メジャー バージョン番号
作成
日 有効期限
has feature1:
has feature2:
has feature3:
例: Acme Inc 5.0 20081102 20081102 0 1 0
私がお勧めするのは、鍵の保護に時間をかけすぎないことです。バイト コンパイル言語では、逆コンパイルが非常に簡単で、アプリケーションが検証ステップをスキップするだけです。キーがどれほど安全であっても、検証関数が常に true を返すかどうかは問題ではありません。シリアルキーは、正直な人を正直に保つためにあります。
顧客側で検証を行う場合は、非対称暗号化を使用する必要があります。そうすれば、秘密鍵を顧客に配布する必要はありません。SHA-256 と 2048 ビット キーを使用して RSA 署名を生成します。そうすれば、暗号操作は弱点にはなりません。もちろん、クラッカーは検証ステップをスキップするようにコードを変更できますが、それを助ける暗号化アルゴリズムはありません。
サーバー側で検証を行っている場合は、SHA-256 ベースの HMAC を選択します。
ライセンス キーの場合、暗号化にはあまり関心がありませんが、署名には関心があります。署名することで、有効期限と有効な機能リストが改ざんされていないことを検証できます。ライセンス キーを非表示 (暗号化) にする必要はありません。エンド ユーザーからライセンスを非表示にすることで軽減したい脅威がないためです。
暗号署名は、ライセンスをハッシュし、ハッシュを秘密鍵で暗号化することによって行われます。誰でも対応する公開鍵を使用してそのハッシュを復号化できるため、ライセンスが改ざんされていないかどうかを確認できます。
署名と検証を行う基本的な CryptoAPI 関数はCryptSignHashとCryptVerifySignature です。 C プログラムの例: ハッシュの署名とハッシュ署名の検証を参照してください。
.Net Framework に相当するものは、RSAPKCS1SignatureFormatterおよびRSAPKCS1SignatureDeformatterクラスです。
ここでも、他の質問に対する回答が適切です。最も安全な組み込みの.NET暗号化アルゴリズムはどれですか。
4 つのことを行う必要があります:
いいえ 1: アプリケーション (MD5、カスタム md5 コンテキストを使用) のチェックサム
- MD5 コンテキストを暗号化して初期化する必要があります
- 暗号化された秘密/公開キーのチェックサムと比較
する いいえ 2: 実行中のアプリケーションのテキスト セグメントのチェックサム
いいえ 3:ライセンスに 4096 ビットの RSA 秘密公開キー暗号化を使用します
No 4: 「間違ったキー」や「キー OK」などの重要な文字列を暗号化します
トリプル DES 暗号化の例を見たい場合は、データベース内のデータの暗号化に関する 私のブログ投稿をご覧ください。
ブログ投稿には、ビデオとソース コードが含まれています。
データベース内の文字列列の暗号化に焦点を当てていますが、ライセンス フィールドで動作するように変更できます。
ソース コードは C# で記述され、Triple DES アルゴリズムを使用します。