AES - Advanced Encryption Standard
What is AES?
AES stands for Advanced Encryption Standard. It’s a symmetric encryption algorithm used to securely encrypt and decrypt data. AES is widely used to protect sensitive information in files, emails, network communications, and databases.
Why is AES useful?
Data privacy and security are critical today. AES helps by: * Encrypting data so unauthorized users can’t read it. * Ensuring confidentiality during storage or transmission. * Providing fast, strong encryption resistant to attacks. * Without AES, sensitive data like passwords and financial info could be easily intercepted.
How it works?
Key generation – A secret key (128, 192, or 256 bits) is chosen, shared by sender and receiver.
Encryption – Plaintext is transformed into ciphertext using AES and the key.
Transmission/Storage – Ciphertext is sent or stored securely.
Decryption – The receiver uses the key to restore plaintext from ciphertext.
Where is AES used?
Secure websites (HTTPS) encrypt web traffic.
Wi-Fi security (WPA2/WPA3) uses AES.
File encryption tools (BitLocker, VeraCrypt, 7-Zip).
Messaging apps with end-to-end encryption (Signal, WhatsApp).
VPNs and secure tunnels to protect data in transit.
Which OSI layer does this protocol belong to?
AES operates primarily at the Presentation Layer (Layer 6).
Encryption/decryption transform data before it reaches the application.
It ensures confidentiality and proper formatting for application consumption.
Topics in this section,
In this section, you are going to learn
Terminology
Version Info
AES Version |
AES Number |
Year |
Core Idea / Contribution |
---|---|---|---|
AES (Rijndael) |
FIPS PUB 197 |
2001 |
Standardized the Rijndael block cipher as AES. Supports 128-bit block size with 128, 192, or 256-bit keys. Selected after a 5-year public competition by NIST. |
AES Update |
FIPS PUB 197 (Revised) |
2023 |
Editorial update onlyno technical changes. Improved formatting, added diagrams, clarified definitions. |
AES in Internet Protocols |
RFC 3602 (AES-CBC), RFC 5116 (AES-GCM) |
2003 / 2008 |
Specifies how AES is used in IPsec and other protocols. AES-CBC and AES-GCM modes defined for secure communication. |
Setup
Setup
AES Encryption Packet
S.No |
Protocol Packets |
Description |
Size(Bytes) |
---|---|---|---|
1 |
AES Encryption Packet |
Used to encrypt a 128-bit block of plaintext using a symmetric key. |
496 / 536 / 576 |
Plaintext Block |
The original data to be encrypted. |
16 |
|
Key |
Secret key used for encryption. Can be 128, 192, or 256 bits. |
16 / 24 / 32 |
|
Initialization Vector (IV) |
Used in modes like CBC to ensure randomness. Not used in ECB mode. |
16 |
|
Round Keys |
Keys derived from the original key for each AES round. |
176 / 208 / 240 |
|
State Matrix |
Internal 44 byte matrix used during AES transformations. |
16 |
|
S-Box |
Substitution box used in the SubBytes step. |
256 |
|
Ciphertext Block |
The encrypted output after all AES rounds. |
16 |
AES Decryption Packet
S.No |
Protocol Packets |
Description |
Size(Bytes) |
---|---|---|---|
2 |
AES Decryption Packet |
Used to decrypt a 128-bit ciphertext block using the same symmetric key. |
496 / 536 / 576 |
Ciphertext Block |
The encrypted data to be decrypted. |
16 |
|
Key |
Same symmetric key used during encryption. |
16 / 24 / 32 |
|
Initialization Vector (IV) |
Required for modes like CBC to reverse the XOR step. |
16 |
|
Round Keys |
Derived from the key, used in reverse order during decryption. |
176 / 208 / 240 |
|
State Matrix |
Internal 44 byte matrix used during AES transformations. |
16 |
|
Inverse S-Box |
Used in the InvSubBytes step during decryption. |
256 |
|
Plaintext Block |
The original data recovered after decryption. |
16 |
S.no |
Use Case |
Description |
---|---|---|
1 |
Secure Web Communication |
AES is used in HTTPS (SSL/TLS) to encrypt data between browsers and servers. |
2 |
Wi-Fi Security |
AES is the core encryption algorithm in WPA2 and WPA3 for protecting wireless networks. |
3 |
File Encryption |
Tools like BitLocker, VeraCrypt, and 7-Zip use AES to encrypt files and drives. |
4 |
Messaging Apps |
End-to-end encryption in apps like WhatsApp, Signal, and Telegram uses AES. |
5 |
VPNs |
AES encrypts data in transit to ensure privacy and security over public networks. |
6 |
Mobile Device Encryption |
iOS and Android use AES to encrypt user data stored on the device. |
7 |
Database Encryption |
AES is used to encrypt sensitive fields or entire databases (e.g., in SQL Server, Oracle). |
8 |
Cloud Storage |
Services like Google Drive and Dropbox use AES to encrypt files stored in the cloud. |
9 |
Payment Systems |
AES secures transaction data in systems like EMV chip cards and mobile wallets. |
10 |
Military & Government Use |
AES-256 is approved for encrypting classified and top-secret information. |
S.no |
Feature |
Description |
---|---|---|
1 |
Symmetric Key Cipher |
Uses the same key for both encryption and decryption. |
2 |
Block Cipher |
Operates on fixed-size blocks of data (128 bits). |
3 |
Key Sizes |
Supports 128, 192, and 256-bit keys for varying levels of security. |
4 |
Number of Rounds |
10, 12, or 14 rounds depending on key size. |
5 |
SubstitutionPermutation Network (SPN) |
Uses multiple rounds of substitution and permutation for encryption. |
6 |
Fast and Efficient |
Designed for high performance in both hardware and software. |
7 |
Strong Security |
Resistant to known attacks like brute-force, differential, and linear cryptanalysis. |
8 |
Widely Adopted |
Used globally in government, finance, and consumer applications. |
9 |
Flexible Modes of Operation |
Supports ECB, CBC, CFB, OFB, GCM, etc., for different use cases. |
Symmetric Key Cipher - Testcases
# |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Encrypt with AES-128 |
Use 128-bit key for encryption |
Ciphertext generated |
2 |
Decrypt with AES-128 |
Use same 128-bit key for decryption |
Original plaintext recovered |
3 |
Encrypt with AES-192 |
Use 192-bit key for encryption |
Ciphertext generated |
4 |
Decrypt with AES-192 |
Use same 192-bit key for decryption |
Original plaintext recovered |
5 |
Encrypt with AES-256 |
Use 256-bit key for encryption |
Ciphertext generated |
6 |
Decrypt with AES-256 |
Use same 256-bit key for decryption |
Original plaintext recovered |
7 |
Encrypt and Decrypt with Same Key |
Use same key for both operations |
Data integrity maintained |
8 |
Encrypt and Decrypt with Wrong Key |
Use different key for decryption |
Decryption fails or produces garbage |
9 |
Encrypt Empty String |
Encrypt an empty string |
Valid ciphertext generated |
10 |
Decrypt Empty Ciphertext |
Decrypt empty ciphertext |
Empty string returned |
11 |
Encrypt Short Text |
Encrypt short plaintext |
Ciphertext generated |
12 |
Encrypt Long Text |
Encrypt large plaintext |
Ciphertext generated |
13 |
Encrypt Binary Data |
Encrypt binary input |
Ciphertext generated |
14 |
Decrypt Binary Ciphertext |
Decrypt binary ciphertext |
Original binary data recovered |
15 |
Use Hex Key |
Use hexadecimal key for AES |
Encryption succeeds |
16 |
Use Base64 Key |
Use base64-encoded key |
Encryption succeeds |
17 |
Use Random Key |
Generate random symmetric key |
Encryption and decryption succeed |
18 |
Use Static Key |
Use fixed key |
Consistent results |
19 |
Use Weak Key |
Use simple key (e.g., all zeros) |
Encryption works but insecure |
20 |
Use Strong Key |
Use high-entropy key |
Encryption secure |
21 |
Use Key with Wrong Length |
Use 100-bit key |
Error or rejection |
22 |
Use Key Padding |
Pad key to valid length |
Encryption succeeds |
23 |
Use ECB Mode |
Encrypt using AES in ECB mode |
Ciphertext generated (less secure) |
24 |
Use CBC Mode |
Encrypt using AES in CBC mode |
Ciphertext generated with IV |
25 |
Use CFB Mode |
Encrypt using AES in CFB mode |
Ciphertext generated |
26 |
Use OFB Mode |
Encrypt using AES in OFB mode |
Ciphertext generated |
27 |
Use CTR Mode |
Encrypt using AES in CTR mode |
Ciphertext generated |
28 |
Use GCM Mode |
Encrypt using AES in GCM mode |
Ciphertext and tag generated |
29 |
Use IV with CBC Mode |
Provide initialization vector |
Encryption succeeds |
30 |
Use Same IV Twice |
Reuse IV in CBC mode |
Encryption succeeds but insecure |
31 |
Use Different IVs |
Use different IVs for same plaintext |
Different ciphertexts generated |
32 |
Encrypt with Padding |
Use PKCS#7 padding |
Ciphertext generated |
33 |
Decrypt with Padding |
Remove padding after decryption |
Original plaintext recovered |
34 |
Encrypt Without Padding |
Use plaintext with block size multiple |
Ciphertext generated |
35 |
Encrypt Non-Block-Aligned Data |
Use data not aligned to block size |
Padding applied |
36 |
Encrypt with Hardware Support |
Use AES-NI instructions |
Fast encryption |
37 |
Encrypt with Software Library |
Use OpenSSL or PyCrypto |
Encryption succeeds |
38 |
Encrypt with Custom Implementation |
Use custom AES implementation |
Encryption succeeds if correct |
39 |
Encrypt with Key Rotation |
Rotate keys periodically |
Encryption remains secure |
40 |
Encrypt with Key Expiry |
Use expired key |
Encryption fails or flagged |
41 |
Encrypt with Key Management System |
Retrieve key from KMS |
Encryption succeeds |
42 |
Encrypt with Secure Element |
Use secure element for key storage |
Encryption succeeds |
43 |
Encrypt with TPM |
Use Trusted Platform Module |
Encryption succeeds |
44 |
Encrypt with HSM |
Use Hardware Security Module |
Encryption succeeds |
45 |
Encrypt with Compliance Logging |
Enable logging for audit |
Logs show key usage |
46 |
Encrypt with SIEM Integration |
Send logs to SIEM |
Events visible in SIEM |
47 |
Encrypt with Access Control |
Restrict key usage by role |
Unauthorized access blocked |
48 |
Encrypt with Key Backup |
Use backup key if primary fails |
Encryption continues |
49 |
Encrypt with Key Revocation |
Revoke compromised key |
Key no longer usable |
50 |
Encrypt with Key Derivation |
Derive key from password using PBKDF2 |
Encryption succeeds with derived key |
Block Cipher - Testcases
# |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Encrypt 128-bit block |
Encrypt exactly 128-bit plaintext |
Ciphertext generated |
2 |
Encrypt 256-bit block |
Encrypt two 128-bit blocks |
Two ciphertext blocks generated |
3 |
Encrypt 64-bit block |
Encrypt half-block with padding |
One ciphertext block generated |
4 |
Encrypt 129-bit block |
Encrypt slightly over one block |
Two ciphertext blocks generated |
5 |
Encrypt 0-bit block |
Encrypt empty input |
Empty ciphertext |
6 |
Encrypt 1024-bit block |
Encrypt 8 blocks |
8 ciphertext blocks generated |
7 |
Encrypt with PKCS#7 padding |
Pad to 128-bit block size |
Valid ciphertext |
8 |
Encrypt with ISO/IEC 7816-4 padding |
Use alternate padding scheme |
Valid ciphertext |
9 |
Encrypt with no padding |
Input is multiple of 128 bits |
Ciphertext generated |
10 |
Encrypt with incorrect padding |
Input not padded correctly |
Error or incorrect decryption |
11 |
Decrypt 128-bit block |
Decrypt one block |
Original plaintext recovered |
12 |
Decrypt 256-bit block |
Decrypt two blocks |
Original plaintext recovered |
13 |
Decrypt with wrong padding |
Padding mismatch |
Error or garbage output |
14 |
Encrypt with ECB mode |
Block-by-block encryption |
Identical blocks produce same ciphertext |
15 |
Encrypt with CBC mode |
Chained block encryption |
Ciphertext varies with IV |
16 |
Encrypt with CFB mode |
Stream-like block encryption |
Ciphertext generated |
17 |
Encrypt with OFB mode |
Output feedback mode |
Ciphertext generated |
18 |
Encrypt with CTR mode |
Counter mode |
Ciphertext generated |
19 |
Encrypt with GCM mode |
Authenticated encryption |
Ciphertext and tag generated |
20 |
Encrypt with same plaintext blocks |
ECB mode |
Identical ciphertext blocks |
21 |
Encrypt with different IVs |
CBC mode |
Different ciphertexts |
22 |
Encrypt with reused IV |
CBC mode |
Ciphertext same, insecure |
23 |
Encrypt with IV = 0 |
CBC mode |
Ciphertext generated, insecure |
24 |
Encrypt with random IV |
CBC mode |
Ciphertext varies |
25 |
Encrypt with IV length 128 bits |
Invalid IV |
Error or rejection |
26 |
Encrypt with IV = 128 bits |
Valid IV |
Encryption succeeds |
27 |
Encrypt with block-aligned data |
No padding needed |
Ciphertext generated |
28 |
Encrypt with non-aligned data |
Padding applied |
Ciphertext generated |
29 |
Encrypt with UTF-8 text |
Multibyte characters |
Ciphertext generated |
30 |
Encrypt with ASCII text |
Single-byte characters |
Ciphertext generated |
31 |
Encrypt with binary data |
Raw bytes |
Ciphertext generated |
32 |
Encrypt with JSON data |
Structured text |
Ciphertext generated |
33 |
Encrypt with XML data |
Structured text |
Ciphertext generated |
34 |
Encrypt with image data |
Binary file |
Ciphertext generated |
35 |
Encrypt with audio data |
Binary file |
Ciphertext generated |
36 |
Encrypt with video data |
Large binary file |
Ciphertext generated |
37 |
Encrypt with compressed data |
ZIP or GZIP |
Ciphertext generated |
38 |
Encrypt with encrypted input |
Double encryption |
Ciphertext generated |
39 |
Encrypt with corrupted block |
Modify one block |
Decryption fails or partial recovery |
40 |
Encrypt with tampered IV |
Modify IV |
Decryption fails or incorrect |
41 |
Encrypt with block chaining |
CBC mode |
Each block depends on previous |
42 |
Encrypt with block independence |
ECB mode |
Each block independent |
43 |
Encrypt with block size 128 bits |
Invalid block size |
Error or rejection |
44 |
Encrypt with 128-bit aligned file |
No padding needed |
Ciphertext generated |
45 |
Encrypt with 1MB file |
Multiple blocks |
Ciphertext generated |
46 |
Encrypt with 1GB file |
Large input |
Ciphertext generated |
47 |
Encrypt with streaming input |
Block-by-block processing |
Ciphertext generated |
48 |
Encrypt with block corruption |
Flip bits in ciphertext |
Decryption fails |
49 |
Encrypt with block replay |
Replay old ciphertext block |
Potential vulnerability |
50 |
Encrypt with block reordering |
Change block order |
Decryption fails or incorrect |
Key sizes - Testcases
# |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Encrypt with 128-bit key |
Use 16-byte key |
Ciphertext generated |
2 |
Encrypt with 192-bit key |
Use 24-byte key |
Ciphertext generated |
3 |
Encrypt with 256-bit key |
Use 32-byte key |
Ciphertext generated |
4 |
Decrypt with 128-bit key |
Use same 128-bit key |
Plaintext recovered |
5 |
Decrypt with 192-bit key |
Use same 192-bit key |
Plaintext recovered |
6 |
Decrypt with 256-bit key |
Use same 256-bit key |
Plaintext recovered |
7 |
Encrypt with incorrect key size |
Use 100-bit key |
Error or rejection |
8 |
Encrypt with oversized key |
Use 512-bit key |
Error or rejection |
9 |
Encrypt with under-sized key |
Use 64-bit key |
Error or rejection |
10 |
Encrypt with padded key |
Pad to valid size |
Encryption succeeds |
11 |
Encrypt with hex 128-bit key |
Use hex string |
Ciphertext generated |
12 |
Encrypt with hex 192-bit key |
Use hex string |
Ciphertext generated |
13 |
Encrypt with hex 256-bit key |
Use hex string |
Ciphertext generated |
14 |
Encrypt with base64 128-bit key |
Use base64 string |
Ciphertext generated |
15 |
Encrypt with base64 192-bit key |
Use base64 string |
Ciphertext generated |
16 |
Encrypt with base64 256-bit key |
Use base64 string |
Ciphertext generated |
17 |
Encrypt with random 128-bit key |
Generate random key |
Ciphertext generated |
18 |
Encrypt with random 192-bit key |
Generate random key |
Ciphertext generated |
19 |
Encrypt with random 256-bit key |
Generate random key |
Ciphertext generated |
20 |
Encrypt with static 128-bit key |
Use fixed key |
Consistent ciphertext |
21 |
Encrypt with static 192-bit key |
Use fixed key |
Consistent ciphertext |
22 |
Encrypt with static 256-bit key |
Use fixed key |
Consistent ciphertext |
23 |
Encrypt with weak 128-bit key |
All zeros |
Works but insecure |
24 |
Encrypt with weak 192-bit key |
All ones |
Works but insecure |
25 |
Encrypt with weak 256-bit key |
Repeating pattern |
Works but insecure |
26 |
Encrypt with strong 128-bit key |
High entropy |
Secure encryption |
27 |
Encrypt with strong 192-bit key |
High entropy |
Secure encryption |
28 |
Encrypt with strong 256-bit key |
High entropy |
Secure encryption |
29 |
Encrypt with derived 128-bit key |
Use PBKDF2 |
Ciphertext generated |
30 |
Encrypt with derived 192-bit key |
Use PBKDF2 |
Ciphertext generated |
31 |
Encrypt with derived 256-bit key |
Use PBKDF2 |
Ciphertext generated |
32 |
Encrypt with key rotation |
Rotate 128-bit key |
Encryption remains secure |
33 |
Encrypt with key rotation |
Rotate 256-bit key |
Encryption remains secure |
34 |
Encrypt with expired key |
Key marked expired |
Encryption fails or flagged |
35 |
Encrypt with revoked key |
Key revoked |
Encryption fails |
36 |
Encrypt with key from KMS |
Retrieve 128-bit key |
Encryption succeeds |
37 |
Encrypt with key from HSM |
Use 256-bit key |
Encryption succeeds |
38 |
Encrypt with TPM key |
Use 192-bit key |
Encryption succeeds |
39 |
Encrypt with secure element key |
Use 128-bit key |
Encryption succeeds |
40 |
Encrypt with access-controlled key |
Role-based access |
Unauthorized blocked |
41 |
Encrypt with backup key |
Use backup 256-bit key |
Encryption continues |
42 |
Encrypt with key logging |
Log 128-bit key usage |
Logs generated |
43 |
Encrypt with SIEM integration |
Log 192-bit key usage |
Events visible |
44 |
Encrypt with compliance policy |
Use 256-bit key |
Policy enforced |
45 |
Encrypt with FIPS-compliant key |
Use validated key |
Encryption succeeds |
46 |
Encrypt with AES-NI and 128-bit key |
Hardware acceleration |
Fast encryption |
47 |
Encrypt with OpenSSL and 192-bit key |
Software library |
Encryption succeeds |
48 |
Encrypt with PyCrypto and 256-bit key |
Software library |
Encryption succeeds |
49 |
Encrypt with custom AES and 128-bit key |
Custom implementation |
Works if correct |
50 |
Encrypt with mismatched key size |
Encrypt with 128-bit, decrypt with 256-bit |
Decryption fails |
Number of Rounds - Testcases
# |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
AES-128 Rounds |
Use 128-bit key |
10 rounds executed |
2 |
AES-192 Rounds |
Use 192-bit key |
12 rounds executed |
3 |
AES-256 Rounds |
Use 256-bit key |
14 rounds executed |
4 |
AES-128 Round Count Check |
Verify round count |
10 rounds confirmed |
5 |
AES-192 Round Count Check |
Verify round count |
12 rounds confirmed |
6 |
AES-256 Round Count Check |
Verify round count |
14 rounds confirmed |
7 |
AES-128 Round Key Generation |
Generate round keys |
11 round keys generated |
8 |
AES-192 Round Key Generation |
Generate round keys |
13 round keys generated |
9 |
AES-256 Round Key Generation |
Generate round keys |
15 round keys generated |
10 |
AES-128 Final Round |
Check last round |
No MixColumns applied |
11 |
AES-192 Final Round |
Check last round |
No MixColumns applied |
12 |
AES-256 Final Round |
Check last round |
No MixColumns applied |
13 |
AES-128 Round Timing |
Measure time per round |
Consistent timing |
14 |
AES-192 Round Timing |
Measure time per round |
Slightly longer |
15 |
AES-256 Round Timing |
Measure time per round |
Longest |
16 |
AES-128 Round SubBytes |
Validate SubBytes step |
Correct substitution |
17 |
AES-192 Round ShiftRows |
Validate ShiftRows step |
Correct shifting |
18 |
AES-256 Round MixColumns |
Validate MixColumns step |
Correct mixing |
19 |
AES-128 Round AddRoundKey |
Validate key addition |
XOR with round key |
20 |
AES-192 Round Key Expansion |
Validate key schedule |
Correct keys derived |
21 |
AES-256 Round Key Expansion |
Validate key schedule |
Correct keys derived |
22 |
AES-128 Round Order |
Check operation sequence |
SubBytes ShiftRows MixColumns AddRoundKey |
23 |
AES-192 Round Order |
Check operation sequence |
Same as above |
24 |
AES-256 Round Order |
Check operation sequence |
Same as above |
25 |
AES-128 Round Integrity |
Tamper with round |
Decryption fails |
26 |
AES-192 Round Integrity |
Tamper with round |
Decryption fails |
27 |
AES-256 Round Integrity |
Tamper with round |
Decryption fails |
28 |
AES-128 Round Debug |
Log each round |
10 rounds logged |
29 |
AES-192 Round Debug |
Log each round |
12 rounds logged |
30 |
AES-256 Round Debug |
Log each round |
14 rounds logged |
31 |
AES-128 Round Reversal |
Decrypt step-by-step |
Plaintext recovered |
32 |
AES-192 Round Reversal |
Decrypt step-by-step |
Plaintext recovered |
33 |
AES-256 Round Reversal |
Decrypt step-by-step |
Plaintext recovered |
34 |
AES-128 Round Fault Injection |
Inject fault in round |
Output corrupted |
35 |
AES-192 Round Fault Injection |
Inject fault in round |
Output corrupted |
36 |
AES-256 Round Fault Injection |
Inject fault in round |
Output corrupted |
37 |
AES-128 Round Skipping |
Skip a round |
Decryption fails |
38 |
AES-192 Round Skipping |
Skip a round |
Decryption fails |
39 |
AES-256 Round Skipping |
Skip a round |
Decryption fails |
40 |
AES-128 Round Duplication |
Duplicate a round |
Decryption fails |
41 |
AES-192 Round Duplication |
Duplicate a round |
Decryption fails |
42 |
AES-256 Round Duplication |
Duplicate a round |
Decryption fails |
43 |
AES-128 Round Count Mismatch |
Use wrong round count |
Decryption fails |
44 |
AES-192 Round Count Mismatch |
Use wrong round count |
Decryption fails |
45 |
AES-256 Round Count Mismatch |
Use wrong round count |
Decryption fails |
46 |
AES-128 Round Key Mismatch |
Use wrong round key |
Decryption fails |
47 |
AES-192 Round Key Mismatch |
Use wrong round key |
Decryption fails |
48 |
AES-256 Round Key Mismatch |
Use wrong round key |
Decryption fails |
49 |
AES-128 Round Visualization |
Visualize each round |
10 rounds shown |
50 |
AES-256 Round Visualization |
Visualize each round |
14 rounds shown |
Substitution-Permutation Network (SPN) - Testcases
# |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Apply SubBytes |
Substitute bytes using S-box |
Bytes transformed |
2 |
Apply ShiftRows |
Permute rows of state matrix |
Rows shifted |
3 |
Apply MixColumns |
Mix columns using matrix multiplication |
Columns transformed |
4 |
Apply AddRoundKey |
XOR state with round key |
State updated |
5 |
SPN Round Execution |
Execute full round |
State transformed |
6 |
SPN Initial Round |
Apply AddRoundKey only |
Initial transformation |
7 |
SPN Final Round |
Skip MixColumns |
Final transformation |
8 |
SPN with AES-128 |
10 rounds of SPN |
Encryption succeeds |
9 |
SPN with AES-192 |
12 rounds of SPN |
Encryption succeeds |
10 |
SPN with AES-256 |
14 rounds of SPN |
Encryption succeeds |
11 |
SPN Byte Substitution |
Validate S-box mapping |
Correct substitution |
12 |
SPN Byte Inversion |
Use inverse S-box |
Correct decryption |
13 |
SPN Row Permutation |
Validate ShiftRows |
Correct row shift |
14 |
SPN Column Mixing |
Validate MixColumns |
Correct column mix |
15 |
SPN Key Mixing |
Validate AddRoundKey |
Correct XOR operation |
16 |
SPN Round Integrity |
Tamper with round |
Decryption fails |
17 |
SPN Round Skipping |
Skip substitution |
Decryption fails |
18 |
SPN Round Duplication |
Duplicate permutation |
Decryption fails |
19 |
SPN Round Reordering |
Change order of steps |
Decryption fails |
20 |
SPN Round Logging |
Log each transformation |
All steps visible |
21 |
SPN Round Visualization |
Visualize state matrix |
Changes per round shown |
22 |
SPN Fault Injection |
Inject fault in substitution |
Output corrupted |
23 |
SPN Fault Injection |
Inject fault in permutation |
Output corrupted |
24 |
SPN Fault Injection |
Inject fault in key mixing |
Output corrupted |
25 |
SPN Round Count Check |
Count SPN rounds |
Matches AES spec |
26 |
SPN Round Key Expansion |
Generate round keys |
Keys match round count |
27 |
SPN Round Key Mismatch |
Use wrong key |
Decryption fails |
28 |
SPN Round Key Reuse |
Reuse key across rounds |
Insecure encryption |
29 |
SPN Round Key Rotation |
Rotate keys |
Encryption remains secure |
30 |
SPN Round Key Derivation |
Derive keys from master key |
Keys generated correctly |
31 |
SPN with ECB Mode |
No IV used |
SPN applied per block |
32 |
SPN with CBC Mode |
IV used |
SPN applied with chaining |
33 |
SPN with CFB Mode |
Feedback used |
SPN applied to stream |
34 |
SPN with OFB Mode |
Output feedback used |
SPN applied to stream |
35 |
SPN with CTR Mode |
Counter used |
SPN applied to counter blocks |
36 |
SPN with GCM Mode |
Authenticated encryption |
SPN applied with tag |
37 |
SPN with corrupted input |
Modify plaintext |
Output differs |
38 |
SPN with corrupted output |
Modify ciphertext |
Decryption fails |
39 |
SPN with corrupted S-box |
Use wrong substitution table |
Decryption fails |
40 |
SPN with corrupted permutation |
Use wrong ShiftRows |
Decryption fails |
41 |
SPN with corrupted MixColumns |
Use wrong matrix |
Decryption fails |
42 |
SPN with corrupted round key |
Use wrong key |
Decryption fails |
43 |
SPN with custom S-box |
Use alternate substitution |
Encryption works if reversible |
44 |
SPN with custom permutation |
Use alternate row shift |
Encryption works if reversible |
45 |
SPN with custom MixColumns |
Use alternate matrix |
Encryption works if reversible |
46 |
SPN with custom round structure |
Change order of steps |
Encryption works if reversible |
47 |
SPN with reduced rounds |
Use fewer rounds |
Encryption weaker |
48 |
SPN with increased rounds |
Use more rounds |
Encryption stronger |
49 |
SPN with round profiling |
Measure time per step |
Performance analyzed |
50 |
SPN with round auditing |
Log transformations |
Audit trail available |
Fast and Efficient - Testcases
# |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Encrypt with AES-NI |
Use hardware acceleration |
Fast encryption |
2 |
Decrypt with AES-NI |
Use hardware acceleration |
Fast decryption |
3 |
Encrypt with OpenSSL |
Use optimized software library |
Fast encryption |
4 |
Decrypt with OpenSSL |
Use optimized software library |
Fast decryption |
5 |
Encrypt 1KB data |
Measure time |
< 1 ms (typical) |
6 |
Encrypt 1MB data |
Measure time |
Fast performance |
7 |
Encrypt 1GB data |
Measure time |
Efficient throughput |
8 |
Encrypt on ARM CPU |
Test on mobile processor |
Efficient performance |
9 |
Encrypt on Intel CPU |
Test on desktop processor |
High speed |
10 |
Encrypt on GPU |
Use GPU acceleration |
High throughput |
11 |
Encrypt on FPGA |
Use hardware implementation |
Very fast |
12 |
Encrypt on ASIC |
Use custom chip |
Maximum efficiency |
13 |
Encrypt with multithreading |
Parallel processing |
Speedup observed |
14 |
Encrypt with SIMD |
Use vector instructions |
Performance boost |
15 |
Encrypt with pipelining |
Hardware pipeline |
High throughput |
16 |
Encrypt with low memory |
Constrained environment |
Still efficient |
17 |
Encrypt on embedded system |
IoT device |
Acceptable speed |
18 |
Encrypt on smartphone |
Mobile device |
Fast encryption |
19 |
Encrypt on browser |
JavaScript/WebCrypto |
Fast and responsive |
20 |
Encrypt with Python |
Use PyCryptodome |
Reasonable speed |
21 |
Encrypt with C |
Use native implementation |
Very fast |
22 |
Encrypt with Rust |
Use safe and fast code |
High performance |
23 |
Encrypt with Go |
Use Go crypto library |
Efficient |
24 |
Encrypt with Java |
Use JCE |
Fast encryption |
25 |
Encrypt with .NET |
Use System.Security.Cryptography |
Fast encryption |
26 |
Encrypt with Node.js |
Use crypto module |
Fast encryption |
27 |
Encrypt with WebAssembly |
Run in browser |
Near-native speed |
28 |
Encrypt with low CPU usage |
Monitor CPU |
Efficient resource use |
29 |
Encrypt with low power |
Measure energy |
Power-efficient |
30 |
Encrypt with low latency |
Measure delay |
Minimal latency |
31 |
Encrypt with high throughput |
Measure MB/s |
High data rate |
32 |
Encrypt with low overhead |
Measure system load |
Minimal impact |
33 |
Encrypt with real-time input |
Stream data |
No lag |
34 |
Encrypt with batch input |
Process large files |
Efficient |
35 |
Encrypt with concurrent users |
Multi-session |
Scales well |
36 |
Encrypt with cloud function |
Serverless |
Fast execution |
37 |
Encrypt with Docker |
Containerized app |
No performance loss |
38 |
Encrypt with Kubernetes |
Scalable deployment |
Efficient under load |
39 |
Encrypt with load balancer |
Distribute load |
Maintains speed |
40 |
Encrypt with caching |
Reuse results |
Faster response |
41 |
Encrypt with precomputed keys |
Avoid key expansion |
Faster rounds |
42 |
Encrypt with optimized S-box |
Fast substitution |
Improved speed |
43 |
Encrypt with lookup tables |
Precomputed values |
Faster operations |
44 |
Encrypt with minimal code |
Lightweight implementation |
Fast execution |
45 |
Encrypt with optimized compiler |
Use -O3 flag |
Faster binary |
46 |
Encrypt with JIT compilation |
Runtime optimization |
Fast execution |
47 |
Encrypt with benchmarking |
Compare libraries |
AES is fastest |
48 |
Encrypt with profiling |
Identify bottlenecks |
AES shows efficiency |
49 |
Encrypt with stress test |
High load |
AES remains stable |
50 |
Encrypt with performance logging |
Log time and usage |
AES performs well |
Strong Security - Testcases
# |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Brute-force AES-128 |
Attempt all key combinations |
Computationally infeasible |
2 |
Brute-force AES-192 |
Attempt all key combinations |
Computationally infeasible |
3 |
Brute-force AES-256 |
Attempt all key combinations |
Computationally infeasible |
4 |
Differential cryptanalysis |
Analyze input-output differences |
No useful patterns found |
5 |
Linear cryptanalysis |
Approximate linear expressions |
No significant bias |
6 |
Meet-in-the-middle attack |
Try combining partial keys |
Not effective |
7 |
Related-key attack |
Use similar keys |
AES resists attack |
8 |
Side-channel attack |
Monitor power/timing |
Requires physical access |
9 |
Timing attack |
Measure encryption time |
No key leakage |
10 |
Power analysis attack |
Monitor power usage |
No key leakage |
11 |
Fault injection attack |
Inject hardware faults |
AES resists or detects |
12 |
Chosen plaintext attack |
Encrypt known plaintexts |
No key leakage |
13 |
Chosen ciphertext attack |
Decrypt known ciphertexts |
No key leakage |
14 |
Known plaintext attack |
Use known plaintext-ciphertext pairs |
Key not revealed |
15 |
Ciphertext-only attack |
Analyze ciphertexts only |
Key not revealed |
16 |
Replay attack |
Reuse old ciphertext |
No effect without context |
17 |
Key recovery attack |
Attempt to derive key |
Infeasible |
18 |
Key schedule analysis |
Analyze key expansion |
No weakness found |
19 |
Avalanche effect |
Small input change large output change |
Confirmed |
20 |
S-box analysis |
Analyze substitution layer |
Non-linear and secure |
21 |
MixColumns analysis |
Analyze diffusion |
Strong diffusion confirmed |
22 |
ShiftRows analysis |
Analyze permutation |
Ensures diffusion |
23 |
Round function analysis |
Analyze round transformations |
Secure structure |
24 |
Round key independence |
Ensure keys differ per round |
Confirmed |
25 |
Key sensitivity test |
Small key change different ciphertext |
Confirmed |
26 |
Plaintext sensitivity test |
Small plaintext change different ciphertext |
Confirmed |
27 |
Ciphertext indistinguishability |
Ciphertext appears random |
Confirmed |
28 |
Entropy test |
Measure ciphertext randomness |
High entropy |
29 |
Statistical test |
Analyze ciphertext distribution |
Uniform distribution |
30 |
Frequency analysis |
Check for patterns |
No patterns found |
31 |
Pattern resistance |
Encrypt repeating patterns |
No visible repetition |
32 |
ECB mode weakness |
Identical blocks same ciphertext |
Confirmed (insecure mode) |
33 |
CBC mode security |
IV prevents repetition |
Confirmed |
34 |
GCM mode authentication |
Detect tampering |
Tag verification fails |
35 |
CTR mode security |
Counter ensures uniqueness |
Confirmed |
36 |
Key reuse detection |
Reuse key with different IV |
Still secure (with IV) |
37 |
IV reuse detection |
Reuse IV in CBC mode |
Security compromised |
38 |
Key derivation security |
Use PBKDF2 |
Secure key generation |
39 |
Password-based key |
Use strong password |
Secure if high entropy |
40 |
Weak key detection |
Use all-zero key |
Works but insecure |
41 |
Strong key enforcement |
Use random key |
Secure encryption |
42 |
Key rotation policy |
Rotate keys periodically |
Maintains security |
43 |
Key expiration policy |
Expire old keys |
Prevents long-term exposure |
44 |
Key revocation test |
Revoke compromised key |
Key no longer usable |
45 |
Secure key storage |
Use HSM or TPM |
Keys protected |
46 |
Secure key transmission |
Use TLS or encrypted channel |
Keys not exposed |
47 |
Secure implementation |
Use validated library |
No known vulnerabilities |
48 |
Compliance check |
FIPS 197 compliance |
AES certified |
49 |
Cryptanalysis resistance |
Review academic attacks |
AES remains secure |
50 |
Long-term security |
Evaluate against quantum threats |
AES-256 recommended |
Widely Adopted - Testcases
1 |
Use AES in HTTPS |
Secure web traffic |
Encrypted communication |
---|---|---|---|
2 |
Use AES in VPN |
Encrypt VPN tunnel |
Secure connection |
3 |
Use AES in TLS |
Transport Layer Security |
Data confidentiality |
4 |
Use AES in SSH |
Secure shell sessions |
Encrypted terminal |
5 |
Use AES in IPsec |
Secure IP packets |
Encrypted network traffic |
6 |
Use AES in Wi-Fi |
WPA2/WPA3 encryption |
Secure wireless access |
7 |
Use AES in disk encryption |
Full disk encryption (e.g., BitLocker) |
Data protected |
8 |
Use AES in file encryption |
Encrypt files (e.g., 7-Zip, VeraCrypt) |
Files secured |
9 |
Use AES in cloud storage |
Encrypt data at rest (e.g., AWS S3) |
Data confidentiality |
10 |
Use AES in mobile apps |
Secure messaging (e.g., WhatsApp) |
End-to-end encryption |
11 |
Use AES in banking apps |
Secure transactions |
Data protected |
12 |
Use AES in payment systems |
Encrypt card data |
PCI DSS compliance |
13 |
Use AES in ATMs |
Secure PIN and transaction data |
Encrypted communication |
14 |
Use AES in smart cards |
Secure embedded data |
Data encrypted |
15 |
Use AES in passports |
e-Passport chip encryption |
Identity protection |
16 |
Use AES in government systems |
Classified data protection |
AES-256 used |
17 |
Use AES in military systems |
Secure communications |
AES-256 preferred |
18 |
Use AES in healthcare |
Encrypt patient records (HIPAA) |
Data confidentiality |
19 |
Use AES in legal tech |
Secure document storage |
Confidentiality ensured |
20 |
Use AES in education |
Secure student data |
FERPA compliance |
21 |
Use AES in IoT devices |
Secure sensor data |
Lightweight AES used |
22 |
Use AES in automotive |
Secure vehicle communication |
Data encrypted |
23 |
Use AES in blockchain |
Encrypt wallet keys |
Secure storage |
24 |
Use AES in cryptocurrency |
Secure private keys |
AES-based encryption |
25 |
Use AES in password managers |
Encrypt vaults (e.g., LastPass) |
Passwords protected |
26 |
Use AES in email encryption |
Secure email content |
Encrypted messages |
27 |
Use AES in backup systems |
Encrypt backups |
Data protected |
28 |
Use AES in DRM |
Protect digital content |
Unauthorized access blocked |
29 |
Use AES in video conferencing |
Secure calls (e.g., Zoom) |
Encrypted streams |
30 |
Use AES in messaging apps |
Secure chats (e.g., Signal) |
End-to-end encryption |
31 |
Use AES in browsers |
Secure cookies and storage |
Data encrypted |
32 |
Use AES in OS security |
Encrypt user data (e.g., macOS FileVault) |
Data protected |
33 |
Use AES in enterprise software |
Secure business data |
Compliance ensured |
34 |
Use AES in DevOps |
Secure secrets in CI/CD |
Encrypted credentials |
35 |
Use AES in container security |
Encrypt volumes |
Data confidentiality |
36 |
Use AES in database encryption |
Encrypt tables/columns |
Data protected |
37 |
Use AES in email servers |
Secure SMTP/IMAP |
Encrypted communication |
38 |
Use AES in digital forensics |
Secure evidence storage |
Data integrity maintained |
39 |
Use AES in law enforcement |
Encrypt case files |
Confidentiality ensured |
40 |
Use AES in telecom |
Secure voice/data |
Encrypted channels |
41 |
Use AES in satellite communication |
Encrypt telemetry |
Secure transmission |
42 |
Use AES in smart homes |
Secure device communication |
Data encrypted |
43 |
Use AES in wearables |
Encrypt health data |
Privacy protected |
44 |
Use AES in gaming |
Secure in-game transactions |
Data protected |
45 |
Use AES in e-commerce |
Secure checkout |
PCI DSS compliance |
46 |
Use AES in logistics |
Encrypt tracking data |
Secure supply chain |
47 |
Use AES in manufacturing |
Secure industrial control systems |
Data confidentiality |
48 |
Use AES in energy sector |
Secure smart grid data |
Encrypted communication |
49 |
Use AES in AI/ML pipelines |
Encrypt training data |
Privacy preserved |
50 |
Use AES in national ID systems |
Secure citizen data |
Identity protection |
Flexible Modes of Operation - Testcases
# |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Encrypt with ECB mode |
Basic block-by-block encryption |
Identical blocks same ciphertext |
2 |
Encrypt with CBC mode |
Chained block encryption |
Ciphertext depends on previous block |
3 |
Encrypt with CFB mode |
Stream-like encryption |
Ciphertext generated |
4 |
Encrypt with OFB mode |
Output feedback mode |
Stream cipher behavior |
5 |
Encrypt with CTR mode |
Counter mode |
Parallelizable encryption |
6 |
Encrypt with GCM mode |
Authenticated encryption |
Ciphertext + authentication tag |
7 |
Decrypt with ECB mode |
Decrypt ECB ciphertext |
Plaintext recovered |
8 |
Decrypt with CBC mode |
Decrypt CBC ciphertext |
Plaintext recovered |
9 |
Decrypt with CFB mode |
Decrypt CFB ciphertext |
Plaintext recovered |
10 |
Decrypt with OFB mode |
Decrypt OFB ciphertext |
Plaintext recovered |
11 |
Decrypt with CTR mode |
Decrypt CTR ciphertext |
Plaintext recovered |
12 |
Decrypt with GCM mode |
Verify tag and decrypt |
Plaintext recovered if tag valid |
13 |
ECB mode pattern test |
Encrypt repeating blocks |
Identical ciphertext blocks |
14 |
CBC mode IV test |
Use different IVs |
Different ciphertexts |
15 |
CBC mode IV reuse |
Reuse IV |
Insecure encryption |
16 |
CFB mode bit-level test |
Encrypt bit-by-bit |
Works like stream cipher |
17 |
OFB mode bit-level test |
Encrypt bit-by-bit |
Works like stream cipher |
18 |
CTR mode counter test |
Use incrementing counter |
Unique ciphertext blocks |
19 |
GCM mode tag verification |
Modify tag |
Decryption fails |
20 |
GCM mode tag omission |
Omit tag |
Decryption fails |
21 |
ECB mode weakness |
Analyze ciphertext |
Patterns visible |
22 |
CBC mode chaining |
Analyze block dependency |
Strong diffusion |
23 |
CFB mode feedback |
Analyze feedback loop |
Stream-like behavior |
24 |
OFB mode feedback |
Analyze output feedback |
Stream-like behavior |
25 |
CTR mode parallelism |
Encrypt blocks in parallel |
High performance |
26 |
GCM mode integrity |
Tamper with ciphertext |
Tag mismatch |
27 |
ECB mode with padding |
Use PKCS#7 |
Ciphertext generated |
28 |
CBC mode with padding |
Use PKCS#7 |
Ciphertext generated |
29 |
CTR mode without padding |
No padding needed |
Ciphertext generated |
30 |
GCM mode with AAD |
Add associated data |
Authenticated encryption |
31 |
GCM mode without AAD |
No associated data |
Still secure |
32 |
ECB mode with binary data |
Encrypt image |
Patterns visible |
33 |
CBC mode with binary data |
Encrypt image |
Patterns hidden |
34 |
CTR mode with binary data |
Encrypt image |
Patterns hidden |
35 |
GCM mode with binary data |
Encrypt image |
Authenticated encryption |
36 |
ECB mode with text |
Encrypt text |
Patterns visible |
37 |
CBC mode with text |
Encrypt text |
Patterns hidden |
38 |
CTR mode with text |
Encrypt text |
Patterns hidden |
39 |
GCM mode with text |
Encrypt text |
Authenticated encryption |
40 |
ECB mode decryption error |
Use wrong key |
Garbage output |
41 |
CBC mode decryption error |
Use wrong IV |
Garbage output |
42 |
CTR mode decryption error |
Use wrong counter |
Garbage output |
43 |
GCM mode decryption error |
Use wrong tag |
Decryption fails |
44 |
ECB mode performance |
Measure speed |
Fastest but insecure |
45 |
CBC mode performance |
Measure speed |
Moderate speed |
46 |
CTR mode performance |
Measure speed |
High speed |
47 |
GCM mode performance |
Measure speed |
High speed + integrity |
48 |
ECB mode compliance |
Check FIPS compliance |
Not recommended |
49 |
CBC mode compliance |
Check FIPS compliance |
Approved with padding |
50 |
GCM mode compliance |
Check FIPS compliance |
Approved and preferred |
Reference links