키 파생 기능

Key derivation function

암호학에서 Key Derivation Function(KDF; 키 파생 함수)은 (일반적으로 암호 해시 함수 또는 블록 암호를 사용하는) 의사 난수 함수를 사용하여 메인 키,[1][2][3] 비밀번호 또는 패스프레이즈 등의 비밀 값에서1개 이상의 비밀 키를 도출하는 암호 알고리즘입니다.KDF를 사용하여 키를 더 긴 키로 확장하거나 Diffie의 결과인 그룹 요소를 변환하는 등 필요한 형식의 키를 얻을 수 있습니다.AES에서 사용하기 위해 Hellman 키를 대칭 키로 교환합니다. [4]입력 암호화 해시 함수는 키 파생에서 사용되는 의사 난수 함수의 일반적인 예입니다.

역사

최초의[citation needed] 일부러 느린(키 스트레칭) 암호 기반 키 파생 기능은 "crypt"(또는 man 페이지 뒤에 "crypt(3)"라고 불리며 1978년 로버트 모리스에 의해 발명되었습니다.수정된 DES 암호화 알고리즘(실시간 컴퓨터 클럭에서 읽어낸 12비트 숫자를 사용하여 계산을 교란시키는 데 사용됨)을 25회 반복함으로써 사용자 비밀번호의 처음 8자를 키로 사용하여 상수(0)를 암호화합니다.결과 64비트 번호는 인쇄 가능한 11자로 인코딩되어 Unix 비밀번호 [5]파일에 저장됩니다.PDP-11 시대 이후 프로세서의 속도가 크게 향상되면서 암호화에 대한 무차별 공격이 가능해졌고 스토리지의 발전으로 12비트 소금이 불충분하게 되었습니다.암호 기능의 설계상 사용자 비밀번호는 8자로 제한되어 있어 키 공간이 제한되고 강력한 암호 구문이 불가능합니다.[citation needed]

범용 해시 함수에서는 높은 throughput이 바람직한 속성이지만, 그 반대는 brute-force crack에 대한 방어가 주요 관심사인 패스워드 보안 어플리케이션입니다.GPU, FPGA, 심지어 ASIC 등의 대규모 병렬 하드웨어가 브루트포스 크래킹에 사용됨에 따라 적절한 알고리즘의 선택이 더욱 중요해지고 있습니다.이는 우수한 알고리즘이 CPU에 일정량의 계산 비용을 부과할 뿐만 아니라 현대의 대규모 하드웨어의 비용 대비 성능상의 이점에도 영향을 미치지 않기 때문입니다.이러한 작업을 위한 y-module 플랫폼.bcrypt, scrypt, 그리고 최근에는 Lyra2Argon2(비밀번호 해싱 경합 우승자)를 포함한 다양한 알고리즘이 이 목적을 위해 특별히 설계되어 있습니다.공격자가 약 3600만 개의 해시를 도난당한 대규모 Ashley Madison 데이터 침해는 암호 보안에 알고리즘 선택이 중요하다는 것을 보여줍니다.해시를 보호하기 위해 bcrypt를 사용했지만(대규모 brute-force cracking 비용이 많이 들고 시간이 많이 소요됨) 유출된 데이터 계정의 상당 부분에는 고속 범용 MD5 알고리즘에 기반한 패스워드 해시가 포함되어 있어 1,100만 개 이상의 패스워드가 무광 상태로 크래킹될 수 있었습니다.r주 [6]단위입니다.

2017년 6월 미국 국립표준기술연구소(NIST)는 디지털 인증 가이드라인의 새로운 개정판인 NIST SP 800-63B-3을 [7]: 5.1.1.2 발표하면서 다음과 같이 밝혔다. "검증자는 오프라인 공격에 강한 형태로 기억된 비밀(즉, 패스워드)을 저장해야 한다.기억된 비밀은 소금에 절이고 적절한 단방향 키 파생 기능을 사용하여 해시해야 한다.키 파생 함수는 패스워드, 솔트 및 비용 요소를 입력으로 사용하여 패스워드 해시를 생성합니다.그 목적은 패스워드 해시 파일을 취득한 공격자가 패스워드 추측을 시도할 때마다 비용이 많이 들기 때문에 추측 공격 비용이 높거나 너무 많이 들게 하는 것입니다.

PBKDF2(RFC 2898에서 규정)와 같은 최신 비밀번호 기반 키 파생 함수는 SHA-2와 같은 인식된 암호화 해시에 기반하고 있으며 더 많은 salt(최소 64비트 및 랜덤으로 선택됨) 및 높은 반복 횟수를 사용합니다.NIST는 최소 10,000회의 반복 [7]: 5.1.1.2 횟수를 권장합니다. "특히 중요한 키의 경우 또는 사용자가 인식하는 성능이 중요하지 않은 매우 강력한 시스템의 경우 1,000,000회의 반복 횟수가 적절할 수 있습니다."[8]: 5.2

키 파생

KDF의 원래 용도는 비밀 패스워드 또는 패스프레이즈에서 키를 생성하는 키 파생입니다.이 테마에는 다음과 같은 종류가 있습니다.

  • 비비밀 파라미터와 조합하여 공통 비밀값(' 다양화'라고도 함)에서1개 이상의 키를 도출합니다.이러한 사용으로 인해 파생키를 취득한 공격자가 입력비밀값 또는 기타 파생키에 대한 유용한 정보를 학습하지 못할 수 있습니다.KDF는 파생된 키가 일부 특정 암호화 시스템에서 "취약 키"를 피하는 등 다른 바람직한 속성을 갖도록 보장하기 위해 사용될 수도 있습니다.
  • 다당제 핵심 합의 프로토콜의 구성 요소로서.이러한 키 파생 함수의 예로는 IEEE 규격 1363-2000에서 정의된 KDF1 및 ANSI X9.42에서 정의된 유사한 함수를 들 수 있습니다.
  • 비밀 패스워드 또는 패스워드(패스워드 베이스의 KDF)로부터 키를 취득한다.
  • 제공된 키와 다른 길이의 키를 도출하는 방법: 이를 위해 설계된 KDF의 한 예가 HKDF입니다.
  • 키 스트레칭과 키 강화.

키 스트레칭 및 키 강화

키 파생 함수는 일반적으로 암호 키로 직접 사용되는 원하는 속성을 가지지 않는 비밀 암호 또는 암호 구문에서 키를 파생하기 위해 응용 프로그램에서도 사용됩니다.이러한 어플리케이션에서는 일반적으로 패스워드 또는 패스프레이즈 입력값에 대한 브루트 포스 공격 또는 사전 공격을 저지하기 위해 키 파생 기능을 의도적으로 느리게 하는 것이 좋습니다.

이러한 용도는 DK = KDF(key, salt, repeations)로 나타낼 수 있으며, 여기서 DK는 파생키, KDF는 키 파생함수, KDF는 원본키 또는 비밀번호, salt암호염 역할을 하는 난수이며, salt는 하위함수의 반복 횟수를 의미한다.파생된 키는 원래 키 또는 비밀번호 대신 시스템의 키로 사용됩니다.salt 값 및 반복 횟수(고정되지 않은 경우)는 해시된 비밀번호로 저장되거나 암호화된 [9]메시지와 함께 클리어 텍스트(암호화되지 않음)로 전송됩니다.

반복 횟수에 따라 난이도가 높아집니다.반복 횟수에 대한 실질적인 제한은 사용자가 컴퓨터에 로그인하거나 복호화된 메시지를 볼 때 눈에 띄게 지연되는 것을 허용하지 않는 것입니다.salt를 사용하면 공격자가 파생된 [9]키의 사전을 미리 계산하는 것을 방지할 수 있습니다.

강화라고 불리는 대체 접근법은 임의의 소금으로 키를 연장하지만 (키 신장과는 달리)[10] 안전하게 소금을 삭제합니다.이로 인해 공격자와 정규 사용자 모두 salt [11]값에 대해 brute-force 검색을 수행합니다.[12] 스트레칭을 소개한 논문은 이 이전 기술을 언급하고 의도적으로 다른 이름을 선택했지만, "키 강화"라는 용어는 종종 키 스트레칭을 지칭하는 데 사용되고 있습니다(논쟁적으로 잘못되었을 수 있습니다.

패스워드 해시

KDF는 원래 키 파생 용도로 사용되었지만 패스워드 파일 또는 섀도 패스워드 파일에 사용되는 것과 같이 패스워드 해시(해시 비교에 의한 패스워드 검증)에 사용되는 것으로 더 잘 알려져 있습니다.패스워드 해시함수는 브루트포스 공격의 경우 계산 비용이 상대적으로 많이 들며 KDF의 키 스트레칭이 이 [citation needed]특성을 제공합니다.이 컨텍스트에서는 비시크릿 파라미터를 '솔트'라고 부릅니다.

2013년에는 새로운 표준 암호 해싱 알고리즘을 선택하기 위한 암호 해싱 대회가 발표되었습니다.2015년 7월 20일 대회가 종료되었고, 아르곤2가 최종 우승자로 발표되었다.Catena, Lyra2, Makwa 및 yescrypt의 [13]4가지 알고리즘은 특별한 인정을 받았습니다.

레퍼런스

  1. ^ Bezzi, Michele; et al. (2011). "Data privacy". In Camenisch, Jan; et al. (eds.). Privacy and Identity Management for Life. Springer. pp. 185–186. ISBN 9783642203176.
  2. ^ Kaliski, Burt; RSA Laboratories. "RFC 2898 – PKCS #5: Password-Based Cryptography Specification, Version 2.0". IETF.
  3. ^ Chen, Lily (October 2009). "NIST SP 800-108: Recommendation for Key Derivation Using Pseudorandom Functions". NIST.
  4. ^ Zdziarski, Jonathan (2012). Hacking and Securing IOS Applications: Stealing Data, Hijacking Software, and How to Prevent It. O'Reilly Media. pp. 252–253. ISBN 9781449318741.
  5. ^ Morris, Robert; Thompson, Ken (3 April 1978). "Password Security: A Case History". Bell Laboratories. Archived from the original on 22 March 2003. Retrieved 9 May 2011.
  6. ^ Goodin, Dan (10 September 2015). "Once seen as bulletproof, 11 million+ Ashley Madison passwords already cracked". Ars Technica. Retrieved 10 September 2015.
  7. ^ a b Grassi Paul A. (June 2017). SP 800-63B-3 – Digital Identity Guidelines, Authentication and Lifecycle Management. NIST. doi:10.6028/NIST.SP.800-63b.
  8. ^ Meltem Sönmez Turan, Elaine Barker, William Burr, and Lily Chen (December 2010). SP 800-132 – Recommendation for Password-Based Key Derivation, Part 1: Storage Applications (PDF). NIST. doi:10.6028/NIST.SP.800-132.{{cite book}}: CS1 maint: 여러 이름: 작성자 목록(링크)
  9. ^ a b "Salted Password Hashing – Doing it Right". CrackStation.net. Retrieved 29 January 2015.
  10. ^ 아바디, 마르틴, T. 마크 A로마스와 로저 니덤입니다"비밀번호 강화"디지털 시스템 리서치 센터, 테크Rep 33(1997): 1997.
  11. ^ U. Manber, "일방향 함수에 기반한 비밀번호를 만드는 간단한 방법", 컴퓨터 & 보안, v.15, n.2, 1996, 페이지 171~176.
  12. ^ 저엔트로피 키의 안전한 적용, J. Kelsey, B. 슈나이어, C과 D. 바그너(1997년)
  13. ^ "패스워드 해싱 경쟁"

추가 정보