PBKDF2 Key Derivation
비밀번호 기반 키 유도 함수 2 (RFC 8018)
개요
PKCS #5 v2.1(RFC 8018 / NIST SP 800-132) 표준 PBKDF2(Password-Based Key Derivation Function 2)를 사용하여 패스워드와 솔트로부터 지정한 길이의 대칭키 바이트열을 파생한다.
의사난수 함수(PRF)로 선택한 HMAC을 지정된 반복 횟수(Iterations, $c$)만큼 연쇄 적용하여 무차별 대입(Brute-force) 및 사전 공격 비용을 높인다.
사용 시점
- 사용자가 입력한 비밀번호나 패스프레이즈로부터 AES, ChaCha20, HMAC 등에 사용할 암호학적 키를 파생할 때 사용한다.
파라미터 설정
| 파라미터 (ID) | 타입 및 기본값 | 노출 조건 | 설명 및 옵션 |
|---|---|---|---|
반복 횟수iterations |
number기본값: 10000 |
항상 노출 | HMAC 반복 횟수($c$, 1~10,000,000)이다. 외부 Iterations 포트가 연결되지 않았을 때 이 기본값을 사용한다. |
출력 키 길이 (바이트)keyLength |
number기본값: 32 |
항상 노출 | 파생할 출력 키의 바이트 길이(1~1024바이트)이다. 외부 Key Length 포트가 연결되지 않았을 때 이 기본값을 사용한다. |
PRF 해시 함수hashAlgorithm |
select기본값: SHA-256 |
항상 노출 | 이 노드의 PRF 해시 함수 설정을 지정한다.
|
포트 입출력 명세
포트 연결 규칙, 데이터 타입별 색상, 가변 포트 생성 방식은 포트 및 연결 문서를 참고한다.
입력 포트
포트 성격: 고정 입력 포트 (총 2개).
| 포트 이름 | 포트 ID | 데이터 타입 | 필수 여부 | 노출 조건 | 설명 |
|---|---|---|---|---|---|
Password |
password |
Bytes |
필수 | 항상 노출 | 원본 비밀번호 또는 비밀 바이트 배열(Uint8Array, 최소 1바이트 이상)이다. |
Salt |
salt |
Bytes |
선택 | 항상 노출 | 솔트 바이트 배열(Uint8Array). 연결하지 않으면 빈 솔트(0바이트)로 동작하지만, 실무에서는 최소 16바이트 이상의 무작위 솔트 연결을 권장한다. |
출력 포트
포트 성격: 고정 출력 포트 (총 1개).
| 포트 이름 | 포트 ID | 데이터 타입 | 노출 조건 | 설명 |
|---|---|---|---|---|
Derived Key |
derivedKey |
Bytes |
항상 노출 | 파생된 비밀 키 바이트 배열(Uint8Array)이다. |
오류 케이스
실행 중 아래 조건이 발생하면 이 노드는 ERROR 상태가 되며, 출력 포트에 연결된 하위 노드는 실행되지 않는다.
| 오류 코드 | 기본 엔진 메시지 | 발생 조건 |
|---|---|---|
INVALID_KDF_PARAMS |
KDF 파라미터가 올바르지 않는다 | Password (Secret)가 비어 있거나, 반복 횟수가 1~10,000,000 범위를 벗어나거나, 키 길이가 1~1024바이트 범위를 벗어날 때 발생한다. |
활용 예시
패스프레이즈에서 32바이트 AES-256 키 파생하기
PBKDF2-HMAC-SHA256으로 32바이트 키를 생성한다.
- PBKDF2 Key Derivation에서 해시 알고리즘을
SHA-256, 출력 키 길이를32로 설정한다. - 패스프레이즈 바이트를
Password (Secret)에, 16바이트 난수를Salt에 연결하고Derived Key를 AES Encrypt의Key에 연결한다.