AES-256 암호화란? 작동 방식 설명
AES-256은 미국 정부가 극비 데이터에 사용하는 암호화 표준입니다.
AES-256은 고급 암호화 표준(Advanced Encryption Standard)으로, 256비트 키를 사용하는 블록 암호입니다. 이는 2001년 NIST(미국 국립표준기술원)가 채택한 표준으로, 현재 iPhone 앱부터 미국 정부 분류 시스템까지 모든 곳에서 사용됩니다. "256"은 키 길이를 비트로 표현한 것으로, 2의 256제곱 가지 가능한 키 조합이 있음을 의미합니다. 이 숫자는 관측 가능한 우주의 원자 수보다 훨씬 큽니다.
AES-256의 작동 원리
AES는 블록 암호입니다. 데이터를 128비트(16바이트) 블록으로 처리합니다. 각 블록은 키를 기반으로 일련의 수학적 변환을 통해 암호화됩니다. AES-256의 경우 14라운드의 변환이 있습니다. 각 라운드는 네 가지 연산으로 구성됩니다.
| 연산 | 기능 |
|---|---|
| SubBytes | 각 바이트를 사전 계산된 치환 테이블(S-box)의 다른 값으로 교체합니다. |
| ShiftRows | 블록의 행을 순환 이동합니다. |
| MixColumns | 블록의 각 열에 갈루아 체 연산을 적용합니다. |
| AddRoundKey | 현재 라운드 키를 블록에 XOR 연산합니다. |
결과는 원본 데이터와 무관하게 보이는 암호문입니다. 키 없이는 이 과정을 되돌리는 것이 수학적으로 불가능합니다.
키 크기가 중요한 이유
AES는 128, 192, 256비트의 세 가지 키 크기를 지원합니다. 키가 길수록 가능한 키 조합이 지수적으로 늘어납니다.
| 키 크기 | 가능한 키 수 | 사용 사례 |
|---|---|---|
| AES-128 | 2128 (~3.4 × 1038) | 기밀 수준 미국 정부 데이터 |
| AES-192 | 2192 (~6.3 × 1057) | 드물게 사용됨 |
| AES-256 | 2256 (~1.2 × 1077) | 극비 수준, 사진 보관함, 암호화 앱 |
브루트 포스 공격(모든 가능한 키를 시도하는 것)의 경우 AES-256에는 현재 알려진 모든 컴퓨터 하드웨어로도 수십억 년이 걸립니다.
AES-256-GCM: 인증이 추가된 이유
대부분의 현대 구현에서 AES-256은 GCM(갈루아/카운터 모드)과 함께 사용되어 AES-256-GCM이 됩니다. GCM은 두 가지 작업을 수행합니다.
- 암호화. CTR(카운터) 모드를 사용하여 데이터를 암호화합니다.
- 인증. 암호화된 데이터와 함께 저장되는 인증 태그를 생성합니다.
복호화 시 GCM은 태그를 확인합니다. 암호화된 데이터의 단 한 비트만 변경되어도 복호화가 실패하여 손상된 출력 대신 오류를 반환합니다. 이는 데이터가 저장 중에 변조되거나 손상되더라도 앱이 이를 감지한다는 것을 의미합니다.
초기화 벡터(IV)의 역할
동일한 키로 동일한 파일을 두 번 암호화하면 다른 암호문이 생성됩니다. 이는 초기화 벡터(IV) 덕분입니다. IV는 각 암호화 작업마다 무작위로 생성되는 고유한 값입니다. IV가 없으면 동일한 평문이 항상 동일한 암호문을 생성하여 패턴 분석 공격에 취약해집니다.
Vaultaire에서는 각 파일이 고유한 IV로 암호화됩니다. 두 사진이 동일하더라도 암호화된 버전은 구별할 수 없습니다.
키 파생: 패스워드에서 암호화 키로
AES-256은 256비트 키가 필요합니다. 사람들은 256비트 패스워드를 기억하지 못합니다. 키 파생 함수(KDF)가 이 간격을 연결합니다.
PBKDF2(Password-Based Key Derivation Function 2)는 이 목적을 위해 가장 널리 사용되는 알고리즘입니다. 동작 방식은 다음과 같습니다.
- 사용자 자격증명(패스워드, 패턴)을 받습니다.
- 고유한 무작위 솔트를 추가합니다.
- 결합된 값을 수십만 번 해시합니다(Vaultaire의 경우 HMAC-SHA512로 600,000번).
- 256비트 키를 출력합니다.
반복 횟수가 많으면 각 패스워드 추측이 느려집니다. 공격자가 초당 수십억 번의 추측을 할 수 있는 GPU를 사용하더라도 PBKDF2는 각 추측에 0.1초 이상이 걸리도록 합니다. 이는 실질적인 브루트 포스 공격을 막습니다.
Vaultaire가 AES-256-GCM을 사용하는 방법
Vaultaire는 모든 저장된 사진과 파일에 AES-256-GCM을 적용합니다. 구현 방식은 다음과 같습니다.
- 키 파생. 사용자의 패턴이 PBKDF2(HMAC-SHA512, 600,000회 반복)를 통해 256비트 키로 변환됩니다. 패턴 자체는 어떤 형태로도 저장되지 않습니다.
- 파일 암호화. 각 파일은 파일 고유의 IV를 사용하여 AES-256-GCM으로 암호화됩니다.
- 메타데이터 암호화. 파일 이름, 날짜, 미리보기 이미지가 ChaCha20으로 별도로 암호화됩니다.
- 키 관리. Apple Secure Enclave가 키 자료를 저장합니다. 앱이 닫히거나 사용자가 잠금을 실행하면 키가 메모리에서 지워집니다.
전체 구현은 보안 아키텍처 페이지에 문서화되어 있습니다.
자주 묻는 질문
AES-256은 해독할 수 없나요?
현재 기술로는 사실상 해독할 수 없습니다. 가능한 키의 수(2의 256제곱)는 너무 많아서 우주에 존재하는 모든 컴퓨터를 동원해도 수십억 년이 걸립니다. 현실적인 위협은 키 자체에 대한 것이 아니라 키가 도난당하거나 패스워드가 추측되는 경우입니다.
AES-128과 AES-256의 차이점은 무엇인가요?
키 길이입니다. AES-128은 128비트 키(2의 128제곱 가지 가능성)를 사용하고, AES-256은 256비트 키(2의 256제곱 가지 가능성)를 사용합니다. AES-256은 또한 라운드 수가 더 많습니다(10 대 14). 현재 알려진 공격에 대해 두 버전 모두 안전합니다. AES-256은 극비 수준 데이터에 대한 미국 정부 기준입니다.
GCM은 무엇이며 왜 중요한가요?
GCM(갈루아/카운터 모드)은 AES와 함께 사용되는 운영 모드입니다. 데이터를 암호화하는 동시에 인증 태그를 생성하여 데이터 무결성을 보장합니다. 암호화된 데이터의 비트 하나만 변경되더라도 복호화가 실패합니다. 이는 데이터 손상과 변조 공격을 모두 탐지합니다.
키 파생이란 무엇인가요?
키 파생은 패스워드나 패턴 같은 사람이 기억할 수 있는 자격증명을 암호화 키로 변환하는 과정입니다. 이 과정에서 PBKDF2나 Argon2 같은 알고리즘이 자격증명에 솔트를 결합하고 수십만 번 해시하여 256비트 키를 생성합니다. 반복 과정은 패스워드 추측을 계산적으로 비싸게 만듭니다.
양자 컴퓨터가 AES-256을 깰 수 있나요?
Grover 알고리즘을 사용하는 양자 컴퓨터는 대칭 암호화의 유효 키 강도를 절반으로 줄일 수 있으므로, AES-256은 AES-128 수준의 강도를 갖게 됩니다. 이것이 바로 NIST가 후양자 시대를 위해 AES-128이 아닌 AES-256을 권장하는 이유입니다. 현재 양자 컴퓨터는 실제 AES-256을 공격할 능력이 없습니다.