Hash
ν΄μλ λ°μ΄ν°λ₯Ό λ€λ£¨λ κΈ°λ² μ€ νλμ΄λ€. ν΄μμ κ°μ₯ ν° νΉμ§μ λ°μ΄ν°μ ν¬κΈ°μ μκ΄μμ΄… ν΄μ μκ³ λ¦¬μ¦μ ν΅ν΄ μ»λ ν΄μκ°μ νμ κ³ μ λ κΈΈμ΄λ₯Ό λ°ννλ€. μ΄λ° νΉμ§μ κ°κ³ 보μμ μΈ κ΄μ μμλ λ¨λ°©ν₯ μνΈνμΌλ‘ μ¬μ© ν μ μλ€.
μ©μ΄ μ 리
μ©μ΄ | μ€λͺ |
ν΄μ ν¨μ(μκ³ λ¦¬μ¦) | μμμ ν¬κΈ°μ λ°μ΄ν°λ₯Ό inputκ°μΌλ‘ κ³ μ λ κΈΈμ΄μ output(ν΄μκ°)μΌλ‘ λ°νν΄μ£Όλ ν¨μ |
ν΄μ κ° | ν΄μ μκ³ λ¦¬μ¦μ μν΄ μ»μ λ°μ΄ν°. ν΄μμ½λ, ν΄μ 체ν¬μ¬ μ΄λΌκ³ λ νλ€. |
ν΄μ± | ν΄μ μκ³ λ¦¬μ¦μμ ν΄μκ°μ 맀ννλ κ³Όμ |
ν΄μμ νΉμ§
ν΄μ μκ³ λ¦¬μ¦μ μλμ κ°μ λͺκ°μ§ μ€μ νΉμ§λ€μ΄ μλ€.
κ³ μ λ κΈΈμ΄
hash(10GB Data) = '84960594d762e2534b56c2e8f8b2a3f6770e1ae8e13d255d6eeaf8dd7acce5fb'
hash(100MB Data) = '93444722a50772950e30f4f2bc005b0a9258620430bb6842342267ee833c8bb6'
ν΄μ ν¨μμ inputλλ λ°μ΄ν°μ ν¬κΈ°μ μκ΄μμ΄… κ³ μ λ κΈΈμ΄λ₯Ό κ°λ ν΄μκ°μ λ°ννλ€. λ¨μνκ² λ¨μ΄μ κ°μ Stringκ°μ ν΄μ±νλ κ²½μ°λ μλ¬Έ κ·Έλλ‘ μ¬μ©νλκ² ν¨μ¨μ μ΄κ² μ§λ§... λλμ λ°μ΄ν°λ₯Ό λΉκ΅νλ€κ³ νμ λ, μ§μ λ°μ΄ν°λ₯Ό λΉκ΅νλ κ² λ³΄λ€ ν΄μ μκ³ λ¦¬μ¦μ μν΄ μ»μ ν΄μ κ°μ μ΄μ©ν΄μ λΉκ΅νλ©΄ ν° ν¨μ¨μ μ»μ μ μλ€. μμ μμμμλ 10GBλ 100MBλ λͺ¨λ ν΄μ±μ νλ©΄ κ°μ ν¬κΈ°μ ν΄μκ°μ μ»λλ€.
μΌκ΄μ±
hash('lake') = '6f021f0268d5dd0d4e286ad5202f57335f2a8cc568704c4f7865c97879443ef8'
hash('lake') = '6f021f0268d5dd0d4e286ad5202f57335f2a8cc568704c4f7865c97879443ef8'
ν΄μ μκ³ λ¦¬μ¦μ inputλλ λ°μ΄ν°κ° μμ ν κ°μΌλ©΄ νμ κ°μ ν΄μκ°μ κ°λλ€.
ν΄μκ° μΆμΈ‘ λΆκ°λ₯
hash('lake') = '6f021f0268d5dd0d4e286ad5202f57335f2a8cc568704c4f7865c97879443ef8'
hash('lake.') = '8b04d20fe157421fc834eefbda77eb2c5714a60d3d722cfd3f68ff7068164c77'
inputκ³Ό ν΄μκ°λ€μ μ 보λ₯Ό κ°κ³ … λ€λ₯Έ ν΄μκ°μ inputμΌλ‘, inputμ ν΄μκ°μΌλ‘ μ μΆκ° λΈκ°λ₯ν΄μΌνλ€. κ·Έλμ input κ°μ΄ μ‘°κΈμ΄λΌλ λ€λ₯΄λ©΄ μμ ν λ€λ₯Έ ν΄μκ°μ λ°νν΄μΌνλ€. μμ μμμμλ ‘lake’μ ‘lake’μ ‘.’μ μΆκ°ν ν΄μκ°μ ꡬνλ€. μ°κ΄μ±μ΄ μμ μμ ν λ€λ₯Έ ν΄μκ°μ λ°ννλ€.
ν΄μ μΆ©λ
hash('lake') = '6f021f0268d5dd0d4e286ad5202f57335f2a8cc568704c4f7865c97879443ef8'
hash('ocean') = '6f021f0268d5dd0d4e286ad5202f57335f2a8cc568704c4f7865c97879443ef8'
'lake' != 'ocean'
hash('lake') == hash('ocean')
μκ°ν΄λ³΄λ©΄… ν΄μ ν¨μλ κ²°κ΅ λκ΅°κ° λ§λ ν¨μμ΄λ€. λ΄λΆμ μΌλ‘ μκ³ λ¦¬μ¦μ΄ μ΄λ»κ² μ²λ¦¬νλλμ λ°λΌ λ€λ₯Έ inputμ ν΄μ±ν΄λ κ°μ ν΄μκ°μ κ°μ μ μλ€. μ΄λ₯Ό ν΄μμ μΆ©λ(collision)μ΄λΌκ³ νλ€. μ΄λ° μΆ©λμ΄ λ°μνλ©΄ 체μ΄λ κΈ°λ²μ΄λ κ°λ°© μ£Όμλ²μ ν΅ν΄ μΌλΆ ννΌν΄μ ν΄κ²°μ΄ κ°λ₯νλ€.
μ΄λ° νΉμ§μ κ°κ³ μλ ν΄μ μκ³ λ¦¬μ¦μ μλ£κ΅¬μ‘°(ν΄μ ν
μ΄λΈ, ν΄μ 맡), 보μ, λΈλ‘μ²΄μΈ λ± λ€μν λΆμΌμμ νμ©ν μ μλ€.
보μκ΄μ μ Hash μ¬μ©
Hashλ₯Ό μ΄μ©νλ©΄ κ³ μ λ κΈΈμ΄μ μνΈνλ λ¬Έμμ΄λ‘ λ°μ΄ν°λ₯Ό λ°νν΄μ£Όλ λ¨λ°©ν₯ μνΈν κΈ°λ² μΌλ‘ μ¬μ©λλ€.
λ¨λ°©ν₯ μνΈν κΈ°λ²
νμͺ½ λ°©ν₯μΌλ‘ μνΈνλ₯Ό ν μ μκ³ λ³΅μμ΄ λΆκ°λ₯ν μνΈν κΈ°λ²μ΄ λ¨λ°©ν₯ μνΈν κΈ°λ²μ΄λ€.
μ¦, μνΈν λ°©λ²μ μκ³ λ³΅νΈν λ°©λ²μ΄ μλ κ²μ΄λ€. λ¨λ°©ν₯ μνΈν κΈ°λ²μ ꡬννκΈ° μν΄ ν΄μκ° κ°λ νΉμ§μ μ΄μ©νλ©΄ μμ ν μνΈν ν΄μ ν¨μ μ ꡬνν μ μλ€.
μνΈν ν΄μ ν¨μκ° κ°μ ΈμΌνλ νΉμ§
ν΄μ ν¨μλ₯Ό μ΄μ©ν λ¨λ°©ν₯ μνΈνλ₯Ό μν΄ μνΈν ν΄μ ν¨μκ° κ°μ ΈμΌνλ νΉμ§
- ν΄μκ°μ΄ μ£Όμ΄μ Έ μμ λ κ³μ°μ ν΅ν΄ input κ°μ μμλ΄κΈ° μ΄λ €μμΌ νλ€.
- ν΄μκ°κ³Ό inputμ΄ λͺ¨λ μ£Όμ΄μ‘μ λ μΆ©λμ λ°μμν€λ λ€λ₯Έ input κ°μ μ°Ύμλ΄κ±°λ κ³μ°νκΈ° λΆκ°λ₯ ν΄μΌνλ€.
- λκ°μ λ€λ₯Έ inputμΌλ‘ κ°μ ν΄μκ°μ λ°λ μΆ©λμ΄ λ°μνλ©΄ μλλ€.
- μλ£κ΅¬μ‘°μ μΈ‘λ©΄μμλ μΆ©λμ΄ λ°μνλλΌλ 체μ΄λκ³Ό κ°μ κΈ°λ²μ ν΅ν΄ ν΄κ²°ν΄λ 무κ΄νμ§λ§… λ¨λ°©ν₯ μνΈνμ κ°λ μμλ μΆ©λμ ννΌνλ κ²μ΄ μ€μνλ€.
μνΈν ν΄μ ν¨μ μμ©
- μννΈμ¨μ΄ λ³κ²½ κ²μΆ
- μ€μΉν μννΈμ¨μ΄μ ν΄μκ°μ μ§μ κ³μ°ν΄μ μ€λ¦¬μ§λ μ¬μ΄νΈμμ μ 곡νλ ν΄μκ°κ³Ό λΉκ΅
- ν¨μ€μλλ₯Ό κΈ°μ΄λ‘ν μνΈν
- λ°μ΄ν°λ² μ΄μ€μ μ μ₯ν λ, μμ νκ² μ λ°μ΄ν°κ° μλ ν΄μκ°μΌλ‘ μ μ₯
- λ©μμ§ μΈμ¦ μ½λ(MAC)
- μμ μμ μ‘μ μλ§μ΄ 곡μ νκ³ μλ ν€μ λ©μμ§λ₯Ό νΌν©ν΄μ ν΄μκ°μΌλ‘ κ³μ°νμ¬ μ¬μ©
- μ μμλͺ
ν΄μ ν¨μ μ’ λ₯
- MD5
- SHA
- SHA-0
- SHA-1
- SHA-256, SHA-512
- SHA-3
- CRC
- Tiger
- Bcrypt
- λ± μ¬λ¬κ°μ§
λνμ μΈ ν΄μ μκ³ λ¦¬μ¦μΌλ‘ SHAκ΅° ν¨μλ€κ³Ό MD5κ° μκ³ κ·ΈμΈμλ λ§μ μκ³ λ¦¬μ¦μ΄ μ‘΄μ¬νκ³ λ¨λ°©ν₯ μνΈν μκ³ λ¦¬μ¦μΌλ‘ μ¬μ©λκ³ μλ€. μμ μ λ§μ΄ μ¬μ©ν ν¨μλ€μ΄ μκ³ … 보μμ μΈ μΈ‘λ©΄μμ μΆ©λμ΄ μ€μν κ°λ
μ κ°κ³ μμ΄ λ³΄μ μ©λλ‘ μ¬μ©νλ μκ³ λ¦¬μ¦μ΄ μ§μμ μΌλ‘ λ³νλλ κ³Όμ μ κ²ͺκ²λμλ€. κ·Έλμ SHAκ΅° ν¨μλ€κ³Ό MD5 ν¨μμ μμ¬μ μΈ νλ¦μ μλ©΄ μ’μ κ²μ΄λ€.
MD5(Message-Digest algorithm 5)(1992)
MD4λ₯Ό κ³μ μ¬μ©νλ€κ° μ΄λ₯Ό λ체νκΈ° μν΄ 128λΉνΈ ν΄μλ₯Ό μ¬μ©νλ MD5κ° κ°λ°λμλ€. κ·Έλ¬λ μ€κ³μ κ²°ν¨ λ° μνΈν κ²°ν¨μ΄ λ°κ²¬λμ΄ MD5λ 보μ κ΄λ ¨ μ©λλ‘ μ°λ κ²μ κΆμ₯νμ§ μκ² λμλ€. νΈλν°μΌλ‘ 30μ΄λ©΄ μΆ©λμ μ°Ύμ μ μλ μ°κ΅¬λ μλ€.
SHA(Secure Hash Algorithm)
λ―Έκ΅ κ΅κ° μ보κ΅(NSA)μ΄ μ²μμΌλ‘ μ€κ³νμΌλ©° λ―Έκ΅ νμ€ κΈ°μ μ°κ΅¬μ(NIST)μ μν΄ μμ ν ν΄μ νμ€μΌλ‘ μ§μ λμλ€. SHA ν¨μκ΅μ μ΅μ΄μ ν¨μλ SHAλΌκ³ λΆλ¦¬μ§λ§, λμ€μ μ€κ³λ ν¨μλ€κ³Ό ꡬλ³νκΈ° μν΄ SHA-0(1993) λΌκ³ λΆλ¦°λ€. SHA-0λ μΌλ§ μ§λμ§ μμ… NSAλ μ΄ νμ€μ νκΈ°νκ³ κ°μ λ μκ³ λ¦¬μ¦μΌλ‘ SHA-1(1995) μ μλ‘ λ°ννλ€.
→ μ€μ λ‘ μ΄λ€ λ¬Έμ κ° μμ΄ λ³κ²½νλμ§λ μλ €μ§μ§λ μμμ§λ§… μνΈνμ 보μμ κ°μμν€λ λ¬Έμ κ° μμ΄ κ°μ λμλ€κ³ νλ€.
SHA-2(2001)
NISTλ λμ€μ ν΄μκ°μ κΈΈμ΄κ° λ κΈ΄ 4κ°μ λ³νμ λ°ννμΌλ©°, μ΄λ€μ ν΅μΉνμ¬ SHA-2λΌκ³ λΆλ₯Έλ€.
- SHA-224
- SHA-256
- SHA-384
- SHA-512 μ΄λ SHA λ€μ μ«μκ° ν΄μμ λΉνΈ κΈΈμ΄λ₯Ό μλ―Ένλ€.
SHA-3(2015)
νμ¬λ SHA-3κΉμ§ λ°νλ μνμ΄λ€. λ―Έκ΅ US-CERTμμλ SHA-3λ‘ λΆλ₯Ό μλ‘μ΄ μμ ν μλ‘μ΄ μνΈν ν΄μ ν¨μμ λν 곡λͺ¨λ₯Ό ν΅ν΄ κ²°μ νλ€κ³ νλ€.
SHA-1 μΆ©λ νμ λ°ν(2017)
2016λ μ NISTλ 보μμ±μ΄ κ°ν SHA-2 μ¬μ© λ° SHA-1 μ¬μ© κΈμ§λ₯Ό κΆκ³ νλ€. μ΄μ λ°λΌ… λ§μ΄ν¬λ‘μννΈ, ꡬκΈ, νμ΄μ΄νμ€, μ ν λ± λ©μ΄μ νμ¬ μ νλ€μμ SHA-1μ λν μ§μμ μ€λ¨ν΄κ°κ³ μμ΄ μνΈν μκ³ λ¦¬μ¦μ SHA-1μμ SHA-2λ‘ λ§μ΄κ·Έλ μ΄ν νλ μ νλ€μ΄ λ§μμ§κ³ μλ€.
ꡬκΈμμλ SHA-1μ λν μΆ©λ λ°μμ κ΄λ ¨ μ°κ΅¬κ° μ§νλμ μλ€.
Announcing the first SHA1 collision
- MD5λ 1κ°μ μ€λ§νΈν°μΌλ‘ 30μ΄μμ μΆ©λμ μ°Ύμ μ μλ€.
- SHA-1μ 12,000,000 GPUλ₯Ό μ΄μ©ν΄μ Bruteforce 곡격μΌλ‘ 1λ μμ μΆ©λμ μ°Ύμ μ μλ€.
- SHA-1μ 110 GPUλ₯Ό μ΄μ©ν΄μ Shattered 곡격μΌλ‘ 1λ μμ μΆ©λμ μ°Ύμ μ μλ€.
λ΄μ©μ μΈμ©ν΄λ³΄λ©΄ μ€λ μκ°κ³Ό 리μμ€κ° μμλμ§λ§ νμ€μ μΌλ‘ μΆ©λμ΄ λ°μν μ μλ€λ κ²°λ‘ λ€.
→ 보μμ
κ³μμ SHA-256 μ΄μμ μ§λ³΄λ μνΈνμ ν΄μ ν¨μ μ²΄μ‘°λ‘ μ ννλ κ²μ΄ νμνλ€.
SHA-1 160 bit
01001011110101010101110101100110
11010001011111010000100010011010
01010101010100101111001101011001
00100111111000100001011110110101
01010110010011111011110011010001
κ²½μ°μ μ 2^160 = 1461501637330902918203684832716283019655932542976
SHA-2 256 bit
11101101100111000001010100000001
11100101000000110011010100100011
11000110001101000000101111100001
10110010110010110000100110010010
11100010111110001101000101000111
10101111010001000011101101100111
10101000110101111000101010000011
11001111010110001010000100011101
κ²½μ°μ μ 2^256 = 115792089237316195423570985007226406215939081747436879206741300988257197096960
SHA-1λ μμ² ν° μμ΄μ§λ§… SHA-2λ λ§λ μλκ² ν° κ²½μ°μ μλ₯Ό κ°λλ€. νμ§λ§ λ°©μμ SHA-1κ³Ό κ±°μ λΉμ·νμ¬ μνμ μΌλ‘λ μ¬μ ν μΆ©λμ΄ λ°μνλ€. νμ§λ§… 곡νμ μΌλ‘ κ°λ₯μ±μ΄ μλ€κ³ λ΄λ 무방νλ€.
ν΄μ ν¨μ λΉκ΅
wikipedia comparison of SHA functions
λκΈ