Try   HackMD

Symmetric Cipher Adventure!!!

Trong bài viết này mình xin chỉ viết ngắn gọn và tóm tắt nhất có thể để có thể có góc nhìn tổng quát về các thuật toán mã khoá đối xứng, vì thế có thể có những thiếu sót và những thắc mắc, các bạn có thể liên lạc với mình để mình chỉnh sửa và bổ sung nhé :D
(mình có đính kèm thêm những link tham khảo, trích dẫn để tiện tra cứu)

1. Khái quát về symmetric cipher:

Những thuật toán mã khoá đối xứng (symmetric cipher algorithm) là các thuật toán có dùng chung một khoá. Có thể nói thuật toán mã khoá đối xứng có mặt ở khắp mọi nơi hiện nay vì sự tiện lợi, nhanh và an toàn, đặc biệt có thể kể đến AES (advanced encryption standard), trong bài viết này thì mình sẽ thường đề cập đến AES.

Cốt lõi dẫn đến sự khó nhằn trong việc "bẻ khoá" thuật toán này nằm ở độ lớn của key (key space) và khả năng thống kê và xác xuất dự đoán dựa trên bản mã (ciphertext) thấp hoặc gần như không thể. Về độ lớn của key thì AES-128 sử dụng 128 bit key và tương tự AES-256 thì sử dụng 256 bit key, vì độ lớn của key khá lớn (2^128 và 2^256) nên hiện nay AES-128 hiện vẫn đang an toàn, nhưng khi đến kỷ nguyên máy tính lượng tử, AES-128 sẽ có thể bị bẻ khoá bởi thuật toán của ông Grover (Grover's algorithm) [1], và AES-256 sẽ là sự thay thế an toàn [2]. Về khả năng có thể thống kê và xác xuất để có thể "bẻ khoá" được các symmetric cipher thì ta có 2 loại hình tấn công tiêu biểu là Linear Cryptanalysis và Differential Cryptanalysis [3].

[1] https://crypto.stackexchange.com/questions/102671/is-aes-128-quantum-safe
[2] https://crypto.stackexchange.com/questions/6712/is-aes-256-a-post-quantum-secure-cipher-or-not
[3] https://www.geeksforgeeks.org/differential-and-linear-cryptanalysis/

2. Khái quát về block cipher:

Ngoài AES, là một dạng khối (block)[4] của symmetric cipher ra, ta còn có DES (tiền bối của AES). Nhưng vì DES và phiên bản nâng cấp của DES là Triple DES có thể bị tấn công bằng phương pháp chosen-plaintext, known-plaintext, và nhiều cách tấn công khác nên đã không còn được sử dụng rộng rãi [5], đặt biệt là có thể bị brute-force trong 26 giờ[6].

[4] https://en.wikipedia.org/wiki/Block_cipher
[5] https://en.wikipedia.org/wiki/Triple_DES#Security
[6] https://en.wikipedia.org/wiki/Data_Encryption_Standard#Brute-force_attack

Về cơ chế hoạt động của AES, bạn có thể xem thêm các video này:
https://www.youtube.com/watch?v=gP4PqVGudtg
https://www.youtube.com/watch?v=O4xNJsjtN6E

Thực hành cài đặt thuật toán AES:
https://cryptohack.org/challenges/aes/ *mục HOW AES WORKS

AES có khá nhiều modes (các cơ chế độ hoạt động) [7], tiêu biểu là mode GCM (Galoise/counter mode), ECB, CBC, mode GCM là mode sử dụng phổ biến nhất, có khả năng cung cấp cơ chế xác thực (authenticate tag), có chức năng nhận biết đoạn mã (ciphertext) đã bị chỉnh sửa hay không.

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

[7] https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation

Các bài tập liên quan:
https://cryptohack.org/challenges/aes/ *mục Block Ciphers

3. khái quát về stream cipher:

Bên trên là AES và DES, là các thuật toán mã khoá đối xứng theo kiểu khối, tiếp theo sẽ là các mã khoá đối xứng theo dạng mã dòng? (stream cipher) [8]

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

Stream cipher có bản chất khá giống với block cipher là sử dụng chung một key để mã hoá và giải mã. Nhưng vẫn có nhiều khác biệt đáng kể [9], stream cipher sẽ liên tục sử dụng toán tử xor với từng bit (hoặc byte) của bản rõ (plaintext) để cho ra bản mã (ciphertext).

[8] https://en.wikipedia.org/wiki/Stream_cipher
[9] https://www.geeksforgeeks.org/difference-between-block-cipher-and-stream-cipher/

Nhưng stream cipher cũng nhanh không kém so với block cipher (đôi khi còn nhanh hơn cả block cipher), và các thuật toán stream cipher tiêu biểu có thể kể đến như RC4 [10], SalSa20 [11]. Ngoài ra stream cipher cũng có mặt trong cả các mode của AES, tiêu biểu là GCM, CFB, CBC,

[10] https://en.wikipedia.org/wiki/RC4
[11] https://en.wikipedia.org/wiki/Salsa20

Các bài tập liên quan:
https://app.hackthebox.com/challenges/The%2520Last%2520Dance
https://cryptohack.org/challenges/aes/ *Dancing Queen
https://aes.cryptohack.org/oh_snap/

4. Tạm kết:

Thuật toán mã hoá đối xứng có 2 nhánh chính là mã khối (block cipher) và mã dòng? (stream cipher), các mode của AES là một đại diện tiêu biểu cho sự kết hợp của cả 2 nhánh mã hoá trên.

AES (Advanced Encryption Standard) là một trong những thuật toán mã hóa phổ biến nhất và được sử dụng rộng rãi trên thế giới.

AES là thuật toán tiêu biểu nhất của symmetric cipher, và được sử dụng trong hầu hết mọi vấn đề về mã hoá và giải mã, bao gồm phần lớn các gói tin đang được truyền tải trên internet (wi-fi, VPN, IoT, HTTPS và TLS,), và bảo mật lưu trữ thông tin (mật khẩu, Lưu trữ đám mây (Cloud storage),)

AES cũng là thuật toán đã tồn tại hơn 20 năm và có thể vẫn còn được cho là an toàn đến cả kỷ nguyên máy tính lượng tử (AES-256), nên sẽ là một thuật toán quan trọng trong cả hiện tại và tương lai.

5. Bài tập:

Các bài tập sau đây là bắt buộc:
https://cryptohack.org/courses/symmetric/course_details/ *toàn bộ

Các bạn có thể nộp lại bài tập cho mình qua discord nhé!