한양과학기술고등학교

에듀테크 프로젝트 대시보드

AES 내부 구조

🔐 AES 내부 구조 — 한 라운드에서 무슨 일이 벌어질까

AES(Advanced Encryption Standard)는 오늘날 HTTPS·와이파이·디스크 암호화에 쓰이는 대칭키 블록 암호다. 평문을 128비트(16바이트) 블록으로 자르고, 각 블록을 4×4 바이트 상태 행렬로 놓은 뒤 SubBytes → ShiftRows → MixColumns → AddRoundKey 네 변환을 라운드마다 반복한다. AES-128은 총 10라운드(마지막 라운드는 MixColumns 생략). 아래에서 실제 AES-128 암호화를 한 스텝씩 따라가 보자.

1 상태 행렬을 직접 돌려보기

평문·키를 16글자 ASCII로 입력하면 바이트 → 4×4 행렬(열 우선)로 채운다. 다음 단계를 누를 때마다 변환이 하나씩 적용된다. 바뀐 칸은 주황색, 자리만 이동한 칸은 파란색으로 표시된다.

초기 상태 — 평문 바이트
라운드 0 / 10
현재 라운드 키
최종 암호문(hex)이 여기에 표시됩니다.

2 네 가지 변환

① SubBytes — 비선형 치환

각 바이트를 S-box라는 256칸 룩업 테이블로 바꾼다. S-box는 GF(2⁸) 곱셈 역원 + 어파인 변환으로 만들어져, 입력·출력 사이 선형 관계를 깨뜨린다. 예: 0x53 → 0xED. AES에서 유일하게 비선형인 단계라 차분·선형 공격을 막는 핵심.

② ShiftRows — 행 순환 이동

0행은 그대로, 1행은 왼쪽 1칸, 2행은 2칸, 3행은 3칸 순환 시프트. 한 열에 몰려 있던 바이트를 네 열로 흩어 확산(diffusion)을 만든다. 바이트 값은 그대로, 위치만 섞인다.

③ MixColumns — 열 단위 혼합

각 열(4바이트)을 GF(2⁸) 위 고정 행렬과 곱한다. 곱셈 계수는 2·3·1·1. 한 바이트가 바뀌면 그 열의 네 바이트가 모두 바뀐다 → 강한 확산. 마지막 10라운드에서는 생략된다.

④ AddRoundKey — 키와 XOR

상태 행렬을 라운드 키와 바이트별 XOR. 라운드 키는 원본 키를 키 확장(Key Expansion)으로 늘려 만든 11개(라운드 0~10) 중 하나. 유일하게 비밀키가 직접 개입하는 단계.

3 GF(2⁸) 곱셈과 MixColumns 코드

AES의 산술은 8비트를 다항식으로 본다. 곱셈은 x·b(왼쪽 시프트)에 오버플로가 나면 기약다항식 0x11B로 XOR 환원하는 xtime 연산의 조합이다.

# GF(2^8) 곱셈 — AES 기약다항식 x^8+x^4+x^3+x+1 (0x11B)
def xtime(b):
    b <<= 1
    if b & 0x100:
        b ^= 0x11B          # 8비트 넘으면 환원
    return b & 0xFF

def gmul(a, b):
    p = 0
    for _ in range(8):
        if b & 1: p ^= a
        a = xtime(a)
        b >>= 1
    return p

# MixColumns: 각 열에 [[2,3,1,1],[1,2,3,1],[1,1,2,3],[3,1,1,2]] 곱
def mix_column(c):
    return [
        gmul(c[0],2) ^ gmul(c[1],3) ^ c[2]        ^ c[3],
        c[0]        ^ gmul(c[1],2) ^ gmul(c[2],3) ^ c[3],
        c[0]        ^ c[1]        ^ gmul(c[2],2) ^ gmul(c[3],3),
        gmul(c[0],3) ^ c[1]        ^ c[2]        ^ gmul(c[3],2),
    ]

4 왜 아직도 안전할까

AES는 키 길이에 따라 AES-128(10라운드) · AES-192(12) · AES-256(14)가 있다. 2001년 표준 채택 이후 20년 넘게 실용적인 전수 공격보다 빠른 공격이 없다. 가장 알려진 공격도 AES-128을 약 2¹²⁶ 연산으로 깨는 수준으로, 전수 탐색(2¹²⁸)과 사실상 차이가 없다. 초당 10억×10억 개 키를 시험해도 우주의 나이보다 오래 걸린다. 실제 위협은 알고리즘이 아니라 구현(약한 난수·타이밍 부채널·ECB 모드 오용)에서 온다. GCM·CBC 같은 운용 모드와 안전한 IV 관리가 함께 필요하다.

데모는 표준 AES-128 암호화(ECB, 단일 블록)를 브라우저에서 그대로 계산합니다 · 교육용