.NETアセンブリの宿命

                 近藤和彦
                 日本マイクロソフト株式会社
                 デベロッパー&プラットフォーム統括本部
                 開発ツール製品部

17-D-6
                 エグゼクティブプロダクトマネージャー
                 岩沢宏美
                 株式会社エージーテック
                 プロダクト&プランズ
                 プロダクトマネージャー

     Developers Summit 2011
Office
                    アプリケーション
                                     モバイル/組み込み
    Web
                                     アプリケーション
    アプリケーション



                                       サーバー
                                       アプリケーション




クライアント
アプリケーション




               設計      開発      テスト    クラウド
                                      アプリケーション

                       管理
Office
                    アプリケーション
                                     モバイル/組み込み
    Web
                                     アプリケーション
    アプリケーション



                                       サーバー
                                       アプリケーション




クライアント
アプリケーション




               設計      開発      テスト    クラウド
                                      アプリケーション

                       管理
Office
                    アプリケーション
                                     モバイル/組み込み
    Web
                                     アプリケーション
    アプリケーション



                                       サーバー
                                       アプリケーション




クライアント
アプリケーション




               設計      開発      テスト    クラウド
                                      アプリケーション

                       管理
Visual Studio 2010 / .NET Framework 4 対応
    開発者向けコンテンツ


•    アプリケーション アーキテクチャ ガイド 2.0
•    Visual Studio 2010 によるWindows アプリケーション開発の基礎
•    XAML による Windows アプリケーション開発の基礎
•    ASP.NET による Web アプリケーション開発の基礎
•    Silverlight による Web アプリケーション開発 (Coming Soon!)
•    データアクセス (Visual Studio 2010 /.NET Framework 4 対応)
•    Visual Studio 2010 開発ガイド
•    Expression Blend 4 開発者向けガイド (Coming Soon!)
•    Expression Blend 4 SketchFlow 開発者向けガイド (Coming Soon!)
•    単体テストの自動化
•    ユーザーインターフェイスの自動テスト
•    Test Manager 2010 を活用したテスト プロセスの包括的な管理
•    Visual Studio Lab Management 2010 によるテスト環境の仮想化
•    Team Foundation Server 2010 によるソースコード管理入門




www.microsoft.com/japan/vstudio
© 2011 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows 7 and other product names are or may be registered trademarks and/or trademarks in the U.S.
and/or other countries.
The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must
respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information
provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
難読化とは

 難読化とは逆コンパイラの出力を分り難い
  ものに変換し、プログラムの解析に必要な
  労力を増やすこと。
難読化の仕組み
名前の変更

 プログラマーは意味のある識別子を使って人が
  見て分りやすいコードを書く。
 .NETアセンブリには識別子情報がそのまま残っ
  ている。

 意味のある識別子を意味のない文字に変更。
  クラス、インターフェイス、メソッド、フィールドなど
      GetPayroll(int key) => a(int a)
 難読化の第一歩
名前の変更
- オーバーロード誘導TM
 異なるメソッド名を出来る限り同じ名前に変更。

 引数の型が異なる複数のメソッドを同じ名前、”a”
  に変更。
   GetPayroll( )        => a( )
   GetPayroll(int key)  => a(int a)
   MakeDeposit(float amt) => a(float a)
   SendPayment(string key) => a(string a)

 PreEmptive社の特許技術
制御フローの難読化
 .NETアセンブリには元のソースコードを厳
  密に反映する命令シーケンスがそのまま
  残っている。
 オリジナルのソースコードを反映しない、論
  理的に等価な命令シーケンスに変更。
 例: ブロックの並べ替え
    偽の制御フローの追加
 プログラムロジックを保護する。
文字列の暗号化

 .NETアセンブリには文字列はそのままの状
  態で残っている。
 ハッカーの一般的な攻撃の材料となる。

 文字列を暗号化することで攻撃の速度を遅
  らせる。
