- ベストアンサー
なぜハッシュ関数の値をそのままパスワードに使わない
ハッシュ関数の出力値をそのままパスワードに使うのはなぜ誰もやらないのでしょうか? 変更とか楽でよさそうですが。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
種パスワードとID(と連番?)をハッシュの入力にすると言うことですね。 それなら意味はあるシステムだと思いますが、 素直に「種パスワード+ID」をパスワードにするのに対する利点は何になりますかね。 文字数制限とかにもある程度柔軟に対応できる、とかでしょうか。 あ、万が一パスワード(ハッシュ値)を見られても元の「種パスワード+ID」を求めるのが非常に困難というのがありますね。 (なお、辞書攻撃に強くなると言う利点は、 アルゴリズムが既知であると攻撃者も同じアルゴリズムを使ってくるため、無くなってしまう。) ちょっと心配なのは、種パスワードが割れてしまうと すべてのIDに対するパスワードが分かってしまうということですね。 特に、種パスワードを第3者のデバイスに入力することも想定しているようですから、 そこからとられる可能性もあります。 専用デバイスを使うのであればそれは各人専用(携帯電話のアプリとかで容易に実装できるでしょう)が良い気がしますが、 そうなるとハッシュを使う必要性が無くなってしまうかな? ※パスワードは任意の値とし、 その専用デバイスにIDとパスワードの組を覚えさせておく形でよくなってしまう。 (こういうパスワード管理ソフトはすでに存在してますね。) でもハッシュ方式には、個人が複数のデバイス(携帯電話複数とかあまり珍しくもないでしょう)を持ってるときに、 デバイス間でデータの同期をとらなくてもIDからパスワードを引き出せるという利点はありますね。 (クラウド使えっていわれるかもしれませんが^^;) データロストの恐れもない。 > (ひとつに絞れなければ絞る必要がありますがそれはシステム?から考え直さないと) 複数のサイトで同じIDを使うというのは割とあることだと思いますが、 その場合はサイト名を入力値に使用するとかやりようはあると思います。
その他の回答 (2)
- Kon1701
- ベストアンサー率24% (1445/5856)
IDのハッシュを求めてそれをパスワードとし、それを入力させる、ということでしょうか? もしそうなら、ハッシュのアルゴリズムが特定されれば全ての利用者のパスワードが破られ他の戸同じになってしまいますね。 (考えが違うのでしたら補足等、お願いします)
お礼
回答ありがとうございました。
補足
種パスワードならぬ種ハッシュを決めてこれを暗記しかつ秘匿します どう秘匿するかは別途ですが また勿論種ハッシュの変更も容易にできる仕組みも必要だが 頭の中だけで考えるなら、 当人が必ず忘れることなく思い出すことができると自信があり かつ自分以外には誰も(機械でも)まず推測不可能だろうと思えること (勿論証明できないが) lifehackerなどにある程度パスワードの決め方の例が載っているので これらを参考に自分なりにアレンジしてパスワードを決めてこれを種として ハッシュを取ってその値+ID(+変更回数)
- Werner
- ベストアンサー率53% (395/735)
ハッシュ関数の入力は本来使おうとしていたパスワードですか? 辞書攻撃には強くなりそうですが、変更楽になります? 手間はハッシュ関数通す必要がある分増えると思いますが。 だれもやらないのは、ハッシュ関数通すのが面倒だからでしょう。 パスワードが必要になる度にハッシュとる必要がある。 (そもそもそんなことを考える人がいないっていうのももちろんあるでしょうが。) もし、毎回ハッシュとるのが面倒だからどこかにメモするというなら、 もはやハッシュである必要はなく乱数でいいですね。
お礼
妄想にちかい質問にご回答いただきありがとうございました(^o^)
補足
パスワードときたら普通IDかそれに該当するものがあると思うので入力はそれですね。(ひとつに絞れなければ絞る必要がありますがそれはシステム?から考え直さないと) パスワード変更についてはIDの末尾に変更回数として数字をつけてインクリメントしていくとか(でその全体をハッシュ関数へ入力する) 面倒なのは電卓のような専用デバイスを開発してそれを用いればよいのでは。 種パスワードならぬ種ハッシュだけは暗記しておく必要がありますが それさえ暗記しておけば使いたいときに人から借りた電卓のようなもので ハッシュを取ってパソコン等に転送。 転送手段は液晶画面にQRコード表示とか。 電卓のようなものにもカメラがついてQR読みとれるなど。
お礼
引き続きお付き合いいただきありがとうございました(^o^)
補足
パスワード限定で質問をあげてしまったので分かりづらくなっていますので 全体像(仰るところのハッシュ方式)まとめ気味な補足ですが 結局パスワード電卓、あるいはハッシュ電卓、もしくはなまえ電卓、なまえ作成機、ユニーク値算出機、特定名作成機など、呼び方はいろいろ有り得ると思いますが、専用のデバイスを商品開発し販売、普及させるしかないかなと思います。中身はほとんどいわゆるパソコンと同じで、ただ大きさが電卓並みだとか、(後述のQRコード読み取り用に)カメラがついてるとか、あと肝心なのは(種パスワード割れなどの誤解を招かないように)通信機能はもちろん、データ保存機能は一切ついていないこと(太陽電池駆動の電卓のように)。あとオートパワーオフとか。 結局、こういった専用デバイスを、ネットと切り離された、完全に外部の演算装置として(人間が)利用することで、ある人と別の人がパスワードとしては(IDでも何でもいいですが)全く同じ言葉を利用(使用、採用)しているけれども、現実にそれを入力する段においてはひとりひとりまったく異なる値を入力することができる、その異なり具合はハッシュ関数の対衝突性によって担保できる、ということになります。(それで別質問ではもう別デバイスを使うということで、諦めたほうが良いのではと書きました) 要するに現在の世の中として、抽象化が不徹底ゆえに無駄が発生しているのではという指摘?です。 ハッシュ電卓が普及すると、まずそれがサービス(デバイス)利用の入り口というか最初の手順になるので、携帯電話ならそれを人から借りても即(かどうかはネットの速度等によりますが)自分のものとして使える、ような世界を想像しやすくなります。 たとえばチケットなども携帯すら持たずに現地で提示できるかもしれません(ハッシュ電卓を借りて、公衆ネット端末のようなものの画面からQRで計算式を読み取って種パス入力後再計算で電卓画面に表示させて提示→QRで表示されればさらに受付しやすい) 以下は個別具体的な話です 複数サイトで同じIDについては自分はむしろそれぞれきちんと分けたいほうなので(面倒で完全にはできてませんが)敢えて同じにしたいというのはハッシュ方式だと特別ケースになりそうですね。 複数サイトで同じIDを使いたいということはそれらの利用について少なくとも自分の中であるひとつの言葉なり文なり文章なりでまとめられているということでしょうからそれをそのまま入力値として(勿論先頭なり末尾なりに種パスや変更回数、0回なら0、を付けて)ハッシュ関数を通して得た値をIDにするのはどうでしょう。どのサイトでも自分がIDを決められるのが前提ですが。 万が一(2の256乗が一?)使われていたら変更回数を1加算(0なら1にするだけ) クラウドについても最初の入力値はID・パスワード・電子証明書etcetc・・・ですのでやっぱり専用電卓のようなデバイス普及が究極の?計算(演算)回路(ハード、ソフト)と認証の為の固定値(プログラミングで言う定数?)の分離のかたちかな、と言ったところです。 公開のアルゴリズム・演算回路の組み合わせによるデバイス、webサービス、クラウドを最大限に利用して、ユーザーの個人を特定するための固定値は究極には当人が記憶している256ビットのみということが可能ならば、 上で例にあげたように世の中的に一層無駄が省けるかなと思います。 もちろん公衆ネット端末とか、電車の駅であれば自動改札への組み込みとか(これは混雑的に無理かもですが)情報インフラ整備が必要になりますが。