文字列暗号化
Babel Obfuscator は、コード内にインラインで記述された文字列を、組み込みの文字列暗号化アルゴリズムで暗号化できます。これらの組み込みの暗号化アルゴリズムに加えて、外部のコードやプラグインを通じてカスタムの文字列アルゴリズムを実装することもできます。これにより、固有のニーズに合わせた独自の暗号化方式を作成できます。
文字列暗号化の設定
Babel Obfuscator で文字列暗号化を設定するには、暗号化アルゴリズムを選択し、アプリケーションに合わせて設定します。Babel は XOR、HASH、STREAM の各アルゴリズムを標準でサポートしています。この 3 つは、Babel Desktop、コマンドラインのフラグ、MSBuild プロジェクトファイルのいずれでも選択できます。どれも適さない場合は、カスタムの文字列暗号化メソッドを実装できます。
組み込みのアルゴリズムとカスタムの実装のどちらを選んでも、文字列暗号化を設定すれば、機密性の高い文字列が簡単に読み取られたり改変されたりするのを防ぎ、アプリケーションのセキュリティを高められます。
FIPS が有効なホストにデプロイする場合:XOR アルゴリズムと HASH アルゴリズムは、実行時にプラットフォームの暗号化プロバイダーを通じて文字列を復号します。そのため、認定済みの OpenSSL FIPS プロバイダーがない FIPS が有効なホストで実行されるコンテナーは、起動に失敗することがあります。原因と対処方法については、FIPS 準拠を参照してください。STREAM アルゴリズムは影響を受けません。復号ルーチンが完全にマネージドコードで、プラットフォームの暗号化プロバイダーを呼び出すことがないためです。
const 文字列の暗号化
Babel Obfuscator の制限事項として、定数(const)の文字列は暗号化できません。定数の文字列はアプリケーションのメタデータにコンパイルされ、実行時に CLR が直接アクセスするためです。これらの文字列を暗号化できるようにするには、static readonly(C# の場合)または Shared ReadOnly(VB.NET の場合)のフィールドに変換する必要があります。こうすることで Babel Obfuscator がこれらの文字列を処理して暗号化できるようになり、そのままでは平文で露出してしまう機密情報を保護して、アプリケーションのセキュリティを高められます。
// Strings declared const cannot be encrypted
public const string Connection = "Server=myServerAddress;Database=myDB;...";
// To encrypt, convert the above declaration to static readonly
public static readonly string Connection = "Server=myServerAddress;Database=myDB;...";
Babel Desktop
Babel Desktop では、プロジェクトのキャンバスでアセンブリを選択し、プロパティパネルの「コード暗号化」グループで StringEncryption のアルゴリズム(xor、hash、stream、custom のいずれか)を選択します。一覧には、お使いのライセンスに含まれるアルゴリズムだけが表示されます。custom を選択する場合は、EncryptString メソッドと DecryptString メソッドをコード内に定義しておく必要があります。
このセクションのページ
- 標準アルゴリズム:組み込みの XOR、HASH、STREAM アルゴリズム、それぞれを有効にする方法、選択に役立つ比較表。
- カスタムアルゴリズム:独自の
EncryptStringメソッドとDecryptStringメソッドを実装し、任意のアルゴリズムで文字列を暗号化します。