> そこで以下のようなソースを書いたのですが、エラーとなってしまいます・・・
> /** アルゴリズム */
> private static final String ALGORITHM = "Blowfish";
少なくとも Gingerbread のBC プロバイダでは、"BLOWFISH" (大文字)
と呼んでいます。
>
> public static String randamKey(Activity a) {
> String key = Settings.Secure.getString(a.getContentResolver(),
> Settings.System.ANDROID_ID);;
> key += "mtdpoirkaaycaykuiu794ugishiank710hjk";
>
> return key;
> }
> }
ANDROID_IDはだれでも見られるので、そのまま鍵とし使わないほうが
いいでしょう。ランダムっぽい文字列を連結しても、よりセキュアにならないので、
例えば、パスフレーズにして、PBEで鍵をderiveしたほうがいいでしょう。
はい、そうです。ただし、IVとsaltは、暗号化する度にランダムに
生成しないといけません。じゃないと、例えば、同じ文字列は
常に同じ暗号文になります。そうすると、たとえ復号しなくても、
二人のユーザは同じパスワードを使っているのが簡単に分かります。
ちなみに、2.2 (Froyo)には、Blowfishはありませんので、もうちょっと
一般的にサポートされているAESとかを使った方がいいでしょう。
また、ANDROID_IDですが、端末のバージョンによって、
なかったり、違う端末でも同じ値が設定されたりすることが
あります。さらに、端末を初期化すると、再生成されますので、
例えばTitanium Backupのようなアプリでデータを復元
した場合に、復号化できない状態になります。(レアケースですが)
ANDROID_ID の話は以下のブログにあります:
http://android-developers.blogspot.com/2011/03/identifying-app-installations.html
あまり答えにはなっていないが、鍵管理ってむずかしいですね。
> あまり答えにはなっていないが、鍵管理ってむずかしいですね。
そのためにOAuthのような技術があるので・・・
OAuthに対応しているサービスを使うならばOAuthを使用し、自前でサービスを作る場合でも、認証周りは自前では作らずOpenIDを使用するなどの方法を検討してはいかがでしょうか。
それでは
2011年12月27日22:27 Nikolay Elenkov <nikolay...@gmail.com>:
> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
>