AES 암호화/복호화
텍스트를 AES-256-GCM으로 안전하게 암호화하고 복호화합니다. 서버 전송 없이 브라우저에서 처리됩니다.
모든 암호화/복호화는 브라우저에서 수행되며, 데이터는 서버로 전송되지 않습니다.
AES 키 생성
AES 암호화 도구 — NIST FIPS 197 표준 대칭 암호
AES(Advanced Encryption Standard)는 2001년 NIST가 FIPS 197로 제정한 대칭 키 블록 암호 표준입니다. Rijndael 알고리즘을 기반으로 하며, 128비트 블록 크기에 128/192/256비트 키 길이를 지원합니다. 미국 정부 기밀 문서 보호(AES-256은 TOP SECRET 등급까지)부터 TLS 1.3, IPsec VPN, 디스크 암호화(BitLocker, FileVault)까지 전 산업에서 사용됩니다. 이 도구는 Web Crypto API로 AES-GCM 암호화를 브라우저 내에서 수행하며, 데이터는 서버로 전송되지 않습니다.
AES 운영 모드 비교 — CBC vs GCM
| 특성 | CBC (NIST SP 800-38A) | GCM (NIST SP 800-38D) |
|---|---|---|
| 인증 | 별도 MAC 필요 | AEAD — 내장 인증 태그 |
| IV/Nonce 크기 | 16바이트 IV | 12바이트 Nonce (권장) |
| 병렬 처리 | 암호화 불가, 복호화 가능 | 암/복호화 모두 가능 |
| 사용 사례 | 레거시 호환 | TLS 1.3, IPsec, 신규 구현 권장 |
경고: AES-ECB 모드는 동일한 평문 블록이 동일한 암호문을 생성하므로 패턴 노출 위험이 있어 절대 사용하지 마세요.
PBKDF2 기반 키 유도 예시 (Node.js)
const crypto = require('crypto');
const password = 'my-secure-passphrase';
const salt = crypto.randomBytes(16);
const key = crypto.pbkdf2Sync(
password, salt, 100000, 32, 'sha256'
);
// key = 256-bit AES key derived from passwordAES-256-GCM 암호화 예시 (Node.js)
const iv = crypto.randomBytes(12); // 96-bit nonce
const cipher = crypto.createCipheriv('aes-256-gcm', key, iv);
let encrypted = cipher.update('Hello World', 'utf8', 'hex');
encrypted += cipher.final('hex');
const authTag = cipher.getAuthTag(); // 128-bit tagOpenSSL CLI로 파일 암호화
# 암호화 openssl enc -aes-256-cbc -salt -pbkdf2 \ -in secret.txt -out secret.enc # 복호화 openssl enc -d -aes-256-cbc -pbkdf2 \ -in secret.enc -out secret.txt
인프라 규모별 AES 적용 전략
소규모: 애플리케이션 레벨에서 AES-256-GCM + PBKDF2로 민감 데이터를 암호화합니다.중규모: AWS KMS 또는 GCP Cloud KMS의 Envelope Encryption을 도입하여 데이터 키(DEK)는 AES-256으로, DEK 자체는 KMS 마스터 키로 래핑합니다.대규모: 서비스별 격리된 KMS 키 링을 운영하고, HSM 기반 키 저장소와 자동 로테이션 정책을 적용합니다. 정지 데이터(at-rest)와 전송 데이터(in-transit) 모두 AES-256으로 암호화해야 SOC 2, ISO 27001 인증 요건을 충족합니다.
보안 베스트 프랙티스
- GCM 모드에서 동일한 키로 Nonce(IV)를 재사용하면 기밀성이 완전히 무너집니다 — 반드시 매번 랜덤 생성하세요.
- PBKDF2 반복 횟수는 최소 100,000회 이상으로 설정하세요 (OWASP 권장).
- 양자 컴퓨팅 위협 대비를 위해 AES-256을 사용하세요 — Grover 알고리즘은 AES-128의 안전 강도를 64비트로 낮춥니다.
- 암호화 키와 암호문은 반드시 분리 저장하세요 — 동일 저장소에 보관하면 암호화의 의미가 없습니다.
관련 도구
비대칭 키 암호화가 필요하면 RSA 키 생성기를, 메시지 인증 코드가 필요하면 HMAC 생성기를, 환경변수로 키를 관리하려면 환경변수 변환기를 활용하세요.
참고 자료
- NIST FIPS 197 — Advanced Encryption Standard (AES)
- NIST SP 800-38D — Recommendation for GCM Mode
- NIST SP 800-38A — Block Cipher Modes of Operation
- OWASP Cryptographic Storage Cheat Sheet