암호 기술의 기초와 응용

TLS 1.3 등의 프로토콜에서 ECDHE 키 교환으로 얻은 공유 비밀을 그대로 암호 키로 사용하지 않고, HKDF 같은 키 유도 함수(KDF)를 거쳐 키를 만드는 이유로 적절한 것은?

  1. A키 유도 함수를 거치면 양자 컴퓨터에 대해서도 공유 비밀이 안전해지기 때문에
  2. B키 교환으로 얻은 값은 너무 짧으므로, 일부러 계산에 시간을 들여 무차별 대입을 늦추기 위해
  3. C키 교환으로 얻은 값은 균일한 난수라고 할 수 없으므로, 치우침 없는 키로 변환하고 용도별로 다른 키를 꺼내기 위해
정답과 해설 보기

정답: C. 키 교환으로 얻은 값은 균일한 난수라고 할 수 없으므로, 치우침 없는 키로 변환하고 용도별로 다른 키를 꺼내기 위해

키 교환으로 얻어지는 공유 비밀은 타원 곡선 위의 점의 좌표 등으로, 모든 비트가 균일하게 무작위라고는 할 수 없습니다. HKDF는 HMAC을 사용해 먼저 공유 비밀로부터 치우침 없는 의사 난수 키를 추출하고(Extract), 다음으로 이를 '클라이언트에서 서버로의 암호화용' 같은 레이블과 함께 확장하여(Expand) 필요한 개수와 길이의 키를 만듭니다. 용도별로 독립된 키를 사용하면 하나의 키에 생긴 문제가 다른 용도로 번지기 어려워집니다. 비밀번호로부터 키를 만드는 PBKDF2나 Argon2는 일부러 계산을 무겁게 하지만, HKDF는 엔트로피가 충분히 큰 입력을 전제로 한 가벼운 처리입니다.

이 분야 연습하기 분야로 돌아가기

암호 기술의 기초와 응용의 다른 문제

  1. RSA 암호의 구조를 작은 수로 확인한다. 소수 p = 5, q = 11로부터 n = pq를 만들고, 공개 지수를 e = 3으로 한다. φ(n) = (p − 1)(q − 1)이라 할 때, e × d ≡ 1 (mod φ(n))을 만족하는 비밀 지수 d(0 < d < φ(n))는?
  2. RSA 암호에서 공개 키를 n = 55, e = 3으로 한다. 평문 m = 7을 c = m^e mod n으로 암호화했을 때의 암호문 c는?
  3. 교과서 그대로의 RSA 암호(평문 m을 그대로 c = m^e mod n으로 하는 방식)를 패딩을 붙이지 않고 실제 통신에 사용하는 것의 문제점으로 올바른 것은?
  4. 디피-헬먼 키 교환에서는 소수 p와 생성원 g를 공개하고, A 씨와 B 씨가 각각 비밀 값 a, b를 골라 g^a mod p와 g^b mod p를 서로 보낸다. 도청자가 이렇게 공개된 값을 모두 보더라도 공유 비밀 g^(ab) mod p를 구할 수 없다고 생각되는 이유로 올바른 것은?
  5. 디피-헬먼 키 교환을 작은 수로 확인한다. p = 23, g = 5로 하고, A 씨는 비밀 값 a = 6, B 씨는 비밀 값 b = 15를 고른다. A 씨는 A = g^a mod p를, B 씨는 B = g^b mod p를 서로 보낸다. 두 사람이 얻는 공유 비밀은?