パスワードの暗号化について

このQ&Aのポイント
  • 現在、Javaを使ってWeb取引を作っており、お客さまからパスワードの暗号化を要望されました。一般的な暗号化方法や解読について教えていただきたいです。
  • 暗号化された文字列をDBに保存する方法について教えてください。
  • DBの桁数が既に決まっているため、桁数の増減がない暗号化方法を知りたいです。
回答を見る
  • ベストアンサー

パスワードの暗号化について

こんにちわ! どうぞ、ご存知の方はなんでもOKですので、宜しくお願い致します。(^c^;) 現在、Javaを使ってWeb取引を作っています。はい。 そこでお客さまから、パスワードを暗号化して欲しいとの要望がありました。 基本的には、DBを直接見ても、わけのわからん暗号化された文字列が入っていれば、宜しいかと思っておりますが、 一般的に、皆様、どのような方法を使って、暗号化&解読を行っているのでしょうか???? ど素人的な質問で、大変に恐縮ですが、時間的にも余裕がないため、質問をさせて頂くことと致しました。 ちなみに、DBの桁数は既に決定しているため、暗号化時に桁数の増減がない方法がうれしいです。 本当に、困っております。本当に。。。。 <(>。<;)> そんなこと今更いわないでぇぇぇぇ~って心境でございます。。。。 どうぞ、宜しく宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • yuji
  • ベストアンサー率37% (64/169)
回答No.8

Javaで作っているのなら MD5 が簡単でしょう。 java.security.*パッケージを使えば簡単です。 ちなみに復号化する必要はないと思います。 ・DBにはMD5で暗号化した文字列を格納しておきます。 ・画面から入力された文字列をMD5で暗号化 ・その暗号化文字列とDB内の暗号化文字列が一致していればパスワード認証OK これだけです。

その他の回答 (7)

  • madman
  • ベストアンサー率24% (612/2465)
回答No.7

パスワードの復号化を行う意図がいまいちわかりません。 UNIX等のOSでは、パスワードはcryptを利用します。セキュリティ上は若干弱いです。 cryptであれば、Cでの関数も要されていると思います。 もしほかのを方式を利用するにしても、基本的には暗号化したファイルを保持し、次に入力されたパスワードと比較する場合は、入力のたびに認証のプロセスで暗号化し、保持されている情報と比較します。 もし、簡単にパスワード情報が複号化できるのであれば、パスワードロックをかける必要がありません。 ひょっとして、パスワード忘れた時のための対応なのでしょうか??? せれではセキュリティの意味がありません。... 使用OSがわかりませんが、参考になりそうなのをいくつかあげてみます。 http://www.lares.dti.ne.jp/~seiki/des.html http://info.pos.to/member/domain/cgi/crypt.html

  • NINJA104
  • ベストアンサー率43% (133/306)
回答No.6

3台のDBサーバで同一のIDとパスワードの管理との事ですが、私の様なところではどれか1台にIDとパスワードの管理を任せ、認証専用のデーモンを走らせソケット也でセッションを張るなどして、個々に持たさない様に設計します。 これらはサードパーティ製品のパッケージでも古くから多々ありますし、実現手段としては極めて簡単で有る為に自身で設計してしまっても良いかと思いますよ。

nsakurako
質問者

お礼

またも、ご回答ありがとーございます。 なるほど、色々な方法があるのですね。 それは知りませんでした。。。。。。。。。。。。。 でも、もー、1次はリリースしてしまったんですよね。。。。 あっはっは!(^c^;) だって、だって、ID・パスワードを一括管理するなんて言ってなかったのに。。。。 ばらばらでよいって言ってたのに。。。。。 くっすん。(T。T;) なので、持たせている表の項目等に相当の違いがありますです。はい。。。 しかも、各サイトは、別々のチームが設計&製造しているため、Weblogic.Propatiesだって違います。  あっはっは! (TcT;)お笑いです。はい。 どうか、見捨てずに宜しくお願い致しまする。 新しい情報、どしどし、募集中です!!!!!!!!!!!!!!!!!!!!

  • akino4
  • ベストアンサー率18% (35/185)
回答No.5

ちなみに、複数サイトでの同一パスワードの使用はzodiaxのような セッションゲートウェイをつかってやるってのもてかも・・・・ まぁzodiaxにかぎらず、そのようなソフトはいっぱい売ってありますよ。

