実際にはAESなどの方式で暗号化することになるが、暗号化/復号化で使用する鍵はどのように生成すべきか、android端末の視点から考えてみた。
暗号化鍵の生成
android端末に限らず、暗号化鍵の生成方法で候補に挙がるのはだいたい次の3パターン。
- ソースコード内に定数として定義
- 乱数により生成
- 端末内の情報からパスワードを生成
それぞれの脆弱な点は以下。
- ソースコード内に定数として定義 リバースエンジニアリングによりソースコードが読み取られると、簡単にパスワードが判明してしまう。 ソースコードに鍵を定義しているため、他の端末でも同じ鍵を使用する。 androidアプリなどの配布するタイプのアプリケーションでは、リバースエンジニアリングの危険性からこの方法は使用すべきではない。
- 乱数により生成 アプリケーションの実行ごとにパスワードが変更されるため、次にアプリケーションを起動したときには暗号化しているデータを復号化することができない。
- 端末内の情報からパスワードを生成 使用する端末情報によっては、パーミッションが必要になり、ユーザに不要な警戒心を抱かせる。
セキュリティの面から、端末内の情報を使用すべきだろう。
パーミッションが必要な理由はインストール画面で説明するなどし、警戒を薄れさせることが必要。
0 件のコメント:
コメントを投稿