デプロイ可能なアーカイブ内のコードとデータの保護
ファイル名やフォルダー名を不明瞭化したり、シークレット情報を保存したり、デプロイ可能なアーカイブを暗号化したりできるパッケージ化オプションを使用して、デプロイされるアプリケーション コードを保護できます。これらのオプションを個別に、または組み合わせて使用して、アプリケーションのセキュリティを強化します。
MATLAB® ソース コードの保護に関する一般的な情報については、ソース コードを保護するためのセキュリティについての考慮事項を参照してください。
ユーザー データの保護とファイル構造の難読化
MATLAB Compiler™ によるデプロイ可能なアーカイブの作成では、MATLAB コード ファイル (プレーン テキストの MATLAB ファイルまたは P コード ファイル) は標準の AES-256 アルゴリズムを使用して暗号化されます。既定では、ファイルの名前とディレクトリ構造は不明瞭化されず、他のファイル タイプ (MAT、FIG、MEX など) は暗号化されません。
すべてのデプロイ ターゲットについて、ファイルの名前とディレクトリ構造を不明瞭化でき、他のファイル タイプ (MAT、FIG、MEX など) を暗号化することもできます。暗号化されたファイルはディスク上では暗号化されたままですが、実行時にメモリ内で元の形式に復号化されます。
パッケージ化方法に応じて、次の 1 つ以上のオプションを使用して、MATLAB コードとデータを保護できます。
mcc -sオプションを使用して、デプロイ可能なアーカイブ (CTF ファイル) 内のフォルダー構造およびファイル名を難読化し、ユーザー コードとデータをアーカイブ内のユーザー パッケージに配置します。実行時に、MATLAB コードとデータはファイル システムに抽出されるのではなく、ユーザー パッケージから直接復号化されて読み込まれます。 (R2021b 以降)mcc -jオプションを使用して、自動的にすべての.mファイルを P ファイルに変換してからパッケージ化します。 (R2022b 以降)compiler.build関数のObfuscateArchiveオプションを使用して、デプロイ可能なアーカイブ内でフォルダー構造とファイル名を難読化し、すべての.mファイルを P ファイルに変換してからパッケージ化します。このオプションは、-sおよび-jの両方を指定してmccを使用するのと等価です。 (R2023a 以降)コンパイラ アプリの [ランタイム追加設定] 領域にある
-s(R2021b 以降) オプションまたは-j(R2022b 以降) オプションを使用します。
パッケージ化方法の選択の詳細については、デプロイ オプションの選択を参照してください。
シークレットを使用した機密情報を含むコードのパッケージ化
スタンドアロン アプリケーションおよび Web アプリで、デプロイする MATLAB コードがパスワードなどの機密データを含む文字列を処理する場合に、MATLAB コードにそれらを配置することを回避するには、それらをシークレットとして MATLAB Vault に保存します。次に、実行時に復号化される、シークレットを含むデプロイ可能なアーカイブをパッケージ化できます。
デプロイ可能なアーカイブにシークレットを含めるには、パッケージ化する前に、setSecret を使用して各シークレットを MATLAB Vault に保存します。デプロイされた MATLAB コード内では、getSecret を使用してシークレットを取得します。次に、パッケージ化方法に応じて、以下のいずれかのオプションを使用して、secret マニフェスト JSON ファイルでシークレット名を指定します。
compiler.build関数でSecretsManifestオプションを使用。 (R2024b 以降)mcc -Jオプションを使用。 (R2024a 以降)コンパイラ アプリの [ランタイム追加設定] 領域にある
-Jオプションを使用。 (R2024a 以降)
シークレットを使用するコードのデプロイの詳細については、Handle Sensitive Information in Deployed Applicationsを参照してください。
シークレットを使用するスタンドアロン アプリケーションを作成する例については、スタンドアロン アプリケーション内の機密情報へのアクセスを参照してください。
実行時の復号化キーの要求
実行時にアプリケーション アクセスを制御するには、AES 暗号化キーと、復号化キーを取得するための MEX ファイルのローダー インターフェイスを指定できます。
パッケージ化方法に応じて、パッケージ化の際に、以下のいずれかの同等のオプションを使用してキー ファイルとローダー ファイルを指定します。
compiler.build関数でExternalEncryptionKeyオプションを使用。 (R2024b 以降)mcc -kオプションを使用。 (R2022b 以降)コンパイラ アプリの [ランタイム追加設定] 領域にある
-kオプションを使用。 (R2022b 以降)
詳細については、mcc -k エントリを参照してください。
MEX ローダーを使用しない C++ 共有ライブラリのパッケージ化
C++ 共有ライブラリについては、コンパイル時にキーと MEX ローダーの両方を指定する代わりに、暗号化キーのみを指定できます (R2023b 以降)。その後、MATLAB データ API を使用する場合は initMATLABLibrary (MATLAB Compiler SDK) 関数、mwArray API を使用する場合は <library>InitializeWithKey (MATLAB Compiler SDK) 関数の引数として、実行時に C++ アプリケーションで 16 進数でエンコードされた 64 バイトの復号化キーを提供します。このワークフローの構文は次のとおりです。
mcc mfilename1 -W 'cpplib:library_name' -k '<keyfile>'
参考
compiler.build.standaloneApplication | スタンドアロン アプリケーション コンパイラ | mcc | getSecret