Nếu bạn đã từng thắc mắc về cách mọi thứ được giữ an toàn trên Internet, đặc biệt là khi xem xét rằng có một số tác nhân xấu liên tục cố gắng đột nhập kho dữ liệu mật mã là một trong những câu trả lời phù hợp nhất với câu hỏi.
Như bạn có thể biết, mật mã chỉ là một trong những phương pháp được sử dụng để bảo vệ thông tin và liên lạc, nhưng điều đó không có nghĩa là nó đơn giản theo bất kỳ phương tiện nào. Trên thực tế, đó là một công nghệ trải qua sự phát triển không ngừng để đảm bảo rằng các tiêu chuẩn mà nó dựa vào luôn là hàng đầu.
Một ví dụ về tiêu chuẩn như vậy là AES , một từ viết tắt mà bạn có thể gặp phải trước đây, đặc biệt nếu bạn liên tục sử dụng các ứng dụng liên lạc như WhatsApp, Signal hoặc Telegram hoặc phần mềm VPN. Trong bài viết này, chúng tôi sẽ tập trung vào AES và giúp bạn hiểu rõ hơn về nó.
AES là gì?
AES, viết tắt của Tiêu chuẩn mã hóa nâng cao là một hình thức mã hóa phổ biến đã được sử dụng trong một thời gian dài để đảm bảo rằng dữ liệu được giữ an toàn và bảo mật. khỏi những cặp mắt tò mò.
Điều làm cho mã hóa AES nổi bật trong đám đông là thực tế là đây là một phương pháp mã hóa an toàn, nhanh chóng và tính linh hoạt của nó giúp bạn có thể sử dụng nó trên nhiều loại sản phẩm, từ các ứng dụng hàng ngày như WhatsApp hoặc Báo hiệu cho các hệ thống an ninh quân sự và thậm chí cả phần cứng.
Cách mã hóa hoạt động
Bạn có thể biết cách mã hóa hoạt động. Nếu bạn không, đây là một lời nhắc nhanh: mã hóa lấy văn bản thuần túy và chuyển nó thành dạng mật mã, làm cho văn bản trông giống như được tạo thành từ các ký tự ngẫu nhiên. Có thể an toàn khi nói rằng AES là một loại mã hóa đối xứng, vì nó sử dụng cùng một khóa để mã hóa và giải mã dữ liệu.
Tiêu chuẩn mã hóa này sử dụng thuật toán mạng hoán vị thay thế (thuật toán SPN) để áp dụng một số vòng mã hóa để bảo vệ dữ liệu. Thực tế là nó sử dụng quá nhiều vòng khiến AES hầu như không thể xuyên thủng .
AES không chỉ là mật mã đầu tiên mà còn là mật mã có thể truy cập công khai duy nhất đã được NSA (Cơ quan An ninh Quốc gia) phê duyệt để bảo vệ dữ liệu tối mật. Ban đầu, tiêu chuẩn mã hóa này được gọi là Rijndael dựa trên tên của hai nhà phát triển của nó, Vincent Rijmen và Joan Daemen (đều đến từ Bỉ).
AES nhiều độ dài khóa
AES bao gồm ba mật mã khối và mỗi mật mã khối này có một số tổ hợp phím có thể có khác nhau, như sau:
- AES-128: Độ dài khóa 128 bit=3,4 * 10 38
- AES-192: Độ dài khóa 192 bit=6.2 * 10 57
- AES-256: Độ dài khóa 256 bit=1,1 * 10 7 7
Mặc dù có ba mật mã khối, mỗi một trong số chúng mã hóa và giải mã dữ liệu ở các bit 128 khối bằng cách sử dụng các độ dài khóa khác nhau (tức là 128, 192 và 256, như được chỉ định ở trên). Vì vậy, có thể an toàn khi nói rằng mặc dù độ dài của các khóa có thể khác nhau, nhưng kích thước khối luôn giống nhau (128 bit hoặc 16 byte, chúng giống nhau).
Việc AES sử dụng các độ dài khóa khác nhau chắc chắn đã đặt ra một số câu hỏi giữa người dùng, chẳng hạn như tại sao chúng ta cần một số độ dài khóa ngay từ đầu? Những người khác thậm chí có thể đặt câu hỏi về sự cần thiết của việc có nhiều độ dài khóa, hơn thế nữa khi xem xét rằng khóa 256 bit có lẽ là khóa an toàn nhất.
Mặc dù thực tế là khóa AES 256 bit chỉ đơn giản là khóa mạnh nhất trong nhóm, đôi khi được gọi là”cấp quân sự”, nó không phải lúc nào cũng được triển khai theo mặc định và lý do tại sao điều này xảy ra là do tài nguyên có sẵn hoặc tốt hơn là không có.
AES-128 so với AES-256
Kích thước khóa càng lớn thì càng tiêu tốn nhiều tài nguyên hơn, vì vậy có thể nói rằng hệ thống kém khả năng hơn có nhiều khả năng sử dụng khóa 128-bit AES thay vì Đối tác 256-bit. Ví dụ: nếu bạn sử dụng mã hóa 256 bit AES trên điện thoại của mình, điện thoại có thể tiêu hao pin nhanh hơn so với phiên bản 128 bit của cùng một tiêu chuẩn mã hóa.
Các khóa AES 256 bit khó bị tấn công hơn so với các khóa 128 bit. Tuy nhiên, ngay cả khi có sức mạnh tính toán khủng khiếp, các khóa AES 128 bit vẫn hầu như không thể bị bẻ khóa, vì vậy sử dụng phiên bản này thay vì các khóa 256 bit có thể là lựa chọn tốt hơn nếu bạn lo lắng về nguồn điện hoặc độ trễ, đặc biệt là trên thiết bị di động (ví dụ: điện thoại thông minh).
Về mặt sáng sủa, những tiến bộ công nghệ đã giúp cho sự khác biệt về cả sức mạnh tính toán và tuổi thọ pin giữa việc sử dụng AES-256 và AES-128 là không đáng kể, khiến AES 256-bit trở thành phổ biến nhất > lựa chọn, vì hầu hết người dùng thích được yên tâm.
Lợi ích của việc sử dụng AES
Thực tế là các phương pháp mã hóa được AES thực thi nhanh chóng và dễ hiểu khiến AES trở thành một lựa chọn phổ biến trong nhiều lĩnh vực khác nhau. AES không chỉ nhanh và an toàn mà còn dễ triển khai , điều này càng làm tăng thêm tính phổ biến bẩm sinh của nó.
Hơn nữa, nó có khả năng giải mã dữ liệu được bảo vệ nhanh nhất có thể mã hóa nó, đồng thời sử dụng ít bộ nhớ và sức mạnh tính toán hơn so với các tiêu chuẩn mã hóa phổ biến khác (chẳng hạn như DES ), mang lại lợi thế cho nó.
Cuối cùng, nhưng không kém phần quan trọng, nếu tình huống yêu cầu, AES đủ linh hoạt để cho phép bạn kết hợp nó với một số giao thức bảo mật khác như TKIP, WPA2, WEP, nhưng cũng có các loại mã hóa khác, chẳng hạn như SSL.
Dưới đây là một số ưu điểm chính của việc chọn AES so với các tiêu chuẩn mã hóa khác:
- Hỗ trợ đang được triển khai trong cả phần cứng và phần mềm
- Thực tế là nó hỗ trợ ba độ dài khóa giúp bạn linh hoạt hơn về bảo mật và tốc độ (hiệu suất)
- Cả ba loại khóa đều đủ dài, điều này khiến AES trở thành một mục tiêu không thể cưỡng ép được
- Cho đến nay, không có cuộc tấn công mật mã nào được chứng minh là hoạt động chống lại AES
- Bạn có thể tìm thấy nó hầu như ở mọi nơi, với thực tế là chính phủ Hoa Kỳ đã xác định nó như một tiêu chuẩn
- Dễ dàng triển khai bất kể điểm đến (được cho là dễ dàng triển khai phần cứng hơn phần mềm)
- Không chiếm nhiều bộ nhớ như các loại mã hóa khác (ví dụ: DES)
- Dễ dàng kết hợp với các giao thức bảo mật và các loại mã hóa khác
Cách sử dụng phổ biến của AES
Mặc dù thực tế là chúng tôi đã đề cập rằng AES thường được sử dụng ở mọi nơi mà nó được hỗ trợ, nhưng có một số ví dụ mà khả năng gặp phải nó cao hơn. Cụ thể:
- VPN
- Cách thức hoạt động của VPN xoay quanh việc định tuyến lại lưu lượng truy cập của bạn, nhưng không phải trước khi mã hóa nó để người khác không thể thấy nó trong trường hợp họ đang theo dõi kết nối của bạn. Hơn thế nữa, lưu lượng truy cập cần được giải mã tại điểm thoát của nó, điều này liên quan đến nhu cầu về tiêu chuẩn mã hóa. AES-256 được sử dụng theo mặc định bởi một số nhà cung cấp VPN, bao gồm NordVPN , Surfshark và ExpressVPN .
- Trình quản lý mật khẩu
- Trình quản lý mật khẩu hoạt động bằng cách cho phép bạn đặt tất cả mật khẩu của mình vào chúng và bảo vệ chúng bằng một mật khẩu duy nhất thông qua phương tiện mã hóa. Nhiều giải pháp phần mềm quản lý mật khẩu khác nhau trên thị trường đã chọn AES làm tiêu chuẩn mã hóa hoạt động của họ, vì nó dễ thực hiện, nhanh chóng và an toàn.
- Mạng Wi-Fi
- Nếu không có mã hóa lưu lượng, những kẻ tấn công có thể chỉ ngồi bên ngoài mạng không dây của bạn, nắm bắt các gói tin không được mã hóa bằng bộ điều hợp WiFi thích hợp và theo dõi toàn bộ nơi ở trực tuyến của bạn mà không cần quan tâm. Rất may, mã hóa AES, thường cùng với các tiêu chuẩn bảo mật bổ sung (WPA2 là phổ biến nhất vào thời điểm hiện tại) có thể ngăn điều đó xảy ra.
- Trình duyệt web
- Bạn có thể đã biết rằng lâu nay các trình duyệt web đã mã hóa kết nối của người dùng để bảo vệ họ khỏi các mối đe dọa mạng khác nhau như các cuộc tấn công MITM (Man-In-The-Middle), giả mạo hoặc giám sát lưu lượng.
- Mã hóa đĩa
- Mặc dù tính năng này chủ yếu được sử dụng trên các thiết bị di động như điện thoại thông minh và máy tính bảng, nhưng mã hóa đĩa của bạn không phải là chưa từng có nếu bạn muốn tăng cường quyền riêng tư và bảo mật của mình. AES hiện là một trong những phương pháp phổ biến nhất được sử dụng để mã hóa và giải mã nội dung đĩa.
- Phần mềm nén tệp
- Cho dù đó là WinRar, WinZip hay 7z mà chúng ta đang nói đến, tất cả các tiện ích lưu trữ và nén/giải nén tệp trên thị trường đều sử dụng AES làm tiêu chuẩn mã hóa để ngăn chặn rò rỉ dữ liệu ngẫu nhiên trong khi xử lý tệp của bạn.
- Ứng dụng liên lạc
- WhatsApp, Signal, Telegram, Snapchat, Messenger, và những người khác mà chúng tôi chưa đề cập, sử dụng mã hóa AES để đảm bảo rằng bạn sẽ được hưởng lợi từ sự riêng tư hoàn toàn, cho dù bạn đang gửi ảnh, video, tài liệu hay đơn giản tin nhắn văn bản thông qua các ứng dụng này.
- Thư viện ngôn ngữ lập trình
- Nếu bạn là một lập trình viên, bạn có thể nên biết rằng các thư viện của một số ngôn ngữ lập trình nhất định, bao gồm nhưng không giới hạn ở C ++, Java và Python, sử dụng mã hóa AES để giúp bạn bảo vệ dữ liệu và dự án của mình khỏi bị truy cập trái phép.
- Thành phần hệ điều hành
- Để thêm một lớp bảo mật bổ sung, một số hệ điều hành đã thêm mã hóa AES vào một số thành phần của chúng.
AES hoạt động như thế nào?
Nói chung, bạn cần biết hoặc tìm hiểu cách thức hoạt động của một công nghệ cụ thể để tận dụng tối đa khả năng của nó. Trong trường hợp này, bạn nên biết một hoặc hai điều về cách hoạt động của AES trước khi triển khai hoặc sử dụng nó một cách ngẫu nhiên trong các dự án hoặc trong môi trường của bạn.
1. Dữ liệu được chia thành các khối
Như bạn có thể nhớ từ các đề cập của chúng tôi ở trên, AES là mật mã khối , có nghĩa là nó mã hóa dữ liệu mà nó nhận được dưới dạng khối bit, trái ngược với mã hóa từng bit.
Do đó, bước đầu tiên của mã hóa AES là tách dữ liệu thành các khối. Mỗi khối này chứa một cột 4 x 4 128 bit hoặc 16 byte. Xét rằng một byte bao gồm 8 bit , chúng ta có 16 x 8=128 bit , là kích thước của khối.
Ví dụ: giả sử bạn muốn mã hóa ‘hesiatips.com ’ bằng AES, điều đầu tiên mà quy trình mã hóa thực hiện là tách dữ liệu thành các khối. Tuy nhiên, một khối chỉ có thể chứa 16 ký tự , vì vậy khối đầu tiên sẽ không bao gồm chữ ‘m’ ở cuối văn bản. Chữ ‘m’ sẽ được gửi đến khối tiếp theo.
Do đó, sau khi áp dụng AES cho ‘hesiatips.com ‘, phần đầu tiên của văn bản này sẽ giống như khối bên dưới:
a | c | e | s |
---|---|---|---|
d | t | t | . |
d | tôi | tôi | c |
tôi | v | p | o |
2. Mở rộng khóa
Quy trình mở rộng khóa phức tạp hơn một chút so với bước chúng tôi đã mô tả ở trên. Nó bao gồm việc lấy một khóa ban đầu và sử dụng lịch khóa của Rijndael để tạo một loạt các khóa bổ sung sẽ được sử dụng cho mỗi và mọi vòng của quá trình mã hóa.
Vì vậy, ví dụ: nếu bạn sử dụng khóa “ AESencryption12 ” trên văn bản thuần túy của chúng tôi ở trên ( Drugstips.com ), bạn sẽ nhận được một chuỗi dường như ngẫu nhiên những con số.
Đ | e | y | o |
---|---|---|---|
E | n | p | n |
S | c | t | 1 |
r | tôi | 2 |
Tuy nhiên, lịch khóa Rijndael sử dụng các quy trình rất cụ thể để mã hóa mọi ký hiệu trong cụm từ đầu tiên.
Kết quả sẽ giống như khối bên dưới:
7e | 04 | 0b | 20 |
52 | 6c | 1c | 56 |
a7 | bf | 8e | 84 |
30 | 03 | 3d | 20 |
Một lần nữa, mặc dù nó trông giống như những con số vô nghĩa và ngẫu nhiên, đó là điểm chính xác của toàn bộ quy trình mã hóa này: để ẩn dữ liệu đằng sau một mật mã, khiến nó không thể truy cập được đối với những người dùng không biết mật mã là gì và tạo ra nó không thể bẻ khóa nó.
Hơn nữa, điều này còn lâu mới kết thúc, vì quá trình mã hóa sẽ cần sử dụng các khóa mà chúng tôi đã tạo gần đây cho mỗi vòng mã hóa. Nhưng hãy nói thêm về điều đó sau.
3. Thêm một phím tròn
Đây thực sự là vòng mã hóa đầu tiên, vì chúng tôi sẽ thêm khóa ban đầu (‘ mã hóa AES12 ‘) vào khối tin nhắn của chúng tôi (‘hesiatips.com ‘>’), như trong ví dụ dưới đây, thoạt đầu có thể không hợp lý.
a | c | e | s |
---|---|---|---|
d | t | t | . |
d | tôi | tôi | c |
tôi | v | p | o |
<<
-
Đ e y o E n p n S c t 1 r tôi 2 Mặc dù có thể cảm thấy như không thể thêm hai khối văn bản lại với nhau nhưng hãy nhớ rằng đây chỉ là một biểu diễn đồ họa của quá trình mã hóa để bạn có thể hiểu rõ hơn. Trên thực tế, AES sử dụng mã nhị phân khiến nỗ lực của chúng tôi để thêm hai khối văn bản không chỉ hoàn toàn hợp lý mà còn hoàn toàn khả thi.
Thao tác này (thêm hai khối văn bản với nhau) được thực hiện bằng cách sử dụng mật mã XOR và kết quả có thể được xem bên dưới:
32 d5 5c d9 f3 24 a8 46 7e 1c 37 f3 82 5e 3f 03 4. Thay thế byte
Để tăng cường bảo vệ hơn nữa dữ liệu của bạn (trong trường hợp của chúng tôi là bản rõ mà chúng tôi đang cố gắng mã hóa), bước này của quy trình sẽ thay thế mỗi byte của khối bằng một giá trị xác định trước theo một bảng, được gọi là Rijndael S-box . Bạn có thể xem bảng ngay bên dưới:
00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 00 63 7c 77 7b f2 6b 6f c5 30 01 67 2b fe d7 ab 76 10 ca 82 c9 7ngày fa 59 47 f0 quảng cáo d4 a2 af 9c a4 72 c0 20 b7 fd 93 26 36 3f f7 cc 34 a5 e5 f1 71 d8 31 15 30 04 c7 23 c3 18 96 05 9a 07 12 80 e2 eb 27 b2 75 40 09 83 2c 1a 1b 6e 5a a0 52 3b d6 b3 29 e3 2f 84 50 53 d1 00 ed 20 fc b1 5b 6a cb be 39 4a 4c 58 cf 60 d0 ef aa fb 43 4ngày 33 85 45 f9 02 7f 50 3c 9f a8 70 51 a3 40 8f 92 9ngày 38 f5 bc b6 da 21 10 ff f3 d2 80 cd 0c 13 ec 5f 97 44 17 c4 a7 7e 3d 64 5ngày 19 73 90 60 81 4f dc 22 2a 90 88 46 ee b8 14 de 5e 0b db a0 e0 32 3a 0a 49 06 24 5c c2 d3 ac 62 91 95 e4 79 b0 e7 c8 37 6ngày 8ngày d5 4e a9 6c 56 f4 ea 65 7a ae 08 c0 ba 78 25 2e 1c a6 b4 c6 e8 đ 74 1f 4b bd 8b 8a d0 70 3e b5 66 48 03 f6 0e 61 35 57 b9 86 c1 1ngày 9e e0 e1 f8 98 11 69 d9 8e 94 9b 1e 87 e9 ce 55 28 df f0 8c a1 89 0ngày bf e6 42 68 41 99 2ngày 0f b0 54 bb 16 Mặc dù bảng này cũng giống như một chuỗi các ký tự ngẫu nhiên, bạn có thể sử dụng bảng này để kiểm tra giá trị mà các byte được thay thế sẽ có giá trị nào. Ví dụ: c9 sẽ trở thành dd , 26 sẽ trở thành f7 , ff sẽ trở thành 16 và sớm. Không quá khó để sử dụng một khi bạn đã hiểu rõ về nó.
Bây giờ chúng ta đã thấy bảng, hãy xem khối mới mà chúng tôi đã tạo ở trên từ vòng mã hóa đầu tiên sẽ thay đổi như thế nào sau khi thay thế byte dựa trên Rijndael S-box:
23 03 4a 35 0ngày 36 c2 5a f3 9c 9a 0ngày 13 58 75 7b Lưu ý rằng chúng tôi thực sự đã thay thế các khối bằng cách sử dụng bảng S-box Rijndael theo cách thủ công , vì vậy bạn có thể kiểm tra lại và cố gắng lặp lại kết quả nếu bạn quan tâm. Bằng cách này, bạn sẽ dễ dàng theo dõi hơn, đặc biệt nếu bạn đam mê tìm hiểu thêm về mật mã.
5. Dịch chuyển hàng
Trong bước này của quy trình mã hóa AES, các hàng được dịch chuyển để đặt dữ liệu của bạn sau một bức tường bảo vệ bổ sung. Trong khi hàng đầu tiên được giữ nguyên, ba hàng tiếp theo được dịch chuyển theo những cách khác nhau, như sau:
- Hàng thứ hai được dịch chuyển sang trái bởi một byte (ô)
- Hàng thứ ba được dịch chuyển sang trái bởi hai byte (ô)
- Hàng thứ tư và hàng cuối cùng được chuyển sang bên trái bởi ba byte (ô)
23 03 4a 35 36 c2 5a 0ngày 9a 0ngày f3 9c 7b 13 58 75 6. Trộn cột
Mặc dù chúng tôi muốn duy trì độ chính xác nhất có thể, nhưng bước này liên quan đến việc áp dụng một loạt công thức toán học phức tạp cho khối, điều này mang lại cho chúng tôi một khối hoàn toàn khác ở cuối quy trình.
Để cụ thể hơn một chút, mỗi cột được nhân với một ma trận xác định trước trong bước này. Kết quả sẽ là khối mã mới , khối này sẽ được tiếp tục sử dụng để tăng sức mạnh của mật mã và giảm nguy cơ bị bẻ khóa trên diện rộng.
Khi kết thúc quá trình trộn cột, chúng tôi sẽ nhận được một khối mã trông giống như sau:
43 4ngày 33 85 c8 37 6ngày 8ngày 9a 33 85 9c 42 68 41 99 7. Thêm phím tròn phụ
Hãy nhớ rằng một thời gian trước, chúng tôi đã nói với bạn rằng chúng tôi chắc chắn sẽ cần khóa mà chúng tôi đã tạo trong bước mở rộng khóa? Chà, chúng tôi đã từng sử dụng nó để xáo trộn mọi thứ một lần, bây giờ chúng tôi sẽ cần thực hiện thêm một lần nữa là xáo trộn với dữ liệu mà chúng tôi vừa thu được.
Vì vậy, chúng tôi lấy khối dữ liệu nhận được sau khi chạy bước trộn cột và thêm một khóa tròn khác vào đó, giống như chúng tôi đã làm ở bước 3 trong hướng dẫn của chúng tôi, như sau:
43 4ngày 33 85 c8 37 6ngày 8d 9a 33 85 9c 42 68 41 99 AND
32 d5 5c d9 f3 24 a8 46 7e 1c 37 f3 82 5e 3f 03 As you’d expect, this step will generate yet another block of data for us to process, but we’ll stop here. We have a feeling that you got the point. However, the encryption process is still far from being over, as the block of data we just generated will undergo several more modifications.
8. More steps
These modifications that we’ve mentioned above include everything we’ve done so far: shifting rows, byte substitution, adding round keys, and mixing columns, so it’s easy to understand why we had to stop here as far as exemplifying goes.
These rounds are identical and the number of times these rounds are repeated depend on the AES key length, as follows:
- AES-128 uses 9 rounds
- AES-192 uses 11 rounds
- AES-256 uses 13 rounds
So if you’re planning to use AES-256, the steps we’ve previously mentioned and explained will be repeated 13 times in a row, which you can agree is a tremendous amount. It’s also easy to understand why AES is so difficult to crack and is a go-to encryption standard in a lot of environments.
However, we’re not done yet. After the 9, 11, or 13 rounds of encryption we’ve briefly talked about above, there’s an additional round, during which the algorithm only substitutes bytes, shifts rows, and adds a round key (it skips mixing columns).
It may sound ridiculous that after 9, 11, or 13 rounds of running all the steps above the mixing columns step gets dropped. The reason is that at this point it’s somewhat redundant, and this step is skipped only to preserve some processing power.
So actually, after running all the steps of the encryption process, the input data (our plaintext we’ve used in the beginning in this case) will have gone through 10, 12, or 14 rounds, depending on the key length you chose and will look like a set of random characters. Not that it didn’t look like that for a long time now, since we started the encryption process and all.
So, to recap, while undergoing encryption, the data you feed to the AES encryption tools undergoes the following processes, in this order:
- Block division
- Key expansion
- Adding a round key
- Byte substitution
- Row shifting
- Column mixing
- Adding a round key
- Steps 4-7 are repeated for 9, 11, or 13 times depending on the key length
- Byte substitution
- Row shifting
- Adding a round key
At the end of this complex and seemingly endless process, addictivetips.com, the text we’ve attempted to encrypt, will look like the code below if encrypted using a 128-bit key and ‘AESencryption12‘ as our secret key:
RcadDaLDuP5fHtor3/Rfnq5EijEfhP02pvrlGkGr1Gc=
Although it may look like complete gibberish, once again, that’s the point of using encryption: making data as simple as plain text look like something went horribly wrong during its transmission and now it looks like gibberish.
How to decrypt AES
We understand that AES and the whole encryption process can be a bit of a handful, as the multitude of steps, as well as the fact that they’re repeated for an ungodly amount of time, can be a bit intimidating.
However, if you take a step back and look at the big picture, the whole thing actually starts to make sense, even for someone who didn’t spend their whole life studying cryptography and designing the perfect way to encrypt or decrypt information.
That’s precisely why we’re pretty confident you’ll have no trouble understanding AES decryption if the encryption process along with all of its steps made sense to you. To put it shortly, AES decryption follows the exact same steps as the encryption process, only they’re reversed.
So, in our case, if we want to go back to ‘addictivetips.com’ from
RcadDaLDuP5fHtor3/Rfnq5EijEfhP02pvrlGkGr1Gc=
, all we have to do is trace our steps back up until we reach the initial one, like so:- Inverse adding round key
- Inverse row shifting
- Inverse byte substitution
- Inverse adding round key
- Inverse column mixing
- Inverse row shifting
- Inverse byte substitution
- Repeat steps 4-7 for 9, 11, or 13 times depending on key length
- Inverse add round key
After performing all the steps above, we should end up with our original text fragment, ‘addictivetips.com’.
Is AES encryption secure?
One of the most pressing questions when it comes to all encryption standards (not only AES) is if it can provide you with an optimum level of security. In this case, the question would be: is AES encryption secure?
Although you could see for yourself that this encryption standard deploys a huge number of steps, each of which scrambles the original text and twists it beyond recognition, this didn’t seem to stop attackers from designing potential ways to circumvent these means of protection.
Note that in a real-life situation, an attacker (commonly known as a hacker or cracker) won’t go after the tallest, thickest wall in its attempt to invade the virtual fortress that is your PC, database, archive, or whatever you’re trying to protect.
Instead, they will circle the proverbial walls several times trying to find any cracks worth exploiting, and then start drilling there. In our situation, attackers may want to spot any vulnerabilities in the AES encryption process and start working their way up from there.
Thankfully, cryptography researchers constantly try to find vulnerabilities with the AES encryption process, so as to be able to prevent a potential attack from someone who discovers the flaws first and (obviously) doesn’t share them with the whole world.
Up until now, the researchers have been able to identify a series of attacks that could compromise AES, but these are either purely theoretical, side-channel attacks, or cracking attempts with a known security key, as you’ll soon learn from the following sections.
1. Known-key distinguishing attack
An attack that used a known key was designed by cryptography researchers and observed in action, and it showed some promising results. The attack was introduced in 2007 by Vincent Rijmen and Lars Knudsen.
While that’s not exactly great for the AES encryption method, this attack had two flaws that make it unlikely to be used in a real-life scenario: the fact that it used a known key, and that it was tested against a seven-round version of AES-128.
Considering that most of the time the key is not known to the attacker (unless they happen to just stumble upon it with precise instructions regarding its purpose) and that AES-128 has 10 rounds of encryption, everyday AES-128 can rest assured that the attack is not likely to occur.
The fact that most services that offer AES-128 also feature native support for AES-256 means that boosting your encryption couldn’t be easier in case you’re worried about being targeted by a known-key distinguishing attack.
2. Related key attack
Related key attacks are more of a category, as they represent all forms of cryptanalysis where attackers can analyze the way a cipher works under multiple keys. In this type of attack, the attacker doesn’t know the values of the keys used in the cipher.
However, although unknown, the keys also have some sort of mathematical relation one to another, which the attacker does know. One of the simplest examples would be that the attacker knows that the first 16 bits of the keys are always the same, but has no idea what the bits actually are.
Although related key attacks could be successful if applied correctly, they are of no real concern in the real world. In order for such an attack to work, an attacker would need to successfully persuade a cryptographer to encrypt data using various secret keys that are connected to each other mathematically, then share the secret with the attacker.
Thus, this type of attack servers merely as a reminder that human error could contribute to putting some kinks in the AES armor by being subject to poor implementation of this encryption standard.
3. Side-channel attack
Although AES is, at the time being, virtually uncrackable, there have been many attempts to design theoretical attacks that could demonstrate some of this encryption standard’s vulnerabilities.
Even if it’s been 20 years since AES has been introduced, and technology has made some huge advancements over these past 20 years, the amount of computing power needed to brute-force AES is still not enough, and we’d still need billions of years to be able to crack it.
However, a different breed of attempts to break the security of AES encryption is the side-channel attack. This type of attack combines multiple types of data leaks to extract enough data from an algorithm that it can be cracked.
For instance, attackers could focus on power consumption, electromagnetic radiation, the time it takes various computations to be performed, and even the sounds produced during computation to extract more information about the algorithm.
There are several classes of side-channel, including:
- Timing attacks
- Timing attacks revolve around measuring the time it takes for certain computations to be performed (for instance comparing a known password against an unknown one).
- Cache attacks
- These attacks are only viable if the attacker can access some of the victim’s caches in various environments, whether it’s virtualization environments (virtual machines), shared physical systems, or cloud services we’re talking about.
- Electromagnetic attacks
- Electromagnetic attacks are based on electromagnetic radiation leaks, which can be used to extract various bits of information. Measuring electromagnetic radiation leaks can sometimes lead to discovering cryptographic keys.
- Power-monitoring attacks
- Attackers monitor the power consumption of the hardware during certain computation steps in order to extract information about the algorithm.
- Acoustic cryptanalisis
- Similar to the power-monitoring attacks, but attackers listen to and analyze the sounds that hardware makes when performing certain computation steps and extract information from these findings.
- Data remanence
- This type of attack revolves around sensitive data that can still be accessed and read even after being deleted.
- Optical analysis
- In this complex type of attack, high-resolution cameras are used to capture secrets or sensitive data (such as analyzing hard disk activity indicators or transistors switching states).
- Differential fault analysis
- This type of attack is based on discovering secrets by inputting faults in computation in order to trigger an error.
Although you can agree that these side-channels are nothing short of creative and their authors can use them to turn even the most seemingly insignificant detail into a veritable piece of information, they only work if the system being audited is leaking information.
For that reason, avoiding side-channel attacks can be easily achieved either by making sure that the systems that could be attacked don’t leak any data or by ensuring that there’s no association between the algorithmic processes and leaked data, regardless of its nature.
4. Key recovery attacks
Last, but not least, the key recovery attacks are a tough contestant when it comes to efficient ways to crack AES encryption. In 2011, such an attack was attempted to prove its efficacy against the AES encryption mechanism.
This type of attack is not exactly likely to occur, seeing as it involves the attacker getting its hands on at least a pair of encrypted and decrypted messages from the soon-to-be-compromised system.
The attack showed promising results, as it was approximately four times as fast as brute-forcing. However, considering that a brute-force attack would take literally billions of years to complete, key recovery attacks are still far from being ideal, which makes them unlikely to be used in an attack.
Furthermore, even if it took a shorter amount of time to complete, changing the security key often could render the pair of encrypted and decrypted messages useless.
Is AES secure?
Considering everything you’ve learned by going through this guide, we think that you can be the judge of whether or not AES is a safe encryption standard.
AES has been around since 2001, and since its introduction, there were numerous attempts to break it, which makes it safe to say that it stood the test of time, and it’s still a solid choice when it comes to encryption algorithms.
The sheer amount of steps the algorithmic process goes through in order to make the data unreadable is tremendous, and it would take literally billions of years to crack AES, even with today’s computation power and technology advancements.
So, to answer your question considering all of the above: yes, AES is secure. Even AES-128 proved to be downright impossible to crack, not to mention its more powerful counterparts, AES-192, and AES-256.
AES Encryption – CONCLUSION
All things considered, after reading our extensive guide we hope you learned more about AES, including how it works, what processes it goes through during the encryption process, where it can be used, and how it could be (at a theoretical level) compromised.
The fact that 20 years after its introduction it’s still fast, secure, and can be implemented on a huge variety of hardware and software environments makes it truly deserve its title of being the “gold standard” of encryption techniques.