한국에는 AES와 나란히 법적으로 인정된 국산 블록 암호가 두 종류나 있다. SEED는 1999년 한국인터넷진흥원(KISA)이 개발해 온라인 뱅킹 등 국내 웹 서비스에서 액티브X 시대부터 널리 쓰였고, ARIA는 2004년 국가정보원과 학계가 함께 개발해 국가·공공기관 표준 암호로 지정된 128비트 블록 암호다.
왜 굳이 국산 암호가 필요했나
SEED가 만들어진 1990년대 말은 강력한 암호 기술의 해외 수출이 각국 정책상 제한되던 시기였고, 한국은 자체적으로 신뢰할 수 있는 암호 기술을 확보할 필요가 있었다. ARIA는 그 후속으로, 국가·공공기관의 정보시스템에서 사용할 암호 알고리즘을 국내에서 설계하고 검증하겠다는 목적으로 개발되었으며 현재 KS(한국산업표준)로 지정되어 있다. AES는 여전히 민간 분야에서 폭넓게 쓰이지만, 공공 부문 시스템 요구사항에서는 ARIA나 SEED가 언급되는 경우가 많다.
운영 모드: CBC 대 GCM
AES는 데이터를 고정 크기 블록으로 암호화하므로, 운영 모드가 이 블록들이 서로 어떻게 연결되는지를 결정합니다. CBC(Cipher Block Chaining)는 각 블록을 이전 블록과 연결해 기밀성을 보장하지만 데이터 무결성은 확인하지 않습니다. GCM(Galois/Counter Mode)은 인증을 추가합니다 — 데이터를 암호화하면서 동시에 변조되지 않았음을 보장하므로 더 현대적이고 안전한 선택으로 여겨집니다.
초기화 벡터(IV)가 필요한 이유
추가적인 변화 없이 같은 키로 같은 데이터를 암호화하면 결과는 항상 동일합니다 — 이는 반복되는 블록에 대한 정보를 노출시킵니다. 초기화 벡터는 각 암호화 작업에 추가되는 고유한 무작위 값으로, 동일한 입력 데이터와 동일한 키에서도 다른 결과를 보장합니다.
왜 필요한가
- 저장하거나 네트워크로 전송하기 전에 민감한 데이터 암호화하기.
- ARIA, SEED, AES가 함께 언급되는 국내 보안 요구사항 문서를 이해하기.
- 다른 시스템에서 암호화된 데이터를 복호화할 때 호환성 문제 진단하기.
AES-128과 AES-256: 더 긴 키가 필요한가
키가 두 배 길면 보안도 두 배 좋아질 것 같지만, 실제로는 AES-128도 오늘날까지 암호학적으로 안전한 것으로 간주됩니다 — 이를 깨뜨릴 수 있는 실질적인 공격은 존재하지 않습니다. AES-256은 향후 이론적 돌파구(특히 양자 컴퓨팅)에 대비한 더 큰 여유를 제공하지만 약간 더 높은 연산 비용이 듭니다. 따라서 둘 사이의 선택은 성능과 여유분 사이의 절충입니다.