맨위로가기

고급 암호화 표준

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

고급 암호화 표준(AES)은 미국 국립 표준 기술 연구소(NIST)에서 DES를 대체하기 위해 공모하여 선정된 암호화 알고리즘이다. 2000년 레인달이 최종 선정되었고, 2001년 연방 정보 처리 표준으로 공개되어 DES를 대체하여 기밀성 있는 정보 보호에 사용되기 시작했다. AES는 128, 192, 256비트 키 길이를 지원하며, 블록 크기는 128비트이다. AES는 치환-순열 네트워크 구조를 가지며, 소프트웨어와 하드웨어 모두에서 효율적으로 구현될 수 있다. 현재까지 알려진 공격으로는 128비트 키에 대해 7라운드, 192비트 키에 대해 8라운드, 256비트 키에 대해 9라운드를 넘어서는 공격은 존재하지 않는다. AES는 부채널 공격과 양자 공격에 대한 연구도 진행되고 있으며, NIST 및 CSEC에서 검증을 받는다.

더 읽어볼만한 페이지

  • 고급 암호화 표준 - AES-NI
    AES-NI는 AES 암호화 및 복호화 성능 향상을 위해 설계된 x86 명령어 집합 아키텍처 확장으로, 인텔과 AMD 마이크로프로세서에 적용되었으며 AES 암호화 및 복호화 라운드, 키 생성 등을 가속화하는 명령어들을 포함한다.
  • 고급 암호화 표준 - Poly1305
    Poly1305는 16바이트 비밀 키와 메시지를 입력으로 받아 16바이트 해시값을 출력하는 메시지 인증 코드 알고리즘으로, 카터-웨그만 구조에 기반하여 OpenSSH, 구글 Chrome, 안드로이드 등에서 메시지 인증 및 암호화에 활용되며 빠른 계산 속도와 효율적인 작동이 특징이다.
  • 블록 암호 - 데이터 암호화 표준
    데이터 암호화 표준(DES)은 미국 국립표준기술연구소에서 개발되어 널리 사용되었던 대칭키 암호 알고리즘이지만, 짧은 키 길이와 취약점 때문에 고급 암호화 표준(AES)으로 대체되었고, 트리플 DES 형태로 일부 시스템에서 사용되며 암호학 발전에 기여한 역사적 의미가 있다.
  • 블록 암호 - 트리플 DES
    트리플 DES는 DES의 보안 취약점을 보완하기 위해 개발된 블록 암호화 알고리즘으로, DES를 세 번 적용하여 112비트 또는 168비트의 유효 키 길이를 제공하지만, 보안 취약점과 낮은 효율성으로 AES로 대체되는 추세이다.
고급 암호화 표준
개요
AES 라운드 함수의 시각화
AES 라운드 함수의 시각화
디자이너Joan Daemen, Vincent Rijmen
발표일1998
기반 암호Square
파생 암호Anubis, Grand Cru, Kalyna
관련 암호해당사항 없음
인증AES 우승, CRYPTREC, NESSIE, NSA
키 크기128, 192 또는 256 비트
블록 크기128 비트
구조대체-순열 네트워크
라운드 수10, 12 또는 14 (키 크기에 따라 다름)
암호 분석2023년 현재, 전수 조사 공격보다 계산적으로 빠른 공격이 발표되었지만, 계산적으로 실현 가능한 공격은 없음. AES-128의 경우, biclique 공격을 사용하여 2126.1의 계산 복잡도로 키를 복구할 수 있음. AES-192 및 AES-256에 대한 biclique 공격의 경우, 각각 2189.7 및 2254.4의 계산 복잡도가 적용됨. 관련 키 공격은 AES-192 및 AES-256을 시간과 데이터 모두에서 각각 2176 및 299.5의 복잡도로 무너뜨릴 수 있음.

2. 표준

고급 암호화 표준(AES)은 다음 문서에 정의되어 있다.[69][7]


  • FIPS PUB 197: 고급 암호화 표준(AES)
  • ISO/IEC 18033-3: 블록 암호[72][14]

3. 역사

