AES의 실장
AES implementationsRijndael로도 알려진 Advanced Encryption Standard에는 다양한 구현이 있습니다.
라이브러리
Rijndael은 공공 또는 개인, 상업 또는 비상업적인 [1]용도로 무료로 사용할 수 있습니다.Rijndael의 저자들은 알고리즘의 홈페이지를[2] 제공하곤 했다.소프트웨어에 AES를 실장할 때는 특히 사이드 채널 공격에 주의해야 합니다.
알고리즘은 16바이트의 플레인텍스트블록으로 동작합니다.짧은 블록의 암호화는 소스 바이트(일반적으로 늘바이트)를 채우는 것만으로 가능합니다.이것은 몇 가지 방법으로 실행할 수 있습니다.가장 간단한 방법은 암호의 마지막 바이트가 추가된 패딩의 늘바이트 수를 식별하는 것입니다.
구현에 관한 고려사항
암호 작동 모드를 선택할 때는 신중하게 선택해야 합니다.가장 단순한 모드에서는 각 128비트 블록이 개별적으로 암호화 및 복호화됩니다.전자코드북(ECB)이라고 불리는 이 모드에서는 동일한 블록이 동일하게 암호화됩니다.이것은 완전히 안전하지 않습니다.암호문에 표시되는 평문 구조의 일부를 표시합니다.암호화(즉 CTR 모드) 전에 블록 위에 순차 카운터를 사용하고 복호화 후에 삭제하는 등 다른 모드를 선택하면 이 문제가 발생하지 않습니다.또 하나의 모드인 Cipher Block Chaining(CBC; 암호 블록 체인)은 TLS에서 사용되기 때문에 가장 일반적으로 사용되는 AES 모드 중 하나입니다.CBC는 Random Initialization Vector(IV; 랜덤 초기화 벡터)를 사용하여 동일한 평문이 여러 번 인코딩되어도 고유한 암호문이 생성되도록 합니다.IV는 보안을 위태롭게 하지 않고 클리어 상태로 전송될 수 있습니다.일반적인 방법은 암호문에 16바이트 IV를 추가하는 것입니다.이를 통해 복호화기는 IV에 쉽게 접근할 수 있습니다.모든 암호화 작업에 대해 새로운 IV를 사용할 경우 공격자가 일반 텍스트를 복구할 수 있으므로 주의해야 합니다.
- FIPS 197 검증 암호화 모듈의 최신 목록(NIST 주최)
- 검증된 AES 구현이 포함된 FIPS 140 검증 암호화 모듈의 최신 목록(NIST 주최)– 이들 대부분은 AES 알고리즘의 상용 구현과 관련되어 있습니다."Level / Description" 열에서 "FIPS-approved algorithms" 항목 뒤에 "AES" 및 특정 인증서 번호를 찾습니다.
C/ASM 라이브러리
- libgcrypt
- wolfSSL(구 CyaSSL)
- GnuTLS
- 네트워크 보안 서비스
- OpenSSL
- LibreSSL
- mbed TLS(이전 PolarSSL)
- 최초 구현 참조
- AXTLS
- Microsoft CryptoAPI는 암호화 서비스 공급자를 사용하여 암호화 구현을 제공합니다.Microsoft AES 암호화 프로바이더는 Windows XP에서 도입되어 모든 버전의 Microsoft [3]CryptoAPI에서 사용할 수 있습니다.
- tiny-AES-c 소형 휴대용 AES128/192/256 in C(임베디드 시스템에 적합)
- AES-256 C에서의 바이트 지향 휴대용 AES-256 실장
- Solaris Cryptographic Framework는 x86(인텔 AES 명령 세트 사용) 및 SPARC(SPARC AES 명령 세트 사용) 상에서 하드웨어 액셀러레이션을 위한 커널 프로바이더를 사용하여 여러 가지 구현을 제공합니다.Solaris [4]10 이후의 Solaris 및 파생 모델에서 사용할 수 있습니다.
- OpenAES 휴대용 C 암호화 라이브러리
- LibTomCrypt는 잘 알려진 블록 암호, 단방향 해시 함수, 체인 모드, 의사 난수 생성기, 공개 키 암호화 및 기타 루틴을 개발자에게 제공하는 모듈러형 휴대용 암호화 툴킷입니다.
- NaCl용 libSodium API
- C, x86, AMD64, ARM32 및 ARM64 어셈블리에 AES-128 암호화의 AES 더스트 콤팩트 실장.
- 임베디드 16비트 마이크로컨트롤러용 MSP430 AES 구현
- Brian Gladman 박사가 인텔 AES NI 및 VIA ACE를 옵션으로 지원하는 Gladman AES 코드.
C++ 라이브러리
C/CUDA 라이브러리
- GKrypt는 2012년 첫 출시와 함께 CUDA에 Rijndael을 구현했습니다.
C# / .NET
- 의 버전 3.5 이후.NET Framework, 시스템.보안.암호화 네임스페이스에는 AES의 완전 관리형 구현과 CAPI AES 구현에 관한 관리형 래퍼가 모두 포함되어 있습니다.
- Bouncy Castle 암호 라이브러리
가세요
자바
- 버전 1.4.2 이후 Java Runtime Environment에 통합된 Java Cryptography Extension
- IAIK JCE
- Bouncy Castle 암호 라이브러리
파이썬
- PyCrypto – PyCryptoDome에서 확장된 PyCrypto 암호화 툴킷 PyCrypto
- keyczar – Cryptography Toolkit keyczar
- M2Crypto – M2Crypto는 가장 완벽한 Python용 OpenSSL 래퍼입니다.
- 암호화 – 암호화 레시피와 원본을 공개하는 Python 라이브러리.
- PyNaCl – libSodium(NaCl)용 Python 바인딩
자바스크립트
- SJCL 라이브러리– CCM, CBC, OCB 및 GCM 모드에서 AES의 JavaScript 구현 포함
- AES-JS – AES ECB 및 CTR 모드의 휴대용 JavaScript 구현
- Forge – CBC, CTR, OFB, CFB 및 GCM 모드에서 AES의 JavaScript 구현
- asmCrypto – 퍼포먼스에 중점을 둔 일반적인 암호화 유틸리티의 JavaScript 구현.CBC, CFB, CCM 모드를 지원합니다.
- pidCrypt : 오픈소스 JavaScript 라이브러리.CBC 및 CTR 모드만 지원합니다.
녹
- aes – Rust 실장.
랩뷰
- AES LabVIEW – LabVIEW 구현.
적용들
아카이브 및 압축 도구
파일 암호화
- Away RJN Cryptography away 、 Rijndael Algorithm ( NIST AES )256비트 데이터 블록, 암호 키 및 CTR (카운터 모드)를 사용하는 것은 Windows에서만 가능합니다.
- Gpg4win
- 크립토
파일 시스템 암호화
- 대부분의 암호화 파일 시스템은 NTFS 등의 [citation needed]AES를 사용합니다.
디스크/파티션 암호화
- BitLocker(Windows 운영 체제의 일부 에디션)
- 암호화
- 디스크 크립터
- FileVault(Mac OS X 운영 체제의 일부이며 포함된 Disk Utility가 AES 암호화 드라이브 이미지를 만듭니다)
- GBDE
- 겔리(소프트웨어)
- Libre Crypt (단종)
- 룩스
- 개인 디스크
- TrueCrypt(중단)
- 베라크립트
로컬 에리어 네트워크에서의 보안
- IEEE 802.11i 는, 무선 네트워크의 시큐러티 메카니즘을 지정하는 최초의 IEEE 802.11 규격의 변경으로서 CCM 모드(CCMP)에서 AES-128 을 사용합니다.
- ITU-T G.hn 규격에서는 기존 홈 배선(전원선, 전화선 및 동축 케이블)을 사용하여 고속(최대 1기가비트/초) 로컬에리어 네트워크를 구축하는 방법을 제공하고 있으며 암호화에는 AES-128을 사용합니다.
여러가지 종류의
- DataLocker는 AES 256비트 CBC 및 XTS 모드 하드웨어 암호화 사용
- Get Backup[6] Pro는 AES-128 및 AES-256을 사용합니다.
- GPG(GPL 라이선스)에는 옵션으로 AES, AES-192 및 AES-256이 포함되어 있습니다.
- IPsec
- IronKey는 AES 128비트 및 256비트 CBC 모드 하드웨어 암호화를 사용합니다.
- KeePass 비밀번호 안전
- 라스트 패스[7]
- Linux 커널의 Crypto API가 사용자 공간에 공개되었습니다.
- NetLib Encryptionizer는 CBC, ECB 및 CTR 모드에서 AES 128/256을 지원하며 Windows 플랫폼에서 파일과 폴더를 암호화합니다.
- Pidgin(소프트웨어), AES 암호화를 허용하는 플러그인이 있습니다.
- Javascrypt[8] 무료 오픈 소스 텍스트 암호화 도구는 웹 브라우저에서 모두 실행되며 암호화된 텍스트를 보안 보호된 전자 메일 또는 팩스기로 전송합니다.
- 사용자가[9] 선택할 수 있는 AES 암호화 방식과 PBKDF2 반복 기능을 갖춘 무료 오픈 소스 텍스트 암호화 도구/GUI.
- 신호 프로토콜
- Google Allo(옵션)
- 페이스북 메신저(옵션)
- 신호.
- TextSecure(텍스트 보안)
- 왓츠앱
- SocialDocs 파일 암호화는 AES256을 사용하여 무료 온라인 파일 암호화 도구를 제공합니다.
- XFire는 AES-128, AES-192 및 AES 256을 사용하여 사용자 이름과 비밀번호를 암호화합니다.
- Grand Theft Auto IV에 사용된 Rockstar Advanced Game Engine과 같은 특정 게임과 엔진은 멀티플레이어 해킹을 방지하기 위해 AES를 사용하여 게임 자산을 암호화합니다.
하드웨어
- x86-64 및 ARM 프로세서에는 AES 명령 세트가 포함되어 있습니다.
- IBM zSeries 메인프레임에서 AES는 다양한 Message Security Assist 설비가 설치되면 KM 시리즈의 어셈블러 opcode로 구현됩니다.
- SPARC S3 코어 프로세서에는 SPARC T4 및 SPARC T5 시스템에서 사용되는 AES 명령 세트가 포함되어 있습니다.
레퍼런스
- ^ 대멘과 리즈다엘이 제출한 편지
- ^ 원본 홈페이지 및 아카이브된 복사본
- ^ "Microsoft AES Cryptographic Provider".
- ^ "System Administration Guide: Security Services, Chapter 13 Solaris Cryptographic Framework (Overview)". Oracle. September 2010. Retrieved 2012-11-27.
- ^ "Untitled 1".
- ^ "Get Backup Pro is a solid backup utility for Macs". Engadget. Retrieved 2016-04-26.
- ^ 정기적으로 증가하는 PBKDF2 반복으로 AES 256비트 암호화
- ^ [1] 웹 브라우저, fourmilab.ch/javascrypt
- ^ 릴리스 v1.1에 포함된 Github Windows, OSX 및 Linux 바이너리의 PyEyeCrypt 및 Python 소스 코드