2012年1月26日木曜日

android:暗号化に使用するための鍵生成

android端末で、インターネット経由の通信をしたりファイルにパスワードなどを保存しておく場合、通信内容や個人情報の保護のためにデータを暗号化することが必須となる。
実際にはAESなどの方式で暗号化することになるが、暗号化/復号化で使用する鍵はどのように生成すべきか、android端末の視点から考えてみた。

暗号化鍵の生成

android端末に限らず、暗号化鍵の生成方法で候補に挙がるのはだいたい次の3パターン。
  • ソースコード内に定数として定義
  • 乱数により生成
  • 端末内の情報からパスワードを生成

それぞれの脆弱な点は以下。
  • ソースコード内に定数として定義
  • リバースエンジニアリングによりソースコードが読み取られると、簡単にパスワードが判明してしまう。 ソースコードに鍵を定義しているため、他の端末でも同じ鍵を使用する。 androidアプリなどの配布するタイプのアプリケーションでは、リバースエンジニアリングの危険性からこの方法は使用すべきではない。
  • 乱数により生成
  • アプリケーションの実行ごとにパスワードが変更されるため、次にアプリケーションを起動したときには暗号化しているデータを復号化することができない。
  • 端末内の情報からパスワードを生成
  • 使用する端末情報によっては、パーミッションが必要になり、ユーザに不要な警戒心を抱かせる。

セキュリティの面から、端末内の情報を使用すべきだろう。
パーミッションが必要な理由はインストール画面で説明するなどし、警戒を薄れさせることが必要。
にほんブログ村 IT技術ブログ Androidアプリ開発へ

0 件のコメント:

コメントを投稿