公開日:12月30、2022
どの言語?セキュリティの観点から
ネイティブ アプリケーションにコンパイルされる開発言語を使用して、最高レベルのアプリケーション セキュリティを実現します。
アプリケーションセキュリティに関しては、すべてのプログラミング言語が同じように作られているわけではありません。中間形式にコンパイルされる言語は、大量のメタデータを保持しており、 難読化、することができます リバースエンジニアリング 市販のハッキングツールを使用します。
20年以上の経験を持つ Application Security、我々で Digital.ai ネイティブで実行できるアプリケーションを構築できる場合、中間コード、バイトコード、またはインタープリタ型アプリケーションにコンパイルされるプログラムの柔軟性よりも、セキュリティ上のメリットの方が重要です。しかし、すべてのプロジェクトがそうであるとは限りません。そのため、ほとんどのネイティブアプリケーションと中間アプリケーションに対応するソリューションをご用意しています。
柔軟性
Digital.ai のホストを提供しています アプリケーションシールド、難読化、そして 改ざん防止 ほぼすべての言語と開発環境で書かれたアプリのためのテクニック。つまり、 Digital.ai 次の言語で書かれたアプリを保護できます:
- C
- C + +
- オブジェクティブC
- スウィフト
- Java
- コトリン
- C#/Xamarin/.NET
- フラッター
- Unity
- JavaScriptを
- HTML5
セキュリティ
一般的に、ネイティブコードには最も強力な保護を適用できます。その理由は次のとおりです。
- C#などの一部の言語は、中間形式にコンパイルされます。中間形式には大量のメタデータが保持されます。このメタデータを利用すると、アプリケーションのリバースエンジニアリングが容易になります。アプリケーション保護によってこのメタデータを難読化できます。しかし、ネイティブアプリケーションにはそもそもこのような詳細なメタデータが含まれていないため、メタデータの難読化は完全に不要となり、攻撃対象領域が縮小されます。この観点から見ると、ネイティブアプリケーションは必要な保護が少なく、より迅速かつ容易に保護できます。
- At Digital.ai 現実の世界では、お客様にアプリ全体をC/C++で開発していただくことは現実的ではないと認識しています。機密データを保存するアプリ部分はネイティブ言語で記述するのが理想的ですが、例えばUIやAndroidサービスとのインターフェースは通常、Java/Kotlinで記述されます。これは理にかなったことであり、当社の保護機能は、FlutterやXamarinといった最高レベルで一見「最も柔軟性が高い」言語よりも、Java/Kotlinに広く適用できます。
- ツール 脅威アクター 逆アセンブラや逆コンパイラなどのツールは通常、高水準言語で使用する方が簡単なので、より迅速かつ容易な攻撃手段となります。
- クロスプラットフォーム言語で構築されたアプリを逆コンパイルすると、元のソースコードと非常によく似たコードが生成されることがよくあります。ネイティブコードの場合、コンパイルとマシンコード生成の過程で多くの情報が失われます。つまり、アプリが保護されていない場合でも、逆コンパイルされたコードはネイティブコードで記述されているため、脅威アクターによる「読み取り」がより困難になります。
- さらに、マシンコードをアセンブリに逆アセンブルするのは簡単ですが、元のコードに類似した逆コンパイルされたソースコードを取得するのは困難です。ネイティブコードに難読化を適用することで、逆コンパイルを完全に防ぐことさえ可能です。
以下は、逆コンパイルされた保護されていないネイティブ コードと、逆コンパイルされた保護されたネイティブ コードの例です。


シンプルなおもちゃのアプリケーションに、どれほどの複雑さが簡単に加わるかに注目してください。このような変更を実際のアプリケーションに適用することで複雑さが倍増し、攻撃者の作業は桁違いに困難になります。
高水準言語の例
以下に、保護されていない高レベル コードと保護された高レベル コードの例を示します。

保護されたコードは保護されていないコードよりも複雑ですが、整形ツールや逆コンパイラを使用すると元の制御フローに少し近づくことができるため、攻撃者の作業が少し容易になります。
結論
一方、 Digital.ai ネイティブコードにコンパイルされる高水準言語で書かれたアプリと、ネイティブコードと非ネイティブコードの両方を含むハイブリッドアプリケーションにコンパイルされる言語で書かれたアプリの両方を保護できますが、最も強力かつ最適な保護は、ネイティブコードにコンパイルされる言語で書かれたアプリにのみ適用されます。企業が、最高レベルの保護機能を備えたアプリを開発できる言語の使用のみを検討している場合は、下の図の言語階層を参照してください。開発者のニーズとスキルと、アプリに必要なセキュリティのバランスを考慮して言語を選択する必要があります。
方法の詳細については、 Digital.ai Application Security ネイティブアプリケーションと中間アプリケーションの両方をカバーするために組織を支援するには、 ウェブサイト.
