Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

AES implementations

From Wikipedia, the free encyclopedia
Implementations of Advanced Encryption Standard
This article'suse ofexternal links may not follow Wikipedia's policies or guidelines. Pleaseimprove this article by removingexcessive orinappropriate external links, and converting useful links where appropriate intofootnote references.(July 2024) (Learn how and when to remove this message)

There are various implementations of theAdvanced Encryption Standard, also known as Rijndael.

Libraries

[edit]

Rijndael is free for any use public or private, commercial or non-commercial.[1] The authors of Rijndael used to provide a homepage[2] for the algorithm. Care should be taken when implementing AES in software, in particular around side-channel attacks.

The algorithm operates on plaintext blocks of 16 bytes. Encryption of shorter blocks is possible only bypadding the source bytes, usually withnull bytes. This can be accomplished via several methods, the simplest of which assumes that the final byte of the cipher identifies the number of null bytes of padding added.

Implementation Considerations

[edit]

Careful choice must be made in selecting themode of operation of the cipher. The simplest mode encrypts and decrypts each 128-bit block separately. In this mode, calledelectronic code book (ECB), blocks that are identical will be encrypted identically; this is entirely insecure. It makes some of the plaintext structure visible in the ciphertext. Selecting other modes, such as using a sequential counter over the block prior to encryption (i.e., CTR mode) and removing it after decryption avoids this problem. Another mode,Cipher Block Chaining (CBC) is one of the most commonly used modes of AES due to its use in TLS. CBC uses a random initialization vector (IV) to ensure that distinct ciphertexts are produced even when the same plaintext is encoded multiple times. The IV can be transmitted in the clear without jeopardizing security. A common practice is to prepend the 16 byte IV to the ciphertext, which gives the decrypter easy access to the IV. Care must be taken to use a new IV for every encryption operation, since otherwise an attacker can recover plaintext.

  • Current list of FIPS 197 validated cryptographic modules (hosted by NIST)
  • Current list of FIPS 140 validated cryptographic modules with validated AES implementations (hosted by NIST) – Most of these involve a commercial implementation of AES algorithms. Look for "FIPS-approved algorithms" entry in the "Level / Description" column followed by "AES" and then a specific certificate number.

C/ASM library

[edit]

C++ library

[edit]
  • Botan has implemented Rijndael since its very first release in 2001
  • Crypto++ A comprehensive C++ public-domain implementation of encryption and hash algorithms. FIPS validated

C/CUDA library

[edit]
  • gKrypt has implemented Rijndael on CUDA with its first release in 2012

C# /.NET

[edit]

Delphi

[edit]
  • Delphi Encryption Compendium[2] has a cross platform capable AES implementation, among implementations of various other cryptographic algorithms

Go

[edit]

Java

[edit]

Python

[edit]
  • PyCrypto – The Python Cryptography Toolkit PyCrypto, extended inPyCryptoDome
  • keyczar – Cryptography Toolkit keyczar
  • M2Crypto – M2Crypto is the most complete OpenSSL wrapper for Python.
  • Cryptography – Python library which exposes cryptographic recipes and primitives.
  • PyNaCl – Python binding for libSodium (NaCl)

JavaScript

[edit]
  • SJCL library – contains JavaScript implementations of AES in CCM, CBC, OCB and GCM modes
  • AES-JS – portable JavaScript implementation of AES ECB and CTR modes
  • Forge – JavaScript implementations of AES in CBC, CTR, OFB, CFB, and GCM modes
  • asmCrypto – JavaScript implementation of popular cryptographic utilities with focus on performance. Supports CBC, CFB, CCM modes.
  • pidCrypt – open source JavaScript library. Only supports the CBC and CTR modes.

Rust

[edit]
  • aes – Rust implementation.

LabVIEW

[edit]

Zig

[edit]
  • std.crypto.aes - Zig Standard Library. Includes hardware support for AES-NI on x86_64 and ARM AES Extensions on AArch64.

Applications

[edit]

Archive and compression tools

[edit]

File encryption

[edit]
  • Away RJN Cryptography[5] uses Rijndael Algorithm (NIST AES) 256-bit Data Blocks, Cipher Key and CTR (Counter Mode) for any and all Document or picture encryption in Windows only.
  • Gpg4win
  • Ncrypt

Encrypting file systems

[edit]

Disk / partition encryption

[edit]

Storage encryption

[edit]

Security for communications in local area networks

[edit]

Miscellaneous

[edit]

Hardware

[edit]
  • x86-64 andARM processors include theAES instruction set.
  • On IBMzSeries mainframes, AES is implemented as the KM series of assembler opcodes when various Message Security Assist facilities are installed.
  • SPARC S3 core processors include the AES instruction set, which is used withSPARC T4 andSPARC T5 systems.

References

[edit]
  1. ^Letter Submitted by creators Daemen and Rijndael
  2. ^Original homepage andarchived copy
  3. ^"Microsoft AES Cryptographic Provider". 9 July 2021.
  4. ^"System Administration Guide: Security Services, Chapter 13 Solaris Cryptographic Framework (Overview)". Oracle. September 2010. Retrieved2012-11-27.
  5. ^"Untitled 1".
  6. ^"Get Backup Pro is a solid backup utility for Macs".Engadget. 25 October 2014. Retrieved2016-04-26.
  7. ^AES 256-bit encryption with routinely-increased PBKDF2 iterations
  8. ^[1]Web Browser,fourmilab.ch/javascrypt
  9. ^PyEyeCrypt at githubWindows,OSX andLinux binaries andPython source code included in release v1.1
Common
algorithms
Less common
algorithms
Other
algorithms
Design
Attack
(cryptanalysis)
Standardization
Utilization
General
Mathematics
Retrieved from "https://en.wikipedia.org/w/index.php?title=AES_implementations&oldid=1300317624"
Category:
Hidden categories:

[8]ページ先頭

©2009-2026 Movatter.jp