Bcrypt
✒️ 2025-05-16 09:05 내용 수정
비밀번호를 안전하게 저장하기 위한 암호화 해시 함수
- 참고 자료 : 위키백과 bcrypt
- C, C++, C#, Elixir, Go, Java, Javascript, Purl, PHP, Python, Ruby 등 언어용 Bcrypt 구현체가 존재한다.
- 단방향 해시 함수를 사용하여 원래 비밀번호로 복구할 수 없는 방식으로 암호화한다.
- passport를 사용한 로그인과 세션#로그인 설정에서 bcrypt를 적용한 로그인을 Node로 만든 적이 있었는데, 이 때 한 번 bcrypt로 암호화한 비밀번호는 다시 원래 비밀번호로 돌릴 수 없어 DB에 비밀번호를 저장할 때 원본 비밀번호를 알 수 없어 DB 관리자도 사용자의 비밀번호를 알 수 없었다.
- 무작위 문자열인 고유 솔트(salt)를 추가하여 같은 비밀번호라도 서로 다른 솔트 값으로 인해 다른 해시값이 생성된다.
- 반복적인 해싱 작업으로 작업량을 조절할 수 있으며, 반복 횟수(Work Factor)가 높아질수록 더 많은 시간이 소요되기에 연산 파워 증가에도 브루트 포스 검색 공격에 대한 저항을 유지할 수 있다.
- 브루트 포스 검색 공격(무차별 대입 검색) : 각 후보가 문제의 설명을 만족하는지 여부에 대해 가능한 모든 후보를 체계적으로 확인하는 것으로 구성된 문제해결 기술 및 알고리즘 패러다임이다.
- 참고 자료 : 위키백과 무차별 대입 검색
- 브루트 포스 검색 공격(무차별 대입 검색) : 각 후보가 문제의 설명을 만족하는지 여부에 대해 가능한 모든 후보를 체계적으로 확인하는 것으로 구성된 문제해결 기술 및 알고리즘 패러다임이다.
