データの暗号化について

閲覧: 173 回
最初の未読メッセージにスキップ

Takashi

未読、
2010/02/27 12:42:442010/02/27
To: 日本Androidの会
takashiと申します。

コーディングに行き詰まった点が出てきましたので
質問をさせて下さい。

どのようにしてデータの暗号化を行うのかについての質問です。

あるアプリケーション内でデータを読み書きしたいのですが、
そのデータが性質上、機密性が高いもので暗号化を行い
ファイルに書き込み、必要なときにデータを読み出し複合化
を行おうと考えております。

javax.cryptoをキーワードに色々ネットやリファレンスで調べて
試してみたのですが、どうも上手く行く方法はありませんでした。

そこでデータの暗号化方法についてご教授頂きたいと思って
おります。


参考までに私が試したものとしては…

1)DEMを使った暗号化

 暗号化部分============
 KeyGenerator kg = KeyGenerator.getInstance("DES");
 SecretKey sk = kg.generateKey();
 byte[] m = "Hello Des World".getBytes();

 Cipher ch = Cipher.getInstance("DES/ECB/PKCS5Padding");
 ch.init(Cipher.ENCRYPT_MODE, sk);
 byte[] c = ch.doFinal(m);
 =====================
 暗号化およびファイルの書き込みには成功…
 しかしながらアプリケーションの再起動時のファイルからデータ
 読み出し後にキーの取得が出来ないために複合化できません
 でした。
 (暗号化したときのSecretKey のインスタンスデータと同一
  の鍵が必要なのでしょうか?)

2)Blowfishを使った暗号化

 暗号化部分============
 private final String EncryptoKey = "ENCRYPTO_KEY";
 …

 SecretKeySpec sksSpec = new SecretKeySpec(EncryptoKey.getBytes(),
"Blowfish");
 try {
    Cipher cipher = Cipher.getInstance("Blowfish");
    cipher.init(javax.crypto.Cipher.ENCRYPT_MODE, sksSpec);

    encrypted = cipher.doFinal(EncryptoKey.getBytes());
 }
 =====================
 cipher のインスタンス取得部分でNoSuchAlgorithmExceptionの発生。
 (Blowfishというアルゴリズムは使えないのでしょうか?)

Keiji Ariyama

未読、
2010/02/27 22:15:292010/02/27
To: android-g...@googlegroups.com、Takashi
有山@大阪です。

>  暗号化およびファイルの書き込みには成功…
>  しかしながらアプリケーションの再起動時のファイルからデータ
>  読み出し後にキーの取得が出来ないために複合化できません
>  でした。
 暗号化に使用するキー(共通鍵)は、

 SecretKey sk = kg.generateKey();

 で生成しています。

 ここで取得するSecretKeyクラスは、Serializableなので、このオブジェクト
をファイルに書き出す(シリアライズする)ことで、復号化出来ると思います。

/*********************************************
有限会社シーリス
代表 有山 圭二
@Address
〒530-0044
大阪市北区東天満二丁目2番5号
第2新興ビル 601
@Web http://www.c-lis.co.jp
*********************************************/

Takashi

未読、
2010/02/28 12:48:072010/02/28
To: 日本Androidの会
有山さん

ご教授ありがとうございます。

Serializable出来るのは少し意外に感じましたが
ご指摘頂きました、方法で暗号化した時の鍵の
インスタンスを復元時に取得出来そうです。

しかしながらセキュリティや暗号化について無知な
私ですが疑問に感じてしまう事があります。

それは暗号データを復元する鍵を、暗号化データと共
にファイルとして保持しておくのはセキュリティ上
まずいのではないかという点です。

余談ですが上記のことを考えると私が暗号化して
ファイルに残そうというデータも、ファイル化する
事が好ましくない様に感じてきました。

情報ありがとうございました。少しこちらでもデータの
有り方について検討してみたいと思います。

また、何かありましたら何卒よろしくお願い致します。


On 2月28日, 午後12:15, Keiji Ariyama <keiji_ariy...@c-lis.co.jp> wrote:
> 有山@大阪です。
>
> >  暗号化およびファイルの書き込みには成功…
> >  しかしながらアプリケーションの再起動時のファイルからデータ
> >  読み出し後にキーの取得が出来ないために複合化できません
> >  でした。
>
>  暗号化に使用するキー(共通鍵)は、
>
>  SecretKey sk = kg.generateKey();
>
>  で生成しています。
>
>  ここで取得するSecretKeyクラスは、Serializableなので、このオブジェクト
> をファイルに書き出す(シリアライズする)ことで、復号化出来ると思います。
>
> /*********************************************
> 有限会社シーリス
> 代表 有山 圭二
> @Address
> 〒530-0044
> 大阪市北区東天満二丁目2番5号
> 第2新興ビル 601

> @Webhttp://www.c-lis.co.jp

> >  (Blowfishというアルゴリズムは使えないのでしょうか?)- 引用テキストを表示しない -
>
> - 引用テキストを表示 -

全員に返信
投稿者に返信
転送
新着メール 0 件