맨위로가기

PBKDF2

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

PBKDF2는 비밀번호나 패스프레이즈를 사용하여 유도 키를 생성하는 키 스트레칭 함수이다. 솔트와 HMAC을 반복적으로 적용하여 비밀번호 크래킹을 어렵게 만든다. 반복 횟수는 CPU 성능 향상에 따라 증가하며, 솔트 길이는 공격 방어를 위해 최소 128비트 이상을 권장한다. PBKDF2는 HMAC을 의사 난수 함수로 사용할 때 특정 조건에서 서로 다른 비밀번호가 동일한 키를 생성하는 충돌이 발생할 수 있다. PBKDF2는 ASIC 및 GPU를 이용한 공격에 취약하여 bcrypt, scrypt, Argon2와 같은 더 강력한 대안이 존재한다.

더 읽어볼만한 페이지

  • 암호 표준 - 신뢰 플랫폼 모듈
    신뢰 플랫폼 모듈(TPM)은 신뢰 컴퓨팅 그룹(TCG)에서 구상한 보안 장치로, 하드웨어 난수 생성, 암호 키 안전 생성, 원격 증명, 바인딩, 밀봉된 저장소 등의 기능을 제공하여 플랫폼 무결성 보장, 디스크 암호화, 디지털 권한 관리(DRM) 등 다양한 분야에 활용되며 여러 유형으로 구현되고 있다.
  • 암호 표준 - XML 암호화
    XML 암호화는 XML 문서의 일부 또는 전체를 암호화하는 기술로, `EncryptedData` 또는 `EncryptedKey` 요소를 사용하여 데이터를 암호화하고 `KeyInfo` 요소로 키 정보를 제공하며, 저장되거나 전송되는 데이터 자체를 보호하기 위해 개발되었고 보안 강화를 위해 1.1 버전에서는 갈루아/카운터 모드 블록 암호 알고리즘이 추가되었다.
PBKDF2
일반 정보
유형키 유도 함수
설계자제프리 슈라이어
보안
키 길이알고리즘에 따라 다름
해시 함수SHA-1
SHA-224
SHA-256
SHA-384
SHA-512
표준PKCS#5

2. 목적 및 운영

PBKDF2는 입력된 비밀번호 또는 패스프레이즈솔트 (암호학) 값과 함께 HMAC(해시 기반 메시지 인증 코드)와 같은 의사 난수 함수를 적용하고 이 과정을 여러 번 반복하여 유도 키를 생성한다. 이렇게 생성된 유도 키는 암호화 키로 사용될 수 있다. 추가된 계산 작업으로 인해 비밀번호 크래킹이 훨씬 더 어려워지며 이를 키 스트레칭이라고 한다.

비밀번호 기반 키 도출 함수 2의 반복 과정을 알고리즘으로 표현한 것이다.


표준 제정 당시(2000년) 권장되는 최소 반복 횟수는 1,000회였지만, CPU 속도가 증가함에 따라 시간이 지남에 따라 증가하도록 의도되었다.

  • 2005년 커버로스 표준에서는 4,096번의 반복을 권장했다.[27]
  • 애플은 iOS 3에 2,000회, iOS 4[28]에 10,000회를 사용한 것으로 알려졌다.
  • 2011년 라스트패스자바스크립트 클라이언트에 5,000회, 서버 측 해싱에 100,000회의 반복을 사용했다.[29]
  • 2023년 OWASP는 PBKDF2-HMAC-SHA256에는 600,000회, PBKDF2-HMAC-SHA512에는 210,000회의 반복을 사용할 것을 권장했다.[30]


비밀번호에 솔트를 추가하면 공격자가 미리 계산된 해시(레인보 테이블)를 사용하는 것을 방지하고, 여러 비밀번호를 한꺼번에 테스트하는 것이 아니라 개별적으로 테스트해야 한다.

2. 1. 솔트 길이

공개 키 암호화 표준에서는 최소 64비트의 솔트 길이를 권장한다.[31] 미국 국립표준기술연구소에서는 최소 128비트의 솔트 길이를 권장한다.[32]

3. 키 유도 과정

PBKDF2 키 유도 함수는 다섯 가지 입력 매개변수를 갖는다.[9]


  • `PRF`: 출력 길이가 `hLen`인 두 개의 매개변수를 갖는 의사 난수 함수 (예: 키가 지정된 HMAC)
  • `Password`: 파생 키가 생성되는 마스터 암호
  • `Salt`: 암호화 염이라고 하는 비트 시퀀스
  • `c`: 원하는 반복 횟수
  • `dkLen`: 파생 키의 원하는 비트 길이
  • `DK`: 생성된 파생 키


