AES 명령 세트
AES instruction setAdvanced Encryption Standard 명령 세트가 많은 프로세서에 통합되었습니다.명령 세트의 목적은 Advanced Encryption Standard(AES)를 사용하여 암호화 및 복호화를 수행하는 애플리케이션의 속도와 보안을 향상시키는 것입니다.
이들은 종종 AES의 단일 라운드를 구현하기 위한 지침으로 구현되며, 마지막 라운드의 특수 버전은 약간 다른 방식을 사용합니다.
AES의 사이드 채널 공격면은 AES가 소프트웨어에서만 [citation needed]구현되는 경우와 비교하여 명령 세트에 구현되는 경우 감소합니다.
x86 아키텍처 프로세서
AES-NI(인텔 Advanced Encryption Standard New Instructions; AES-NI)는 최초의 주요 구현입니다.AES-NI는 인텔이 2008년 [1]3월에 제안한 인텔 및 AMD 마이크로프로세서용 x86 명령 세트 아키텍처의 확장입니다.
지침들
설명 | 설명[2] |
---|---|
AESENC | AES 암호화 흐름의 1라운드 실행 |
AESENCLAST | AES 암호화 흐름의 마지막 라운드를 수행합니다. |
AESDEC | AES 복호화 흐름의 1라운드 실행 |
AESDECLAST | AES 복호화 흐름의 마지막 라운드를 수행합니다. |
AESKEYGENASSIST | AES 라운드 키 생성[note 1] 지원 |
AESIMC | AES Inverse Mix 컬럼 지원 |
인텔(R)
다음의 인텔 프로세서는, AES-NI 명령 [3]세트를 서포트하고 있습니다.
- Westmere 기반 프로세서, 구체적으로는 다음과 같습니다.
- Sandy Bridge 프로세서:
- Ivy Bridge 프로세서
- 모든 i5, i7, Xeon 및 i3-2115C만[8] 해당
- Haswell 프로세서 (i3-4000m,[9] Pentium 및 Celeron 제외)
- Broadwell 프로세서 (Pentium 및 Celeron 제외)
- Silvermont/Airmont 프로세서(Bay Trail-D 및 Bay Trail-M 제외)
- Goldmont (및 그 이후)프로세서
- Skylake(및 그 이후) 프로세서
AMD
몇 가지 AMD 프로세서가 AES 명령을 지원합니다.
다른 아키텍처에서의 하드웨어 액셀러레이션
권한 없는 프로세서 명령을 사용한 AES 지원은 최신 SPARC 프로세서(T3, T4, T5, M5 및 Forward) 및 최신 ARM 프로세서에서도 사용할 수 있습니다.2011년에 도입된 SPARC T4 프로세서에는 AES [11]라운드를 구현하는 사용자 수준의 명령이 포함되어 있습니다.이러한 순서는, 보다 고도의 암호화 커맨드에 가세하고 있습니다.ARM Cortex-A53 및 A57을 포함한 ARMv8-A 프로세서 아키텍처(단, Cortex A5, 7, 8, 9, 11, 15[citation needed] 등의 이전 v7 프로세서에는 AES [12]라운드를 구현하는 사용자 수준의 명령도 포함되어 있습니다.
x86 CPU 지원
VIA x86 CPU, AMD Geode 및 Marvell Kirkwood(Linux의 경우 ARM, mv_cesa)는 대신 드라이버 기반 가속 AES 처리를 사용합니다.(Crypto API(Linux) 참조).
다음 칩은 AES 하드웨어 액셀러레이션을 지원하지만 AES-NI를 지원하지 않습니다.
ARM 아키텍처
프로그래밍 정보는 ARMv8-A 아키텍처 프로파일에 대한 ARM 아키텍처 레퍼런스 매뉴얼 ARMv8에서 확인할 수 있습니다(섹션 A2.3 "Armv8 암호화 확장").[18]
- ARMv8-A 아키텍처
- ARM 암호화 확장 기능은 옵션으로 ARM Cortex-A30/50/70 코어에서 지원
- 암호화 하드웨어 액셀러레이터/엔진
RISC-V 아키텍처
RISC-V 아키텍처에는 AES 고유의 명령어가 포함되어 있지 않지만, 많은 RISC-V 칩에는 내장 AES 공동 프로세서가 포함되어 있습니다.예를 들어 다음과 같습니다.
- 듀얼코어 RISC-V 64비트 Siped-M1은 AES 및 SHA256을 [24]지원합니다.
- RISC-V 아키텍처 기반 ES32-C 및 Xtensa 기반[25] ESP32는 [26]AES, SHA, RSA, RNG, HMAC, 디지털 서명 및 플래시용 XTS 128을 지원합니다.
- Bouffalo Labs BL602/604 32비트 RISC-V는 다양한 AES [27]및 SHA 모델을 지원합니다.
POWER 아키텍처
파워 이후_ISA_v.2.07, 순서vcipher
그리고.vcipyherlast
1라운드의 AES를 직접 [28]실장합니다.
IBM z/아키텍처
IBM z9 이상의 메인프레임 프로세서는 IBM의 CryptoExpress [29]하드웨어를 통해 AES를 단일 운영 코드(KMC) AES ECB/CBC 명령으로 지원합니다.따라서 이러한 단일 명령 AES 버전은 인텔 NI 버전보다 사용하기 쉽지만 AES 라운드 함수(월풀 및 Gröstl 해시 함수 등)에 기반한 다른 알고리즘을 구현하도록 확장되지 않을 수 있습니다.
기타 아키텍처
- Atmel XMEGA[30](명령어가 아닌 병렬 실행 온칩액셀러레이터)
- SPARC T3 이후의 프로세서에서는, AES 를 포함한 몇개의 암호화 알고리즘이 하드웨어로 서포트되고 있습니다.
- Cavium Octeon[31] MIPS 모든 Cavium Octeon MIPS 기반 프로세서는 특별한 코프로세서3 명령을 사용하는 AES를 포함한 여러 암호화 알고리즘을 하드웨어로 지원합니다.
성능
AES-NI Performance Analysis에서 Patrick Schmid와 Achim Roos는 "인텔의 AES-NI 기능을 [32]활용하도록 이미 최적화된 소수의 애플리케이션에서 인상적인 결과를 얻었습니다."Crypto++ 보안 라이브러리를 사용한 퍼포먼스 분석 결과,[33][34][failed verification][better source needed] AES/GCM을 사용하는 경우 약 28.0 사이클에서 3.5 사이클로 throughput이 증가하여 가속 기능이 없는 Pentium 4에 비해 증가했습니다.
지원 소프트웨어
대부분의 최신 컴파일러는 AES 명령을 내보낼 수 있습니다.
많은 보안 및 암호화 소프트웨어는 다음과 같은 주요 핵심 인프라스트럭처를 포함하여 AES 명령 세트를 지원합니다.
- MacOS 10.10+에서의 Apple FileVault 2 풀 디스크 암호화
- HPE 탠덤 논스톱 OS L[35][36][37] 시리즈의 논스톱 SSH2, 논스톱 cF SSL 라이브러리 및 BackBox VTC 소프트웨어
- 암호화 API: 차세대 (CNG) (Windows [38]7 필요)
- Linux 암호화 API
- Java 7 핫스팟
- 네트워크 보안 서비스(NSS) 버전 3.13 이후[39](Firefox 및 Google Chrome에서 사용)
- Solaris 10 이후의 Solaris 암호화[40] 프레임워크
- FreeBSD의 OpenCrypto API (aesni(4) 드라이버)[41]
- OpenSSL 1.0.1 이후[42]
- GnuTLS[43]
- 립소듐[44]
- 베라크립트[45]
- Go 프로그래밍 언어[46]
- BitLocker[47]
AES 명령어 세트의 프린지 사용에는, 같은 구조의 S박스를 가지는 블록 암호에 AES 명령어를 사용하고, 아핀 동형성을 사용해 양자간에 변환하는 것이 포함됩니다.SM4와 Camelia는 [48][49]AES-NI를 사용하여 가속되었습니다.
「 」를 참조해 주세요.
- Advanced Vector Extensions(AVX)
- CLMUL 명령 집합
- FMA 명령 세트(FMA3, FMA4)
RDRAND
메모들
- ^ 이 명령은 32비트 워드 4개에 대한 AES 키 확장의 병렬 하위 표현식 4개를 비트 X[127:96](i { i}의경우) 및 X[63:32](i { i의 에만)의 이중 쿼드워드(SSE 레지스터라고도 함)로 계산합니다.2개의 병렬 AES S박스 ( ) { } = 2 ( ){ 2} = AES {3} 에서 사용됩니다.} 및 Y 3 Ro d ( u r ( X ) r r c r c n ( \ _ {3} =(( } ) \ 、 AES-192 )\ 、 d d d d d d d d d d d d d d d d d d d d d d d d d d d Rconn
레퍼런스
- ^ "Intel Software Network". Intel. Archived from the original on 7 April 2008. Retrieved 2008-04-05.
- ^ Shay Gueron (2010). "Intel Advanced Encryption Standard (AES) Instruction Set White Paper" (PDF). Intel. Retrieved 2012-09-20.
- ^ "Intel Product Specification Advanced Search". Intel ARK.
- ^ Shimpi, Anand Lal. "The Sandy Bridge Review: Intel Core i7-2600K, i5-2500K and Core i3-2100 Tested".
- ^ "Intel Product Specification Comparison".
- ^ "AES-NI support in TrueCrypt (Sandy Bridge problem)".
- ^ "Some products can support AES New Instructions with a Processor Configuration update, in particular, i7-2630QM/i7-2635QM, i7-2670QM/i7-2675QM, i5-2430M/i5-2435M, i5-2410M/i5-2415M. Please contact OEM for the BIOS that includes the latest Processor configuration update".
- ^ "Intel Core i3-2115C Processor (3M Cache, 2.00 GHz) Product Specifications".
- ^ "Intel Core i3-4000M Processor (3M Cache, 2.40 GHz) Product Specifications".
- ^ "Following Instructions". AMD. November 22, 2010. Archived from the original on November 26, 2010. Retrieved 2011-01-04.
- ^ Dan Anderson (2011). "SPARC T4 OpenSSL Engine". Oracle. Retrieved 2012-09-20.
- ^ Richard Grisenthwaite (2011). "ARMv8-A Technology Preview" (PDF). ARM. Archived from the original (PDF) on 2018-06-10. Retrieved 2012-09-20.
- ^ "AMD Geode LX Processor Family Technical Specifications". AMD.
- ^ "VIA Padlock Security Engine". VIA. Retrieved 2011-11-14.
- ^ a b OpenWRT.org 암호화 하드웨어 액셀러레이터
- ^ "VIA Eden-N Processors". VIA. Archived from the original on 2011-11-11. Retrieved 2011-11-14.
- ^ "VIA C7 Processors". VIA. Retrieved 2011-11-14.
- ^ "Arm Architecture Reference Manual Armv8, for Armv8-A architecture profile". ARM. 22 January 2021.
- ^ "Security System/Crypto Engine driver status". sunxi.montjoie.ovh.
- ^ "Linux Cryptographic Acceleration on an i.MX6" (PDF). Linux Foundation. February 2017. Archived from the original (PDF) on 2019-08-26. Retrieved 2018-05-02.
- ^ "Cryptographic module in Snapdragon 805 is FIPS 140-2 certified". Qualcomm.
- ^ "RK3128 - Rockchip Wiki". Rockchip wiki. Archived from the original on 2019-01-28. Retrieved 2018-05-02.
- ^ "The Samsung Exynos 7420 Deep Dive - Inside A Modern 14nm SoC". AnandTech.
- ^ "Sipeed M1 Datasheet v1.1" (PDF). kamami.pl. 2019-03-06. Retrieved 2021-05-03.
- ^ "ESP32 Series Datasheet" (PDF). www.espressif.com. 2021-03-19. Retrieved 2021-05-03.
- ^ "ESP32-C3 WiFi & BLE RISC-V processor is pin-to-pin compatible with ESP8266". CNX-Software. Retrieved 2020-11-22.
- ^ "BL602-Bouffalo Lab (Nanjing) Co., Ltd". www.bouffalolab.com. Retrieved 2021-05-03.
- ^ "Power ISA™ Version 2.07 B". Retrieved 2022-01-07.
- ^ "IBM System z10 cryptography". IBM. Retrieved 2014-01-27.
- ^ "Using the XMEGA built-in AES accelerator" (PDF). Retrieved 2014-12-03.
- ^ "Cavium Networks Launches Industry's Broadest Line of Single and Dual Core MIPS64-based OCTEON Processors Targeting Intelligent Next Generation Networks". Archived from the original on 2017-12-07. Retrieved 2016-09-17.
- ^ P. Schmid and A. Roos (2010). "AES-NI Performance Analyzed". Tom's Hardware. Retrieved 2010-08-10.
- ^ T. Krovetz, W. Dai (2010). "How to get fast AES calls?". Crypto++ user group. Retrieved 2010-08-11.
- ^ "Crypto++ 5.6.0 Pentium 4 Benchmarks". Crypto++ Website. 2009. Archived from the original on 19 September 2010. Retrieved 2010-08-10.
- ^ "NonStop SSH Reference Manual". Retrieved 2020-04-09.
- ^ "NonStop cF SSL Library Reference Manual". Retrieved 2020-04-09.
- ^ "BackBox H4.08Tape Encryption Option". Retrieved 2020-04-09.
- ^ "Intel Advanced Encryption Standard Instructions (AES-NI)". Intel. March 2, 2010. Archived from the original on 7 July 2010. Retrieved 2010-07-11.
- ^ "AES-NI enhancements to NSS on Sandy Bridge systems". 2012-05-02. Retrieved 2012-11-25.
- ^ "System Administration Guide: Security Services, Chapter 13 Solaris Cryptographic Framework (Overview)". Oracle. September 2010. Retrieved 2012-11-27.
- ^ "FreeBSD 8.2 Release Notes". FreeBSD.org. 2011-02-24. Archived from the original on 2011-04-12. Retrieved 2011-12-18.
- ^ OpenSSL: CVS 웹 인터페이스
- ^ "Cryptographic Backend (GnuTLS 3.6.14)". gnutls.org. Retrieved 2020-06-26.
- ^ "AES-GCM in libsodium". libsodium.org.
- ^ "Hardware Acceleration". www.veracrypt.fr.
- ^ "aes - The Go Programming Language". golang.org. Retrieved 2020-06-26.
- ^ Shimpi, Anand Lal. "The Clarkdale Review: Intel's Core i5 661, i3 540 & i3 530". www.anandtech.com. Retrieved 2020-06-26.
- ^ Saarinen, Markku-Juhani O. (17 April 2020). "mjosaarinen/sm4ni: Demonstration that AES-NI instructions can be used to implement the Chinese Encryption Standard SM4". GitHub.
- ^ Kivilinna, Jussi (2013). Block Ciphers: Fast Implementations on x86-64 Architecture (PDF) (M.Sc.). University of Oulu. pp. 33, 42. Retrieved 2017-06-22.
외부 링크
- 인텔 Advanced Encryption Standard Instructions (AES-NI)
- 인텔 AES 명령어 세트 화이트 페이퍼 (2.93 MiB, PDF)