Más contenido relacionado
La actualidad más candente (20)
Más de Takeru Ujinawa (7)
SHA-256を学ぼうとする
- 2. uji52
自己紹介
• uji52
• age: 27
• region: Hikone->Kyoto->Yokohama
• My favorite
• ハッシュ関数
• SHA-256
(他をほとんど知らない気がする)
• 調味料
• わさび
• 塩コショウ
2
- 5. SHAとは(1)
• NIST(National Institute of Standard and Technology)
• アメリカ国立標準技術研究所
• すっごいいろいろやってるところ
• 物理学から化学から情報まで様々
• 暗号化技術等の選定、標準化等も
• AES(Advanced Encryption Standard)
• 暗号化方式
• SHA(Secure Hash Algorithm)
• ハッシュアルゴリズム
5
- 7. 実際にハッシュ化しよう
7
$ irb
irb(main):001:0> require 'digest/sha2'
=> true
irb(main):002:0> Digest::SHA256.hexdigest "uji52"
=> “7730a0175eb494861993a5fdc899b393415f0def92ffd5130abee366dfa15348"
irb(main):003:0> Digest::SHA256.hexdigest "uji53"
=> "0c47f8156e7b256efee86cc135451def80b4c544af16e24af81b2548009e37b8"
irb(main):004:0> Digest::SHA256.hexdigest ""
=> "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
←Rubyをインタプリタで起動するで(するやで、は封印)
←SHA-2を使う宣言
←”uji52”をSHA-256
←”uji53”をSHA-256
←空文字列をSHA-256
ほんの少しの変更でガラッと変わる
空文字でもしっかりハッシュ化してくれる
- 9. ハッシュ化する上で大事なこと
• ハッシュ化するときに工夫するで
• salt (salt and pepper)
• ハッシュ化する前に元の値に味付け(塩)して途中にも味付け(胡椒)
• ストレッチング
• 複数回ハッシュ化することで計算量を上げちゃおう
• アルゴリズムは被らないことが大事
• 第一原像計算困難性
• 与えられるハッシュ値になる元値探し
• 第一原像計算困難性
• 与えられる元値と同じハッシュ値になる元値探し
• 衝突困難性
• ハッシュ値が同じになっちゃうペア探し
9
hが与えられて
h=hash(m)になるm探し
m1が与えられて
hash(m1)=hash(m2)になるm2探し
hash(m1)=hash(m2)になるペア探し
- 13. SHA-256でやってること
13
428a2f98 71374491 b5c0fbcf e9b5dba5 3956c25b 59f111f1 923f82a4 ab1c5ed5
d807aa98 12835b01 243185be 550c7dc3 72be5d74 80deb1fe 9bdc06a7 c19bf174
e49b69c1 efbe4786 0fc19dc6 240ca1cc 2de92c6f 4a7484aa 5cb0a9dc 76f988da
983e5152 a831c66d b00327c8 bf597fc7 c6e00bf3 d5a79147 06ca6351 14292967
27b70a85 2e1b2138 4d2c6dfc 53380d13 650a7354 766a0abb 81c2c92e 92722c85
a2bfe8a1 a81a664b c24b8b70 c76c51a3 d192e819 d6990624 f40e3585 106aa070
19a4c116 1e376c08 2748774c 34b0bcb5 391c0cb3 4ed8aa4a 5b9cca4f 682e6ff3
748f82ee 78a5636f 84c87814 8cc70208 90befffa a4506ceb bef9a3f7 c67178f2
32bitのハッシュ値 x 8
入力値を元に生成された4Byteの値 x 64
定数k 8桁の16進数 x 64
これらの値をビットシフトとXORして
ハッシュ値を作ってるみたいです。
時間の都合上この辺りで割愛
(諦め)
←これの4つめと8つめをハッシュしてローテーションしていく(それを64回)
↑←この2つがハッシュするためのXOR素材