Bcrypt란?

김진수·2021년 4월 5일
0
post-thumbnail

해시 함수

단방향 해시 함수란 복호화를 할 수 없는 해싱 알고리즘입니다.

sha256: 대표적인 단방향 해시 함수로 평문의 길이에 상관없이 256비트의 고정된 암호문을 출력합니다. 빠른 속도와 단방향성, 그리고 괜찮은 보안성으로 블록체인에서 많이 사용하는 암호화 알고리즘입니다.

Bcrypt

처음부터 단방향 암호화를 위해 만들어진 해시함수

기존 해시 함수의 문제

sha256 같은 해시 함수들은 원래 암호화를 위해 설계된 것이 아니라 짧은 시간에 데이터를 검색하기 위한 자료구조로 설계가 되었습니다. 그렇기에 빠른 속도가 장점이지만 보안에 취약하다는 단점이 있습니다.

rainbow table attack: 미리 해시 값들을 계산해 놓은 테이블을 가지고 해시 함수 반환 값을 역추적해 원래 정보를 찾아내는 해킹 방법입니다.

이런 취약점을 보안한 것이 바로 bcrypt같은 해시 함수입니다.

salting과 키 스트레칭

salting :실제 정보 이외에 추가적으로 무작위 데이터를 더해서 해시 값을 계산하는 방법. salt로 인해 해시값이 달라지기 때문에, rainbow attack 같이 미리 해시 값을 계산해 공격을 무효화 시킵니다. salt자체는 비밀이 아니고 해시값을 바꾸는데 목적이 있습니다. salt는 비밀번호마다 모두 다르기 때문에 같은 비밀번호라도 해시값이 달라지게 됩니다. 이 때문에 공격자는 해시값 데이터베이스 만들 수 없다.

키 스트레칭: 기존 단방향 해시 알고리즘의 빠른 실행속도가 취약점이 됐던 것을 보안하기 위한 방법.
단방향 해시 값을 계산한 후 그 해시 값을 다시 해시하고, 이를 반복한다.

bcrypt

bcrypt의 값은 4부분으로 나눠집니다.
Algorithm : 알고리즘 식별자
Cost factor : 키 스트레칭한 횟수, 2^n 번
Salt : 128비트 salt, 22자 base64로 인코딩
Hash. : salting과 키 스트레칭 후 해시 값

profile
백엔드 개발자

0개의 댓글