• ベストアンサー

なぜハッシュ関数の値をそのままパスワードに使わない

Wernerの回答

  • Werner
  • ベストアンサー率53% (395/735)
回答No.1

ハッシュ関数の入力は本来使おうとしていたパスワードですか? 辞書攻撃には強くなりそうですが、変更楽になります? 手間はハッシュ関数通す必要がある分増えると思いますが。 だれもやらないのは、ハッシュ関数通すのが面倒だからでしょう。 パスワードが必要になる度にハッシュとる必要がある。 (そもそもそんなことを考える人がいないっていうのももちろんあるでしょうが。) もし、毎回ハッシュとるのが面倒だからどこかにメモするというなら、 もはやハッシュである必要はなく乱数でいいですね。

kasoupctte
質問者

お礼

妄想にちかい質問にご回答いただきありがとうございました(^o^)

kasoupctte
質問者

補足

パスワードときたら普通IDかそれに該当するものがあると思うので入力はそれですね。(ひとつに絞れなければ絞る必要がありますがそれはシステム?から考え直さないと) パスワード変更についてはIDの末尾に変更回数として数字をつけてインクリメントしていくとか(でその全体をハッシュ関数へ入力する) 面倒なのは電卓のような専用デバイスを開発してそれを用いればよいのでは。 種パスワードならぬ種ハッシュだけは暗記しておく必要がありますが それさえ暗記しておけば使いたいときに人から借りた電卓のようなもので ハッシュを取ってパソコン等に転送。 転送手段は液晶画面にQRコード表示とか。 電卓のようなものにもカメラがついてQR読みとれるなど。