デモ:難読化してみよう (CE/PRO)

 Dotfuscatorを起動
 入力アセンブリを選択
 利用する難読化機能
   名前変更 (CE、PRO)
   制御フローの難読、文字列の暗号化(PRO)
 Dotfuscatorのプロジェクトファイルを保存
 ビルド開始
 難読化の結果を確認
VS2010付属
Dotfuscator CE 新機能
  インストルメンテーション
  Runtime Intelligence
    改ざん検出
    アプリケーションライフサイクルの管理
     (Shelf Life)
    アプリケーション分析
インストルメンテーションの方法
 コードを書かずに既存の.NETアセンブリに実装
                                   RI
                                 アセンブリ



                                                RI対応
  ソースコード    コンパイラ       入力       Dotruscator     出力
                       アセンブリ                   アセンブリ



                                  拡張属性



 ご参考:インストルメンテーション詳細
  http://msdn.microsoft.com/ja-jp/vstudio/ff462138
Runtime Intelligence

  改ざん検出
    改ざんが検出された場合に、アプリケーションを
     終了する。

  アプリケーションライフサイクル管理
    アプリケーションの有効期限を設定。
    手軽にアプリケーションの自主規制が可能。
Runtime Intelligence

  アプリケーション分析
   実行中のアプリケーションから情報を収集
   実際の利用状況を把握できる
     どのようなアプリケーションを実行しているか?
      (バージョン単位)
     どういう機能をどういう順番で実行しているか?
     それら機能にどのくらい時間をかけているか?


   開発計画、ビジネス戦略に役立つ
