AES 추가 라운드 키 (K0)의 중요성은 무엇입니까?

Nov 17 2020

AES에 대한 높은 수준의 개요는 Wikipedia에 있습니다.

  1. 키 확장;
  2. 초기 라운드 키 추가;
  3. 9, 11 또는 13 라운드;
  4. 최종 라운드 (총 10, 12 또는 14 라운드 만들기).

키 확장으로 알려진 2 단계를 제외한 모든 단계를 이해할 수 있습니다 .

키 확대 단계의 중요성은 무엇입니까? AES의 전반적인 보안에 어떻게 기여합니까? 이 단계의 중요성은 무엇이며 AES의 전반적인 보안에 어떻게 기여합니까?

[편집] 암호화를 재귀 적으로 구현하는 데 도움이된다고 들었지만 이것이 어떻게 가능한지 알 수 없습니다. 이것은 암호화가 시작되고 해독이 끝날 때만 수행되기 때문입니다. 재귀 함수에서 이것을 구현하면 각 라운드가 2 개의 키로 입력을 XOR하게됩니다.

그렇다면이 초기 추가 키 단계의 이점은 정확히 무엇입니까?

답변

1 fgrieu Nov 17 2020 at 06:00

AES-128은 10 라운드로 구성됩니다. 각 라운드에는 공개 순열 (MixColumns가 생략 된 마지막 라운드를 제외하고 공용 순열 SubByte ShiftRows MixColumns의 구성으로 구성됨)과 비밀 변형 AddRoundKey (키 종속 및 라운드 종속 값이있는 XOR로 구성됨)가 포함됩니다. 첫 라운드, 라운드 중간 및 마지막 라운드 이후. 따라서 11 개의 AddRoundKey가 있습니다. 질문은 왜 첫 번째 AddRoundKey입니까?

첫 번째 AddRoundKey가 없으면 첫 번째 라운드의 공개 순열이 일반 텍스트에서 작동하므로 알려진 일반 텍스트와 관련된 공격에서 암호화 가치가 없습니다.

가장 기본적인 공격 인 알려진 일반 텍스트 / 암호문 쌍으로 무차별 대입 키 검색을 고려하십시오. 첫 번째 AddRoundKey를 사용하면 첫 번째 공개 변환의 입력이 각 키에 대해 변경되고 공격자는 테스트 된 각 키에 대해 해당 순열을 계산해야하며 테스트 된 각 키에 대해 출력이 매우 다릅니다. 그러나 첫 번째 AddRoundKey가 없으면 첫 번째 공개 순열의 출력은 적대자가 무시할 수있는 비용으로 한 번 계산할 수있는 상수입니다. 기본적으로 한 라운드의 AES가 낭비됩니다.


추가 : 마지막 AddRoundKey는 같은 이유로 여기에 있습니다. 마지막 라운드의 MixColumns가 제거되었습니다. 존재한다면 마지막 라운드의 MixColumns와 마지막 AddRoundKey (마지막 하위 키의 선형 변환 후)를 교환 할 수 있고 마지막 라운드의 MixColumns는 공개 순열이됩니다. 암호문에서 작동하므로 암호화 값이 없습니다.


추가 : "첫 번째 AddRoundKey가 암호화를 재귀 적으로 구현하는 데 도움이된다"는 주장에 대한 내용이 없습니다.