고급 암호화 표준

Advanced Encryption Standard
고급 암호화 표준
(리젠다엘)
AES (Rijndael) Round Function.png
AES 라운드 함수 시각화
일반
디자이너조안 대먼, 빈센트 리먼
초판1998
유래광장
후계자아누비스, 그랜드크루, 칼리나
인정.AES 수상자, CRYPTREC, NESSIE, NSA
암호 상세
키 사이즈128, 192 또는 256비트[note 1]
블록 크기128비트[note 2]
구조.대체-변환 네트워크
라운드10, 12 또는 14(키 크기에 따라 다름)
최고의 퍼블릭 암호 분석
전체 무차별 공격보다 계산 속도가 빠른 공격이 발표되었지만, 2013년 현재 계산상 [1]실현 가능한 공격은 없습니다.AES-128 의 경우는, 바이클리 공격을 사용해 계산 복잡도 2 로 키를126.1 회복할 수 있습니다.AES-192 및 AES-256에 대한 바이클리 공격의 경우 계산 복잡도는 각각2와254.4 2가 적용됩니다189.7.관련공격에 의해 AES-256과 AES-192가 시간과 데이터 모두에서 각각 [2]복잡도2와99.5176 2로 파괴될 가능성이 있습니다.

AES(Advanced Encryption Standard)는 원래 이름인 Rijndael(네덜란드어 발음: [rindaindall])[3]로도 알려져 있으며 2001년 [4]미국 국립표준기술연구소(NIST)가 제정한 전자 데이터 암호화 규격입니다.

AES는 벨기에 암호학자 Joan Daemen과 Vincent Rijmen에 의해 개발된 Rijndael 블록[3] 암호의 변형입니다.그는 AES 선정 과정에서 [6]NIST에 제안서를[5] 제출했습니다.Rijndael은 키와 블록 크기가 다른 암호군이다.AES의 경우 NIST는 Rijndael 패밀리의 3개 멤버를 선택했습니다.각 멤버의 블록 사이즈는 128비트이지만 키 길이는 128비트, 192비트 및 256비트입니다.

AES는 미국 정부에 의해 채택되었다.이는 1977년에 발표된 데이터 암호화 표준([7]DES)을 대체합니다.AES에 의해 기술되는 알고리즘은 대칭키 알고리즘입니다.즉, 데이터의 암호화와 복호화 양쪽에 같은 키가 사용됩니다.

미국에서 [4]AES는 2001년 11월 26일 NIST에 의해 U.S. FIPS PUB 197(FIPS 197)로 발표되었습니다.이 발표는 Rijndael 암호가 가장 [note 3]적합한 암호로 선택되기 전에 15개의 경쟁 설계가 제시되고 평가된 5년간의 표준화 과정을 거친 것입니다.

AES는 ISO/IEC 18033-3 표준에 포함되어 있습니다.AES는 2002년 5월 26일 미국 상무부 장관의 승인을 거쳐 미국 연방정부 표준으로 발효되었습니다.AES는 다양한 암호화 패키지로 제공되며, NSA가 [note 4]승인한 암호화 모듈에서 사용하는 경우 미국 국가안보국(NSA)최상위 기밀 정보에 대해 승인한 최초의 공개 접근 가능한 암호입니다.

최종 기준

Advanced Encryption Standard(AES)는 다음 각 항목에 정의되어 있습니다.

  • FIPS PUB 197: Advanced Encryption Standard (AES)[4]
  • ISO/IEC 18033-3: 블록 암호[8]

암호 설명

AES는 대체-변환 네트워크로 알려진 설계 원칙을 기반으로 소프트웨어와 [9]하드웨어 모두에서 효율적입니다.이전 DES와 달리 AES는 Feistel 네트워크를 사용하지 않습니다.AES는 Rijndael의 변형으로 128비트고정 블록사이즈128비트, 192비트 또는 256비트의 키사이즈를 가지고 있습니다.반면 Rijndael per se는 32비트의 배수(최소 128비트, 최대 256비트)로 지정됩니다.

AES는 [note 5]스테이트라고 불리는4 x 4 열 메이저바이트 배열로 동작합니다.대부분의 AES 계산은 특정 유한 필드에서 이루어집니다.

