AES 암호화란 무엇인가요?
암호학에서 AES는 미국 국립표준기술연구소(NIST)가 인증한 빠르고 효율적이며 안전한 암호화 알고리즘인 고급 암호화 표준(Advanced Encryption Standard)을 의미합니다. 이는 동일한 키를 사용하여 데이터를 암호화하고 복호화하는 대칭 키 암호입니다. 이는 비교적 신속하여 유휴 상태의 대량 데이터를 암호화하는 데 이상적입니다.
강력함과 신뢰성 덕분에 AES는 무선 네트워크 보안, 데이터 및 디스크 암호화, 온라인 결제 시스템, 클라우드 저장공간, 비밀번호 관리, 심지어 정부 및 군사 어플리케이션에 이르기까지 가장 대중적이고 흔하게 사용되는 암호화 유형 중 하나입니다. 미국 정부는 기밀 정보를 보호하기 위해 AES 암호화를 사용하며, 이는 AES가 대중화되는 데 기여했습니다.

AES 알고리즘은 안전한가요?
네. 2000년, 매우 철저하고(새 창) 공개적인 선정 과정을 거친 후, NIST는 AES(그전까지는 빈센트 라이먼(Vincent Rijmen)과 조안 대먼(Joan Daemen)이 개발한 라인달(Rijndael) 알고리즘으로 알려짐)가 "다음 세기까지 민감한 정부 정보를 충분히 보호할 수 있는 대중에 공개된 비기밀 암호화 알고리즘"으로 DES를 대체하여 자사의 권장(새 창) 알고리즘이 될 것이라고 발표했습니다.
NIST에 따르면, 모든 AES 알고리즘 키 길이는 "비밀(Secret)" 등급까지의 기밀 정보를 보호하는 데 "충분한" 것으로 간주됩니다. "일급 비밀(Top Secret)" 정보의 경우, AES-192 또는 AES-256이 필요합니다.

무차별 대입 공격
암호화 알고리즘에 가할 수 있는 가장 기본적인 형태의 공격은 올바른 키를 찾을 때까지 가능한 모든 키 조합을 시도하는 무차별 대입 공격(brute-force attack)입니다.
Frontier(새 창)는 대중에게 알려진 세계에서 가장 강력한 슈퍼컴퓨터입니다. 이 컴퓨터의 모든 출력을 AES-128 무차별 대입 공격에 집중하더라도, AES-128의 가능한 모든 조합을 남김없이 대입하는 데는 여전히 10조~12조 년가량이 필요합니다. 이는 우주의 나이보다 훨씬 긴 시간입니다. 따라서 더 낮은 비트 크기에서도 AES는 기존 컴퓨터의 무차별 대입 공격에 대한 저항력이 매우 높습니다.
AES-256은 무차별 대입 공격을 가하기가 AES-128보다 3,400억의 4제곱(2¹²⁸) 배 더 어렵습니다.
이론적으로 그로버 알고리즘(Grover’s algorithm)(새 창)은 양자 위협에 대응하는 대칭 키의 보안성을 절반으로 감소시키지만, 대칭 키는 특히 256비트 키를 사용할 때 여전히 상대적으로 양자 내성이 강한 편입니다.
키 공격
수년 동안 암호학자들은 AES 키에 대한 여러 이론적 공격을 발표했지만, 이들 모두는 실제로는 실행이 불가능하거나 라운드 수를 줄여 사용하는 AES 구현에서만 효과적입니다(아래 참조).
가장 성공적인 시도는 2011년에 발표된 이론적 바이클리크 공격(새 창)으로, AES를 무차별 대입하는 데 필요한 시간을 4분의 1로 줄일 수 있습니다. 하지만 현재 또는 가까운 미래에 예상되는 어떤 컴퓨터 하드웨어로도 AES를 무차별 대입하려면 여전히 수십억 년이 필요합니다.
올바르게 구현된 AES-128 이상에 대해 실용적인 알려진 키 공격은 없습니다.
사이드 채널 공격
사이드 채널 공격은 암호화 계산을 수행하는 컴퓨터에서 단서를 찾아, 성공적인 무차별 대입 공격에 필요한 조합 수를 줄이려는 시도입니다. 다음을 조사하면 단서를 얻을 수 있습니다:
- 타이밍 - 컴퓨터가 작업을 수행하는 데 걸리는 시간
- 전자기 유출
- 오디오 신호
- 시각적 단서(고해상도 카메라를 사용해 포착).
특히 캐시 타이밍 공격은 AES를 성공적으로 해독하는 데 매우 효과적인 것으로 입증되었습니다. 가장 주목할 만한 사례로, 2016년 연구진은 “약 6~7개의 서식 없는 텍스트 블록 또는 암호문만으로도(이론적으로는 단일 블록이면 충분)” AES-128 키를 복구(새 창)할 수 있었습니다.
하지만 사이드 채널 공격의 위협을 완화하기 위해 할 수 있는 일도 많이 있습니다:
- 올바르게 구현된 AES는 데이터가 유출될 수 있는 경로를 방지할 수 있습니다.
- AES 명령어 세트를 통합한 하드웨어는 AES의 사이드 채널 공격 표면을 더욱 줄입니다.
- 무작위화 기법을 사용하면 AES로 보호되는 데이터와 사이드 채널 공격으로 수집될 수 있는 유출된 데이터 사이의 관계를 교란할 수 있습니다.
많은 경우 사이드 채널 공격은 기기가 데이터를 복호화하는 동안 공격자가 그 기기에 가까이 있거나 물리적으로 접근해야 하지만, 특히 타이밍 공격의 경우 기기에 악성 소프트웨어가 설치되어 있으면 원격 공격도 가능합니다.
AES의 작동 방식
AES는 128비트, 192비트 또는 256비트 키를 사용해 데이터를 128비트 블록 단위로 암호화하고 복호화하는 블록 암호입니다. 앞서 언급했듯이, 데이터를 암호화하고 복호화할 때는 동일한 키가 사용됩니다. 128비트 키를 사용하는 AES는 흔히 AES-128이라고 하며, AES-192 및 AES-256도 마찬가지입니다.

