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

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

무차별 대입 공격
모든 암호화 암호에 대해 가능한 가장 기본적인 공격 형태는 무차별 대입 공격이며, 이는 올바른 키를 찾을 때까지 가능한 모든 키 조합을 시도하는 방식입니다.
Frontier(새 창)는 공개적으로 알려진 세계에서 가장 강력한 슈퍼컴퓨터입니다. 이 슈퍼컴퓨터가 전체 연산 능력을 AES-128 무차별 대입에만 사용하더라도, AES-128의 가능한 모든 조합을 소진하려면 여전히 10~12조 년 규모의 시간이 필요합니다. 이는 우주의 나이보다 훨씬 깁니다. 따라서 더 낮은 비트 크기에서도 AES는 기존 컴퓨터의 무차별 대입 공격에 매우 강한 저항성을 가집니다.
AES-256은 AES-128보다 무차별 대입하기가 3400해의 해의 해의 해(2¹²⁸)배 더 어렵습니다.
그로버 알고리즘(새 창)이 이론적으로는 양자 위협(새 창)에 대해 대칭 키의 보안을 절반으로 줄이지만, 특히 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 RoundKey: XOR 연산(새 창)을 수행하여 암호화할 데이터(암호문)와 각 라운드 키를 결합합니다.

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

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

4. MixColumns: 블록의 각 열에 추가적인 가역 선형 변환을 수행합니다.

이 일련의 변환이 한 라운드를 구성하며, 이후 키 크기에 따라 정해진 횟수만큼 데이터에 반복됩니다:
- 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에는 Advanced Encryption Standard New Instructions(AES-NI(새 창))가 포함되어 있으며, 이는 프로세서에서 직접 AES 작업을 수행하는 하드웨어 명령어 집합입니다. 이로 인해 AES는 훨씬 빨라지며, 작업이 프로세서의 보안 실행 유닛 내부에서 이루어지기 때문에 공격자가 악용할 수 있는 관찰 가능한 타이밍 변동이 줄어들어 타이밍 기반 사이드 채널 공격을 방지하는 데도 도움이 됩니다.
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 보안은 얼마나 강력한가요?


