260
3
부
방어
크립트 해싱 함수는 초기 유닉스 하드웨어를 염두에 두고 작성되었다. 당시 하드웨어로는 초당
해시할 수 있는 패스워드 수가 적어 해시된 패스워드를 크립트 함수를 사용해 역공학을 하기에
불충분했다. 크립트는 개발 당시 초당
10
개 미만의 패스워드를 해시할 수 있었다. 현대의 하드
웨어는 크립트 함수로 초당 수만 개의 패스워드를 해시할 수 있다. 따라서 요즘 해커에게 크립
트로 해시된 패스워드를 깨뜨리는 것은 쉬운 일이다.
BCrypt
는 빠른 하드웨어에서 느리게 작동하는 해싱 알고리즘을 제공해 블로피시와 크립트를
모두 반복한다.
BCrypt
로 해시된 패스워드는 미래에 규모를 키울 수 있다. 더 강력한 하드웨
어가
BCrypt
를 사용해 해시하려고 시도할 수 있어 더 많은 연산이 필요하기 때문이다. 그 결
과로 오늘날의 해커가 브루트 포스를 사용해 복잡한 패스워드와 일치하기 위해 충분한 해시를
수행하는 스크립트를 작성하기는 거의 불가능하다.
PBKDF2
BCrypt
대신
PBKDF2
해싱 알고리즘을 사용해 패스워드를 보호할 수도 있다.
PBKDF2
는
키 늘리기
key
stretching
라는 개념에 기반을 둔다. 키 늘리기 알고리즘은 첫 번째 시도에서 해시를
재빨리 생성하지만 시도할수록 점점 느려진다. 그 결과
PBKDF2
는 브루트 포싱이 계산적으로
값비싼 과정이 되게 한다.
PBKDF2
는 원래 패스워드 해싱을 위해 설계된 것은 아니지만
BCrypt
같은 알고리즘을 사용
할 수 없을 때 패스워드를 해싱하는 용도로 사용하기에 적당하다. ...