平成30年春期午後問1の設問2

かえなるさん  
(No.1)
cに関しての質問です。

パスワードだけをハッシュ化した場合のハッシュ値とパスワードにソルトを加えてハッシュ化した時のハッシュ値が異なるのはよく分かります。

けど、ソルトはランダムな文字列ですよね。
ランダムな文字列ってことは必ず1文字以上なので、パスワードだけをハッシュ化した場合のハッシュ値とパスワードにソルトを加えてハッシュ化した場合のハッシュ値の方が多くなるので、回答群の「より長さが長い」も正解ではないでしょうか?
2021.04.12 10:45
oakさん 
(No.2)
問1の問題文に、〔ハッシュ化に用いるハッシュ関数の特徴〕として、
(1):パスワードの長さに関係なく,ハッシュ値は固定長になる。
と有ります
ですので、パスワードが4文字であろうが、10文字であろうが、ハッシュ値は固定長になります。ソルトとパスワードを連結した文字列も、一種のパスワードの文字列と捉えれば、これも固定長になると思われます。
2021.04.12 11:33
かえなるさん  
(No.3)
ソルト+パスワードを一種のパスワードと捉えたら長さが同じってことも有り得るんですね。

ありがとうございます
2021.04.13 10:08
oakさん 
(No.4)
リプライありがとうございます。
No.2で、ちょっと表現がまずかったので、次のように補足します。
「(1):パスワードの長さに関係なく,ハッシュ値は固定長になる。」
これは、パスワードをハッシュ化する問題なので上記表現になったもので、ハッシュ化するには、パスワードに限らず文字列であれば何でもよく、文字列の長さに関係なくハッシュ値は固定長になるということです。ですので、ソルトとパスワードを連結した文字列も、当初のパスワードの文字列より長くなっても、ハッシュ値は固定長になります。

>長さが同じってことも有り得るんですね。
基本的には、固定長になるとお考え下さい。
ハッシュ関数については、下記を参考にして下さい。(本サイトのキーワード集です)
https://www.fe-siken.com/keyword/ha.html
2021.04.13 13:40
GinSanaさん 
FE シルバーマイスター
(No.5)
なんでもハッシュ値はとれますよ。バイナリだろうがなんでも。
Windowsならこんな感じで。

>nkf32.exe --guess new.xlsx
BINARY

>CertUtil -hashfile new.xlsx SHA256
SHA256 ハッシュ (対象 new.xlsx):
0e6e6da551e50baba90a3f177d46ff0dee3906c56b26eca26d7cfc348657ce2a
CertUtil: -hashfile コマンドは正常に完了しました。

ハッシュ値は「原則」どころか「固定長」以外であっちゃ困るんですね。例外はないです。
仮に固定長じゃなかったら、それでハッシュ化する前のものが予測できちゃいますからね。

2021.04.17 19:13
GinSanaさん 
FE シルバーマイスター
(No.6)
ま、こういうのは、実際にやってみるといいですよ。なんでも実際にやると、よく覚えます。

パスワードがabc123として、
ソルトがランダムな18字とするなら(だいたい18字くらいあると一般的にはいいです)


Salt=base64 /dev/urandom | tr -d -c '[:alnum:]' | head -c 18
echo $Salt
⇒CVrBlGQXycIPzKCvT6
# ソルトをSHA256でハッシュ化
echo $Salt | sha256sum
⇒697b612d865019a28eeea485e3700e5acb8b88b08e709d9d420b35ff5bae2e36  -
# 長さは・・・
echo $Salt | sha256sum | awk '{print "Length : "length($1);}'
⇒Length : 64
Pass_Base='abc123'
echo $Pass_Base
⇒abc123
# 元のパスワードをSHA256でハッシュ化
echo $Pass_Base | sha256sum
⇒5ecf8d2cc410094e8b82dd0bc178a57f3aa1e80916689beb00fe56148b1b1256  -
# 長さは・・・
echo $Pass_Base | sha256sum | awk '{print "Length : "length($1);}'
⇒Length : 64
ConCat="$Pass_Base$Salt"
echo $ConCat
⇒abc123CVrBlGQXycIPzKCvT6
# 元のパスワードにソルトをくっつけたのをSHA256でハッシュ化
echo $ConCat | sha256sum
38a38f0f01976e74e63f77e3e1c3011e0101d7cc2b063d1276e86b298dd6f3d9  -
# 長さは・・・
echo $ConCat | sha256sum | awk '{print "Length : "length($1);}'
⇒Length : 64

こうすると、ハッシュ値が見事に違い、同じ長さなのがわかりますね。

2021.04.17 19:38

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの書込みはできません。

その他のスレッド


Pagetop