FIPS PUB 197
1. 개요
1. 개요
FIPS PUB 197은 미국 국립표준기술연구소(NIST)가 2001년 11월 26일에 발행한 연방 정보 처리 표준이다. 이 표준은 고급 암호 표준(AES)을 규정하며, 대칭키 암호 방식의 블록 암호 알고리즘이다. AES는 미국 정부의 비밀 분류가 아닌 정보를 보호하기 위한 표준 암호로 채택되었으며, 전 세계적으로 민간 및 상업 분야에서도 널리 사용된다.
이 표준은 Rijndael이라는 암호 알고리즘을 기반으로 한다. 벨기에의 암호학자인 요안 다먼과 빈센트 라이먼이 개발한 이 알고리즘이 공모전을 통해 최종 선정되었다. FIPS PUB 197은 AES의 공식 명세를 제공하여, 소프트웨어와 하드웨어 구현에 있어 상호운용성을 보장한다.
표준에서 정의하는 AES는 키 길이에 따라 128비트, 192비트, 256비트의 세 가지 버전을 지원한다. 이는 이전 표준이었던 데이터 암호화 표준(DES)의 취약점을 해결하고 더 강력한 암호화 강도를 제공하기 위한 것이다. 알고리즘은 입력 데이터를 128비트 단위의 블록으로 처리하며, 키 길이에 따라 10, 12, 14 라운드의 암호화 과정을 거친다.
FIPS PUB 197의 발표 이후 AES는 금융, 통신, 데이터 저장 등 다양한 분야에서 사실상의 세계 표준 암호 알고리즘으로 자리 잡았다. 이 표준 문서는 암호화와 복호화의 상세 절차, 키 확장 방법, 라운드 함수의 구조 등을 기술하고 있다.
2. 역사 및 배경
2. 역사 및 배경
FIPS PUB 197의 역사와 배경은 고급 암호 표준(AES) 선정 과정과 밀접하게 연결되어 있다. 1997년, 미국 국립표준기술연구소(NIST)는 기존의 데이터 암호화 표준(DES)이 기술 발전으로 인해 보안 강도가 충분하지 않게 되자, 새로운 대칭키 암호 알고리즘을 공모하기로 결정했다. 이 공모는 전 세계적으로 열려 있었으며, 암호학계의 국제적인 협력과 경쟁을 촉진하는 계기가 되었다.
NIST는 1998년 8월에 제출된 15개의 후보 알고리즘을 1차 평가하여 5개의 최종 후보(MARS, RC6, Rijndael, Serpent, Twofish)를 선정했다. 이후 약 3년에 걸친 공개적인 분석, 토론, 성능 평가를 거쳐 2000년 10월, 벨기에의 암호학자 존 대먼과 빈센트 라이먼이 개발한 Rijndael 알고리즘이 최종적으로 AES로 선정되었다. 이 결정은 Rijndael이 보안성, 효율성, 구현 유연성, 하드웨어 및 소프트웨어 성능 등 모든 평가 기준에서 균형 잡힌 우수한 성과를 보였기 때문이다.
선정된 Rijndael 알고리즘은 약간의 수정을 거쳐 2001년 11월 26일, NIST에 의해 연방 정보 처리 표준(FIPS) PUB 197로 공식 발표되었다. 이 표준은 미국 연방 정부 기관이 기밀 정보를 보호하기 위해 사용해야 할 암호화 알고리즘으로 지정되었으며, 이후 전 세계 산업계와 민간 분야에서도 사실상의 국제 표준으로 광범위하게 채택되게 된다.
3. AES 알고리즘 상세
3. AES 알고리즘 상세
3.1. 암호화 과정
3.1. 암호화 과정
AES의 암호화 과정은 평문 블록을 암호문 블록으로 변환하는 일련의 연산을 말한다. 이 과정은 초기 라운드 키 덧셈을 시작으로, 정해진 횟수의 라운드를 거쳐 완료된다. 각 라운드는 바이트 대체(SubBytes), 행 이동(ShiftRows), 열 혼합(MixColumns), 라운드 키 덧셈(AddRoundKey)이라는 네 가지 기본 변환으로 구성된다. 마지막 라운드에서는 열 혼합 단계가 생략되는 점이 특징이다.
구체적으로, 암호화는 128비트(16바이트)의 평문 데이터를 4x4 바이트의 상태 배열(State Array)로 변환하는 것으로 시작한다. 첫 번째 단계는 초기 라운드 키 덧셈으로, 상태 배열의 각 바이트와 첫 번째 라운드 키를 XOR 연산한다. 이후 주요 라운드가 진행되며, 라운드 수는 사용된 암호 키의 길이에 따라 결정된다. 128비트 키는 10라운드, 192비트 키는 12라운드, 256비트 키는 14라운드를 수행한다.
각 라운드의 네 가지 변환은 특정한 보안 목적을 가진다. 바이트 대체는 비선형성을 제공하기 위해 S-Box(치환 상자)를 사용한 바이트 단위 치환 연산이다. 행 이동은 상태 배열의 각 행을 고정된 횟수만큼 순환 시프트하여 데이터의 확산을 증가시킨다. 열 혼합은 각 열에 대해 행렬 곱셈을 수행하여 열 내 바이트들 간의 관계를 복잡하게 만든다. 마지막으로 라운드 키 덧셈은 현재의 라운드 키를 상태 배열과 XOR하여 키의 영향을 주입한다.
이러한 라운드 함수의 반복적 적용을 통해 AES는 높은 수준의 혼돈과 확산을 달성한다. 암호화 과정의 마지막 단계에서 출력된 상태 배열은 16바이트의 암호문으로 재조립되어 최종 결과를 생성한다. 전체 과정은 설계상 효율적이어서 소프트웨어와 하드웨어 구현 모두에서 우수한 성능을 보인다.
3.2. 키 확장
3.2. 키 확장
키 확장은 AES 알고리즘의 핵심 과정 중 하나로, 암호화와 복호화에 사용되는 하나의 암호 키로부터 각 라운드에 필요한 여러 개의 라운드 키를 생성하는 절차이다. 이 과정은 키 스케줄이라고도 불리며, 암호화의 안전성을 높이는 데 중요한 역할을 한다. 사용자가 입력한 128, 192 또는 256비트 길이의 암호 키는 이 키 확장 과정을 통해 총 10, 12 또는 14라운드에 각각 필요한 라운드 키 배열로 변환된다.
키 확장 알고리즘은 바이트 단위로 연산을 수행하며, 주로 바이트 치환(SubBytes)과 순열(RotWord), 그리고 라운드 상수와의 배타적 논리합(XOR) 연산을 조합한다. 특히, 키의 길이가 256비트일 경우 추가적인 바이트 치환 단계가 포함되어 더 복잡한 키 스케줄을 형성한다. 이렇게 생성된 각 라운드 키는 암호화 과정의 라운드 구조에서 라운드 키 덧셈(AddRoundKey) 단계에 사용되어 평문 데이터와 혼합된다.
키 확장 설계의 주요 목적은 암호 키와 생성된 라운드 키들 사이의 관계를 비선형적이고 예측하기 어렵게 만드는 것이다. 이를 통해 공격자가 일부 라운드 키를 알게 되더라도 원본 암호 키나 다른 라운드 키를 유추하는 것이 극히 어렵게 된다. 이는 차분 암호 분석이나 선형 암호 분석과 같은 다양한 암호 해독 공격에 대한 알고리즘의 저항성을 강화하는 기반이 된다.
결과적으로, 키 확장 과정은 AES가 제한된 길이의 사용자 키로부터 안전하고 독립적인 다수의 라운드 키를 효율적으로 도출할 수 있도록 보장한다. 이는 고급 암호 표준의 전체적인 보안 강도와 효율성 구현에 필수적인 요소로 평가받는다.
3.3. 라운드 구조
3.3. 라운드 구조
AES의 암호화와 복호화 과정은 각각 10, 12, 14라운드로 구성되며, 이는 사용하는 키 길이에 따라 결정된다. 128비트 키는 10라운드, 192비트 키는 12라운드, 256비트 키는 14라운드를 사용한다. 각 라운드는 바이트 치환(SubBytes), 행 이동(ShiftRows), 열 혼합(MixColumns), 라운드 키 덧셈(AddRoundKey)이라는 네 가지 변환 단계로 이루어진다. 마지막 라운드에서는 열 혼합 단계가 생략되는 것이 특징이다.
각 단계는 특정한 수학적 연산을 통해 평문 데이터의 확산과 혼돈을 증가시킨다. 바이트 치환은 비선형 치환을 수행하여 암호학적 강도를 높이고, 행 이동과 열 혼합은 데이터의 위치와 값을 뒤섞어 통계적 분석을 어렵게 만든다. 라운드 키 덧셈 단계에서는 키 확장 과정을 통해 생성된 해당 라운드의 서브키가 배타적 논리합(XOR) 연산으로 상태 배열에 적용된다.
복호화 과정은 암호화 과정의 역변환을 사용하며, 각 단계에 대응하는 역바이트 치환(InvSubBytes), 역행 이동(InvShiftRows), 역열 혼합(InvMixColumns) 연산과 동일한 라운드 키를 사용한 역라운드 키 덧셈으로 구성된다. 이 구조는 암호화와 복호화가 대칭적이면서도 효율적인 구현을 가능하게 한다.
이러한 라운드 구조의 설계는 SPN 구조(Substitution-Permutation Network)를 따르며, 각 변환 단계가 서로 다른 형태의 암호학적 공격에 대한 저항성을 제공하도록 고안되었다. 단순하면서도 강력한 이 반복 구조는 AES가 높은 성능과 함께 강력한 보안성을 유지하는 핵심 요소이다.
4. 보안 강도 및 키 길이
4. 보안 강도 및 키 길이
FIPS PUB 197에서 규정하는 고급 암호 표준은 세 가지의 서로 다른 키 길이를 지원한다. 이 표준은 128비트, 192비트, 256비트의 세 가지 키 크기를 정의하며, 각각의 키 길이는 암호화 과정에서 사용되는 라운드의 횟수를 결정한다. 128비트 키는 10라운드, 192비트 키는 12라운드, 256비트 키는 14라운드의 암호화 과정을 거친다. 키 길이가 길어질수록 수행되는 라운드 수가 증가하여, 이론적으로는 더 높은 수준의 보안 강도를 제공한다.
AES의 보안 강도는 사용된 키의 길이에 직접적으로 의존한다. 일반적으로 암호학에서는 브루트 포스 공격에 대한 저항력을 기준으로 보안 강도를 평가하는데, AES의 경우 가능한 키의 조합 수가 키 길이에 따라 기하급수적으로 증가한다. 예를 들어, 128비트 키를 대상으로 한 브루트 포스 공격은 현실적으로 불가능한 계산량을 요구하는 것으로 평가받는다. 192비트와 256비트 키는 이보다 훨씬 더 강력한 저항력을 가지며, 향후 양자 컴퓨터의 발전과 같은 위협에 대비한 장기적인 보안을 고려할 때 그 중요성이 부각된다.
이 세 가지 옵션은 다양한 보안 요구사항과 성능 고려사항에 맞춰 선택할 수 있도록 유연성을 제공한다. 짧은 키 길이는 일반적으로 더 빠른 처리 속도를 보이지만, 상대적으로 낮은(그러나 여전히 매우 강력한) 보안 강도를 가진다. 반면, 긴 키 길이는 더 높은 보안 수준을 보장하지만, 암호화 및 복호화에 소요되는 계산 자원이 더 많을 수 있다. 따라서 NIST가 발표한 이 표준은 응용 프로그램의 맥락에 따라 적절한 키 길이를 선택할 수 있는 기준을 마련했다.
5. 구현 및 성능
5. 구현 및 성능
AES의 구현은 하드웨어와 소프트웨어 양쪽에서 매우 효율적으로 이루어진다. 알고리즘의 구조가 단순하고 규칙적이어서 다양한 플랫폼에 최적화하기 용이하다. 특히 8비트 스마트카드부터 고성능 서버에 이르기까지 광범위한 컴퓨팅 환경에서 실행될 수 있다. 소프트웨어 구현의 경우, 테이블 조회를 활용한 방법이 널리 사용되어 높은 성능을 제공한다.
하드웨어 구현에서 AES는 저전력과 고속 처리가 모두 가능한 특징을 보인다. 전용 암호화 하드웨어나 FPGA, ASIC에 구현될 경우, 초당 기가비트 이상의 처리 속도를 달성할 수 있다. 이는 고대역폭 통신이나 실시간 데이터 암호화가 필요한 시스템에 매우 중요하다. 또한 알고리즘 설계가 병렬 처리에 친화적이지 않지만, 여러 개의 독립적인 암호화 엔진을 병렬로 운영하는 방식으로 처리량을 극대화할 수 있다.
성능은 사용하는 키 길이(128, 192, 256비트)와 구현 방식에 따라 차이가 난다. 일반적으로 키가 길어질수록 암호화와 복호화에 소요되는 시간이 증가하지만, 보안 강도가 높아지는 trade-off 관계에 있다. 현대의 범용 CPU는 AES 명령어 세트(AES-NI)를 하드웨어로 내장하여, 소프트웨어 구현에 비해 훨씬 빠르고 전력 효율적인 암호화 연산을 지원한다.
다양한 플랫폼과 제약 조건에서의 우수한 성능은 AES가 인터넷 보안(TLS), 무선 통신, 데이터베이스 암호화, 파일 시스템 암호화 등 수많은 분야에서 사실상의 표준으로 자리 잡는 데 기여한 핵심 요인이다.
6. 표준화 및 채택 현황
6. 표준화 및 채택 현황
FIPS PUB 197은 2001년 11월 26일 미국 국립표준기술연구소(NIST)에 의해 공식적으로 발표된 연방 정보 처리 표준이다. 이 표준은 고급 암호 표준(AES)을 미국 연방 정부의 비밀 정보가 아닌 민감한 정보를 보호하기 위한 공식 암호 알고리즘으로 지정하였다. AES의 표준화는 미국 상무부의 승인을 거쳐 이루어졌으며, 이로써 AES는 DES를 대체하는 새로운 국가 표준 블록 암호로 자리 잡았다.
이 표준은 미국 정부 기관 뿐만 아니라 전 세계적으로 광범위하게 채택되었다. 국제 표준화 기구(ISO)와 국제 전기 표준 회의(IEC)는 이를 국제 표준 ISO/IEC 18033-3으로 채택하였으며, 미국 국가안보국(NSA)도 일정 등급의 국가 안보 정보 보호에 AES의 사용을 승인하였다. 이로 인해 AES는 사실상 전 세계의 금융, 통신, 정보 보안 산업을 포함한 다양한 분야에서 가장 널리 사용되는 대칭키 암호 표준이 되었다.
FIPS PUB 197의 채택 현황은 하드웨어와 소프트웨어 전반에 걸쳐 확인할 수 있다. 대부분의 현대 프로세서는 AES 연산을 가속화하는 전용 명령어 세트(AES-NI)를 내장하고 있으며, 주요 운영체제, 프로그래밍 언어의 암호화 라이브러리, 인터넷 보안 프로토콜(예: TLS/SSL), 무선 네트워크 표준(예: WPA2) 등에서 핵심 암호화 수단으로 활용되고 있다. 이 표준은 현재까지도 유효한 상태로 유지되며, 전 세계적인 암호학 및 정보 기술 인프라의 근간을 이루고 있다.
7. 관련 문서
7. 관련 문서
NIST - FIPS 140-3, Security Requirements for Cryptographic Modules
NIST - SP 800-38A, Recommendation for Block Cipher Modes of Operation
NIST - SP 800-67 Rev. 2, Recommendation for the Triple Data Encryption Algorithm (TDEA) Block Cipher
IETF RFC 3602 - The AES-CBC Cipher Algorithm and Its Use with IPsec
IEEE 1619.1-2007 - Standard for Authenticated Encryption with Length Expansion for Storage Devices
