키 유도함수 (Key Derivation Function)
쉽게 풀면
사람이 만든 비밀번호는 길이가 짧고 패턴이 예측 가능해서 그대로 암호 키로 쓰기에는 안전하지 않습니다. 키 유도함수는 이런 약한 입력값을 반복적인 연산 과정을 거쳐 충분히 무작위하고 긴 암호 키로 바꿔주는 역할을 합니다. 같은 입력을 넣으면 항상 같은 키가 나오지만, 입력값을 모르는 사람은 결과 키를 추측하기 매우 어렵습니다. 무작위한 값을 추가로 섞어 공격자가 미리 계산해 둔 표를 이용하지 못하게 막는 기법도 함께 사용됩니다. 키유도함수는 비밀번호처럼 상대적으로 짧고 추측 가능한 값으로부터, 암호화에 실제로 사용할 수 있는 충분히 길고 무작위에 가까운 암호키를 만들어내는 함수입니다.
왜 중요한가
키 유도함수는 사용자가 기억하기 쉬운 비밀번호를 안전한 암호 키로 변환해야 하는 거의 모든 인증 시스템에서 사용되기 때문에 정보보안학에서 중요하게 다루어집니다. 로그인 시스템, 파일 암호화 도구, 암호화폐 지갑 등 다양한 곳에서 활용됩니다. 연산 비용을 의도적으로 높여 무차별 대입 공격에 걸리는 시간을 늘리는 설계 원칙도 이 분야의 핵심 연구 주제입니다. 사용자가 직접 기억하는 비밀번호는 암호키로 그대로 쓰기에는 예측 가능성이 높아 안전하지 않기 때문에, 키유도함수는 사용성과 암호학적 안전성 사이의 간극을 메워주는 실무적으로 필수적인 요소로 쓰입니다.
논문에서는 이렇게 쓰입니다
키 유도함수의 계산 비용이 공격 저항성과 직결됨을 보여주는 사례입니다.
비밀번호를 그대로 저장하지 않고 키 유도함수를 거쳐 안전하게 보관하는 실무적 활용 사례입니다.
조금 더 깊게 보면
대표적인 키 유도함수로는 PBKDF2, scrypt, Argon2 등이 있으며, 이들은 해시 연산을 반복하거나 메모리 사용량을 늘리는 방식으로 공격자의 계산 비용을 높입니다. 최신 방식일수록 전용 하드웨어를 이용한 병렬 공격에 더 강한 저항성을 갖도록 설계되는 경향이 있습니다. 키유도함수는 무작위 값인 솔트를 추가해 동일한 비밀번호라도 서로 다른 결과값이 나오게 하고, 연산을 의도적으로 반복시켜 계산 비용을 높임으로써 무차별 대입 공격의 속도를 늦추는 방식으로 설계됩니다.
주의할 점
키 유도함수를 사용하더라도 원래 입력값 자체가 지나치게 단순하거나 예측 가능하면 안전성이 크게 떨어질 수 있습니다.