AES-256 암호화란? 작동 방식 설명

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은 두 가지 작업을 수행합니다.

  1. 암호화. CTR(카운터) 모드를 사용하여 데이터를 암호화합니다.
  2. 인증. 암호화된 데이터와 함께 저장되는 인증 태그를 생성합니다.

복호화 시 GCM은 태그를 확인합니다. 암호화된 데이터의 단 한 비트만 변경되어도 복호화가 실패하여 손상된 출력 대신 오류를 반환합니다. 이는 데이터가 저장 중에 변조되거나 손상되더라도 앱이 이를 감지한다는 것을 의미합니다.

초기화 벡터(IV)의 역할

동일한 키로 동일한 파일을 두 번 암호화하면 다른 암호문이 생성됩니다. 이는 초기화 벡터(IV) 덕분입니다. IV는 각 암호화 작업마다 무작위로 생성되는 고유한 값입니다. IV가 없으면 동일한 평문이 항상 동일한 암호문을 생성하여 패턴 분석 공격에 취약해집니다.

Vaultaire에서는 각 파일이 고유한 IV로 암호화됩니다. 두 사진이 동일하더라도 암호화된 버전은 구별할 수 없습니다.

키 파생: 패스워드에서 암호화 키로

핵심 파생이 중요합니다. 256비트 키는 어떻게 생성되나요? 약한 KDF를 사용하여 4자리 PIN에서 파생된 경우 효과적인 보안은 256비트가 아닌 4자리(10,000개 조합)입니다. 강력한 구현은 다음을 사용합니다. PBKDF2 높은 반복 횟수 또는 적절한 메모리 및 시간 매개변수를 갖춘 Argon2. Vaultaire는 다음을 사용합니다. PBKDF2 와 HMAC-SHA512 선택한 5x5 패턴과 디바이스 솔트에서 로컬 볼트 키를 파생하기 위한 600,000번의 반복. PBKDF2 각각의 추측을 더 비싸게 만듭니다. 패턴의 엔트로피를 256비트로 높이지는 않습니다.

PBKDF2(Password-Based Key Derivation Function 2)는 이 목적을 위해 가장 널리 사용되는 알고리즘입니다. 동작 방식은 다음과 같습니다.

  1. 사용자 자격증명(패스워드, 패턴)을 받습니다.
  2. 고유한 무작위 솔트를 추가합니다.
  3. 결합된 값을 수십만 번 해시합니다(Vaultaire의 경우 HMAC-SHA512로 600,000번).
  4. 256비트 키를 출력합니다.

반복 횟수가 많을수록 각 패스워드 추측의 비용은 커집니다. 그러나 정확한 시간은 기기, 구현, 병렬 처리 방식에 따라 달라지므로 측정 없이 추측당 고정 시간을 주장할 수 없습니다. PBKDF2는 공격 비용을 높이지만 사람이 고른 패턴의 엔트로피를 늘리거나 무차별 대입을 원천적으로 막지는 않습니다.

Vaultaire가 AES-256-GCM을 사용하는 방법

Vaultaire는 모든 저장된 사진과 파일에 AES-256-GCM을 적용합니다. 구현 방식은 다음과 같습니다.

  • 키 파생. 사용자의 패턴과 기기 전체에서 사용하는 비밀이 아닌 Keychain 솔트가 PBKDF2-HMAC-SHA512 600,000회를 거쳐 32바이트 VaultKey를 만듭니다. 이 키는 암호화된 인덱스를 인증하고 무작위 32바이트 MasterKey를 푸는 데 사용됩니다. 패턴은 복구 기능을 위해 일반 Keychain의 암호화된 복구 데이터베이스에도 보관됩니다.
  • 파일 암호화. 각 파일은 파일 고유의 IV를 사용하여 AES-256-GCM으로 암호화됩니다.
  • 메타데이터 암호화. 파일 이름, 날짜, 인덱스 기록, 미리보기 이미지도 AES-256-GCM으로 보호됩니다.
  • 키 관리. AES-GCM 작업은 앱 프로세스에서 실행됩니다. 공개 CryptoKit Secure Enclave API는 앱이 파생한 임의의 대칭 AES 키로 AES-GCM을 수행하지 않습니다. Vaultaire는 잠기거나 닫힐 때 활성 볼트와 MasterKey 상태를 해제하고 다시 잠금 해제를 요구하지만, 볼트가 열려 있는 동안 대칭 키 바이트는 앱 메모리에 존재하며 Swift와 iOS는 모든 일시적 복사본이 덮어써졌음을 증명할 수 없습니다.

전체 구현은 보안 아키텍처 페이지에 문서화되어 있습니다.

자주 묻는 질문

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은 무엇이며 왜 중요한가요?

키 저장이 중요합니다. 열쇠는 어디에 살고 있나요? 키가 앱의 샌드박스에 일반 텍스트로 저장되어 있으면 파일 액세스 권한이 있는 맬웨어가 키를 읽을 수 있습니다. 애플의 Secure Enclave 임의의 앱 제공 AES 키가 아닌 내보낼 수 없는 특정 키 작업을 지원합니다. 대칭 키 설계는 대신에 의존할 수 있습니다. Keychain 및 데이터 보호이므로 문서에는 "하드웨어 지원"이라고만 언급하기보다는 정확한 API 및 보호 클래스의 이름을 지정해야 합니다.

키 파생이란 무엇인가요?

키 파생은 패스워드나 패턴 같은 사람이 기억할 수 있는 자격증명을 암호화 키로 변환하는 과정입니다. 이 과정에서 PBKDF2나 Argon2 같은 알고리즘이 자격증명에 솔트를 결합하고 수십만 번 해시하여 256비트 키를 생성합니다. 반복 과정은 패스워드 추측을 계산적으로 비싸게 만듭니다.

양자 컴퓨터가 AES-256을 깰 수 있나요?

볼테르 용도 AES-256-GCM 파일 내용, 헤더, 메타데이터, 색인 및 축소판의 경우. PBKDF2 와 HMAC-SHA512 패턴과 기기 전체에서 로컬 볼트 키를 파생합니다. Keychain 소금; 해당 키는 파일 암호화에 사용되는 임의의 마스터 키를 풀어냅니다. 대칭 작업은 다음을 통해 앱 프로세스에서 실행됩니다. CryptoKit, 동안 iOS Keychain 데이터 보호는 장치가 잠겨 있을 때 복구 상태를 보호합니다. 전체 계층 구조는 다음 문서에 문서화되어 있습니다. 보안 모델.