nsakurako
質問者

お礼

なるほど、なるほど、色々な情報をありがとございます。 やはり、通常ならば、パスワードの復号化なんてしませんよね! やはり、MD5では復号化が無理ならばパスワードの参照機能は、お客さまに再度ご検討頂く必要がありそうですね。。。。 しかし、何故良く調べもせずに、パスワードの暗号化&復号化OKなんて言うのでしょうか??> MY 上司 そして、暗号化はMD5が一般的なんですかね。 ふむふむ。 そして、やはり製品を購入でしょうか。。。。。。。。。 上司は、他のソフトの使用を考えていません。はい。 MD5の何か技術的なことを公開しているHPをご存知でしたら教えて下さい!!! また、Javaで作成しているのですが、Javaさんは暗号化&復号化なんて機能を提供していないのでしょうか。。。。 甘い?? あぁ~! やはり。。。。 宜しくお願い致しまする。。。。。 (>。<;) どうぞ愛の手を!!!!!!!

  • akino4
  • ベストアンサー率18% (35/185)
回答No.4

一般的に複合化できる暗号はパスワードには用いません。 理由についてはcryptか、単方向ハッシュで検索をかければいくらでも 出てくるのでおいといて。 通常よくやられる方法としてはMD5という単方向ハッシュのアルゴリズムを 用いて(多くの言語ではライブラリで出回っている)乱数でシードを選び クライアントがわでそのシードを用いてハッシュをかけ、サーバがわで 保存されている元パスワードに同じシードをかけて同じになれば  パスワードが一致してるといえます。これは、通信回線が盗聴されることを 考えての行為です。 また、元パスワードの方はシステムで不変のシードをつかってパスワードを 暗号化します。これにより、万が一そのパスワードDBが盗まれても そのパスワードを使って他のサイトなんかでも同じパスワードをつかってる ことを期待してのクラックという2次災害をふせげます。 これは、パスワードの元を盗まれたときの対策です。

  • madman
  • ベストアンサー率24% (612/2465)
回答No.3

サーバーとの通信上は暗号化されているのでしょうか? そこのところを言われているのかもしれません。 暗号化するための簡単な方法はHTTPS(SSL通信)を行えば問題ありませんが、認証局に登録する必要があり、費用がかかります。 下記URLは、Verisign社のものです。 別にバイト数を変えずに暗号化する方法ですが、A-Z、0-9などのパスワードに利用できる文字をランダムにテーブルに並べます。それと、ユーザデータテーブルの登録日などを利用し、パスワードをパスワードテーブルを用いて指定バイトずつずらします。 例) テーブル[zxcv5bnm3lkj4hgf2dsa0qw8e9rt7yu1i6op] 登録日[20010323] パスワードが[nsakura01] だった場合に 登録日のyy[01]mm[03]dd[23]を取り出し、順番に「n」に対応するテーブルを探し、 そのテーブルのyyバイト分後ろにあるデータ(m)をパスワード保存ファイルとする。 「s」に対してはmmバイト後ろ(q) 「a」に対してはddバイト後ろ(n) 「k」に対してはyyバイト後ろ(j) ・・・と繰り返していくと。 「mqnj6h08s」と一見して、文字をずらすことができます。また、元に戻すときは逆の処理をすればよいのです。当然テーブルにはパスワードでは入力不可のアスキーコードが入っていても問題ありませんが、同じ文字を重複して利用してはいけません。テーブルの最後まできたときは、先頭に戻って数えます。

参考URL:
http://www.verisign.co.jp/
nsakurako
質問者

お礼