1997년 1월 2일, 미국 국립 표준 기술 연구소(NIST)는 DES를 대체할 목적으로 3DES와 같거나 더 나은 보안성을 갖고 개선된 암호 기법을 공모하였다. 선정될 암호의 정식 명칭은 1997년 9월 2일 AES(Advanced Encryption Standard)로 정해졌다.[73] NIST는 암호론의 케르코프 원리(Kerckhoffs' principle, 대칭 블록)에 의해 128비트 블록을 128, 192, 256비트 키 길이로 처리할 수 있고, 무료로 배포할 수 있어야 한다는 제한 조건이 있었다.[73] 평가 항목으로는 보안, 계산적 효율성, 메모리 요구량, 하드웨어와 소프트웨어적 적합성, 유연성 5가지를 제시하였다.[73]

1998년 1월 15일 마감일까지 21개의 암호 알고리즘이 제안되었고 그 중 15개 암호 알고리즘이 AES 후보로 선정되어 안전성을 평가 받았다.[73] NIST는 15개의 암호 알고리즘에 대하여 제1차 AES 후보 대회(First AES Candidate Conference)를 1998년 8월 20일에 개최 하였고 제2차 AES 후보 대회(Second AES Candidate Conference)를 1999년 3월에 개최하였다.[73] 이후, 1999년 8월에는 5개의 후보 알고리즘(MARS, RC6, 레인달(Rijndael), Serpent, Twofish)을 최종 후보로 선정하여 많은 암호학자들로부터 안전성 평가를 받게 하였다.[73]

2000년 4월 3차 대회가 개최되고 2000년 10월 2일 AES 알고리즘으로 레인달이 선정되었다.[73] 이어 NIST는 2001년 2월 28일에 연방 정보 처리 표준으로 AES를 공개/리뷰/배포 하면서 기밀성있는 정보에 DES를 대체하여 AES를 사용하기 시작한다.[73] 2001년 11월 16일에는 표준으로 채택되었으며 2001년 12월 4일에는 FIPS 197로 등록 되었다.[73]

AES 선정과정에서 주목해야할 점은 개방성과 국제 흐름을 반영하였다는 점이다.[73] 세 번의 대회와 많은 사람들(전문가/비전문가)의 의견을 공개/반영 하였으며 피드백의 기회를 부여하고 다함께 이슈에 대하여 토론하는 과정이 있었다.[73] 뿐만 아니라 다양한 분야의 전문가들의 의견이 반영 되었다.[73] 수학자, 컴퓨터 학자, 암호학자, 공학자등 다양한 분야의 전문가들이 의견을 적극적으로 반영하여 안전하면서도 훌륭한 성능을 갖춘 알고리즘을 선택할 수 있었다.[73] 국제화 측면에서 AES는 15개의 후보 알고리즘의 저자들의 국적 만큼이나 다양한 국가의 평가를 받았다.[73] 당시 알고리즘 안전성 평가에 적극적이었던 국가로는 대한민국을 비롯하여 일본, 이스라엘, 독일, 프랑스, 코스타리카, 캐나다, 벨기에, 오스트레일리아, 노르웨이, 영국, 미국이 있었다.[73] 레인달은 Daemen영어과 Rijmen영어이라는 두 명의 벨기에 연구원에 의해 설계되었다.[73] AES 선정과정에서 재밌는 점 중 다른 하나는 2차 대회가 미국이 아닌 이탈리아 로마에서 개최되었다는 점이다.[73]

AES 후보 알고리즘들은 안전성, 비용, 알고리즘 및 구현 특성의 세가지 조건을 만족해야 했다.[73] 안전성은 절대적으로 갖춰야 하는 부분이었으며 특히 당시 대칭키 암호를 분석하는 방법인 '선형 공격(linear cryptanalysis)'과 '차분 공격(Differential cryptanalysis)'에 대한 안전성 증명이 주를 이루었다.[73] 비용은 '스마트 카드, 하드웨어, 소프트웨어, 구현'을 위한 다양한 형태의 계산효율성을 참고하여 평가 되었으며, 여기서 계산효율성은 속도 및 메모리 요구량등을 의미 하였다.[73] 알고리즘 및 구현 특성은 유연성과 알고리즘의 단순성을 주로 평가 하였다.[73]

마지막 평가과정에서 남았던 5개의 알고리즘 중 4개의 알고리즘은 탈락했지만 안전성이 떨어지는 알고리즘은 절대 아니였다.[73] 다만 레인달의 알고리즘이 안전성, 속도, 효율성, 구현 및 유연성이 다른 알고리즘들 보다 우수했을 뿐이다.[73]

3. 1. AES 개발 배경

1997년 1월 2일, NIST(미국 국립 표준 기술 연구소)는 DES를 대체할 목적으로 3DES와 같거나 더 나은 보안성을 갖고 개선된 암호 기법을 공모하였다. 선정될 암호의 정식 명칭은 1997년 9월 2일 AES(Advanced Encryption Standard)로 정해졌다.[73] NIST는 암호론의 케르코프 원리(Kerckhoffs' principle, 대칭 블록)에 의해 128비트 블록을 128, 192, 256비트 키 길이로 처리할 수 있고, 무료로 배포할 수 있어야 한다는 제한 조건이 있었다.[73] 평가 항목으로는 보안, 계산적 효율성, 메모리 요구량, 하드웨어와 소프트웨어적 적합성, 유연성 5가지를 제시하였다.[73]

1998년 1월 15일까지 21개의 암호 알고리즘이 제안되었고, 그 중 15개 암호 알고리즘이 AES 후보로 선정되어 안전성을 평가 받았다.[73] NIST는 1998년 8월 20일에 제1차 AES 후보 대회를 개최하였고, 1999년 3월에 제2차 AES 후보 대회를 개최하였다.[73] 1999년 8월에는 5개의 후보 알고리즘(MARS, RC6, Rijndael, Serpent, Twofish)을 최종 후보로 선정하여 많은 암호학자들로부터 안전성 평가를 받게 하였다.[73] 2000년 4월 3차 대회가 개최되고, 2000년 10월 2일 AES 알고리즘으로 레인달을 선정하였다.[73] NIST는 2001년 2월 28일에 연방 정보 처리 표준으로 AES를 공개/리뷰/배포 하면서 기밀성있는 정보에 DES를 대체하여 AES를 사용하기 시작한다.[73] 2001년 11월 16일에는 표준으로 채택되었으며 2001년 12월 4일에는 FIPS 197로 등록 되었다.[73]

AES 선정 과정은 개방성과 국제 흐름을 반영하였다. 세 번의 대회와 여러 사람들의 의견을 공개/반영 하였으며 피드백의 기회를 부여하고 다함께 이슈에 대하여 토론하는 과정이 있었다.[73] 수학자, 컴퓨터 학자, 암호학자, 공학자 등 다양한 분야의 전문가들의 의견이 반영되어 안전하고 훌륭한 성능을 갖춘 알고리즘을 선택할 수 있었다.[73] AES는 15개의 후보 알고리즘의 저자들의 국적 만큼이나 다양한 국가의 평가를 받았다. 당시 알고리즘 안전성 평가에 적극적이었던 국가로는 대한민국, 일본, 이스라엘, 독일, 프랑스, 코스타리카, 캐나다, 벨기에, 호주, 노르웨이, 영국, 미국이 있었다.[73] 레인달은 Daemen과 Rijmen이라는 두 명의 벨기에 연구원에 의해 설계되었다.[73] 제2차 대회는 미국이 아닌 이탈리아 로마에서 개최되었다.[73]

AES 후보 알고리즘들은 안전성, 비용, 알고리즘 및 구현 특성의 세 가지 조건을 만족해야 했다.[73] 안전성은 절대적으로 갖춰야 하는 부분이었으며 특히 당시 대칭키 암호를 분석하는 방법인 '선형 공격(linear cryptanalysis)'과 '차분 공격(Differential cryptanalysis)'에 대한 안전성 증명이 주를 이루었다.[73] 비용은 스마트 카드, 하드웨어, 소프트웨어, 구현을 위한 다양한 형태의 계산효율성을 참고하여 평가 되었으며, 속도 및 메모리 요구량 등을 의미했다.[73] 알고리즘 및 구현 특성은 유연성과 알고리즘의 단순성을 주로 평가 하였다.[73]

최종 평가 과정에서 남았던 5개의 알고리즘 중 4개의 알고리즘은 탈락했지만 안전성이 떨어지는 알고리즘은 아니였다.[73] 다만 Rijndael 알고리즘이 안전성, 속도, 효율성, 구현 및 유연성이 다른 알고리즘들 보다 우수했을 뿐이다.[73]

3. 2. AES 선정 과정

1997년 1월 2일 NIST(미국 국립 표준 기술 연구소)는 DES를 대체할 목적으로 3DES와 같거나 더 나은 보안성을 갖고 개선된 암호 기법을 공모하였다.[73] 선정될 암호의 정식 명칭은 1997년 9월 2일 AES(Advanced Encryption Standard)로 정해졌다.[73] NIST는 암호론의 케르코프 원리(Kerckhoffs' principle, 대칭 블록)에 의해 128비트 블록을 128혹은 192혹은 256비트 키 길이로 처리할 수 있고, 무료로 배포할 수 있어야 한다는 제한 조건이 있었다.[73] 평가 항목으로는 보안, 계산적 효율성, 메모리 요구량, 하드웨어와 소프트웨어적 적합성, 유연성 5가지를 제시하였다.[73]

1998년 1월 15일 마감일까지 21개의 암호 알고리즘이 제안되었고 그 중 15개 암호 알고리즘이 AES 후보로 선정되어 안전성을 평가 받았다.[73] NIST는 15개의 암호 알고리즘에 대하여 제1차 AES 후보 대회(First AES Candidate Conference)를 1998년 8월 20일에 개최 하였고 제2차 AES 후보 대회(Second AES Candidate Conference)를 1999년 3월에 개최하였다.[73] 이후, 1999년 8월에는 5개의 후보 알고리즘(MARS, RC6, 레인달(Rijndael), Serpent, Twofish)을 최종 후보로 선정하여 많은 암호학자들로부터 안전성 평가를 받게 하였다.[73]

2000년 4월 3차 대회가 개최되고 2000년 10월 2일 AES 알고리즘으로 레인달이 선정되었다.[73] 이어 NIST는 2001년 2월 28일에 연방 정보 처리 표준으로 AES를 공개/리뷰/배포 하면서 기밀성있는 정보에 DES를 대체하여 AES를 사용하기 시작한다.[73] 2001년 11월 16일에는 표준으로 채택되었으며 2001년 12월 4일에는 FIPS 197로 등록 되었다.[73]

AES 선정과정에서 주목해야할 점은 개방성과 국제 흐름을 반영하였다는 점이다.[73] 세 번의 대회와 많은 사람들(전문가/비전문가)의 의견을 공개/반영 하였으며 피드백의 기회를 부여하고 다함께 이슈에 대하여 토론하는 과정이 있었다.[73] 뿐만 아니라 다양한 분야의 전문가들의 의견이 반영 되었다.[73] 수학자, 컴퓨터 학자, 암호학자, 공학자등 다양한 분야의 전문가들이 의견을 적극적으로 반영하여 안전하면서도 훌륭한 성능을 갖춘 알고리즘을 선택할 수 있었다.[73] 국제화 측면에서 AES는 15개의 후보 알고리즘의 저자들의 국적 만큼이나 다양한 국가의 평가를 받았다.[73] 당시 알고리즘 안전성 평가에 적극적이었던 국가로는 대한민국을 비롯하여 일본, 이스라엘, 독일, 프랑스, 코스타리카, 캐나다, 벨기에, 오스트레일리아, 노르웨이, 영국, 미국이 있었다.[73] 레인달은 Daemen영어과 Rijmen영어이라는 두 명의 벨기에 연구원에 의해 설계되었다.[73] AES 선정과정에서 재밌는 점 중 다른 하나는 2차 대회가 미국이 아닌 이탈리아 로마에서 개최되었다는 점이다.[73]

AES 후보 알고리즘들은 안전성, 비용, 알고리즘 및 구현 특성의 세가지 조건을 만족해야 했다.[73] 안전성은 절대적으로 갖춰야 하는 부분이었으며 특히 당시 대칭키 암호를 분석하는 방법인 '선형 공격(linear cryptanalysis)'과 '차분 공격(Differential cryptanalysis)'에 대한 안전성 증명이 주를 이루었다.[73] 비용은 '스마트 카드, 하드웨어, 소프트웨어, 구현'을 위한 다양한 형태의 계산효율성을 참고하여 평가 되었으며, 여기서 계산효율성은 속도 및 메모리 요구량등을 의미 하였다.[73] 알고리즘 및 구현 특성은 유연성과 알고리즘의 단순성을 주로 평가 하였다.[73]

마지막 평가과정에서 남았던 5개의 알고리즘 중 4개의 알고리즘은 탈락했지만 안전성이 떨어지는 알고리즘은 절대 아니였다.[73] 다만 레인달의 알고리즘이 안전성, 속도, 효율성, 구현 및 유연성이 다른 알고리즘들 보다 우수했을 뿐이다.[73]

3. 3. AES 선정 기준

1997년 1월 2일, NIST는 DES를 대체하기 위해 3DES와 같거나 더 나은 보안성을 가진 개선된 암호 기법을 공모하였다.[73] 선정될 암호의 정식 명칭은 1997년 9월 2일 고급 암호화 표준(AES)로 정해졌다.[73] NIST는 케르코프 원리에 따라 128비트 블록을 128, 192, 256비트 키 길이로 처리하고 무료로 배포할 수 있어야 한다는 조건을 제시했다.[73] 평가 항목으로는 보안, 계산적 효율성, 메모리 요구량, 하드웨어와 소프트웨어적 적합성, 유연성 5가지를 제시하였다.[73]

AES 선정 과정은 개방성과 국제적인 흐름을 반영하였다.[73] 세 번의 대회와 전문가, 비전문가 등 많은 사람들의 의견을 공개하고 반영하였으며, 피드백 기회를 제공하고 함께 토론하는 과정을 거쳤다.[73] 수학자, 컴퓨터 학자, 암호학자, 공학자 등 다양한 분야 전문가들의 의견을 반영하여 안전하고 성능이 우수한 알고리즘을 선택했다.[73]

AES는 15개의 후보 알고리즘 저자들의 국적만큼이나 다양한 국가의 평가를 받았다.[73] 대한민국, 일본, 이스라엘, 독일, 프랑스, 코스타리카, 캐나다, 벨기에, 호주, 노르웨이, 영국, 미국 등이 알고리즘 안전성 평가에 적극적이었다.[73] 2차 대회는 이탈리아 로마에서 개최되었다.[73]

AES 후보 알고리즘들은 안전성, 비용, 알고리즘 및 구현 특성의 세 가지 조건을 만족해야 했다.[73] 안전성은 필수적인 요소였으며, 선형 공격차분 공격에 대한 안전성 증명이 중요하게 다루어졌다.[73] 비용은 스마트 카드, 하드웨어, 소프트웨어 구현을 위한 계산 효율성(속도, 메모리 요구량 등)을 고려하여 평가되었다.[73] 알고리즘 및 구현 특성은 유연성과 단순성을 주로 평가했다.[73]

최종 후보로 MARS, RC6, 레인달, Serpent, Twofish 5개의 알고리즘이 선정되었으며,[73] 2000년 10월 2일, 레인달이 AES 알고리즘으로 최종 선정되었다.[73] 레인달은 안전성, 속도, 효율성, 구현 및 유연성 면에서 다른 알고리즘보다 우수한 평가를 받았다.[73]

4. 암호화 방식

AES는 치환-순열 네트워크 기반이며, 소프트웨어와 하드웨어 모두에서 효율적이다.[15] 이전의 DES와 달리, AES는 Feistel 네트워크를 사용하지 않는다. AES는 블록 크기가 128 비트로 고정되어 있고, 키 크기는 128, 192 또는 256비트를 사용하는 Rijndael의 변형이다. 반면 Rijndael 자체는 블록과 키 크기를 32비트의 배수로 지정하며, 최소 128비트에서 최대 256비트까지 가능하다.

AES는 16바이트의 4 × 4 열 우선 순서 배열인 '상태'에서 작동한다.[16]

:

\begin{bmatrix}

b_0 & b_4 & b_8 & b_{12} \\

b_1 & b_5 & b_9 & b_{13} \\

b_2 & b_6 & b_{10} & b_{14} \\

b_3 & b_7 & b_{11} & b_{15}

\end{bmatrix}



AES 암호에 사용되는 키 크기는 평문암호문으로 변환하는 라운드 수를 결정한다. 라운드 수는 다음과 같다.


  • 128비트 키: 10 라운드
  • 192비트 키: 12 라운드
  • 256비트 키: 14 라운드


각 라운드는 암호화 키에 의존하는 단계를 포함하여 여러 처리 단계로 구성된다. 암호문을 원래 평문으로 변환하기 위해 동일한 암호화 키를 사용하여 일련의 역 라운드가 적용된다.

AES는 SPN 구조의 블록 암호이며, 블록 길이는 128비트이고, 키 길이는 128비트, 192비트, 256비트의 3가지가 사용된다.[59]

암호화 처리에서는 처음에 키 생성을 수행한다. AES 암호의 키 길이에 따라 변환 라운드 수가 다르다.

  • 키 길이 128비트일 때, 라운드 수는 10회이다.
  • 키 길이 192비트일 때, 라운드 수는 12회이다.
  • 키 길이 256비트일 때, 라운드 수는 14회이다.


암호화는 다음 4가지 처리로 구성된다.[60]

# SubBytes - 치환표(S-box)에 의한 1바이트 단위의 치환.

# ShiftRows - 4바이트 단위의 행을 일정 규칙으로 왼쪽 시프트한다.

# MixColumns - 비트 연산에 의한 4바이트 단위의 행렬 변환.

# AddRoundKey - 라운드 키와의 XOR을 취한다.

이들 4가지 처리를 1라운드로 하여 암호화를 수행한다.

복호화는 위 처리의 역변환을 역순으로 실행한다.

# AddRoundKey

# InvMixColumns

# InvShiftRows

# InvSubBytes

;키 확장

라운드 키는 AES 키 스케줄을 사용하여 암호 키에서 파생된다. AES는 각 라운드마다 별도의 128비트 라운드 키 블록이 필요하며 추가로 하나가 더 필요하다.

;AddRoundKey

AddRoundKey영어 단계에서 서브키는 상태와 결합된다. 각 라운드마다 서브키는 Rijndael의 키 스케줄을 사용하여 메인 키에서 파생된다.[59] 각 서브키는 상태와 크기가 같다. 서브키는 비트 단위 XOR을 사용하여 상태와 서브키의 해당 바이트를 결합하여 추가된다.[59]

암호화의 경우, 우선 키 생성을 수행하고, 그 후, AddRoundKey는 4가지 처리중 하나로, 1라운드로 하여 암호화가 수행된다.[60] 복호화는 위 처리의 역변환을 역순으로 실행하여, AddRoundKey가 첫번째로 실행된다.[60]

;SubBytes

단계에서 ''상태'' 배열의 각 바이트 a_{i,j}는 8비트 치환 상자를 사용하여 S(a_{i,j})로 대체된다. 라운드 0 전에 ''상태'' 배열은 단순히 평문/입력이다. 이 연산은 암호에서 비선형성을 제공한다. 사용된 S-box는 좋은 비선형성 속성을 갖는 것으로 알려진 상의 곱셈 역원에서 파생된다. 간단한 대수적 속성을 기반으로 한 공격을 방지하기 위해 S-box는 역 함수와 가역적인 아핀 변환을 결합하여 구성된다. S-box는 또한 고정점(따라서 순열임)을 피하도록 선택된다. 즉, S(a_{i,j}) \neq a_{i,j} 이고, 반대 고정점, 즉 S(a_{i,j}) \oplus a_{i,j} \neq \text{FF}_{16} 도 피한다.

복호화를 수행하는 동안에는 단계(의 역)가 사용되며, 이 단계에서는 먼저 아핀 변환의 역을 취한 다음 곱셈 역원을 찾아야 한다.

SubBytes는 치환표(S-box)에 의한 1바이트 단위의 치환 과정이다.[60]

;ShiftRows

ShiftRows영어 단계는 상태의 행에 대해 작동하며, 각 행의 바이트를 특정 오프셋만큼 순환 이동한다. AES의 경우 첫 번째 행은 변경되지 않고 유지된다. 두 번째 행의 각 바이트는 왼쪽으로 한 자리 이동한다. 마찬가지로, 세 번째 및 네 번째 행은 각각 두 자리와 세 자리 오프셋만큼 이동한다.[17] 이러한 방식으로, ShiftRows영어 단계의 출력 상태의 각 열은 입력 상태의 각 열의 바이트로 구성된다. 이 단계의 중요성은 열이 독립적으로 암호화되는 것을 방지하는 데 있으며, 이 경우 AES는 네 개의 독립적인 블록 암호로 축소될 것이다.

;MixColumns

단계에서, 상태의 각 열의 네 바이트는 가역적인 선형 변환을 사용하여 결합된다. 함수는 네 바이트를 입력으로 받아 네 바이트를 출력하며, 각 입력 바이트는 네 개의 모든 출력 바이트에 영향을 미친다. 와 함께, 는 암호에 확산을 제공한다.[60]

이 연산 동안, 각 열은 고정된 행렬을 사용하여 변환된다 (행렬은 열에 왼쪽 곱셈을 하여 상태의 열의 새 값을 제공한다).

::

\begin{bmatrix}

b_{0,j} \\ b_{1,j} \\ b_{2,j} \\ b_{3,j}

\end{bmatrix} = \begin{bmatrix}

2 & 3 & 1 & 1 \\

1 & 2 & 3 & 1 \\

1 & 1 & 2 & 3 \\

3 & 1 & 1 & 2

\end{bmatrix} \begin{bmatrix}

a_{0,j} \\ a_{1,j} \\ a_{2,j} \\ a_{3,j}

\end{bmatrix}

\qquad 0 \le j \le 3



행렬 곱셈은 엔트리의 곱셈과 덧셈으로 구성된다. 엔트리는 x^7 차수의 다항식의 계수로 취급되는 바이트이다. 덧셈은 간단히 XOR이다. 곱셈은 기약 다항식 x^8+x^4+x^3+x+1을 모듈로 한다. 비트별로 처리되면, 시프트 후, 시프트된 값이 FF16보다 크면 (오버플로는 생성 다항식의 뺄셈으로 수정해야 한다) 1B16과의 조건부 XOR을 수행해야 한다. 이는 \operatorname{GF}(2^8)에서 일반적인 곱셈의 특수한 경우이다.

더 일반적인 의미에서, 각 열은 \operatorname{GF}(2^8) 위의 다항식으로 취급되며, 고정된 다항식 c(z) = {03}_{16} \cdot z^3 + {01}_{16} \cdot z^2 +{01}_{16} \cdot z + {02}_{16}{01}_{16} \cdot z^4+{01}_{16}를 모듈로 곱해진다. 계수는 \operatorname{GF}(2)[x]의 비트 다항식의 이진 표현의 16진법에 해당한다. 단계는 유한체 \operatorname{GF}(2^8)에서 표시된 특정 MDS 행렬과의 곱셈으로 볼 수 있다. 이 과정은 Rijndael MixColumns 문서에서 더 자세히 설명한다.

4. 1. 키 확장

라운드 키는 AES 키 스케줄을 사용하여 암호 키에서 파생된다. AES는 각 라운드마다 별도의 128비트 라운드 키 블록이 필요하며 추가로 하나가 더 필요하다.

4. 2. AddRoundKey



AddRoundKey영어 단계에서 서브키는 상태와 결합된다. 각 라운드마다 서브키는 Rijndael의 키 스케줄을 사용하여 메인 키에서 파생된다.[59] 각 서브키는 상태와 크기가 같다. 서브키는 비트 단위 XOR을 사용하여 상태와 서브키의 해당 바이트를 결합하여 추가된다.[59]

암호화의 경우, 우선 키 생성을 수행하고, 그 후, AddRoundKey는 4가지 처리중 하나로, 1라운드로 하여 암호화가 수행된다.[60] 복호화는 위 처리의 역변환을 역순으로 실행하여, AddRoundKey가 첫번째로 실행된다.[60]

4. 3. SubBytes



단계에서 ''상태'' 배열의 각 바이트 a_{i,j}는 8비트 치환 상자를 사용하여 S(a_{i,j})로 대체된다. 라운드 0 전에 ''상태'' 배열은 단순히 평문/입력이다. 이 연산은 암호에서 비선형성을 제공한다. 사용된 S-box는 좋은 비선형성 속성을 갖는 것으로 알려진 상의 곱셈 역원에서 파생된다. 간단한 대수적 속성을 기반으로 한 공격을 방지하기 위해 S-box는 역 함수와 가역적인 아핀 변환을 결합하여 구성된다. S-box는 또한 고정점(따라서 순열임)을 피하도록 선택된다. 즉, S(a_{i,j}) \neq a_{i,j} 이고, 반대 고정점, 즉 S(a_{i,j}) \oplus a_{i,j} \neq \text{FF}_{16} 도 피한다.

복호화를 수행하는 동안에는 단계(의 역)가 사용되며, 이 단계에서는 먼저 아핀 변환의 역을 취한 다음 곱셈 역원을 찾아야 한다.

SubBytes는 치환표(S-box)에 의한 1바이트 단위의 치환 과정이다.[60]

4. 4. ShiftRows



ShiftRows영어 단계는 상태의 행에 대해 작동하며, 각 행의 바이트를 특정 오프셋만큼 순환 이동한다. AES의 경우 첫 번째 행은 변경되지 않고 유지된다. 두 번째 행의 각 바이트는 왼쪽으로 한 자리 이동한다. 마찬가지로, 세 번째 및 네 번째 행은 각각 두 자리와 세 자리 오프셋만큼 이동한다.[17] 이러한 방식으로, ShiftRows영어 단계의 출력 상태의 각 열은 입력 상태의 각 열의 바이트로 구성된다. 이 단계의 중요성은 열이 독립적으로 암호화되는 것을 방지하는 데 있으며, 이 경우 AES는 네 개의 독립적인 블록 암호로 축소될 것이다.

4. 5. MixColumns



단계에서, 상태의 각 열의 네 바이트는 가역적인 선형 변환을 사용하여 결합된다. 함수는 네 바이트를 입력으로 받아 네 바이트를 출력하며, 각 입력 바이트는 네 개의 모든 출력 바이트에 영향을 미친다. 와 함께, 는 암호에 확산을 제공한다.[60]

이 연산 동안, 각 열은 고정된 행렬을 사용하여 변환된다 (행렬은 열에 왼쪽 곱셈을 하여 상태의 열의 새 값을 제공한다).

::

\begin{bmatrix}

b_{0,j} \\ b_{1,j} \\ b_{2,j} \\ b_{3,j}

\end{bmatrix} = \begin{bmatrix}

2 & 3 & 1 & 1 \\

1 & 2 & 3 & 1 \\

1 & 1 & 2 & 3 \\

3 & 1 & 1 & 2

\end{bmatrix} \begin{bmatrix}

a_{0,j} \\ a_{1,j} \\ a_{2,j} \\ a_{3,j}

\end{bmatrix}

\qquad 0 \le j \le 3



행렬 곱셈은 엔트리의 곱셈과 덧셈으로 구성된다. 엔트리는 x^7 차수의 다항식의 계수로 취급되는 바이트이다. 덧셈은 간단히 XOR이다. 곱셈은 기약 다항식 x^8+x^4+x^3+x+1을 모듈로 한다. 비트별로 처리되면, 시프트 후, 시프트된 값이 FF16보다 크면 (오버플로는 생성 다항식의 뺄셈으로 수정해야 한다) 1B16과의 조건부 XOR을 수행해야 한다. 이는 \operatorname{GF}(2^8)에서 일반적인 곱셈의 특수한 경우이다.

더 일반적인 의미에서, 각 열은 \operatorname{GF}(2^8) 위의 다항식으로 취급되며, 고정된 다항식 c(z) = {03}_{16} \cdot z^3 + {01}_{16} \cdot z^2 +{01}_{16} \cdot z + {02}_{16}{01}_{16} \cdot z^4+{01}_{16}를 모듈로 곱해진다. 계수는 \operatorname{GF}(2)[x]의 비트 다항식의 이진 표현의 16진법에 해당한다. 단계는 유한체 \operatorname{GF}(2^8)에서 표시된 특정 MDS 행렬과의 곱셈으로 볼 수 있다. 이 과정은 Rijndael MixColumns 문서에서 더 자세히 설명한다.

5. AES 최적화

AES 최적화는 32비트 이상의 워드를 사용하는 시스템에서 암호화 및 복호화 속도를 높이기 위해 사용된다.

암호화 과정에서 SubBytes와 ShiftRows 단계를 바꾸어 Shiftrows -> Subbyte & Mixcolumns -> Addroundkey 순서로 변경하고, Subbyte & Mixcolumns를 4개의 8\*32 테이블로 구현한다. 32비트 수 4개를 입력받아 각 바이트(a, b, c, d)를 행렬로 표현하고, 갈루아 필드에서의 다항식 곱셈 연산을 통해 32비트 수를 출력한다. 이때, 4개의 테이블은 각각 a, b, c, d에 대한 Subbyte 연산 결과(Sbox[a], Sbox[b], Sbox[c], Sbox[d])와 순환 행렬의 곱셈 결과를 저장한다.

AES 암호화 Table


테이블을 이용한 암호화 구현 시에는 Sbox 표를 별도로 입력할 필요가 없다. 순환 행렬에서의 1을 이용하여 Table1 결과값의 LSB에서부터 8비트만 이용하면 Sbox와 동일한 값을 얻을 수 있다. 하지만 복호화 구현 시에는 InvSbox 표가 필요하다. InvMixcolumn 수행 시 사용되는 순환 행렬에는 1이 없기 때문이다.

복호화 과정은 Addroundkey -> InvMixcolumns -> InvShiftrows -> InvSubbyte 순서로 진행된다. 첫 번째와 마지막 복호화 키를 제외한 복호화 키에 InvMixcolumn 연산을 적용하면 InvSubbyte -> InvShiftrows -> InvMixcolumns -> Addroundkey 순서로 구현할 수 있다. InvSubbyte & InvMixcolumns는 4개의 8\*32 테이블로 구현되며, 암호화와 유사한 방식으로 갈루아 필드에서의 다항식 곱셈 연산을 통해 32비트 수를 출력한다.

AES 복호화 Table


바이트 지향적 방식을 사용하면 SubBytes, ShiftRows, MixColumns 단계를 단일 라운드 연산으로 결합할 수 있다.[19]

6. 안전성

국가안보국(NSA)은 Rijndael을 포함한 모든 AES 최종 후보를 검토했으며, 이들 모두가 미국 정부의 기밀이 아닌 데이터를 보호하기에 충분히 안전하다고 밝혔다. 2003년 6월, 미국 정부는 AES가 기밀 정보를 보호하는 데 사용될 수 있다고 발표했다.[20]

> AES 알고리즘의 모든 키 길이(128, 192 및 256)의 설계 및 강도는 SECRET 수준까지 기밀 정보를 보호하기에 충분하다. TOP SECRET 정보는 192 또는 256 키 길이를 사용해야 한다. 국가 안보 시스템 및/또는 정보를 보호하기 위한 제품에 AES를 구현하려면 해당 제품의 획득 및 사용 전에 NSA의 검토 및 인증을 받아야 한다.[20]

AES는 128비트 키에 10 라운드, 192비트 키에 12 라운드, 256비트 키에 14 라운드를 사용한다.

2006년까지 알려진 최상의 공격은 128비트 키에 7 라운드, 192비트 키에 8 라운드, 256비트 키에 9 라운드였다.[21] 암호학자들에게 있어서, 암호 해독 "돌파"는 무차별 대입 공격보다 빠른 모든 것을 의미한다. 즉, 가능한 각 키에 대해 순차적으로 한 번의 시험 복호화를 수행하는 것이다. 따라서 돌파는 현재 기술로는 불가능한 결과도 포함할 수 있다. 비록 비실용적이긴 하지만, 이론적인 돌파는 때때로 취약점 패턴에 대한 통찰력을 제공할 수 있다. 널리 구현된 블록 암호화 알고리즘에 대한 가장 큰 성공적인 공개 무차별 대입 공격은 2006년 distributed.net에 의한 64비트 RC5 키에 대한 공격이었다.[22]

키 공간은 키 길이의 각 비트가 추가될 때마다 2의 인수로 증가하며, 키의 모든 가능한 값이 동일한 확률을 갖는 경우, 이는 키 길이의 각 비트가 추가될 때마다 평균 무차별 대입 키 검색 시간이 두 배로 증가하는 것으로 해석된다. 이는 무차별 대입 검색의 노력이 키 길이에 따라 기하급수적으로 증가함을 의미한다. 키 길이 자체는 공격에 대한 보안을 의미하지 않는데, 매우 긴 키를 가지고 있지만 취약한 것으로 밝혀진 암호가 있기 때문이다.

AES는 비교적 단순한 대수적 프레임워크를 가지고 있다.[23] 2002년, 니콜라스 쿠르투아와 요제프 피에프르지크는 AES 알고리즘의 약점을 보여주는 "XSL 공격"이라는 이론적 공격을 발표했는데, 이는 부분적으로 비선형 구성 요소의 낮은 복잡성 때문이었다.[24] 그 이후로, 다른 논문들은 원래 제시된 공격이 실행 불가능하다는 것을 보여주었다; 블록 암호에 대한 XSL 공격을 참조하라.

AES 선택 과정에서, 경쟁 알고리즘 개발자들은 Rijndael 알고리즘에 대해 "우리는 보안이 중요한 애플리케이션에서의 [그것의] 사용에 대해 우려하고 있습니다."라고 썼다.[25] 그러나 2000년 10월, AES 선택 과정이 끝날 무렵, 경쟁 알고리즘 투피쉬의 개발자인 브루스 슈나이어는 Rijndael에 대한 성공적인 학술 공격이 언젠가는 개발될 것이라고 생각했지만, "누군가가 Rijndael 트래픽을 읽을 수 있도록 하는 공격을 발견할 것이라고 믿지 않는다"고 썼다.[26]

2009년 5월까지, 전체 AES에 대한 유일하게 성공적으로 발표된 공격은 일부 특정 구현에 대한 부채널 공격이었다. 2009년에는 AES의 키 스케줄의 단순성을 악용하고 복잡성이 2119인 새로운 관련 키 공격이 발견되었다. 2009년 12월에는 299.5로 개선되었다. 이는 2009년 초 알렉스 비류코프, 드미트리 호브라토비치, 이비차 니콜리치가 발견한 공격의 후속 조치로, 235개의 키 중 하나에 대해 296의 복잡성을 가졌다.[27] 그러나 관련 키 공격은 적절하게 설계된 암호 프로토콜에서는 문제가 되지 않는데, 적절하게 설계된 프로토콜(예: 구현 소프트웨어)은 공격자가 관련성을 위해 키를 선택하는 수단을 제한함으로써 관련 키를 허용하지 않도록 주의할 것이다.

다른 공격은 2009년 7월 30일 브루스 슈나이어에 의해 블로그에 게시되었고,[28] 2009년 8월 3일에 프리프린트로 공개되었다.[29] 알렉스 비류코프, 오르 던켈만, 네이선 켈러, 드미트리 호브라토비치, 아디 샤미르가 수행한 이 새로운 공격은 두 개의 관련 키와 239 시간만 사용하여 9라운드 버전의 전체 256비트 키를 복구하거나, 10라운드 버전의 경우 더 강력한 유형의 관련 서브키 공격으로 245 시간, 11라운드 버전의 경우 270 시간을 사용하는 AES-256에 대한 공격이다. 256비트 AES는 14라운드를 사용하므로, 이러한 공격은 전체 AES에 대해 효과적이지 않다.

더 강력한 관련 키를 사용한 이러한 공격의 실용성은, 예를 들어, 2010년 빈센트 레이먼이 저술한 AES-128에 대한 중간에서 선택된 키 관계에 대한 논문[31]에 의해 비판받았다.[30]

2009년 11월에는 AES-128의 축소된 8라운드 버전에 대한 첫 번째 알려진 키 구별 공격이 프리프린트로 공개되었다.[32] 이 알려진 키 구별 공격은 AES와 유사한 순열에 대한 바운스 또는 중간부터 시작하는 공격의 개선된 버전으로, 두 개의 연속적인 순열 라운드를 소위 슈퍼-S-박스의 적용으로 본다. 이는 248의 시간 복잡성과 232의 메모리 복잡성을 가진 8라운드 버전의 AES-128에서 작동한다. 128비트 AES는 10라운드를 사용하므로, 이 공격은 전체 AES-128에 대해 효과적이지 않다.

전체 AES에 대한 첫 번째 키 복구 공격은 안드레이 보그다노프, 드미트리 호브라토비치, 크리스찬 레히베르거에 의해 수행되었으며, 2011년에 발표되었다.[33] 이 공격은 바이클리크 공격이며, 무차별 대입보다 약 4배 빠르다. AES-128 키를 복구하는 데 2126.2 연산이 필요하다. AES-192 및 AES-256의 경우, 각각 2190.2 및 2254.6 연산이 필요하다. 이 결과는 2015년 논문에서 바오슈아이 타오와 홍준 우에 의해 AES-128에 대해 2126.0, AES-192에 대해 2189.9, AES-256에 대해 2254.3으로 더욱 개선되었으며,[34] 이는 AES에 대한 키 복구 공격의 현재 최고 결과이다.

이는 매우 작은 이득이며, 126비트 키(128비트 대신)는 현재 및 미래의 하드웨어에서도 수십억 년이 걸릴 것이다. 또한, 저자들은 128비트 키를 사용하는 AES에 대한 기술을 사용한 최상의 공격은 288비트의 데이터를 저장해야 한다고 계산한다. 이는 약 38조 테라바이트의 데이터로, 2016년에 지구상의 모든 컴퓨터에 저장된 모든 데이터보다 많았다.[35] 2015년의 논문은 나중에 공간 복잡성을 256비트로 개선했다.[34] (시간 복잡성을 약 2126으로 유지하면서) 이는 9007테라바이트이다.

스노든 문서에 따르면, NSA는 타우 통계를 기반으로 한 암호 공격이 AES를 해독하는 데 도움이 될 수 있는지에 대한 연구를 수행하고 있다.[36]

현재, 키에 대한 지식이 없는 사람이 제대로 구현된 AES에 의해 암호화된 데이터를 읽을 수 있도록 하는 실용적인 공격은 알려져 있지 않다.

관련 키 공격에 의해 256비트 AES 암호의 9라운드까지 해독이 가능하다. 또한, 선택 평문 공격에 의해 192비트 및 256비트 AES 암호의 8라운드까지, 128비트 AES 암호의 7라운드까지 해독이 가능하다.[61] 브루스 슈나이어는 AES의 "대수적 단순성에 의문"을 느끼고 있지만, AES는 유럽의 암호 규격 NESSIE와 일본의 암호 규격 CRYPTREC에서도 채용되었다. AES의 수학적 구조는 다른 블록 암호와 다르며, 제대로 된 기술도 있다.[61][62]

이 암호는 아직 어떤 공격에도 굴복하지 않았지만, 몇몇 연구자들이 이 수학적인 구조를 이용한 공격 방법이 존재할지도 모른다고 지적하고 있다.[63][64]

6. 1. 부채널 공격

부채널 공격은 암호에 대한 공격이 아닌 암호 구현에 대한 공격으로, 고급 암호화 표준(AES)의 다양한 구현에 대한 여러 공격이 알려져 있다.

2005년 4월, D. J. 번스타인은 OpenSSL의 AES 암호화를 사용한 사용자 지정 서버를 해킹하는 데 사용한 캐시 타이밍 공격을 발표했다.[37] 이 공격에는 2억 개가 넘는 선택된 평문이 필요했다.[38] 2005년 10월, Dag Arne Osvik, 아디 샤미르 및 에란 트로머는 OpenSSL 및 Linux의 `dm-crypt` 파티션 암호화 기능에서 발견된 AES 구현에 대한 여러 캐시 타이밍 공격을 시연하는 논문을 발표했다.[39] 한 공격은 65 밀리초 만에 총 800 번의 암호화를 트리거링하는 작업만으로 전체 AES 키를 얻을 수 있었다.

2009년 12월에는 차분 오류 분석을 사용하여 하드웨어 구현에 대한 공격이 발표되었으며, 복잡도 232로 키를 복구할 수 있다.[40] 2010년 11월 Endre Bangerter, David Gullasch 및 Stephan Krenn은 암호문이나 평문 없이 AES-128에서 비밀 키를 "거의 실시간"으로 복구하는 실용적인 접근 방식을 설명하는 논문을 발표했다.[41] 2016년 3월, Ashokkumar C., Ravi Prakash Giri 및 Bernard Menezes는 6~7개의 평문/암호문 블록만으로 전체 128비트 AES 키를 복구할 수 있는 AES 구현에 대한 부채널 공격을 발표했다.[43]

많은 최신 CPU에는 타이밍 관련 부채널 공격으로부터 보호하는 AES에 대한 하드웨어 명령이 내장되어 있다.[44][45]

6. 2. 양자 공격

AES-256은 양자 저항성을 갖춘 것으로 간주된다. 이는 128 비트의 보안에서 전통적인 비양자 공격에 대한 AES-128의 저항성과 유사한 양자 저항성을 가지고 있기 때문이다. AES-192 및 AES-128은 키 크기가 작아 양자 저항성을 갖춘 것으로 간주되지 않는다. AES-192는 양자 공격에 대해 96비트의 강도를 가지며 AES-128은 양자 공격에 대해 64비트의 강도를 가지므로 둘 다 안전하지 않다.[46][47]

관련 키 공격에 의해 256비트 AES 암호의 9라운드까지 해독이 가능하다. 또한, 선택 평문 공격에 의해 192비트 및 256비트 AES 암호의 8라운드까지, 128비트 AES 암호의 7라운드까지 해독이 가능하다.[61] 슈나이어는 AES의 "대수적 단순성에 의문"을 느끼고 있지만, AES는 유럽의 암호 규격 NESSIE와 일본의 암호 규격 CRYPTREC에서도 채용되었다. AES의 수학적 구조는 다른 블록 암호와 다르며, 제대로 된 기술도 있다[61][62]

이 암호는 아직 어떤 공격에도 굴복하지 않았지만, 몇몇 연구자들이 이 수학적인 구조를 이용한 공격 방법이 존재할지도 모른다고 지적하고 있다[63][64]

7. 구현

고급 암호화 표준의 구현에 대한 내용은 AES 구현 문서에서 다룬다.

8. 성능

AES는 8비트 스마트 카드에서 고성능 컴퓨터에 이르기까지 광범위한 하드웨어에서 훌륭한 성능을 보인다.[53] 펜티엄 프로에서는 AES 암호화가 바이트당 18 클럭 사이클(cpb)을 요구하며, 이는 200MHz 프로세서에서 약 11 MiB/s의 처리량과 같다.[53] AES-NI 명령 집합 확장을 지원하는 인텔 코어 및 AMD 라이젠 CPU에서는 처리량이 여러 GiB/s가 될 수 있다.[54] 웨스트미어 CPU에서는 AES-NI를 사용한 AES 암호화가 AES-128의 경우 약 1.3 cpb, AES-256의 경우 1.8 cpb가 소요된다.[55]

9. NIST/CSEC 검증

암호 모듈 검증 프로그램(CMVP)은 미국 정부의 국립표준기술연구소(NIST) 컴퓨터 보안 부서와 캐나다 정부의 통신 보안 기관(CSE)이 공동으로 운영한다. 미국 정부는 민감하지만 비분류(SBU) 이상 등급의 모든 데이터를 암호화하기 위해 NIST FIPS 140-2에 따라 검증된 암호 모듈의 사용을 요구한다.[48] 캐나다 정부 또한 자국의 부서에서 비분류 응용 프로그램에 FIPS 140 검증된 암호 모듈의 사용을 권장한다.

NIST 간행물 197("FIPS 197")이 AES 알고리즘을 다루는 유일한 문서이지만, FIPS 197 검증은 일반적으로 FIPS 140 검증 암호 모듈 목록에 "FIPS 승인: AES" 표기로 나타난다.[48]

암호 알고리즘 검증 프로그램(CAVP)은 AES 알고리즘의 올바른 구현에 대한 독립적인 검증을 허용하며, 성공하면 NIST 검증 페이지에 목록에 오른다.[49][50] FIPS 140-2 검증을 받지 않거나 NSA의 특정 승인을 받지 않은 암호 모듈은 미국 정부에서 안전하다고 간주되지 않으며 정부 데이터를 보호하는 데 사용할 수 없다.[48]

FIPS 140-2 검증은 기술적, 재정적으로 달성하기 어렵다.[51] 승인된 연구소를 통해 테스트를 수행하는 데 드는 비용은 상당할 수 있으며, 검증 후 모듈이 변경되면 다시 제출하고 재평가해야 한다.[51]

참조

[1] 문서
[2] 문서
[3] 웹사이트 Biclique Cryptanalysis of the Full AES http://research.micr[...] 2019-05-01
[4] 웹사이트 Related-key Cryptanalysis of the Full AES-192 and AES-256 https://eprint.iacr.[...] 2010-02-16
[5] 웹사이트 Another New AES Attack http://www.schneier.[...] 2010-03-11
[6] 웹사이트 Key Recovery Attacks of Practical Complexity on AES Variants With Up To 10 Rounds https://eprint.iacr.[...] 2010-03-11
[7] 웹사이트 Announcing the ADVANCED ENCRYPTION STANDARD (AES) https://nvlpubs.nist[...] United States National Institute of Standards and Technology (NIST) 2024-08-26
[8] 웹사이트 AES Proposal: Rijndael http://csrc.nist.gov[...] National Institute of Standards and Technology 2013-02-21
[9] 웹사이트 AES Proposal: Rijndael http://csrc.nist.gov[...] 1999-09-03
[10] 뉴스 U.S. Selects a New Encryption Technique https://www.nytimes.[...] New York Times 2000-10-03
[11] 뉴스 NIST reports measurable success of Advanced Encryption Standard http://www.findartic[...] 2002
[12] 문서
[13] 문서
[14] 웹사이트 ISO/IEC 18033-3: Information technology – Security techniques – Encryption algorithms – Part 3: Block ciphers http://www.iso.org/i[...]
[15] 웹사이트 The Twofish Team's Final Comments on AES Selection http://www.schneier.[...] 2000-05
[16] 문서
[17] 문서
[18] 서적 Cryptographic Hardware and Embedded Systems - CHES 2002
[19] 웹사이트 byte-oriented-aes – A public domain byte-oriented implementation of AES in C – Google Project Hosting https://code.google.[...] 2012-12-23
[20] 웹사이트 National Policy on the Use of the Advanced Encryption Standard (AES) to Protect National Security Systems and National Security Information http://csrc.nist.gov[...] 2011-02-15
[21] 웹사이트 Academic: Improved Cryptanalysis of Rijndael - Schneier on Security http://www.schneier.[...] 2007-03-06
[22] 웹사이트 Is encryption really crackable? https://www.zdnet.co[...] Ziff-Davis 2010-08-07
[23] 웹사이트 Sean Murphy http://www.isg.rhul.[...] University of London 2008-11-02
[24] 웹사이트 AES News, Crypto-Gram Newsletter, September 15, 2002 http://www.schneier.[...] 2007-07-27
[25] 간행물 A simple algebraic representation of Rijndael http://www.macfergus[...] Springer-Verlag 2006-10-06
[26] 웹사이트 AES Announced http://www.schneier.[...] 2000-10-15
[27] 서적 Advances in Cryptology - CRYPTO 2009 Springer Berlin / Heidelberg 2009
[28] 웹사이트 Another New AES Attack http://www.schneier.[...] 2010-03-11
[29] 웹사이트 Key Recovery Attacks of Practical Complexity on AES Variants With Up To 10 Rounds http://eprint.iacr.o[...] 2010-03-11
[30] 서적 On Some Symmetric Lightweight Cryptographic Designs Dissertation, Lund University
[31] 학술지 Practical-Titled Attack on AES-128 Using Chosen-Text Relations http://eprint.iacr.o[...] 2010
[32] 웹사이트 Super-Sbox Cryptanalysis: Improved Attacks for AES-like permutations http://eprint.iacr.o[...] 2010-03-11
[33] 서적 Advances in Cryptology – ASIACRYPT 2011 2011
[34] 서적 Information Security and Privacy 2015
[35] 웹사이트 AES Encryption isn't Cracked https://blog.agilebi[...] 2011-08-18
[36] 뉴스 Inside the NSA's War on Internet Security http://www.spiegel.d[...] 2015-09-04
[37] 웹사이트 Index of formal scientific papers http://cr.yp.to/pape[...] Cr.yp.to 2008-11-02
[38] 웹사이트 AES Timing Attack http://www.schneier.[...] 2007-03-17
[39] 간행물 Cache Attacks and Countermeasures: the Case of AES http://www.wisdom.we[...] 2008-11-02
[40] 간행물 A Diagonal Fault Attack on the Advanced Encryption Standard http://eprint.iacr.o[...] 2009-12-08
[41] 간행물 Cache Games – Bringing Access-Based Cache Attacks on AES to Practice http://eprint.iacr.o[...] 2010
[42] 웹사이트 Breaking AES-128 in realtime, no ciphertext required http://news.ycombina[...] Hacker News 2012-12-23
[43] 서적 2016 IEEE European Symposium on Security and Privacy (EuroS&P)
[44] conference Are AES x86 cache timing attacks still feasible? https://cseweb.ucsd.[...] 2012-10-19
[45] 웹사이트 Securing the Enterprise with Intel AES-NI https://www.intel.in[...] 2017-07-26
[46] 간행물 Quantum Security Analysis of AES https://inria.hal.sc[...] 2019-06-11
[47] 웹사이트 AES-256 joins the quantum resistance https://www.fierceel[...] 2023-09-26
[48] 웹사이트 NSTISSP No. 11, Revised Fact Sheet, National Information Assurance Acquisition Policy http://www.cnss.gov/[...] 2012-05-29
[49] 웹사이트 NIST.gov – Computer Security Division – Computer Security Resource Center http://csrc.nist.gov[...] Csrc.nist.gov 2012-12-23
[50] 웹사이트 Validated FIPS 140-1 and FIPS 140-2 Cryptographic Modules http://csrc.nist.gov[...] 2014-06-26
[51] 웹사이트 OpenSSL's Notes about FIPS certification http://openssl.org/d[...] Openssl.org 2012-12-23
[52] 웹사이트 The AES Known Answer Test (KAT) Vectors are available in Zip format within the NIST site http://csrc.nist.gov[...]
[53] 웹사이트 Performance Comparisons of the AES submissions http://www.schneier.[...] 2010-12-28
[54] 웹사이트 AMD Ryzen 7 1700X Review https://www.vortez.n[...]
[55] 웹사이트 Intel ® Advanced Encryption Standard (AES) New Instructions Set https://www.intel.co[...] 2010-05
[56] 문서 Rijndael에서는128, 160, 192, 224, 256 bits가 선택 가능。AES의 스펙에 맞춰 3つに限定
[57] 문서 Rijndael에서는128, 160, 192, 224, 256 bits가 선택 가능。AES의 스펙에 맞춰 128 bitsのみに限定
[58] 웹사이트 Biclique Cryptanalysis of the Full AES http://research.micr[...] 2016-10-09
[59] 문서 岡本 暗号理論入門 第2版(2002:51-52)
[60] 문서 結城 暗号技術入門 第3版(2003: 69-71)
[61] 웹사이트 A simple algebraic representation of Rijndael https://web.archive.[...] 2003-06-06
[62] 웹사이트 Sean Murphy https://www.isg.rhul[...]
[63] 문서 S-boxにおけるキャッシュ遅延を利用したAESへのタイミング攻撃 https://www.ipa.go.j[...]
[64] 문서 Cache-timing attacks on AES http://cr.yp.to/anti[...]
[65] 문서 Key sizes of 128, 160, 192, 224, and 256 bits are supported by the Rijndael algorithm, but only the 128, 192, and 256-bit key sizes are specified in the AES standard.
[66] 문서 Block sizes of 128, 160, 192, 224, and 256 bits are supported by the Rijndael algorithm for each key size, but only the 128-bit block size is specified in the AES standard.
[67] 웹인용 Biclique Cryptanalysis of the Full AES http://research.micr[...] 2019-05-01
[68] 웹인용 Archived copy http://eprint.iacr.o[...]
[69] 웹인용 Announcing the ADVANCED ENCRYPTION STANDARD (AES) http://csrc.nist.gov[...] United States National Institute of Standards and Technology (NIST) 2012-10-02
[70] 웹인용 Rijndael http://searchsecurit[...] 2015-03-09
[71] 웹인용 AES Proposal: Rijndael http://csrc.nist.gov[...] National Institute of Standards and Technology 2003-03-09
[72] 웹인용 ISO/IEC 18033-3: Information technology – Security techniques – Encryption algorithms – Part 3: Block ciphers http://www.iso.org/i[...]
[73] 서적 Cryptography Theory and Practice 3rd edition Chanpman & Hall/CRC 2006
[74] 문서 AES는 128비트 블록과 길이가 128,192, 256 비트인 키를 사용한다. 여기서는 가장많이 사용되는 키의 길이인 128 비트를 가정하기로 한다.
[75] 문서 대체 상자를 나타내는 용어인 S-box는 대체용 참조표로 사용되는 표로서 대칭암호를 구현하는 데 주로 사용된다.



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com