現在下記のようにし、暗号化を行っています。
-------------------------以下ソース
KeyGenerator kg = KeyGenerator.getInstance("AES");
SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
// 128ビットで暗号化
kg.init(128, random);
Key key = kg.generateKey();
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, key);
// バイト配列に変換
byte[] byteArray = cipher.doFinal(argStr.getBytes());
暗号化について調べていると、暗号化(復号化)キーは乱数などで作ったほうが良いと書いてありました。
そこで質問なのですが、ログイン画面でパスワードを暗号化するために上記コーディングを行っているのですが、乱数でキーを作成した場合、各ユーザごとにキーが作成されるって認識であってますでしょうか?
その場合、暗号キーはどこに保存しておくのが望ましいでしょうか?
できる限りセキュアなアプリを作りたいと思っています。
(もちろん100%はないとは思っていますので)
※データベースは使えない環境を想定しています。
以上宜しくお願いします。
tomcat5.0
jdk.1.4.2 を使用
No.5ベストアンサー
- 回答日時:
#2#4です。
>MD5ってセキュリティ的にも問題ないのでしょうか?
現在ではMD5の複合に成功した例もあるらしいですが
まだ解析は困難なのが現状みたいです。
Wikipedia
http://ja.wikipedia.org/wiki/MD5
上記のリンクによると政府推奨暗号はSHA-256以上になっているようですが
企業のシステムなどではいまだにMD5を使っていることが多いみたいです。
私も仕事でシステム開発をしていますが暗号化はMD5を使用しています。
No.6
- 回答日時:
#1です。
まず、注意から。
質問に
>ログイン画面でパスワードを暗号化するために
とあるので、クライアントとサーバー間の情報漏れを防ぐため、
クライアント側で暗号化するのだと理解しました。
また、#1のお礼で「SSLは使わない」と回答があったため何の疑問も感じませんでした。
サーバーに保存するときに暗号化をすると言う話なら「SSLは関係ない」と言うべきだったと思います。
もしくは「SSLとは何か知りません」とすれば良かったと思います。
さて、質問の件ですが、
1.ログイン画面でID、パスワードを入力
2.ID、パスワードは生のまま(平文のまま)サーバーへ送信
3.サーバー側で受け取ったID、パスワードのうち、IDは平文でパスワードは暗号化しサーバー内に保存
ということでよろしいでしょうか?
だとすると、想定しているのはサーバー内のファイルが、ハッキングや管理者のコピーなどによって中身を見られた場合だと思います。
しかし、その場合パスワードだけMD5などでハッシュしてもあまり意味がありません。
個人情報などの重要な情報の漏洩を防ぐためデータ全てを暗号化をする必要があります。
この場合、個人情報などは平文が必要になるので、ハッシュではなく暗号を使わなければなりません。
逆に、重要な情報が保存されていないのであれば、暗号化する必要もないと思われます。
ID、パスワードだけの情報で買い物をすることはできませんし、できるのはせいぜい事前登録型の掲示板くらいなものでしょうか?
その程度のものに暗号化する必要はないと思います。
また、重要な情報を含むのであれば、データを平文のまま送信することの方が問題だと思います。
まあ、参考意見程度に考えて下さい。
No.4
- 回答日時:
#2です。
#3の回答を見てちょっと疑問に感じたのですが
暗号化する場所はどこなのでしょう?
・クライアントでパスワードを暗号化して送信するのか
・サーバでパスワードを受け取って暗号化するのか
私はてっきりサーバ側で暗号化するものだと思い下記の回答をしたのですが
もしクライアント側でするのなら#3の方が言ってる様な問題点が出てきます。
サーバ側だとすると何の問題もなくできると思うのですが#2で答えたpropertiesの内容はちょっと間違いです。
パスワードと暗号キーを一緒に保存しても意味ないですね・・・
まぁ暗号キーとパスワードを別々に保存してWEB上で見れないところにおいておけば
いいかと
より安全なのはクライアントで暗号化しサーバ側で複合、再度別の暗号キーで暗号化というのが理想なんですかねぇ・・・
回答ありがとうございます。
#3の方のお礼にも記述しましたが、現在MD5を使うことを考えています。
MD5ってセキュリティ的にも問題ないのでしょうか?
No.3
- 回答日時:
#1です。
直接の回答ではないので、「アドバイス」としておきます。
SSLを使わないのだとすると、鍵の置き場所以前の話でいくつか問題点がでてきます。
・クライアント側は専用のプログラム、またはアプレットなどが必要となる。
・鍵交換をどのように行うか
・鍵を1ユーザーにつき1つにする場合、クライアント側での鍵保存をどうするか
など、セキュリティー的にも問題がでてきます。
>できる限りセキュアなアプリを作りたいと思っています。
そうなるとSSLの仕組みを自分で実装することになり、その場合鍵は使い捨てなので保存する必要はありません。
回答ありがとうございます。
>・クライアント側は専用のプログラム、またはアプレットなどが必要>となる。
>・鍵交換をどのように行うか
>・鍵を1ユーザーにつき1つにする場合、クライアント側での鍵保存>をどうするか
暗号化はサーバ側だけでするつもりだったのですが、クライアント側も意識する必要があるのでしょうか?
今考えているのは、
(1)新規登録画面から入力されたパスワードをサーバ側(JAVA)で暗号化、保存
(2)次回よりログイン時に画面から入力された値を暗号化、照合
っていった具合です。
復号できること自体に問題あり?のような気がしてきたので、MD5等の不可逆のアルゴリズムを使うことを考えています。
MD5って結構使われてるんでしょうか?
No.2
- 回答日時:
私の場合暗号化はMD5を使っているため暗号キーについては私の認識ですが・・・
暗号キーは作成したパスワードごとに作成するということでいいと思います。
つまりパスワード1つに対して暗号キー1つってことですね。
もし、暗号キー、パスワードを保存するならpropertiesファイルでWEB-INF以下に置くといいと思います。
WEB-INF以下ならWEB上からアクセスできないので
//propertisの記述
ユーザー名=パスワード,暗号キー
といった感じで保存するといいのでは?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Wi-Fi・無線LAN NECルーター AtermのPCとのWifi接続が出来た後 セキュリティ強化の為とあったので「暗号化 3 2022/06/30 23:11
- その他(形式科学) RSA暗号について 1 2022/06/01 00:16
- 工学 疑似乱数生成器 3 2023/01/05 02:06
- バックアップ パソコンHDDごとの暗号化(見られたくないファイルやフォルダ) 1 2022/05/21 22:08
- Wi-Fi・無線LAN ルーターの暗号化キーはなぜ初期値から変更するの? 2 2022/08/11 16:28
- 防犯・セキュリティ 銀行の暗証番号、4ケタなのは何故ですか?アカウントは6文字以上大文字小文字アルファベット 10 2022/07/13 08:03
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- Wi-Fi・無線LAN PCWi-Fiの設定方法がわからなくて困っています。 4 2022/12/28 18:30
- Windows 10 EFS(内容を暗号化してデータをセキュリティで保護する)はHomeエディションでは使えませんか??? 1 2023/05/20 18:16
- クレジットカード 楽天カード 1 2022/09/20 12:21
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マイクラでPythonのプログラミ...
-
デバッグツールの具体例を教え...
-
eclipseで作ったプログラムを他...
-
「main メソッドを持つクラスが...
-
プログラミングの問題です。大...
-
問題作成のWebアプリの作り方を...
-
session,requestはjspで未定義...
-
Eclipse 動的プロジェクトで404...
-
正規表現について質問です。 カ...
-
htmlのinput type="date"をgett...
-
配列にnullを代入すると、null...
-
サーブレットをapacheで公開す...
-
下記のリストならno002が含まれ...
-
is this even a thing?
-
JAの支部?地域の農協のカード...
-
えハミルトン路と全域木のちが...
-
CSV出力を画面から選択したデー...
-
ショートカットキーについて
-
list の空は [] ってあわらすのに
-
あんまりお料理しないのに台所...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
BitLockerで暗号化したHDDはキ...
-
YouTubeを見てると、コメント欄...
-
大容量を暗号化できるソフトに...
-
iPhone用動画保存アプリiCapの...
-
【メール】受信メールが暗号化...
-
ヤオコーで運動会の曲(曲名: ...
-
外付けHDのロックを解除したい
-
第二次世界大戦の暗号解読でど...
-
いろはにほへと
-
USBメモリの暗号化について
-
誰か暗号解読してください。中...
-
USBメモリの暗号 Buffalo Secur...
-
判断推理の問題ですが。
-
日本に伝わる三種の神器のうち...
-
9lmとは、恋愛暗号でどういう意...
-
暗号を考えてくれませんか?
-
cisco1603の設定について
-
ホームズの暗号解読お願いします
-
AESのオープンソースで各種モー...
-
拡張子.p7sについて
おすすめ情報