AES state의 단계별 변화 축소 예시 16개 byte가 state에 들어간 뒤 SubBytes, ShiftRows, MixColumns, AddRoundKey를 거치며 값과 위치와 열의 관계가 바뀌는 과정을 보여준다. 16개 글자가 AES round 안에서 어떻게 달라질까요? 아래 문자와 색은 위치 변화를 보여 주기 위한 축소 모형입니다. 실제 AES는 각 byte를 0~255의 값으로 계산합니다. ① 입력 state 16 bytes를 4×4 표에 배치 A E I M B F J N C G K O D H L P A B C D가 첫 번째 열 E F G H가 두 번째 열 아직 값과 위치 모두 입력 그대로입니다. ② SubBytes 각 칸의 값만 치환 sA sE sI sM sB sF sJ sN sC sG sK sO sD sH sL sP sA는 “A를 S-box에서 찾아 얻은 새 byte”라는 뜻 자리 이동은 아직 없습니다. ③ ShiftRows 행마다 서로 다르게 회전 sA sE sI sM sF sJ sN sB sK sO sC sG sP sD sH sL 1행: 그대로 2·3·4행: 1·2·3칸 이동 값은 같지만 자리가 바뀝니다. ④ MixColumns 각 열의 네 값을 함께 혼합 M₁ M₂ M₃ M₄ M₁의 네 칸은 앞 단계의 첫 열 네 값 모두의 영향 작은 변화가 열 전체로 퍼집니다. ⑤ AddRoundKey 각 칸을 round key와 XOR M₁ K₁ = 새 state byte K₁은 이번 round에서 사용하는 key의 한 byte 이 단계를 거쳐 다음 round로 갑니다. 한 줄씩 다시 읽기 1. SubBytes: 각 사람에게 새 가면을 씌웁니다. 위치는 그대로이고 “값”만 달라집니다. 2. ShiftRows: 줄마다 다른 거리만큼 옆으로 이동시킵니다. 값은 그대로이고 “위치”가 달라집니다. 3. MixColumns: 한 세로줄의 네 재료를 함께 섞습니다. 이제 결과 한 칸이 여러 입력 값의 영향을 받습니다. 4. AddRoundKey: 이번 round의 비밀 열쇠 조각을 XOR합니다. 이 네 단계를 반복하며 원래 구조를 알아보기 어렵게 만듭니다.