bcrypt는 Blowfish를 기반으로 만들어진 "단방향 암호화 해싱함수"로 1999년 USENIX에서 발표됐다. Rainbow table 공격을 막기 위해서 salt를 사용하며, 암호검사 요청이 반복될 수록 cost를 늘림으로써, 무차별 대입 공격(brute-force search)을 막을 수 있다. cost는 반복횟수로 2^n 이다.
bcrypt 함수는 OpenBSD와 SUSE 리눅스를 비롯한 몇몇 리눅스 배포판에서 암호화 해시 알고리즘으로 사용하고 있다. 리눅스의 /etc/shadow 파일을 열어보면 "$2a$"나 "$2b$"로 시작하는 패스워드 해시가 있는데, 이들이 bcrypt 방식의 암호화 해시다.
$ : bcrypt의 오리지날 버전은 $2a$ : bcrypt의 오리지날 버전은 $2$다. 오리지날 버전은 non-ASCII 문자나 널 문자를 처리하는 방법을 정의하지 않았다. $2a$는 널 문자를 포함하며, UTF-8로 인코딩 할 것을 정의한 버전이다. . 오리지날 버전은 non-ASCII 문자나 널 문자를 처리하는 방법을 정의하지 않았다. 널 문자를 포함하며, UTF-8로 인코딩 할 것을 정의한 버전이다.
10$ : Cost의 크기는 2^10이다. Iteration count를 1024만큼 돌리겠다는 얘기다.
N9qo8uLOickgx2ZMRZoMye : 랜덤하게 만든 salt
ljZAgcFl7p92ldGxad68LJZdL17lhWy : 패스워드. Salt와 패스워드를 묶어서 해시해버렸기 때문에, 유추가 불가능하다.
Contents
bcrypt
테스트 코드
참고
Recent Posts
Archive Posts
Tags