데이터는 여러 라운드를 거쳐 암호화되며, 각 라운드는 일련의 수학적 연산으로 구성됩니다.
이 프로세스는 원래의 비밀 키에서 일련의 새로운 라운드 키를 도출하기 위해 라인달(Rijndael)의 키 스케줄 알고리즘을 사용하는 것으로 시작합니다. 이를 키 확장이라고 합니다.
그 후 각 라운드는 다음 연산 중 하나 이상(또는 이들의 조합)으로 구성됩니다.
1. 라운드 키 더하기(Add Round Key): 암호화할 데이터(암호문)를 각 라운드 키와 결합하기 위해 XOR 연산(새 창)을 수행합니다.

2. Sub Bytes: 치환 테이블을 사용해 데이터를 더 복잡하게 섞습니다. 원리상으로는, 어린 시절 사용했던 단순 치환 암호를 떠올리면 됩니다. 메시지의 각 문자를 알파벳에서 일정 수만큼 뒤에 있는 다른 문자로 바꾸는 방식입니다.

3. Shift Rows: 각 128비트 데이터 블록은 16비트 4x4 블록으로 구성됩니다. 이 작업은 블록 행의 각 바이트를 특정 오프셋만큼 왼쪽으로 이동시킵니다.

4. 열 섞기(Mix Columns): 블록의 각 열에 추가적인 가역 선형 변환을 수행합니다.