파생 키 `DK`의 각 `hLen`-비트 블록 `Ti`는 다음과 같이 계산된다(`+`는 문자열 연결을 나타냄):

`DK = T1 + T2 + ⋯ + Tdklen/hlen`

`Ti = F(Password, Salt, c, i)`

함수 `F`는 연결된 PRF의 ''c'' 반복의 XOR(^)(^)입니다. PRF의 첫 번째 반복은 ''Password''를 PRF 키로 사용하고, ''Salt''와 빅 엔디안 32비트 정수로 인코딩된 `i`를 연결한 것을 입력으로 사용한다. (참고로 ''i''는 1부터 시작하는 인덱스이다.) PRF의 후속 반복은 ''Password''를 PRF 키로 사용하고 이전 PRF 계산의 출력을 입력으로 사용한다.

`F(Password, Salt, c, i) = U1 ^ U2 ^ ⋯ ^ Uc`

여기서:

`U1 = PRF(Password, Salt + INT_32_BE(i))`

`U2 = PRF(Password, U1)`

`⋮`

`Uc = PRF(Password, Uc-1)`

예를 들어, WPA2는 다음을 사용한다.

`DK = PBKDF2(HMAC−SHA1, passphrase, ssid, 4096, 256)`

4. HMAC 충돌

PBKDF2는 HMAC을 의사 난수 함수로 사용할 때 흥미로운 속성을 가진다. 특정 조건에서 서로 다른 비밀번호 쌍이 동일한 키를 생성하는 충돌이 발생할 수 있다.[10]

제공된 비밀번호가 기본 HMAC 해시 함수의 블록 크기보다 길면, 먼저 비밀번호를 다이제스트로 사전 해시하고, 해당 다이제스트를 대신 비밀번호로 사용한다. 예를 들어, HMAC-SHA1을 사용하는 경우,


  • '''비밀번호:''' plnlrtfpijpuhqylxbgqiiyipieyxvfsavzgxbbcfusqkozwpngsyejqlmjsytrmd영어


는 너무 길어서 SHA-1을 사용하여 다음과 같이 사전 해시된다.

  • '''SHA1''' (16진수): 65426b585154667542717027635463617226672a
  • '''SHA1''' (ASCII): eBkXQTfuBqp'cTcar&g*영어


이는 염(salt)이나 반복 횟수에 관계없이 PBKDF2-HMAC-SHA1이 다음 두 비밀번호에 대해 동일한 키 바이트를 생성한다는 것을 의미한다.

  • "plnlrtfpijpuhqylxbgqiiyipieyxvfsavzgxbbcfusqkozwpngsyejqlmjsytrmd"
  • "eBkXQTfuBqp'cTcar&g*영어"


예를 들어,

  • '''PRF''': HMAC-SHA1
  • '''염:''' A009C1A485912C6AE630D3E744240B04
  • '''반복 횟수:''' 1,000
  • '''파생 키 길이:''' 16바이트


를 사용하면, 다음 두 함수 호출은 동일한 파생 키 바이트(17EB4014C8C461C300E9B61518B9A18B)를 생성한다.

```

PBKDF2-HMAC-SHA1("plnlrtfpijpuhqylxbgqiiyipieyxvfsavzgxbbcfusqkozwpngsyejqlmjsytrmd", ...)

PBKDF2-HMAC-SHA1("eBkXQTfuBqp'cTcar&g*", ...)

```

이러한 파생 키 충돌은 보안 취약점을 나타내지 않는다. 비밀번호의 ''해시''를 생성하기 위해서는 여전히 원래 비밀번호를 알아야 하기 때문이다.[11]

5. PBKDF2의 대안

