암호 기술의 기초와 응용
TLS 1.3 등의 프로토콜에서 ECDHE 키 교환으로 얻은 공유 비밀을 그대로 암호 키로 사용하지 않고, HKDF 같은 키 유도 함수(KDF)를 거쳐 키를 만드는 이유로 적절한 것은?
- A키 유도 함수를 거치면 양자 컴퓨터에 대해서도 공유 비밀이 안전해지기 때문에
- B키 교환으로 얻은 값은 너무 짧으므로, 일부러 계산에 시간을 들여 무차별 대입을 늦추기 위해
- C키 교환으로 얻은 값은 균일한 난수라고 할 수 없으므로, 치우침 없는 키로 변환하고 용도별로 다른 키를 꺼내기 위해
정답과 해설 보기
정답: C. 키 교환으로 얻은 값은 균일한 난수라고 할 수 없으므로, 치우침 없는 키로 변환하고 용도별로 다른 키를 꺼내기 위해
키 교환으로 얻어지는 공유 비밀은 타원 곡선 위의 점의 좌표 등으로, 모든 비트가 균일하게 무작위라고는 할 수 없습니다. HKDF는 HMAC을 사용해 먼저 공유 비밀로부터 치우침 없는 의사 난수 키를 추출하고(Extract), 다음으로 이를 '클라이언트에서 서버로의 암호화용' 같은 레이블과 함께 확장하여(Expand) 필요한 개수와 길이의 키를 만듭니다. 용도별로 독립된 키를 사용하면 하나의 키에 생긴 문제가 다른 용도로 번지기 어려워집니다. 비밀번호로부터 키를 만드는 PBKDF2나 Argon2는 일부러 계산을 무겁게 하지만, HKDF는 엔트로피가 충분히 큰 입력을 전제로 한 가벼운 처리입니다.