Hash function
DATE : 2023/11/10
Last updated
DATE : 2023/11/10
Last updated
Login Logic에서 여러 가지 방법으로 로그인 과정을 처리할 수 있다는 얘기를 하면서
지나가는 말로 hash라는 단어를 사용했다.
현재 사용하는 DB에는 password가 평문으로 들어가기 때문에 형태를 바꿔줄 필요가 있는데
이때 사용할 수 있는 함수가 바로, Hash 함수이다.
Hash는 일방통행 하는 함수로 한 번 Hash 처리한 평문은 다시 원래 상태로 복원할 수 없다.
대표적으로 MD5, SHA256과 같은 방법이 Hash function에 해당한다.
여기서 잠깐..!
비밀번호가 그대로 노출되는 것을 막기 위해서 Hash를 사용한다고 했는데,
인코딩(encoding)이나 암호화(encryption)를 하면 안되는 걸까??
인코딩, 암호화, hash 모두 평문의 상태를 바꿔주는 역할을 하지만
(1) 인코딩한 정보는 디코딩으로(decoding) 복구할 수 있고
(2) 암호화를 한 경우에는 Key가 있으면 복구가 가능하다.
하.지.만
Hash는 앞에서 말했듯이 일방통행만 하기 때문에 다시 평문으로 복구할 수가 없다.
따라서 DB가 통째로 털렸다고 했을 때, 공격자는 자신이 얻은 credential로
다른 DB에 credential stuffing attack을 할 수 있는 데
hash된 상태로 비밀번호가 저장되어 있으면 평문으로 복구가 불가능함과 동시에
credential stuffing attack에 대해 일차적으로 보호할 수 있기 때문에!
Hash 처리를 통해 비밀번호를 저장하고자 하는 것이다!