関連するQ&A

  • ハッシュ関数について質問です。

    プログラミング・数学? 初心者です。 IDやパスワード管理によく出てくる一次方向(ハッシュ)関数ですが、 よくパスワードとSALTを一緒にしてハッシュ関数を通してハッシュ値を取得しますよね。 そしてその結果(データベースなどに記録済み)とログイン時に入力した値とを照らし合わせるわけですが、 昔まだ若いころ、これとは別のタイプのハッシュ関数を使用したことがあります。 それはある(パスワードなどの)値をハッシュ関数で処理すると「いろんなハッシュ値」が生成され、 そのハッシュ値から当然パスワードは予測できないのですが、 しかしその複数のハッシュ値は全て、そのパスワードから生成されたハッシュ値だということは分かる、という関数を使用したことがあります。 その時はperlのcpanモジュール(名前を覚えていません。すいません。)を使ったのですが、この別のタイプのハッシュ関数はどういう仕組みで作られているのでしょうか? SALTが複数あり、そのそれぞれについて照合している?だけでしょうか? それとも私が無知で、そんな関数がそもそも存在するだけでしょうか? わかりません。教えてください。

  • 暗号学的ハッシュ関数でbit長が適切って作れますか

    SHA256が(224かもですが)最小bit長で、 入力に1bitでも、また2bit以上入力値全体まで、異なれば、 出力のうちほぼ半数のbitが反転する、かつその 反転するbit位置は複数の入力値に対して法則性はなく、 ほぼランダムである。 という暗号学的ハッシュ関数であるのは、正しいですか? また、データの暗号化に使われるパスワードは4096bitを推奨との 事ですが、 SHA4096などその時に合った暗号学的ハッシュ関数を 作るのは難しいのですか? 素人考えでは、今256bitで衝突が見つかってないなら 4096bitならbit長大きいのだから作れそうな気もしますが やはりそういう問題ではないのでしょうか? もし作れるとしたら、データの暗号化に使うパスワードを SHAなんとか・・・の出力そのまま使っては、危険でしょうか? というかデータに限らず認証のパスワードでも SHAなんとかの出力そのままを使うのは何かまずいのでしょうか? もしできたらパスワードを覚えなくてよいのでいいかと思ったのですが。 パスワードは「IDのパスワード」をSHAなんとかに通した値ということで。 IDは「種パスワード+なんとかのサイト」をSHAなんとかに通した値ということで。 種パスワードはしょうがないからネットをパスワードの決め方とかで検索して 出てきた方法を見て理解して自分なりにアレンジして、最後にちゃんと頭に記憶して。 とりあえずここまで、どうでしょうか。

  • ハッシュ関数について

    例えば32ビットのデータなら32ビットのハッシュ値を、64ビットのデータなら64ビットのハッシュ値を作り出してくれるハッシュ関数はないでしょうか?できればそのようなハッシュ関数があったとして、Cのソースを公開しているようなホームページがありましたら教えてください。よろしくお願いします。

  • なんでハッシュ関数はユーザーに直接活用されない?

    何故でしょう? 一番根本のハッシュというか種パスワードみたいのはそりゃ秘匿に充分気を使うから大変かもですが しかしひとつだけに絞れるわけだし 電卓みたいなデバイスを考えてもいいし せっかくインターネットという真の意味でグローバルな(アメリカ一極化という意味でなく)ネットワークがあるのに URLのところにハッシュ値を入れれば即対応する内容が表示されればそれでいいのでは? 認証させたけりゃIDパスワードの2要素で充分だし そのIDパス自体もハッシュで決めればいいし 上流でハッシュ変更したら自動的にIDでもパスでも順番に変更が反映されていくような プロトコルでも開発して全Webサービスが実装すればいいし ハッシュ関数なんてすごいものがありながら何で活用されていないのでしょうか?? 単純に不思議です 一昔前なら誰かがチラとこういうアイデア出せば飛びついて無理やりにでも実装したのに 少し時期がすぎると誰も見向きもしないし、で今熱いのはアンドロイドとかみたいですが 相変わらず情報セキュリティみたいのはダメダメだし もうあきらめてハッシュ電卓にしたらどうですか???

  • VBAにハッシュ関数はないのですか?

    ハッシュ検索がどういうものか理解したばかりです。 概略がわかっただけで、それ以上のことはわかっていません。 VBAでは、Dictionaryを使うと、ハッシュ検索らしきことがやれるそうですが、Dictionaryを使わずにやろうとすると、ハッシュ関数が必要になってくると思います。 VBAにはハッシュ関数というものは用意されていないのですよね? また、他の言語にはハッシュ関数が用意されているのですよね? ハッシュ関数がなければ、ハッシュ検索はできないということですよね? それともVBAの中で、ハッシュ関数と同じ機能を果たす式を作れば良いのでしょうか? 可能ならその式はどんな式になるのでしょうか?

  • ハッシュ関数について

    原文をハッシュ関数で暗号化した場合,そのハッシュ値から逆に複合化することは不可能というふうによく書かれていますが,それは何故でしょうか?「不可能」とは「非常に時間がかかる」ということなのでしょうか?

  • パスワードのハッシュ化

    ログイン機能を作っています。 password_hashしたパスワードをmysqlに保存しているのですがアカウントと照合しtrueを返すところで躓いています。 変数に引っ張て来た変数の中にパスワードがあるか検証したいのですがどのようにすればいいですか? var_dump($pass);//$passの中に上記の変数でハッシュ化された「samplepass」 で、 「$2...」 のような、文字列が出るはずが 「1」 になってしまいます。 不可逆ということは、出力も無理なのでしょうか?

    • ベストアンサー
    • PHP
  • パスワードのハッシュ化について

    ユーザー登録させるようなwebサイトを作ることになりました。 ググッたところパスワードはハッシュ化させDBへ、っていうのが通常らしいんで、 sha256を使って変換しようと思います。 質問(1)ハッシュ化させる元の文字列には文字数など何か制限はないんでしょうか。 質問(2)ハッシュ化させるときにくっつけるsaltは何桁くらいにするのが一般的なんでしょうか。 教えてください。

  • phpのパスワードのハッシュ化について

    phpで会員サイトの作成を学習しています。 PDOを使用してMysqlサーバーに接続しています。 開発環境はxamppでphp Version 5.5.15を使用しています。 入力フォームにユーザーの情報を入力してもらい、 データベースに格納する際、 基本的なセキュリティ要件として パスワードをハッシュ化する必要があるということを こちらのサイトで(http://php.net/manual/ja/faq.passwords.php) 知りました。 ハッシュ化については初耳で、いまいちハッシュアルゴリズムの種類による違い等はまだ理解しきれていないのですが、 PHP5.5.15を使用しているので、パスワードのハッシュアルゴリズムは 上記サイトに載っているようにpassword_hashを使用するのが今のところ最善なのでしょうか? また、ハッシュ化されたパスワードの認証についてですが、 ログイン画面でパスワードを認証する際、 ユーザーが入力したパスワードをハッシュ化して 該当レコードのハッシュ化されて保存されたパスワードと 同じであれば認証が成功するという認識で正しいでしょうか? ご回答、よろしくお願いします。

    • ベストアンサー
    • PHP
  • パスワードの決め方について(SHA3orHMAC)

    パスワードの決め方や保管の方法について、分からなくなってきたので基本から質問させてください。 1.パスワードをホームページ等でネットに公開したら危険ですか? 2.1.はただそのまま公開したら危険なのでやってはいけないと思いますが、暗号化して、パスワードのパスワードがないと解けない状態にして公開しておけば安全ですか? 3.2.の暗号化の手法として、暗号学的ハッシュ関数を用いて、ハッシュ値 h をパスワードにすれば、暗号化したパスワードを公開しても安全ですか? 4.3.について、パスワードにしたハッシュ値 h を公開したのではパスワードをそのまま公開していることになり、危険なため、ハッシュ値 h を算出する暗号学的ハッシュ関数の実行コマンドをホームページ等で公開し、パスワードを確認したいときにはこのコマンドを実行してハッシュ値を得ることにすれば、安全ですか? 5.4.について、暗号学的ハッシュ関数はSHAシリーズなどがありますが、この実行コマンドは広く一般に利用できる状態で提供されているため(ハッシュ計算するソフトウェアやWebサイトなど)、SHAなど既存の暗号学的ハッシュ関数を用いるのではなく、自分で専用に暗号学的ハッシュ関数を考案し、また実行コマンドやソフトウェアを作成する必要がありますか? 6.5.が大変な場合、SHAなど既存の暗号学的ハッシュ関数を用いて4.を実現するにはどうしたらいいですか? 7.4.について、コマンドがパスワードの数だけ存在すると管理が大変です。コマンドは共通にして、オプションスイッチで区別することはできませんか? 8.7.について、コマンドは既存のソフトウェアをあらかじめインストールしておき、オプションスイッチを含む実行コマンド文のみをHP等で公開しておくことはできませんか? 9.6.7.8を実現するには、オプションスイッチのうちのひとつをパスワードのパスワードとして、このスイッチのみを非公開とすれば良いですか? 10.9.について、コマンド文はどのように記述すれば良いですか?たとえばハッシュ関数H()、出力h、パスワードの対となる文字列(IDとかファイル名等)m、パスワードのパスワードをk、||は結合とした場合、 H(k||m)=h と書けると思いますがこれをH(m)として公開し、kはあらかじめPC等コマンドを実行する環境で設定しておけば良いですか? 11.10について、暗号学的ハッシュ関数SHA2シリーズ(256bit等)を用いた場合、Merkle-Damgård 構造であるため、length-extension 攻撃され、危険ですか? 12.10.11.について、暗号学的ハッシュ関数SHA3シリーズを用いた場合、SHA2シリーズのハッシュ関数と異なりスポンジ構造であるため、length-extension 攻撃は成り立たず、安全ですか? 13.12について、length-extension 攻撃以外の危険性はありますか?