TLS 동안 세션 키의 값이 양쪽에서 동일합니까?
핸드 셰이크 단계의 마지막 단계에서 생성 된 세션 키에 대해 두 가지 질문이 있습니다.
"클라이언트 쓰기 키"와 "서버 쓰기 키"는 두 키가 양쪽에서 독립적으로 생성되지만 동일한 값을 가지고 있습니까?
(동일한 질문) "client write MAC key"와 "server write MAC key"도 같은 값을 가지고 있습니까?
일반적인 질문 : 클라이언트와 서버가 세션 키를 생성하는 동안 동일한 결과에 도달합니까?
답변
"클라이언트 쓰기 키"와 "서버 쓰기 키"는 두 키가 양쪽에서 독립적으로 생성되지만 동일한 값을 가지고 있습니까?
아니요, 다음 답변을 참조하십시오.
암호화 키의 경우 메시지가 어쨌든 MAC이므로 중요하지 않습니다. 그러나 TLS 1.2 내에서 그리고 MAC-then-encrypt가 사용되기 전에는 원치 않는 취약성이 노출 될 수 있습니다. 예를 들어 발신자가 오라클 공격에 취약한 경우 동일한 키가 사용될 때이를 사용하여 메시지를 해독 할 수 있습니다. 이것은 패딩 오라클 공격이 처음에 계획되지 않았기 때문에 키 분리가 항상 좋은 생각임을 보여줍니다.
(동일한 질문) "client write MAC key"와 "server write MAC key"도 같은 값을 가지고 있습니까?
아니요, 보낸 사람이 자신의 메시지를 다시 재생할 수 없도록 의도적으로 달라집니다. 기본적으로 KDF (TLS 1.2 용어의 PRF)는 각 키에 대해 다른 레이블을 사용합니다. 즉, 각 파생 키는 단방향 기능을 사용하는 마스터 키에만 종속된다는 것을 의미합니다.
일반적인 질문 : 클라이언트와 서버가 세션 키를 생성하는 동안 동일한 결과에 도달합니까?
예, 그렇습니다. 그러나 그들은 단순히 각 특정 키에 대해 동일한 값으로 끝납니다 . 클라이언트와 서버는 동일한 마스터 비밀을 파생 한 다음 특정 키에 대해 동일한 레이블을 계속 사용합니다. 따라서 양쪽 모두 "클라이언트 쓰기 키"를 가지지 만 서버는이 키를 사용하여 메시지를 해독합니다.