皆様。早速の回答を本当にありがとうございました。 (すいません、ここで、皆様へのお礼とさせて頂きます。お許し下さい。) わたくしも、少々調べてみましたが、暗号化&復号化って難しいですね。はい。 ここでは補足&訂正もさせて頂きますね。 本当は、質問時にすることなのですが、またまたどうぞお許し下さいませ。。。 現在、1次リリースでは、SSLは既に対応済です。 パスワードの暗号化は、2次のリリース版での対応となります。 って、ことは、1次リリースのパスワード関係のAPは当然作り直しです。はい。 またしても、今更でしょう?っと愚痴ってしまいそうです。はい。 また、パスワードの桁数ですが、やはりセキュリティをあげるためには、 (その為の暗号化なんですもんね!? (A^^;)必要ではないかと考え直しました。 どっちにしろ、パスワード関係は作り直しですし。はい。 そこで、改めて、質問です。 皆様どのような方式を使って実際にパスワードの暗号化&復号化を実現していらっしゃるのでしょうか??? DESやMD5といった方法も耳に致しますが、ふぅぅぅぅぅ~!HPあさって読んでいますが、 むむ難しい。。。。(>。<;)oh Noーー! また、更に補足で御座いますが。。。。 (至らない質問の仕方で、本当に申し訳ないです。。。) 今回のシステムでは、DBが複数のサーバに乗っかっております。 何故かと言いますと、同一のID・パスワードで、複数のサイトを使用出来るようにしているためです。 (あぁぁぁ~! だからと言って何故?っとは聞かないで下さい。。。) ちなみに、現在は、3つDB内に同一のID・パスワードを持って降ります。 上記の関係から、出来ることなら、鍵を持たない暗号化&復号化を望んで降ります。 また、パスワードの参照機能なんかも1次でリリースされているため、復号化も可能がBESTで御座います。 MD5が良いかと思ったのですが、どこかのHPでは、復号化が不可とありました。 こちらは、本当でしょうか???  あぁぁ~! 本当に困って降ります。 お前なんかで、本当に暗号化&復号化をやるつもりかとお思いとは思いますが、 出来る限りはがんばろうと思っている次第でありますので、どうか見捨てずに、 参考になるHPの紹介だけでも結構ですので、良きアドバイスを宜しくお願い致します。。。。 皆様のご好意を、切にお待ち申し上げて降ります。

  • NINJA104
  • ベストアンサー率43% (133/306)
回答No.2

そうですね。 単にDB内のレコードが暗号化されていれば良いのであればcrimson氏と同等な事をすればクライアントも納得してくれるかもしれません。 似た手段として、乱数マップを用意して一対一で文字を照らし合わせるというの方法もあります。 そしてフォームから送られてきたパスワード文字列をJavaServletでデコードすれば良いでしょう。 ただし、当然にHTTPプロトコル通信上でのパケット内にはフォームで入力された素のパスワード文字列がそのまま乗っかる事になるので、パケット内も暗号化したいのであればSSL通信を利用する事をお勧め致します。

  • crimson
  • ベストアンサー率40% (900/2202)
回答No.1

ごくごく簡単なものとしては、「文字をずらす」という 方法があります。 例えば、「hello」という文字列があった場合、各文字を アルファベットにおける一つ先のものに置き換えて 「ifmmp」とする、など。 もちろん、これでは単純過ぎますから、奇数番目の文字は 一つ先、偶数番目の文字は二つ後…というようにより複雑 なルールを決めます(この場合は「icmkp」と変換されま す)。 仮に「a」や「z」を飛び越えてしまうような場合には、 例えば「a」の二つ後は「y」、「z」の三つ先は「c」と する…というように、ループさせる方法で対応可能です。

関連するQ&A

  • 暗号解読について教えてください

    こんにちは コンピュータのカテゴリで、何秒で暗号が解読されるか質問したかったのですが、あまりにも知識がなくて上手く表現できませんでした そこで、力を貸してください そもそも、暗号解読はどんなアプローチで行われるのでしょうか インターネットで調べても、○○比較法とかの情報だけで、どのようにコンピュータを使えばよいかには及びませんでした よろしくお願い致します

  • .htaccessを使ったBasic認証の、パスワードを暗号化にしたいです!

    初心者です。 今回初めてBasic認証と言うものを設置してみようと思うのですが、途中から分からなくなってしまいました。そこで色々と疑問が出てきているのですが、もしご経験者の方がおられましたら、よろしくお願いいたします。 質問1 パスワードを暗号化したいのですが、やり方がわかりません。telnetで試みたのですが、入ることが出来ませんでした。なので、暗号化されたパスワードを取得することが出来ませんでした。この場合はどうしたらよいものでしょうか? 質問2 パスワードはサーバーによって違うのでしょうか?探したところ暗号化パスワードを自動で生成してくれるようなツールがネット上にあったのですが、この生成してもらったパスワードはどこのサーバーでも使えるのでしょうか?暗号化の基準はみんな一緒でしょうか? 質問3 安全性についての疑問です。Basic認証でパスワードを暗号化した場合見られても、本当に分からないでしょうか?もし詳しい人が見たら、すぐに解読して入室できてしまうものでしょうか? もし、お一つでも分かることがありましたら、よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • エニグマ暗号の解読方法の簡単な説明を書いているサイトか、本はありませんか?

    お世話になります。 「蘇るチューリング」と言う本を読んでいるのですが、その中で第2次世界大戦の時のドイツの暗号エニグマ暗号の解読方法について解説があったのですが、本の内容が理解できませんでした。 そこで御願いなのですが、エニグマの解読について(解読方法の理論的な部分について)分かりやすい解説をしているサイトまたは、本はありませんか? エニグマの暗号化の原理自体は、サイモン・シンの「暗号解読」やインターネットで調べて少しは理解しているつもりです。 宜しく御願いいたします。

  • DES暗号について

    DES暗号について疑問を持ったので質問します。 1.まず、初期転置と最終転置はなぜ行うのでしょうか?転置方法は公開されているということなので解読を 難しくすることに寄与しないと思うのですが。 2.また、シャッフルを16回も行うのはなぜでしょうか?一回だと入口と出口のデータ対がばれると簡単に解読 できそうなのでまずいでしょうが、せいぜい2回 やっとけば解読は十分難しくなると思うのですが。 3.あと、シャッフルの中で左右のデータをいれかえる のはなぜでしょうか?大して意味がないと思うので すが。 それでは回答願います。

  • 暗号化されたファイルの信頼性はどの程度のものなのか

    ファイル暗号化を行うツールは色々あるようです、例えばWinrarのrar形式やらEDなどのソフト。 その様なファイルに暗号化を施すツールによって暗号化されたファイルというのは、 暗号化時のパスワードを解読されてしまう以外の方法で 第三者の手によってファイルの複合化をされてしまう恐れはあるのでしょうか。 要するに暗号化のアルゴリズムやファイル自体を解析されるなどし ファイルを不当に複合化されてしまう事はありえる事なのでしょうか。 回答、お待ちしております、よろしくお願い致します。

  • 画像を暗号化しtxtで保存する方法をおしえてくだい

    いつもお世話になってます。 今回は画像をjavaで暗号化してtxtで保存する方法をおしえてください。 例えば、drawableフォルダの直下にbg.pngがあるとします。 (drawable/bg.png) これをjavaプログラムで暗号化し保存するにはどうしたらいいですか? 具体的なコードがなくて困っています。端的でもかまいませんのでサンプルコードをいただけると大変たすかります。 素人なので的外れな質問があるかと思いますが、よろしくお願いいたします。

    • ベストアンサー
    • Java
  • 起動 ロック 何暗号か

    「最初にpcを起動させたときのユーザーごとのパスワードについて・・・。」 http://oshiete1.goo.ne.jp/qa4143587.html の方と同じような質問なのですが、 Vistaで起動しているときや、起動の際にロックをかけてパスワードを入力しないとパソコンのファイルを使用できないようにする操作で、 そのロックはどれくらいの暗号の強度があるのでしょうか? 上の方の回答では方法は書けないが破る方法はある、と書かれてる方はいましたが‥。 今なお完全暗号?(全ラウンド解読不可能)とされているAES暗号で、同じようにパソコン全体をロックする方法(やツール)などはないでしょうか? 個々のファイルだったら7-zipなどのツールで無圧縮などでパスをかけて圧縮すれば可能だとは思いますが、すべてのファイルにそうするのは面倒で手間がかかるので全体をロックするものでAESのものがあるか知りたいです。 よろしくお願いします。

  • この暗号を解読する手がかりがわかりません。

    この暗号を解読する手がかりがわかりません。 (該当カテゴリがわからないので、こちらでお尋ねします。) 898683824586964597929245968592959796924589869982458697459893 海外の人が自作されたパズルゲームのステージタイトルですが、 解読すると英文(英数字)になるのです。(数字は使われてないかも知れません) ノーヒントなので暗中模索してます。今の所、 1.2ケタずつに分ける 2.45が単語の区切り(スペース)の可能性 3.なので、各数字を45で引く(0が空白) 4.その数字を表の座標と見なし、 5.意味のある言葉になるように、アルファベットを表のマスへ何らかの規則性に従って置く・・・ 5の時点で詰まりました。表は関係なく、この方法自体とんちんかんで、もっと単純なのかも知れません。 より確実な手がかりが欲しく、質問させていただきました。

  • PCのセキュリティで使われている暗号に

    大変漠然とした質問で、申し訳ないのですが、インターネット上のセキュ リティで使われている暗号について、今回お聞きしたく問い合わせを致 します。一般論でも、結構ですから教えていただきたく思います。 私も、ショッピングをインターネットのウェブページ上から行うことが以前 より頻度が多くなり、その際クレジットカードの番号を入力して決済を行 っています。当然、番号を盗まれ、クレジットカードを偽造され、悪用され る危険性も以前より増したと感じるようになってきました。 当然、習慣として、カード決済を行うと、定期的に、金融機関の口座残高 をチェックするように心がけるようにはなりました。このような理由からも 、今日インターネット上で使われていると思われる暗号について、お聞き したくなりました。 何点か質問させてください。 クレジットカードでの決済を、ウェブページ上で行う場合、このウェブペ ージの管理者、ここでは、業者、企業なのでしょうが、クレジットカード の番号を入力する際などに、他者に盗み見られないに、ウェブページ に暗号をかけている事も多くなってきたと聞きます。このシステムは標 準化されてきているのでしょうか? きちんとした業者の場合は、暗号を かけている事が多いと言った話は聞きのですが、現状はどのなのでし ょうか? 私は、シマンテック社のウィルス、セキュリティソフト、Noton 360を使用 しているのですが、こう言ったソフトでも、最初の質問の場合のように、 クレジットカードの番号を入力してショッピング決済したり、ユーザーID やパスワードを入力する際に、ウェブページに暗号をかける事が出来 るソフトなのでしょうか? それとも十分ではないのでしょうか? またキーロガーのような、トロイの木馬タイプのソフトが、もしインストー ルされた場合、Noton 360のようなセキュリティソフトでも、クレジットカー ドの番号やネットバンキングのユーザーIDやパスワードの盗み取りを 防ぐことは可能なのでしょうか? 最近、量子暗号に関したテレビ番組を見ました。ここ数年の間に、PC のCPUの性能が著しくアップし、またそれに伴いスーパーコンピュータ の性能も目まぐるしく向上したため、従来パソコンに使用されていた暗 号でも、暗号が破られる危険性が出てきたため、今の時点では、スー パーコンピューター京を使っても解読が無理だ、いや完全に無理だと 言われている量子暗号の開発、実用化が進められていると聞きます。 実際、スイスの選挙では、量子暗号が、世界で初めて使われたとも聞 きます。 前置きが、長くなりましたが、一番目、二番目、三番目の質問でも出し ました。ウェブページ上、ウィルス、セキュリティソフト上で、現在使わ れている暗号、あるいは暗号化は、数百桁の数同士の因数を掛け合 わせる事が基本となっているのと聞きます。本当に、数百桁の数、あ るいは数千桁の数を因数分解しないと、暗号を解読出来ないような仕 組みになっているのでしょうか? 暗号については、全く知らないと言ってもいいくらいのレベルです。今 回、なんかまとまりがない質問になってしまったようで、質問の意図を うまくお伝え出来たか、不安な気持ちです。よろしくお願い致します。

  • 画像のテキストデータ化・暗号化について

    いつもお世話になってます。 今回は画像の暗号化と変換についておしえてください。 現在、Androidのアプリ制作をしています。 画像をテキストデータにし暗号化したものをサーバにアップロードし、それをユーザがダウンロードしたときにプログラム(Java)によって復号し、元のpng画像に変換したいのですが、その方法がいまいちわかりません。 Q1.画像pngのバイナリデータをテキストデータにするにはどうしたらいいですか? Q2.テキストデータをプログラム(?)で暗号化するにはどうしたらいいですか?(できればJavaで。 初心者なので的外れな質問があるかと思いますが、どうぞよろしくお願いいたします。

    • ベストアンサー
    • Java