해싱 라이브러리 정리
1. 소개
- 해싱 라이브러리란?
- 강력한 암호 해싱 알고리즘 => 메모리가 어렵도록 설계 = 계산에 많은 메모리 필요 => 공격자가 GPU 및 ASIC와 같은 특수 하드웨어를 사용하여 암호를 해독하는 것이 어려움
- 해싱이 중요한 이유
2. 해싱 알고리즘 기초
- 해시 vs 암호화 비교
- 단방향 해시의 특징
- salt와 pepper의 역할
3. 주요 해싱 알고리즘
- bcrypt
- 기본 개념
- 오래된 알고리즘이지만 널리 사용되고 있으며 안전한 것으로 간주된다.
- 계산 비용이 많이 들도록 설계되어 계산에 많은 처리 능력이 필요하다는 것을 의미한다.
- 수행할 반복 횟수를 결정하는 비용 매개 변수가 있으며, 사용할 메모리 양을 결정하는 작업 요소도 있다.
- 워크 팩터(cost)
- 장/단점
- 사용 위치
- 기본 개념
- argon2
- 기본 개념
- 사용할 메모리의 양과 수행할 반복 횟수 같이 사용할 때 염두에 두어야할 몇 가지 매개 변수가 있다.
- 파라미터 설명
- memory, time, parallelism
- Argon2 변형 (i, d, id)
- Argon2는 PHC(Password Hashing Competition) 우승 알고리즘
- 기본 개념
4. 알고리즘 비교 분석
- scrypt, PBKDF2 등
- scrypt
- 계산적으로 비용이 많이 들도록 설계되었다는 점에서 bcrypt와 유사함 그러나 argon2와 같이 메모리가 어렵도록 설계되었다.
- PBKDF2는 계산적으로 비용이 많이 들도록 설계된 키 파생 함수(Key Derivation Function)로, 더 강력한 암호 해싱 기능을 만들기 위해 SHA-256 또는 SHA-512와 같은 다른 알고리즘과 함께 자주 사용도니다.
- 수행할 반복 횟수와 파생 키의 길이와 같은 매개변수가 필요하다.
- scrypt
5. 성능 & 보안 고려사항
- 사용자 수, 사용 가능한 컴퓨팅 리소스 및 보안 요구 사항과 같은 요소를 고려해야한다.
- 일반적으로 Argon2와 같은 새로운 알고리즘은 bcrypt및 PBKDF2와 같은 오래된 알고리즘보다 더 강력한 것으로 간주되지만 계산에 더 많은 메모리 또는 처리 능력이 필요할 수 있다.
6. 결론 및 추천
암호 해싱은 암호 보안의 한 측면일 뿐이며, 암호 정책 및 다단계 인증과 같은 다른 조치도 보안 개선을 위해 사용되어야 한다.
7. 기타
- Argon2와 OpenSSH: OpenSSH 9.0부터 Argon2id를 KDF(키 파생 함수)로 지원한다.
- 레인보우 테이블: 미리 계산된 해시값 테이블을 이용한 공격 기법으로, salt를 사용하면 방어 가능하다.
참고
npm - bcrypt (opens in a new tab)
wikipedia - bcrypt (opens in a new tab)
OWASP 치트시트 - Password Storage (opens in a new tab)
geeksforgeeks - Introduction to Hashing (opens in a new tab)