AES(Advanced Encryption Standard, 고급 암호화 표준) 요약

개요

AES는 대칭 키 방식의 블록 암호다. 같은 비밀 키로 데이터를 암호화하고 복호화한다. 통신 구간 보호, 파일 암호화, 저장 데이터 보호에 널리 사용한다.




종류키 길이블록 크기라운드
AES-128128 bit128 bit10
AES-192192 bit128 bit12
AES-256256 bit128 bit14




AES의 블록 크기는 키 길이와 관계없이 항상 128 bit다. 키 길이는 보안 수준과 라운드 수를 결정한다.




패딩과 동작 모드

AES 자체는 고정 길이 블록을 처리한다. CBC 같은 모드에서는 입력 길이를 블록 크기에 맞추기 위해 패딩이 필요할 수 있다. 반면 GCM과 CTR 같은 모드는 데이터 길이를 그대로 처리할 수 있다.




새로운 설계에서는 기밀성만 제공하는 CBC보다 인증된 암호화 방식인 AES-GCM을 우선 검토하는 편이 낫다. GCM은 데이터가 변조되지 않았는지도 함께 확인한다.




IV와 nonce

CBC에서는 초기화 벡터 IV를 사용한다. IV는 비밀일 필요는 없지만 예측하기 어렵고 매 암호화마다 새로 생성해야 한다. GCM에서는 키마다 nonce를 절대 재사용하지 않아야 한다.




키를 코드에 고정하거나 IV와 nonce를 반복해서 쓰면 AES 알고리즘을 사용해도 안전하지 않다. 운영 환경에서는 OS의 난수 생성기를 사용하고, 키는 코드와 분리한 비밀 저장소에서 관리한다.




.NET 예시

using var aes = Aes.Create();
aes.KeySize = 256;
aes.GenerateKey();
aes.GenerateIV();




실제 암호화 코드를 작성할 때는 알고리즘보다 키 관리, nonce 규칙, 인증 태그 검증, 오류 처리까지 함께 설계해야 한다.

Comments

댓글을 불러오고 있습니다.