PBKDF2는 반복 횟수를 조정하여 계산 시간을 늘릴 수 있지만, 소규모 회로와 적은 RAM으로 구현할 수 있어 ASIC이나 GPU를 사용한 무차별 대입 공격에 비교적 취약하다.[12] 이러한 공격에 더 강한 대안들이 존재한다.


  • '''bcrypt''': 더 많은 RAM을 필요로 하여 (개별적으로 조정할 수는 없지만, 주어진 CPU 시간에 고정됨) 이러한 공격에 대해 PBKDF2보다 더 강력하다.[13]
  • '''scrypt''': 임의로 많은 양의 메모리를 사용할 수 있어 ASIC 및 GPU 공격에 더 강하다.[12]
  • '''Argon2''': 2013년에 개최된 암호 해싱 경쟁(PHC)에서 최종 우승자로 선정되었다.[14]
  • '''기타''': Catena, Lyra2, yescrypt, Makwa 등이 PHC에서 특별 인정을 받았다.[14] Balloon hashing도 대안 중 하나이며, NIST 암호 가이드라인에서 권장된다.[15]

참조

[1] 간행물 PKCS #5: Password-Based Cryptography Specification, Version 2.0 http://tools.ietf.or[...] 2015-10-23
[2] 간행물 PKCS #5: Password-Based Cryptography Specification, Version 2.1 https://tools.ietf.o[...]
[3] 간행물 Advanced Encryption Standard (AES) Encryption for Kerberos 5 http://tools.ietf.or[...] 2015-10-23
[4] 웹사이트 Smartphone Forensics: Cracking BlackBerry Backup Passwords http://blog.elcomsof[...] ElcomSoft 2015-10-23
[5] 웹사이트 LastPass Security Notification https://blog.lastpas[...] 2023-01-31
[6] 웹사이트 Password Storage Cheat Sheet https://cheatsheetse[...] 2021-08-15
[7] 간행물 PKCS #5: Password-Based Cryptography Specification, Version 2.1: Section 4. Salt and Iteration Count https://tools.ietf.o[...] 2018-01-24
[8] 웹사이트 Recommendation for Password-Based Key Derivation Part 1: Storage Applications https://nvlpubs.nist[...] 2018-12-20
[9] 문서 Password-Based Cryptography Specification
[10] 웹사이트 PBKDF2+HMAC hash collisions explained https://mathiasbynen[...]
[11] 웹사이트 Collision resistance - Why is HMAC-SHA1 still considered secure? https://crypto.stack[...]
[12] 문서 Colin Percival
[13] 웹사이트 New 25 GPU Monster Devours Passwords In Seconds http://securityledge[...] The Security Ledger 2013-09-07
[14] 웹사이트 Password Hashing Competition https://password-has[...]
[15] 웹사이트 Digital Identity Guidelines Authentication and Lifecycle Management Section 5.1.1.2 https://nvlpubs.nist[...] 2021-06-18
[16] 서적 Proceedings IEEE 9th International Workshops on Enabling Technologies: Infrastructure for Collaborative Enterprises (WET ICE 2000) 2000
[17] 웹사이트 Smartphone Forensics: Cracking BlackBerry Backup Passwords http://blog.elcomsof[...] 2015-10-23
[18] 웹사이트 LastPass Security Notification https://blog.lastpas[...] 2015-10-23
[19] 웹사이트 NIST SP 800-132, Recommendation for Password-Based Key Derivation Part 1: Storage Applications https://nvlpubs.nist[...] 2018-12-20
[20] URL https://mathiasbynen[...]
[21] URL https://crypto.stack[...]
[22] 문서 。 Colin Percival.
[23] 웹사이트 New 25 GPU Monster Devours Passwords In Seconds http://securityledge[...] The Security Ledger 2013-09-07
[24] 웹사이트 Password Hashing Competition https://password-has[...]
[25] 간행물 PKCS #5: Password-Based Cryptography Specification, Version 2.0 http://tools.ietf.or[...] 2015-10-23
[26] 간행물 PKCS #5: Password-Based Cryptography Specification, Version 2.1 https://tools.ietf.o[...]
[27] 간행물 Advanced Encryption Standard (AES) Encryption for Kerberos 5 http://tools.ietf.or[...] 2015-10-23
[28] 웹인용 Smartphone Forensics: Cracking BlackBerry Backup Passwords http://blog.elcomsof[...] ElcomSoft 2015-10-23
[29] 웹인용 LastPass Security Notification https://blog.lastpas[...] 2023-01-31
[30] 웹인용 Password Storage Cheat Sheet https://cheatsheetse[...] 2021-08-15
[31] 간행물 PKCS #5: Password-Based Cryptography Specification, Version 2.1: Section 4. Salt and Iteration Count https://tools.ietf.o[...] 2018-01-24
[32] 웹인용 Recommendation for Password-Based Key Derivation Part 1: Storage Applications https://nvlpubs.nist[...] 2018-12-20



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com