이 일련의 변환이 한 라운드를 구성하며, 이후 키 크기에 따라 정해진 횟수만큼 데이터에 반복됩니다:
- AES-128 — 10라운드
- AES-192 — 12라운드
- AES 256 — 14라운드
데이터를 복호화하려면, 이를 암호화할 때 사용된 모든 단계를 단순히 역순으로 수행하면 됩니다. 이를 위해서는 각 역 라운드 키를 사용해 과정을 되돌릴 원래의 비밀 키가 필요합니다.
왜 AES-256이 AES-192 또는 AES-128보다 선호되나요?
현재 및 예측 가능한 기술 수준을 고려할 때, AES-128을 무차별 대입 공격하는 데는 우주의 나이보다 더 오랜 시간이 걸릴 것입니다. 전설적인 암호학자인 브루스 슈나이어(Bruce Schneier)는 AES-128이 더 강력한 키 스케줄(원래의 비밀 키로부터 모든 라운드 키를 계산하는 알고리즘)을 가지고 있기 때문에 AES-256보다 더 강력할 수 있다고 주장(새 창)하기도 했습니다.
하지만 AES-256은 대칭 키 암호화의 사실상의 황금 표준으로 자리 잡았습니다. 키 크기가 더 클수록 보안 마진이 추가되어, 알고리즘을 극적으로 약화하는 방법이 발견되더라도 암호화된 데이터가 안전하게 유지될 수 있으므로 (다소 논란의 여지는 있으나) 종종 더 강력한 선택지로 여겨집니다. 양자 내성의 필요성이 더욱 절실해짐에 따라 이러한 주장은 더욱 힘을 얻고 있습니다.
AES-CBC와 AES-GCM 비교
비교적 최근까지 AES는 보통 CBC(암호 블록 체이닝) 모드에서 사용되었으며, 이 모드에서는 각 서식 없는 텍스트 블록이 암호화되기 전에 이전 암호문 블록과 XOR됩니다. CBC 모드에서 사용할 때는 데이터를 검증하기 위해 HMAC-SHA256과 같은 HMAC(새 창) 해싱 알고리즘이 필요합니다.
하지만 점점 더 많은 경우 AES는 카운터 모드(새 창) 암호화를 사용하는 Galois/counter(GCM) 모드로 사용되고 있습니다. 주요 장점은 외부 알고리즘 없이 데이터를 검증하기 위해 갈루아 필드(새 창)를 사용한다는 점입니다. 따라서 높은 계산 오버헤드가 있을 수 있는 별도의 인증 알고리즘을 사용하는 것보다 더 효율적입니다.
HMAC 인증을 사용하는 AES-CBC는 일반적으로 안전한 것으로 여겨지지만, CBC는 POODLE(새 창)과 같은 패딩 공격(새 창)에 잠재적으로 취약합니다. GCM은 그렇지 않습니다.
하드웨어 가속 AES
대부분의 최신 CPU에는 프로세서에서 직접 AES 연산을 수행하는 하드웨어 명령어 집합인 Advanced Encryption Standard New Instructions(AES-NI(새 창))가 포함되어 있습니다. 덕분에 AES 성능이 훨씬 빨라질 뿐만 아니라, 연산이 프로세서의 안전한 실행 장치 내부에서 이루어지므로 공격자가 악용할 수 있는 관찰 가능한 타이밍 변화가 줄어들어 타이밍 기반 부채널 공격(side-channel attack)을 예방하는 데 도움이 됩니다.
Proton과 AES
Proton은 Proton 제품을 보호하기 위해 AES를 광범위하게 사용합니다:
Proton VPN은 주로 빠르고 효율적인 WireGuard® VPN 프로토콜(ChaCha20 사용)에 중점을 두지만, OpenVPN 연결은 AES-256을 사용합니다.
Proton Drive는 키 교환에 ECC를 사용하여 업로드된 모든 파일을 AES-256으로 종단 간 암호화합니다. Proton Docs와 Proton Sheets도 ECC 기반 키 교환과 함께 AES-256을 사용하지만, 해당 암호화 구현은 Proton Drive의 일반적인 파일 암호화 방식과는 다릅니다.
Proton Mail은 OpenPGP 표준을 통해 AES-256을 사용하여 이메일과 첨부 파일을 저장합니다. 이메일의 잠금을 해제하는 귀하의 비밀 키조차 서버에 저장되기 전에 AES-256으로 암호화됩니다.
Proton Meet는 Messaging Layer Security(MLS)를 사용하여 오디오, 비디오 및 채팅 메시지를 암호화하며, 모든 통신에 대해 순방향 비밀성(PFS)과 사후 침해 보안(PCS)을 보장합니다. 모든 회의 데이터는 AES-256-GCM을 사용해 종단간 암호화됨 상태로 보호됩니다.
데이터 관리하기
Proton은 처음부터 귀하의 데이터를 보호하기 위해 구축되었습니다. 종단 간 암호화, 오픈 소스 앱, 독립적인 감사를 통해 귀하의 정보는 귀하만의 것으로 남습니다.
AES 암호화에 관해 자주 묻는 질문
- AES와 DES 중 어느 것이 더 나은가요?
- AES와 RSA 중 어느 것이 더 나은가요?
- AES 보안은 얼마나 강력한가요?