예를 들어, 16 ,b 1,. . ,b { { _ { , b _ { , , , b _ { 15}는, 다음의 2 차원 배열로서 표시됩니다.

AES 암호에 사용되는 키사이즈는 플레인텍스트라고 불리는 입력을 암호문이라고 불리는 최종 출력으로 변환하는 변환 라운드의 수를 지정합니다.라운드 수는 다음과 같다.

  • 128비트 키의 경우 10라운드
  • 192비트 키의 경우 12라운드.
  • 256비트 키의 경우 14라운드.

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

알고리즘의 개요 설명

  1. Key Expansion – 라운드 키는 AES 스케줄을 사용하여 암호 키에서 파생됩니다.AES에는 라운드마다 128비트 라운드키 블록이 1개 더 필요합니다.
  2. 초기 라운드 키 추가:
    1. AddRoundKey: 상태의 각 바이트는 비트 단위 xor를 사용하여 라운드 키의 바이트와 결합됩니다.
  3. 9, 11 또는 13라운드:
    1. SubBytes검색 테이블에 따라 각 바이트가 다른 바이트로 대체되는 비선형 대체 단계입니다.
    2. Shift Rows – 상태 마지막 3행의 행이 일정 수의 스텝을 주기적으로 이동하는 전치 단계입니다.
    3. [MixColumns] : 각 컬럼의 4바이트를 조합하여 스테이트 컬럼에서 동작하는 선형 혼합 연산입니다.
    4. AddRoundKey(원형키 추가)
  4. 결승(총 10, 12 또는 14라운드):
    1. 서브바이트
    2. Shift Rows
    3. AddRoundKey(원형키 추가)

SubBytes 스텝

SubBytes 단계에서 상태의 각 바이트는 고정 8비트 조회 테이블의 항목인 S; bij = S(aij)로 대체됩니다.

SubBytes 스텝에서는 상태 배열의 각 (\ 8비트 대체 상자를 사용하여 S 대체됩니다.라운드 0 이전 상태 배열은 단순 평문/입력입니다.이 조작은 암호의 비선형성을 제공합니다.사용된 S박스는 양호한 비선형성 특성을 가진 것으로 알려진 GF8(2)에 대한 곱셈 역수에서 파생됩니다.단순한 대수적 특성에 기초한 공격을 피하기 위해 S박스는 역함수와 반전 아핀 변환을 결합하여 구성됩니다.S박스는 고정점(즉, S(, )a , \ ( a _ , ) \ _ { ,} ) 반대 고정점 , j ) j f )를 피하기 위해서도 선택됩니다FF 복호화 실행 중에는 InvSubBytes 스텝(SubBytes의 역)이 사용됩니다.이 스텝에서는 먼저 아핀 변환의 역수를 취한 후 곱셈 역수를 구해야 합니다.

Shift Rows 스텝

ShiftRows 스텝에서는 상태의 각 행에 있는 바이트가 주기적으로 왼쪽으로 이동합니다.각 바이트가 이동하는 장소의 수는 각 행마다 증분적으로 다릅니다.

ShiftRows 스텝은 스테이트의 행에서 동작합니다.각 행의 바이트를 특정 오프셋만큼 주기적으로 이동합니다.AES의 경우 첫 번째 행은 변경되지 않습니다.두 번째 행의 각 바이트는 왼쪽으로 하나씩 이동합니다.마찬가지로 세 번째 행과 네 번째 행은 각각 [note 6]2와 3의 오프셋만큼 이동한다.이와 같이 ShiftRows 스텝의 출력 상태의 각 열은 입력 상태의 각 열로부터의 바이트로 구성됩니다.이 순서의 중요성은 열이 개별적으로 암호화되지 않도록 하는 것입니다.이 경우 AES는 4개의 독립된 블록 암호로 분해됩니다.

MixColumns 스텝

MixColumns 스텝에서는 상태의 각 열에 고정 c( c를 곱합니다.

MixColumns 스텝에서는 상태 각 열의 4바이트가 반전 가능한 선형 변환을 사용하여 결합됩니다.MixColumns 함수는 4바이트를 입력으로 사용하고 4바이트를 출력합니다.각 입력 바이트는 4개의 출력 바이트 모두에 영향을 줍니다.ShiftRows와 함께 MixColumns는 암호로 확산을 제공합니다.

이 작업을 수행하는 동안 각 열은 고정 행렬을 사용하여 변환됩니다(왼쪽으로 열을 곱한 행렬은 상태의 새 열 값을 제공합니다).

행렬 곱셈은 엔트리의 곱셈과 덧셈으로 구성됩니다.엔트리는 x({ x의 다항식 계수로 처리되는 바이트입니다.더하기 위해서는 단순히 XOR이 필요합니다.곱셈은 8 + x4 + x3 +x + x1입니다.비트 단위로 처리되는 경우, 시프트 후 시프트된 값이 FF보다16 크면 1B의16 조건부 XOR를 수행해야 합니다(오버플로우는 다항식 생성의 차감으로 보정해야 함).은 GF ( (의 일반적인 곱셈의 특수한 경우입니다.

보다 일반적인 의미에서 각 열은 GF (8 ( 대한 다항식으로 처리되며, 그 후 01 † z 4 + 01 16 {16}\ z16}})를 고정로 곱한다.+ 16{\ c z z^{202}.계수는 GF ( 2 \ {GF} (의 비트 다항식의 16진수 표현과 동등하게 표시됩니다.MixColumns 스텝은 유한 GF ( )의 특정 MDS 매트릭스에 의한 곱셈으로도 볼 수 있습니다 (이 과정은 Rijndael MixColumns 기사에 자세히 설명되어 있습니다.

AddRoundKey(추가 라운드 키)

AddRoundKey 스텝에서는 XOR 연산(')을 사용하여 스테이트의 각 바이트를 라운드 서브키의 바이트와 조합합니다.

AddRoundKey 스텝에서는 서브키가 상태와 결합됩니다.각 라운드에 대해 Rijndael의 키 스케줄을 사용하여 메인 키에서 서브 키가 파생됩니다.각 서브 키는 상태와 같은 크기입니다.하위 키는 비트 단위 XOR을 사용하여 상태의 각 바이트와 하위 키의 해당 바이트를 결합하여 추가됩니다.

암호 최적화

32비트 이상의 워드를 가진 시스템에서는 SubBytes 스텝과 ShiftRows 스텝과 MixColumn 스텝을 조합하여 일련의 테이블룩업으로 변환함으로써 이 암호의 실행을 고속화할 수 있습니다.여기에는 4개의 256 엔트리 32비트테이블이 필요합니다(모두 4096바이트를 차지합니다).그런 다음 AddRoundKey [10]스텝에서 16개의 테이블룩업 조작과 12개의 32비트 배타적 or 조작을 사용하여 라운드를 실행할 수 있습니다.또는 단일 256 엔트리 32비트 테이블(1024바이트를 점유)에 이어 원형 회전 조작으로 테이블 룩업 동작을 실행할 수 있다.

바이트 지향 방식을 사용하면 SubBytes, ShiftRowsMixColumns 단계를 단일 라운드 작업으로 [11]결합할 수 있습니다.

보안.

NSA(National Security Agency)는 Rijndael을 포함한 모든 AES 최종 후보들을 검토했으며, 이들 모두가 미국 정부의 기밀 데이터에도 충분히 안전하다고 밝혔다.2003년 6월 미국 정부는 AES를 사용하여 기밀 정보를 보호할 수 있다고 발표했습니다.

AES 알고리즘의 모든 키 길이(128, 192 및 256)의 설계와 강도는 기밀 정보를 SECRET 수준까지 보호하기에 충분합니다.TOP SECRET 정보는 192 또는 256 키 길이를 사용해야 합니다.국가 보안 시스템 및/또는 정보를 보호하기 위한 제품에서의 AES 구현은 취득 및 [12]사용 전에 NSA에 의해 검토 및 인증되어야 합니다.

AES에는 128비트키 10라운드, 192비트키 12라운드, 256비트키 14라운드가 있습니다.

2006년까지 가장 잘 알려진 공격은 128비트 키의 경우 7라운드, 192비트 키의 경우 8라운드, 256비트 [13]키의 경우 9라운드였습니다.

기존의 공격

암호화 기술자에게 있어서 암호 해독은 무차별 공격보다 빠릅니다.즉,[note 7] 가능한 각 키에 대해 순차적으로 1회의 시험 복호화를 실행하는 것입니다.따라서 중단에는 현재 기술로는 불가능한 결과가 포함될 수 있습니다.비실용적이기는 하지만 이론적인 중단은 때때로 취약성 패턴에 대한 통찰력을 제공할 수 있습니다.널리 구현되어 있는 블록 암호 알고리즘에 대해 공개적으로 알려진 가장 큰 브루트 포스 공격은 분산에 의한 64비트 RC5 키에 대한 공격이었습니다.2006년 [14]순이익입니다.

키 공간은 키 길이의 비트를 추가할 때마다 2배 증가하며, 키의 모든 가능한 값이 적합할 경우 평균 브루트 포스 키 검색 시간이 2배로 증가합니다.즉, 브루트 포스 검색 작업은 키 길이에 따라 기하급수적으로 증가합니다.키가 매우 긴 암호는 취약한 것으로 판명되었기 때문에 키 길이 자체는 공격에 대한 보안을 의미하지 않습니다.

AES는 꽤 단순한 대수적 [15]프레임워크를 가지고 있다.2002년 니콜라스 쿠르투아요제프 피에프르지크가 "XSL 공격"이라는 이름의 이론적 공격이 발표되었는데, 이는 부분적으로 비선형 [16]구성요소의 낮은 복잡성 때문에 AES 알고리즘의 약점을 보여준다고 주장했습니다.그 후 다른 문서에서는 처음에 설명한 바와 같이 공격이 작동하지 않는 것으로 나타났습니다. 블록 암호에 대한 XSL 공격을 참조하십시오.

AES 선정 과정 중 경쟁 알고리즘 개발자들은 Rijndael의 알고리즘에 대해 "우리는 (그) 사용에 대해 우려하고 있습니다.보안 크리티컬 애플리케이션에 [17]적합합니다."그러나 2000년 10월 AES 선정 과정 말미에 경쟁 알고리즘인 Twofish의 개발자인 Bruce Schneier는 언젠가 Rijndael에 대한 성공적인 학술 공격이 개발될 것이라고 생각했지만, "누군가 Rijndael [18]트래픽을 읽을 수 있는 공격을 발견할 수 있으리라고는 믿지 않았다"고 썼다.

2009년 5월까지 AES 전체에 대한 성공한 공격은 특정 구현에 대한 사이드 채널 공격뿐이었습니다.2009년에는 AES의 주요 일정의 단순성을 이용하여 복잡도 2를119 갖는 새로운 관련공격이 발견되었습니다.2009년 12월에는 [2]2개로99.5 개선되었다.이는 2009년 초 알렉스 비류코프, 드미트리 호브라토비치, 이비카 니콜리치가 발견한 공격의 후속으로, 키 [19]2개35 중 1개꼴로 복잡도가 2개다96.그러나 적절하게 설계된 암호화 프로토콜(즉, 구현 소프트웨어)은 기본적으로 관련성을 위해 키를 선택하는 공격자의 수단을 제한함으로써 관련 키를 허용하지 않도록 주의하기 때문에 관련 키 공격은 적절하게 설계된 암호화 프로토콜에서 중요하지 않습니다.

또 다른 공격은 2009년 7월 30일 Bruce Schneier에[20] 의해 블로그에 기록되었으며 2009년 8월 3일 프리프린트[21] 공개되었습니다.알렉스 Biryukov, 오어 Dunkelman, 네이쓴 켈러, 드미트리 Khovratovich고, 아디 샤미르에 의해 이 새로운 공격, AES-256만 두개의 관련 키와 239시간9-round 버전의 완전한 256-bit 키를 회복하기 위해 피나 관련된 하위 키 공격에 대한 뚜렷한 형식, 또는11-round 버전의 270을10-round 버전의 245시간을 사용한다. 256-bit에 반대하고 있다.AdvancedEncryptionStandard는 14라운드를 사용하기 때문에 이러한 공격은 완전한 AES에 대해서는 효과가 없습니다.

예를 들어,[23] 2010년 Vincent Rijmen이 작성한 AES-128에 대한 중간자 관계 선택 공격에 대한 논문에서 이러한 보다 강력한 관련 키를 사용한 공격의 실용성에 대해 [22]비판받아 왔다.

2009년 11월, AES-128의 축소된 8라운드 버전에 대한 최초의 기존식별 공격이 [24]프리프린트로 공개되었습니다.이 기존의 키 식별 공격은 AES와 같은 배열에 대한 리바운드(Start-the-middle-the-middle) 공격을 개선한 것입니다.AES와 같은 배열은 2회 연속 치환을 이른바 Super-S-box의 적용으로 간주합니다.8라운드 버전의 AES-128에서 동작하며, 시간 복잡도는 2, 메모리48 복잡도는 232. 128비트 AES는 10라운드를 사용하기 때문에 이 공격은 완전한 AES-128에 대해서는 효과가 없습니다.

풀 AES에 대한 첫 번째 키 복구 공격은 Andrey Bogdanov, Dmitry Khovratovich 및 Christian Rechberger에 의한 것으로, 2011년에 [25]발표되었습니다.공격은 양면 공격이며, 약 4배 빠른 무차별 공격입니다.AES-128 키를 회복하려면 2개의 조작이 필요합니다126.2.AES-192 및 AES-256의 경우 각각2와190.2254.6 2의 동작이 필요합니다.이 결과는 AES-128의 경우189.9 2, AES-192의 경우254.3 2, AES-256의 [26]경우 2로 더욱126.0 개선되었습니다.이러한 결과는 현재 AES에 대한 키 회복 공격의 최선의 결과입니다.

(128비트가 아닌) 126비트 키가 현재 예측 가능한 하드웨어에 강제력을 가하는 데 수십억 년이 걸릴 수 있기 때문에 이는 매우 작은 이득입니다.또한 128비트 키에 2비트의 데이터를 저장해야88 하는 AES에 대한 기술을 사용하여 최선의 공격을 계산하고 있습니다.이는 약 38조 테라바이트의 데이터로, 2016년 지구상의 모든 컴퓨터에 저장된 모든 데이터보다 많은 양입니다.따라서 AES [27]보안에 실질적인 영향은 없습니다.공간 복잡도는 나중에 9007테라바이트인 2비트로 [26]개선되었습니다56(시간 복잡도는 2로126.2 유지됨).

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

현시점에서는 키를 모르는 사람이 올바르게 실장하면 AES에 의해 암호화된 데이터를 읽을 수 있는 실제 공격은 없습니다.

사이드 채널 공격

사이드 채널 공격암호를 블랙박스로 공격하지 않기 때문에 기존 컨텍스트에서 정의된 암호 보안과는 관련이 없지만 실제로는 중요합니다.하드웨어 또는 소프트웨어 시스템에서 실수로 데이터가 유출되는 암호 구현을 공격합니다.AES의 다양한 구현에 대해 이와 같이 알려진 공격이 몇 가지 있습니다.

2005년 4월 D. J. Bernstein은 OpenSSL의 AES [29]암호화를 사용하는 커스텀 서버를 파손하기 위해 사용한 캐시 타이밍 공격을 발표했습니다.공격에는 2억 개 이상의 일반 텍스트가 [30]필요했습니다.커스텀 서버는 가능한 한 많은 타이밍 정보를 제공하도록 설계되어 있습니다(서버는 암호화 조작에 의해 걸린 머신사이클의 수를 보고합니다).그러나 Bernstein이 지적한 것처럼 "서버 타임스탬프의 정밀도를 낮추거나 서버 응답에서 삭제해도 공격이 중단되지 않습니다.클라이언트는 로컬 클럭을 기반으로 라운드 트립 타이밍을 사용할 뿐이며, 더 많은 [29]샘플의 평균화를 통해 증가한 노이즈를 보상합니다."

2005년 10월 Dag Arne Osvik, Adi Shamir 및 Eran Tromer는 OpenSSL 및 Linux에서 발견된 AES 구현에 대한 몇 가지 캐시 타이밍 공격을 시연하는 논문을 발표했습니다.dm-crypt파티션 암호화 [31]기능암호화 트리거 조작이 800회 밖에 되지 않은 후 총 65밀리초 만에 AES 키 전체를 얻을 수 있었던 공격도 1회 있었습니다.이 공격을 수행하려면 공격자가 AES를 실행하는 동일한 시스템 또는 플랫폼에서 프로그램을 실행할 수 있어야 합니다.

2009년 12월에는 차분 장애 분석을 사용하여 복잡도 [32]2의32 키를 복구할 수 있는 일부 하드웨어 구현에 대한 공격이 발표되었습니다.

2010년 11월 Endre Bangerter, David Gullasch 및 Stephan Krenn은 암호문이나 일반문 없이 AES-128에서 비밀키를 "거의 실시간" 복구하기 위한 실용적인 접근방식을 설명한 논문을 발표했다.이 접근법은 [33]OpenSSL과 같은 압축 테이블을 사용하는 AES-128 구현에서도 작동합니다.이 접근법에는 일부 이전 공격과 마찬가지로 AES 암호화를 실행하는 시스템에서 권한 없는 코드를 실행할 수 있는 기능이 필요합니다.이는 루트 [34]계정을 명령하는 것보다 멀웨어 감염에 의해 훨씬 쉽게 실현될 수 있습니다.

2016년 3월, Ashokkumar C., Ravi Prakash Giri 및 Bernard Meneses는 AES 구현에 대한 사이드 채널 공격을 선보였습니다. 128비트 AES 키 전체를 단 6~7블록의 플레인 텍스트/암호화만으로 복구할 수 있으며,[35] 이는 1억에서 100만 사이의 암호화를 필요로 하는 이전 작업에 비해 크게 개선되었습니다.제안된 공격에는 표준 사용자 권한과 키 취득 알고리즘이 1분 이내에 실행되어야 합니다.

대부분의 최신 CPU에는 타이밍 관련 사이드 채널 공격으로부터 보호하는 AES용 하드웨어 [36][37]명령이 내장되어 있습니다.

NIST/CSEC 검증

암호화 모듈 검증 프로그램(CMVP)은 미국 정부의 National Institute of Standards and Technology(NIST) 컴퓨터 보안 부문과 캐나다 정부의 통신 보안 확립(CSE)이 공동으로 운영하고 있습니다.민감하지만 기밀은 아닌(SBU) 분류 이상의 모든 데이터를 암호화하려면 NIST FIPS 140-2에 따라 검증된 암호화 모듈을 사용해야 합니다.NSTISSP #11, "기밀 정보 보호를 위한 암호화 제품은 NSA에 의해 인증되며 기밀 정보 보호를 위한 암호화 제품은 NIST FIPS 140-2에 [38]따라 인증됩니다."

캐나다 정부는 또한 FIPS 140 인증 암호화 모듈을 해당 부서의 기밀이 아닌 애플리케이션에 사용할 것을 권장합니다.

NIST 간행물 197("FIPS 197")은 AES 알고리즘을 다루는 고유한 문서이지만, 일반적으로 공급업체는 FIPS 140에 따라 CMVP에 접근하여 여러 알고리즘(Triple DES 또는 SHA1)을 동시에 검증하도록 요청합니다.따라서 FIPS 197에서 유일하게 검증된 암호화 모듈을 찾을 수 있는 경우는 드물며 NIST 자체도 일반적으로 FIPS 197에서 검증된 모듈을 공개 웹 사이트에 별도로 나열하는 데 시간이 걸리지 않습니다.대신 FIPS 197 검증은 FIPS 140 검증 암호화 모듈의 현재 목록에 "FIPS 승인: AES" 표기법(특정 FIPS 197 증명서 번호 포함)으로 표시됩니다.

Cryptographic Algorithm Validation Program(CAVP;[39] 암호 알고리즘 검증 프로그램)을 사용하면 AES 알고리즘의 올바른 실장을 독립적으로 검증할 수 있습니다.검증에 성공하면 NIST 검증 [40]페이지에 나열됩니다.이 테스트는 FIPS 140-2 모듈 검증을 위한 전제 조건입니다.단, CAVP 검증에 성공했다고 해서 알고리즘을 구현하는 암호화 모듈이 안전한 것은 아닙니다.FIPS 140-2 인증 또는 NSA의 특정 승인이 없는 암호화 모듈은 미국 정부에 의해 안전하다고 간주되지 않으며 정부 데이터를 [38]보호하는 데 사용할 수 없습니다.

FIPS 140-2 인증은 기술적으로나 [41]재정적으로나 달성하기 어렵습니다.표준화된 테스트와 소스코드 리뷰 요소가 몇 주에 걸쳐 있습니다.승인된 실험실을 통해 이러한 테스트를 수행하는 데 드는 비용은 상당할 수 있습니다(예: 30,000달러 이상).[41] 검증용 모듈을 작성, 테스트, 문서화 및 준비하는 데 걸리는 시간은 포함되지 않습니다.검증 후 모듈이 변경되었을 경우 모듈을 다시 제출하고 재평가해야 합니다.보안 기능이 변경되지 않은 경우 간단한 문서 작업 업데이트에서 보안 기능이 변경에 의해 영향을 받았는지 여부를 보다 실질적으로 재테스트하는 것으로 바뀔 수 있습니다.

테스트 벡터

테스트 벡터는 특정 입력 및 키에 대해 알려진 암호 세트입니다.NIST는 AES 테스트 벡터의 참조를 KAT(AES Known Answer Test) [note 8]벡터로 배포합니다.

성능

고속 및 저RAM 요건은 AES 선택 프로세스의 기준 중 일부였습니다.선택된 알고리즘으로 AES는 8비트 스마트 카드부터 고성능 컴퓨터에 이르기까지 다양한 하드웨어에서 우수한 성능을 발휘했습니다.

Pentium Pro의 경우 AES 암호화에는 [42]바이트당 18클럭 사이클이 필요합니다.이는 200MHz 프로세서의 스루풋 약 11MiB/s에 해당합니다.

AES-NI 명령 세트 확장을 지원하는 인텔 Core 및 AMD Ryzen CPU에서는 스루풋이 여러 GiB/s(i7-12700k에서는 [43]15 GiB/s를 초과해도)가 될 수 있습니다.

실장

「 」를 참조해 주세요.

메모들

  1. ^ Rijndael 알고리즘에서는 128, 160, 192, 224 및 256비트의 키크기가 지원되지만 AES 표준에서는 128, 192 및 256비트의 키크기만 지정되어 있습니다.
  2. ^ 128, 160, 192, 224 및 256비트의 블록사이즈는 각 키크기에 대해 Rijndael 알고리즘에 의해 지원되지만 AES 표준에서는 128비트블록사이즈만 지정되어 있습니다.
  3. ^ 자세한 내용은 Advanced Encryption Standard 프로세스를 참조하십시오.
  4. ^ 이하의 「AES 의 시큐러티」를 참조해 주세요.
  5. ^ Rijndael의 대형 블록 변형은 추가 열이 있는 배열을 사용하지만 항상 네 개의 행을 사용합니다.
  6. ^ 블록 크기가 큰 Rijndael 변형은 간격띄우기가 약간 다릅니다.128비트 및 192비트 블록의 경우 시프트 패턴은 동일합니다. n n 스타일 바이트만큼 으로 이동합니다.256비트 블록의 경우 첫 번째 행은 변경되지 않고 두 번째, 세 번째 및 네 번째 행의 시프트는 각각1 바이트, 3 바이트 및 4 바이트입니다.이 변경은 256비트블록과 함께 사용할 때 Rijndael 암호에만 적용됩니다.AES에서는 256비트블록이 사용되지 않기 때문입니다.
  7. ^ 암호 분석을 참조하십시오.
  8. ^ AES KAT(Known Answer Test) 벡터는 NIST 사이트 에서 Zip 형식으로 제공됩니다.Wayback Machine에서 2009-10-23년에 아카이브되었습니다.

레퍼런스

  1. ^ "Biclique Cryptanalysis of the Full AES" (PDF). Archived from the original (PDF) on March 6, 2016. Retrieved May 1, 2019.
  2. ^ a b Alex Biryukov 및 Dmitry Khovratovich, 완전한 AES-192AES-256 관련암호화 분석: CS1 유지보수: 제목으로 아카이브된 복사(링크)
  3. ^ a b Daemen, Joan; Rijmen, Vincent (March 9, 2003). "AES Proposal: Rijndael" (PDF). National Institute of Standards and Technology. p. 1. Archived (PDF) from the original on 5 March 2013. Retrieved 21 February 2013.
  4. ^ a b c "Announcing the ADVANCED ENCRYPTION STANDARD (AES)" (PDF). Federal Information Processing Standards Publication 197. United States National Institute of Standards and Technology (NIST). November 26, 2001. Archived (PDF) from the original on March 12, 2017. Retrieved October 2, 2012.
  5. ^ Joan Daemen and Vincent Rijmen (September 3, 1999). "AES Proposal: Rijndael" (PDF). Archived from the original (PDF) on February 3, 2007.
  6. ^ John Schwartz (October 3, 2000). "U.S. Selects a New Encryption Technique". New York Times. Archived from the original on March 28, 2017.
  7. ^ Westlund, Harold B. (2002). "NIST reports measurable success of Advanced Encryption Standard". Journal of Research of the National Institute of Standards and Technology. Archived from the original on 2007-11-03.
  8. ^ "ISO/IEC 18033-3: Information technology – Security techniques – Encryption algorithms – Part 3: Block ciphers". Archived from the original on 2013-12-03.
  9. ^ Bruce Schneier; John Kelsey; Doug Whiting; David Wagner; Chris Hall; Niels Ferguson; Tadayoshi Kohno; et al. (May 2000). "The Twofish Team's Final Comments on AES Selection" (PDF). Archived (PDF) from the original on 2010-01-02.
  10. ^ "32비트 플랫폼에서 AES의 효율적인 소프트웨어 구현"컴퓨터 사이언스 강의 노트: 2003년 2월 23일
  11. ^ "byte-oriented-aes – A public domain byte-oriented implementation of AES in C – Google Project Hosting". Archived from the original on 2013-07-20. Retrieved 2012-12-23.
  12. ^ Lynn Hathaway (June 2003). "National Policy on the Use of the Advanced Encryption Standard (AES) to Protect National Security Systems and National Security Information" (PDF). Archived (PDF) from the original on 2010-11-06. Retrieved 2011-02-15.
  13. ^ John Kelsey, Stefan Lucks, Bruce Schneier, Mike Stay, David Wagner 및 Doug Whiting, Rijndael 암호화 개선, Fast Software Encryption, 2000년 pp213-230
  14. ^ Ou, George (April 30, 2006). "Is encryption really crackable?". Ziff-Davis. Archived from the original on August 8, 2010. Retrieved August 7, 2010.
  15. ^ "Sean Murphy". University of London. Archived from the original on 2009-01-31. Retrieved 2008-11-02.
  16. ^ Bruce Schneier. "AES News, Crypto-Gram Newsletter, September 15, 2002". Archived from the original on 7 July 2007. Retrieved 2007-07-27.
  17. ^ Niels Ferguson; Richard Schroeppel; Doug Whiting (2001). "A simple algebraic representation of Rijndael". Proceedings of Selected Areas in Cryptography, 2001, Lecture Notes in Computer Science. Springer-Verlag. pp. 103–111. CiteSeerX 10.1.1.28.4921. Archived from the original (PDF/PostScript) on 4 November 2006. Retrieved 2006-10-06.
  18. ^ Bruce Schneier, AES, Wayback Machine에서 2009-02-01 아카이브 발표, 2000년 10월 15일
  19. ^ Nikolić, Ivica (2009). "Distinguisher and Related-Key Attack on the Full AES-256". Advances in Cryptology – CRYPTO 2009. Lecture Notes in Computer Science. Vol. 5677. Springer Berlin / Heidelberg. pp. 231–249. doi:10.1007/978-3-642-03356-8_14. ISBN 978-3-642-03355-1.
  20. ^ Bruce Schneier (2009-07-30). "Another New AES Attack". Schneier on Security, A blog covering security and security technology. Archived from the original on 2009-10-05. Retrieved 2010-03-11.
  21. ^ Alex Biryukov; Orr Dunkelman; Nathan Keller; Dmitry Khovratovich; Adi Shamir (2009-08-19). "Key Recovery Attacks of Practical Complexity on AES Variants With Up To 10 Rounds". Archived from the original on 28 January 2010. Retrieved 2010-03-11.
  22. ^ Agren, Martin (2012). On Some Symmetric Lightweight Cryptographic Designs. Dissertation, Lund University. pp. 38–39.
  23. ^ Vincent Rijmen (2010). "Practical-Titled Attack on AES-128 Using Chosen-Text Relations" (PDF). Archived (PDF) from the original on 2010-07-02. {{cite journal}}:Cite 저널 요구 사항 journal=(도움말)
  24. ^ Henri Gilbert; Thomas Peyrin (2009-11-09). "Super-Sbox Cryptanalysis: Improved Attacks for AES-like permutations". Archived from the original on 2010-06-04. Retrieved 2010-03-11.
  25. ^ Andrey Bogdanov; Dmitry Khovratovich & Christian Rechberger (2011). "Biclique Cryptanalysis of the Full AES" (PDF). Archived from the original (PDF) on 2012-09-05.
  26. ^ a b Biaoshuai Tao & Hongjun Wu (2015). Information Security and Privacy. Lecture Notes in Computer Science. Vol. 9144. pp. 39–56. doi:10.1007/978-3-319-19962-7_3. ISBN 978-3-319-19961-0.
  27. ^ Jeffrey Goldberg (2011-08-18). "AES Encryption isn't Cracked". Archived from the original on 8 January 2015. Retrieved 30 December 2014.
  28. ^ SPIEGEL ONLINE, Hamburg, Germany (28 December 2014). "Inside the NSA's War on Internet Security". SPIEGEL ONLINE. Archived from the original on 24 January 2015. Retrieved 4 September 2015.
  29. ^ a b "Index of formal scientific papers". Cr.yp.to. Archived from the original on 2008-09-17. Retrieved 2008-11-02.
  30. ^ Bruce Schneier. "AES Timing Attack". Archived from the original on 12 February 2007. Retrieved 2007-03-17.
  31. ^ Dag Arne Osvik; Adi Shamir; Eran Tromer (2005-11-20). "Cache Attacks and Countermeasures: the Case of AES" (PDF). Archived (PDF) from the original on 2006-06-19. Retrieved 2008-11-02. {{cite journal}}:Cite 저널 요구 사항 journal=(도움말)
  32. ^ Dhiman Saha; Debdeep Mukhopadhyay; Dipanwita RoyChowdhury. "A Diagonal Fault Attack on the Advanced Encryption Standard" (PDF). Archived (PDF) from the original on 22 December 2009. Retrieved 2009-12-08. {{cite journal}}:Cite 저널 요구 사항 journal=(도움말)
  33. ^ Endre Bangerter; David Gullasch & Stephan Krenn (2010). "Cache Games – Bringing Access-Based Cache Attacks on AES to Practice" (PDF). Archived (PDF) from the original on 2010-12-14. {{cite journal}}:Cite 저널 요구 사항 journal=(도움말)
  34. ^ "Breaking AES-128 in realtime, no ciphertext required". Hacker News. Archived from the original on 2011-10-03. Retrieved 2012-12-23.
  35. ^ Ashokkumar C.; Ravi Prakash Giri; Bernard Menezes (2016). 2016 IEEE European Symposium on Security and Privacy (EuroS&P). pp. 261–275. doi:10.1109/EuroSP.2016.29. ISBN 978-1-5090-1751-5. S2CID 11251391.
  36. ^ "Are AES x86 Cache Timing Attacks Still Feasible?" (PDF). cseweb.ucsd.edu. Archived (PDF) from the original on 2017-08-09.
  37. ^ "Archived copy" (PDF). Archived (PDF) from the original on 2013-03-31. Retrieved 2017-07-26.{{cite web}}: CS1 maint: 아카이브된 카피 제목 (링크)인텔 AES-NI로 엔터프라이즈 보호
  38. ^ a b "Archived copy" (PDF). Archived from the original (PDF) on 2012-04-21. Retrieved 2012-05-29.{{cite web}}: CS1 maint: 제목으로 아카이브된 복사(링크)
  39. ^ "NIST.gov – Computer Security Division – Computer Security Resource Center". Csrc.nist.gov. Archived from the original on 2013-01-02. Retrieved 2012-12-23.
  40. ^ "Validated FIPS 140-1 and FIPS 140-2 Cryptographic Modules". Archived from the original on 2014-12-26. Retrieved 2014-06-26.
  41. ^ a b OpenSSL, openssl@openssl.org. "OpenSSL's Notes about FIPS certification". Openssl.org. Archived from the original on 2013-01-02. Retrieved 2012-12-23.
  42. ^ Schneier, Bruce; Kelsey, John; Whiting, Doug; Wagner, David; Hall, Chris; Ferguson, Niels (1999-02-01). "Performance Comparisons of the AES submissions" (PDF). Archived (PDF) from the original on 2011-06-22. Retrieved 2010-12-28.
  43. ^ "AMD Ryzen 7 1700X Review".

외부 링크