Runtime Intelligence
    ポータルサイト




  無償・有償版ポータルサイト
  ご参考: CodePlexのサイト (http://skypefx.codeplex.com/)
Dotfuscatorのソリューション

 アプリケーションの価値を保護して、高める!
保護              測定
リバース エンジニア      利用状況、安定性、
リング、改ざん、脆弱      実行環境などを安全
性攻撃、著作権侵害       かつ効率よく透過的
からの保護           に測定




防御              管理
改ざんや不正な実行       アプリケーションライ
に対してリアルタイム      フサイクルの管理
に防御

【17-D-6】.NETアセンブリの宿命

  • 1.
    .NETアセンブリの宿命 近藤和彦 日本マイクロソフト株式会社 デベロッパー&プラットフォーム統括本部 開発ツール製品部 17-D-6 エグゼクティブプロダクトマネージャー 岩沢宏美 株式会社エージーテック プロダクト&プランズ プロダクトマネージャー Developers Summit 2011
  • 2.
    Office アプリケーション モバイル/組み込み Web アプリケーション アプリケーション サーバー アプリケーション クライアント アプリケーション 設計 開発 テスト クラウド アプリケーション 管理
  • 3.
    Office アプリケーション モバイル/組み込み Web アプリケーション アプリケーション サーバー アプリケーション クライアント アプリケーション 設計 開発 テスト クラウド アプリケーション 管理
  • 4.
    Office アプリケーション モバイル/組み込み Web アプリケーション アプリケーション サーバー アプリケーション クライアント アプリケーション 設計 開発 テスト クラウド アプリケーション 管理
  • 5.
    Visual Studio 2010/ .NET Framework 4 対応 開発者向けコンテンツ • アプリケーション アーキテクチャ ガイド 2.0 • Visual Studio 2010 によるWindows アプリケーション開発の基礎 • XAML による Windows アプリケーション開発の基礎 • ASP.NET による Web アプリケーション開発の基礎 • Silverlight による Web アプリケーション開発 (Coming Soon!) • データアクセス (Visual Studio 2010 /.NET Framework 4 対応) • Visual Studio 2010 開発ガイド • Expression Blend 4 開発者向けガイド (Coming Soon!) • Expression Blend 4 SketchFlow 開発者向けガイド (Coming Soon!) • 単体テストの自動化 • ユーザーインターフェイスの自動テスト • Test Manager 2010 を活用したテスト プロセスの包括的な管理 • Visual Studio Lab Management 2010 によるテスト環境の仮想化 • Team Foundation Server 2010 によるソースコード管理入門 www.microsoft.com/japan/vstudio
  • 6.
    © 2011 MicrosoftCorporation. All rights reserved. Microsoft, Windows, Windows 7 and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
  • 9.
    難読化とは  難読化とは逆コンパイラの出力を分り難い ものに変換し、プログラムの解析に必要な 労力を増やすこと。
  • 10.
  • 11.
    名前の変更  プログラマーは意味のある識別子を使って人が 見て分りやすいコードを書く。  .NETアセンブリには識別子情報がそのまま残っ ている。  意味のある識別子を意味のない文字に変更。 クラス、インターフェイス、メソッド、フィールドなど GetPayroll(int key) => a(int a)  難読化の第一歩
  • 12.
    名前の変更 - オーバーロード誘導TM  異なるメソッド名を出来る限り同じ名前に変更。 引数の型が異なる複数のメソッドを同じ名前、”a” に変更。 GetPayroll( ) => a( ) GetPayroll(int key) => a(int a) MakeDeposit(float amt) => a(float a) SendPayment(string key) => a(string a)  PreEmptive社の特許技術
  • 13.
    制御フローの難読化  .NETアセンブリには元のソースコードを厳 密に反映する命令シーケンスがそのまま 残っている。  オリジナルのソースコードを反映しない、論 理的に等価な命令シーケンスに変更。 例: ブロックの並べ替え 偽の制御フローの追加  プログラムロジックを保護する。
  • 14.
    文字列の暗号化  .NETアセンブリには文字列はそのままの状 態で残っている。  ハッカーの一般的な攻撃の材料となる。  文字列を暗号化することで攻撃の速度を遅 らせる。
  • 15.
    デモ:難読化してみよう (CE/PRO)  Dotfuscatorを起動 入力アセンブリを選択  利用する難読化機能  名前変更 (CE、PRO)  制御フローの難読、文字列の暗号化(PRO)  Dotfuscatorのプロジェクトファイルを保存  ビルド開始  難読化の結果を確認
  • 16.
    VS2010付属 Dotfuscator CE 新機能  インストルメンテーション  Runtime Intelligence  改ざん検出  アプリケーションライフサイクルの管理 (Shelf Life)  アプリケーション分析
  • 17.
    インストルメンテーションの方法  コードを書かずに既存の.NETアセンブリに実装 RI アセンブリ RI対応 ソースコード コンパイラ 入力 Dotruscator 出力 アセンブリ アセンブリ 拡張属性  ご参考:インストルメンテーション詳細 http://msdn.microsoft.com/ja-jp/vstudio/ff462138
  • 18.
    Runtime Intelligence 改ざん検出  改ざんが検出された場合に、アプリケーションを 終了する。  アプリケーションライフサイクル管理  アプリケーションの有効期限を設定。  手軽にアプリケーションの自主規制が可能。
  • 19.
    Runtime Intelligence アプリケーション分析  実行中のアプリケーションから情報を収集  実際の利用状況を把握できる  どのようなアプリケーションを実行しているか? (バージョン単位)  どういう機能をどういう順番で実行しているか?  それら機能にどのくらい時間をかけているか?  開発計画、ビジネス戦略に役立つ
  • 20.
    Runtime Intelligence ポータルサイト  無償・有償版ポータルサイト  ご参考: CodePlexのサイト (http://skypefx.codeplex.com/)
  • 21.
    Dotfuscatorのソリューション アプリケーションの価値を保護して、高める! 保護 測定 リバース エンジニア 利用状況、安定性、 リング、改ざん、脆弱 実行環境などを安全 性攻撃、著作権侵害 かつ効率よく透過的 からの保護 に測定 防御 管理 改ざんや不正な実行 アプリケーションライ に対してリアルタイム フサイクルの管理 に防御