키 유도함수 (Key Derivation Function)

정보보안학
한 줄 정의: 비밀번호나 공유된 비밀값 같은 입력으로부터 암호학적으로 안전한 키를 만들어내는 함수입니다.

쉽게 풀면

사람이 만든 비밀번호는 길이가 짧고 패턴이 예측 가능해서 그대로 암호 키로 쓰기에는 안전하지 않습니다. 키 유도함수는 이런 약한 입력값을 반복적인 연산 과정을 거쳐 충분히 무작위하고 긴 암호 키로 바꿔주는 역할을 합니다. 같은 입력을 넣으면 항상 같은 키가 나오지만, 입력값을 모르는 사람은 결과 키를 추측하기 매우 어렵습니다. 무작위한 값을 추가로 섞어 공격자가 미리 계산해 둔 표를 이용하지 못하게 막는 기법도 함께 사용됩니다.

왜 중요한가

키 유도함수는 사용자가 기억하기 쉬운 비밀번호를 안전한 암호 키로 변환해야 하는 거의 모든 인증 시스템에서 사용되기 때문에 정보보안학에서 중요하게 다루어집니다. 로그인 시스템, 파일 암호화 도구, 암호화폐 지갑 등 다양한 곳에서 활용됩니다. 연산 비용을 의도적으로 높여 무차별 대입 공격에 걸리는 시간을 늘리는 설계 원칙도 이 분야의 핵심 연구 주제입니다.

논문에서는 이렇게 쓰입니다

"본 연구는 다양한 키 유도함수의 반복 횟수에 따른 무차별 대입 공격 소요 시간을 비교 분석하였다."

키 유도함수의 계산 비용이 공격 저항성과 직결됨을 보여주는 사례입니다.

"제안된 인증 시스템은 사용자 비밀번호를 키 유도함수로 변환한 후 저장하여 데이터베이스 유출 시의 피해를 줄인다."

비밀번호를 그대로 저장하지 않고 키 유도함수를 거쳐 안전하게 보관하는 실무적 활용 사례입니다.

조금 더 깊게 보면

대표적인 키 유도함수로는 PBKDF2, scrypt, Argon2 등이 있으며, 이들은 해시 연산을 반복하거나 메모리 사용량을 늘리는 방식으로 공격자의 계산 비용을 높입니다. 최신 방식일수록 전용 하드웨어를 이용한 병렬 공격에 더 강한 저항성을 갖도록 설계되는 경향이 있습니다.

주의할 점

키 유도함수를 사용하더라도 원래 입력값 자체가 지나치게 단순하거나 예측 가능하면 안전성이 크게 떨어질 수 있습니다.

관련 용어