1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo giữa kì secret key encryption

33 0 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Secret Key Encryption
Tác giả Nguyễn Hồng Phúc, Nguyễn Thanh Tùng, Nguyễn Nhật Vy, Nguyễn Tường Linh Đan, Nguyễn Thị Ngọc Quý
Người hướng dẫn ThS. Trần Kim Toại
Trường học Trường Đại Học Sư Phạm Kỹ Thuật TP.HCM
Chuyên ngành Bảo Mật Thương Mại Điện Tử
Thể loại Báo Cáo Giữa Kì
Năm xuất bản 2023
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 33
Dung lượng 5,12 MB

Cấu trúc

  • CHƯƠNG 1. GIỚI THIỆU (5)
    • 1.1. Giới thiệu về mã hóa (5)
    • 1.2. Substitution Cipher (5)
    • 1.3. Monoalphabetic Substitution Cipher (6)
    • 1.4. Breaking Monoalphabetic Substitution Cipher (6)
    • 1.5. Bigram (8)
    • 1.6. Trigram (9)
  • CHƯƠNG 2. CÁC THUẬT TOÁN MÃ HÓA BÍ MẬT (10)
    • 2.1. Giải thích các thuật ngữ (10)
    • 2.2. Data Encryption Standard (DES) (10)
      • 2.2.1. Giới thiệu (10)
      • 2.2.2. Đặc điểm (10)
      • 2.2.3. Quá trình mã hóa của thuật toán DES (11)
      • 2.2.4. Đánh giá hiệu năng (13)
    • 2.3. Triple Data Encryption Standard (3DES) (13)
    • 2.4. Advanced Encryption Standard (AES) (14)
      • 2.4.1. Giới thiệu (14)
      • 2.4.2. Đặc điểm (14)
      • 2.4.3. Quá trình mã hóa của thuật toán AES (15)
      • 2.4.4. Đánh giá hiệu năng (15)
    • 2.5. Sự khác biệt giữa thuật toán DES và thuật toán AES (16)
  • CHƯƠNG 3. ENCRYPTION MODES (17)
    • 3.1. Electronic Codebook (ECB) (17)
    • 3.2. Cipher Block Chaining (CBC) (19)
    • 3.3. Cipher Feedback (CFB) (20)
    • 3.4. Comparing encryption with CBC and CFB (22)
    • 3.5. Output Feedback (OFB) (23)
    • 3.6. Counter (CTR) (25)
    • 3.7. Modes for Authenticated Encryption (26)
  • CHƯƠNG 4. PADDING (28)
    • 4.1. Padding (28)
    • 4.2. Padding Experiment (28)
    • 4.3. Padding Experiment – Special case (29)
  • CHƯƠNG 5. INITIAL VECTOR (30)
    • 5.1. Initial Vector and Common Mistakes (30)
    • 5.2 Experiment - IV should not be predictable (30)
    • 5.3. Authenticated Encryption (31)
      • 5.3.1. Mã hóa xác thực là gì? (31)
      • 5.3.2. Cách thức hoạt động của Mã hóa xác thực (31)
    • 5.4. The GCM Mode (32)
      • 5.4.1. GCM Mode là gì? (32)
      • 5.4.2. Cơ chế hoạt động (32)

Nội dung

Ví dụ: Như việc mã hóa một tin nhắn theo cách mà chỉ có bên được ủy quyền mới có thể đọc được nội dung của tin nhắn gốc.Lịch sử mã hóa có từ năm 1900 trước công nguyênCó 2 loại mã hóa: S

GIỚI THIỆU

Giới thiệu về mã hóa

Mã hóa thực chất là một phương pháp biến đổi thông tin từ dạng bình thường đến dạng trở nên không thể hiểu được nếu như không có phương tiện giải mã

Ví dụ: Như việc mã hóa một tin nhắn theo cách mà chỉ có bên được ủy quyền mới có thể đọc được nội dung của tin nhắn gốc.

Lịch sử mã hóa có từ năm 1900 trước công nguyên

Có 2 loại mã hóa: Secret-key Encryption (mã hóa khóa bí mật) và Public-key encryption (mã hóa khóa công khai)

Mã hóa khóa bí mật: còn được gọi là mật mã đối xứng vì cùng một khóa để mã hóa và giải mã dữ liệu Các thuật toán mã hóa khóa bí mật nổi tiếng bao gồm Tiêu chuẩn mã hóa nâng cao (AES), Tiêu chuẩn mã hóa dữ liệu ba lần (3DES) và Mật mã Rivest 4 (RC4).

Mã hóa khóa công khai: Mật mã khóa công khai còn được gọi là mật mã bất đối xứng vì các khóa khác nhau được sử dụng để mã hóa và giải mã dữ liệu Mật mã khóa công khai yêu cầu tính toán nhiều, khiến nó rất chậm Do đó, nó thường chỉ được sử dụng để mã hóa các mẩu dữ liệu nhỏ, chẳng hạn như các khóa bí mật, thay vì cho phần lớn các giao tiếp dữ liệu được mã hóa.

Trong bài này, nhóm sẽ chỉ tập trung chủ yếu vào mã hóa khóa bí mật.

Substitution Cipher

Ẩn một số dữ liệu được gọi là mã hóa Khi văn bản thuần túy được mã hóa, nó trở nên không thể đọc được và được gọi là bản mã Trong một mật mã thay thế, mỗi kí tự được thay thế bằng một kí tự khác theo một hoán vị xác định của bộ 26 chữ cái đó trong bộ chữ cái tiếng anh Tập khóa K chứa mọi hoán vị có thể có của 26 ký hiệu 0,1,2, 25 và tổng số hoán vị trong tập khóa K là 26!

Ví dụ: Đơn vị thay thế có thể là một chữ cái, cặp chữ cái, bộ ba chữ cái, )

Hai mật mã thay thế điển hình:

- Thay thế cố định trên toàn bộ tin nhắn

- Thay thế ở các vị trí khác nhau trong tin nhắn

Monoalphabetic Substitution Cipher

Mật mã đơn chữ cái (hay còn gọi là mật mã thay thế đơn giản) là mật mã thay thế trong đó mỗi chữ cái của văn bản thuần túy được thay thế bằng một chữ cái khác trong bảng chữ cái Nó sử dụng một khóa cố định bao gồm 26 chữ cái của một “bảng chữ cái xáo trộn”.

Breaking Monoalphabetic Substitution Cipher

Một cách tốt để phá mã thay thế một bảng chữ cái là thực hiện phân tích tần số của các ký tự trong bản mã, sau đó so sánh tần số thu được với tần số của từng chữ cái trong bảng chữ cái trong bản rõ tiếng Anh (hoặc bất kỳ ngôn ngữ nào mà thông báo gốc được giả định là được viết vào) Sau đó, bạn khớp ký tự có tần suất xuất hiện cao nhất trong bản mã với ký tự có tần suất xuất hiện cao nhất trong ngôn ngữ tiếng Anh và thực hiện tương tự với ký tự tiếp theo

- Các tổ hợp chữ cái bao gồm:

- Tổ hợp 2 chữ cái phổ biến: TH, HE, IN, ER

- Tổ hợp 3 chữ cái phổ biến: THE, AND và ING

Một số chữ cái trong bảng chữ cái tiếng Anh được sử dụng thường xuyên hơn những chữ cái khác

Ví dụ: Các chữ cái E, T, A và O xuất hiện thường xuyên nhất trong các từ tiếng Anh, trong khi các chữ cái J, X, Q và Z xuất hiện ít hơn trong tiếng Anh Hình bên trái cho thấy tần số của các chữ cái được tìm thấy trong tiếng Anh chuẩn Biểu đồ được tổng hợp bằng cách sử dụng văn bản từ sách, báo và các nguồn khác Khi chúng ta sắp xếp các tần số chữ cái này theo thứ tự tần suất xuất hiện lớn nhất đến ít nhất, E là chữ cái thường xuyên nhất, tiếp theo là T, sau đó là A, v.v…, Tương tự có thể thấy ở bản mã là n, y, v, m, h

Bigram

Bigram là một dãy gồm 2 ký tự liền kề nhau (n=2), ví dụ: TH, HE, IN, ER, kết quả phân tích tần suất Bigram trong tiếng anh, theo thứ tự phổ biến từ trên xuống

Tương tự tần số bigram trong bản mã: tn, yt, nh,

Trigram

Trigram là một trường hợp đặc biệt của N-gram, với n là 3 Trigram thường được sử dụng trong xử lý ngôn ngữ tự nhiên để thực hiện phân tích thống kê văn bản và trong mật mã học để kiểm soát và sử dụng cho các cipher và mã hiệu Trigram thường được dùng để dò lọc nội dung spam, dò lỗi chính tả trong văn bản.

Kết quả phân tích Trigram trong Tiếng Anh: THE, AND, ING

Trigram trong ciphertext: ytn, vup, nhc,

CÁC THUẬT TOÁN MÃ HÓA BÍ MẬT

Giải thích các thuật ngữ

Mã hóa (encrypt): Là quá trình che giấu thông tin bằng cách sử dụng quy tắc mã hóa biến đổi bản rõ thành bản mã.

Giải mã (decrypt): Là quá trình ngược với quá trình mã hóa, nhằm biến đổi bản mã trở lại bản rõ.

Plaintext: Bản rõ là dữ liệu gốc chưa được mã hóa (Bản rõ: Là bản tin ban đầu cần gửi đến người nhận).

Ciphertext: Bản mã là dữ liệu đã được mã hóa (Bản mã: Là bản rõ đã qua mã hóa).

Key: khóa mã là một giá trị được sử dụng để mã hóa và giải mã.

Round key: khóa vòng là những giá trị trung gian được tạo ra từ khóa mã trong suốt quá trình mã hóa và giải mã.

Khóa lập mã: Là quy tắc biến bản rõ thành bản mã.

Khóa giải mã: Là quy tắc biến bản mã thành bản rõ.

Data Encryption Standard (DES)

Thuật toán DES (Data Encryption Standard) là một thuật toán mã hóa đối xứng được sử dụng để bảo vệ dữ liệu trong các hệ thống máy tính và truyền thông Nó được phát triển bởi Viện Tiêu chuẩn và Công nghệ Quốc gia Hoa Kỳ vào những năm 1970 và trở thành một tiêu chuẩn quốc tế vào năm 1977.

DES là một trong những thuật toán mã hóa đầu tiên được sử dụng rộng rãi trong các ứng dụng thương mại và chính phủ.

Mã hóa DES có các tính chất sau:

- Là mã thuộc hệ mã Feistel gồm 16 vòng, ngoài ra DES có thêm một hoán vị khởi tạo trước khi vào vòng 1 và một hoán vị kết thúc sau vòng 16

- Kích thước của khối là 64 bit: ví dụ thông điệp “meetmeafterthetogaparty” biểu diễn theo mã ASCII thì mã DES sẽ mã hóa làm 3 lần, mỗi lần 8 chữ cái (64 bit): meetmeaf - tertheto - gaparty

- Kích thước khóa là 64 bit (thực chất chỉ có 56 bit được sử dụng để mã hóa);

- Mỗi vòng của DES dùng khóa con có kích thước 48 bit được trích ra từ khóa chính. 2.2.3 Quá trình mã hóa của thuật toán DES

Quá trình mã hóa của DES bao gồm 16 vòng lặp được thực hiện trên khối dữ liệu ban đầu, trong đó mỗi vòng lặp sử dụng một khóa con 48 bit được tạo ra từ khóa chính.

16 vòng lặp này giống nhau trong quá trình xử lý Ngoài ra còn có hai lần hoán vị đầu và cuối (Initial and final permutation - IP & FP) Hai quá trình này có tính chất đối nhau (Trong quá trình mã hóa thì IP trước FP, khi giải mã thì ngược lại).

Sau đó, khóa 56 bit được chuyển đổi thành 16 khóa con (subkeys) 48 bit mỗi khóa con bằng cách thực hiện các bước sau:

Sơ đồ tạo khóa con

Thuật toán DES sử dụng khóa 64 bit, tuy nhiên chỉ sử dụng 56 bit của khóa này để mã hóa dữ liệu Do đó, trước khi bắt đầu quá trình mã hóa, khóa ban đầu phải được chuyển đổi từ 64 bit sang 56 bit bằng cách loại bỏ 8 bit thứ 8, 16, 24, 32, 40, 48, 56 và 64.

Chuyển đổi khóa (Permutation Choice 1 - PC1): Bảng chuyển đổi này có tác dụng loại bỏ 8 bit thứ 8, 16, 24, 32, 40, 48, 56 và 64 của khóa ban đầu để thu được khóa 56 bit.

56 bit này được chia thành 2 nửa 28 bit được gọi là C0 và D0, và được xử lý độc lập

Sau mỗi chu trình, mỗi phần được dịch đi 1 hoặc 2 bit (tùy thuộc từng chu trình, nêu đó là chu trình 1,2,9,16 thì đó là dịch 1bit, còn lại thì sẽ được dich 2bit) Chuyển đổi khóa (Permutation Choice 2 - PC2): Bảng chuyển đổi này tạo ra khóa con 48 bit từ hai nửa 28 bit được dịch trái, bằng cách chọn các bit cụ thể từ C và

D và xếp chúng theo một trình tự mới.

Với mỗi vòng lặp của quá trình mã hóa, khóa 64 bit được sử dụng để tạo ra 16 khóa con, mỗi khóa con gồm 48 bit.

Thuật toán DES (Data Encryption Standard) là một thuật toán mã hóa đối xứng cổ điển được thiết kế vào những năm 1970 Mặc dù nó được sử dụng rộng rãi trong quá khứ, hiện nay nó đã bị thay thế bởi các thuật toán mã hóa đối xứng mạnh hơn như AES (Advanced Encryption Standard) Tuy nhiên, vẫn có thể đánh giá hiệu năng của DES dựa trên một số yếu tố sau: Độ dài khóa: DES sử dụng khóa độ dài 56-bit, đây là một độ dài khóa khá ngắn so với các thuật toán mã hóa đối xứng hiện đại Điều này khiến cho DES dễ dàng bị tấn công bằng các kỹ thuật tấn công vét cạn khóa.

Tốc độ mã hóa: Tốc độ mã hóa của DES là khá nhanh, tuy nhiên vẫn chậm hơn so với các thuật toán mã hóa đối xứng hiện đại Điều này do DES sử dụng nhiều vòng lặp và các phép biến đổi phức tạp hơn.

Khả năng chống lại tấn công: DES đã được phá vỡ bởi các tấn công hiện đại và không được xem là an toàn trong việc bảo vệ thông tin quan trọng Những tấn công này bao gồm tấn công vét cạn khóa, tấn công bỏ qua một số vòng lặp, và các tấn công khác Do đó, DES không được khuyến khích sử dụng cho các ứng dụng bảo mật quan trọng.

Vì những lý do trên, hiệu năng của DES không được đánh giá cao so với các thuật toán mã hóa đối xứng hiện đại Việc sử dụng các thuật toán mã hóa đối xứng mạnh hơn như AES là hợp lý và được khuyến khích để bảo vệ thông tin quan trọng.

Triple Data Encryption Standard (3DES)

3DES (Triple Data Encryption Standard) là một phiên bản nâng cao của thuật toán DES, được sử dụng để cải thiện độ bảo mật của DES 3DES sử dụng ba lần quá trình mã hóa DES để tăng cường độ bảo mật Trong 3DES, dữ liệu được mã hóa và giải mã bằng cách sử dụng ba khóa DES khác nhau.

Quá trình mã hóa của 3DES được thực hiện theo cách sau:

Khóa ban đầu của 3DES được chia thành 3 khóa con có độ dài 56 bit mỗi khóa. Quá trình mã hóa bắt đầu bằng việc sử dụng khóa con thứ nhất để mã hóa dữ liệu bằng thuật toán DES.

Sau đó, kết quả được giải mã bằng khóa con thứ hai và tiếp tục được mã hóa bằng khóa con thứ ba.

Cuối cùng, kết quả được giải mã bằng khóa con đầu tiên.

Với cách thức này, 3DES cung cấp độ bảo mật cao hơn và được sử dụng trong nhiều ứng dụng bảo mật thông tin, bao gồm cả thanh toán điện tử và truyền thông Tuy nhiên, 3DES có tốc độ mã hóa chậm hơn so với các thuật toán mã hóa khác có độ dài khóa lớn hơn như AES.

Advanced Encryption Standard (AES)

Thuật toán AES (Advanced Encryption Standard) là một thuật toán mã hóa đối xứng được sử dụng rộng rãi trong các ứng dụng an ninh thông tin Nó được phát triển bởi NIST (National Institute of Standards and Technology) vào năm 2001 để thay thế cho thuật toán DES (Data Encryption Standard) đã cũ kỹ.

AES là một thuật toán mã hóa khối đối xứng với độ dài khóa là 128 bít (một chữ số nhị phân có giá trị 0 hoặc 1), 192 bít và 256 bít tương ứng dọi là AES-128,

AES-192 và AES-256 AES-128 sử dụng 10 vòng (round), AES-192 sử dụng 12 vòng và AES-256 sử dụng 14 vòng.

AES là một loại mã hóa đối xứng, nghĩa là, giống như ổ khóa trước đó, chìa khóa được dùng để mã hóa dữ liệu cũng được dùng để giải mã dữ liệu đó

2.4.3 Quá trình mã hóa của thuật toán AES

Vòng lặp chính của AES thực hiện các vòng sau:

- SubBytes() -thay thế các byte dữ liệu (trạng thái)

- ShiftRows() -dịch vòng dữ liệu (trạng thái)

- MixColumns() -trộn cột dữ liệu (trạng thái) vào

Thuật toán AES (Advanced Encryption Standard) là một thuật toán mã hóa đối xứng hiện đại được chấp nhận rộng rãi và được sử dụng trong nhiều ứng dụng bảo mật khác nhau Đánh giá hiệu năng của thuật toán AES có thể được thực hiện bằng một số yếu tố sau: Độ dài khóa: AES sử dụng khóa độ dài 128-bit, 192-bit hoặc 256-bit, đây là các độ dài khóa an toàn và khó bị tấn công bằng các kỹ thuật tấn công vét cạn khóa. Tốc độ mã hóa: AES là một thuật toán mã hóa đối xứng rất nhanh và được tối ưu hóa trên các nền tảng phần cứng hiện đại, bao gồm các bộ vi xử lý, bộ xử lý đồ họa, các hệ thống nhúng và các hệ thống đám mây AES có thể được triển khai với tốc độ mã hóa lên đến hàng trăm MB/giây trên các nền tảng phần cứng hiện đại.

Khả năng chống lại tấn công: AES được xem là một trong những thuật toán mã hóa đối xứng an toàn và khả năng chống lại các loại tấn công phổ biến như tấn công vét cạn khóa, tấn công bỏ qua một số vòng lặp, tấn công phân tích bảng, tấn công bắt đầu, v.v được chứng minh trong thực tế.

Kích thước mã hóa và độ tin cậy: AES cho phép mã hóa các khối dữ liệu đầu vào lên đến 128-bit và có độ tin cậy cao, cho phép bảo vệ các thông tin quan trọng trước các loại tấn công phổ biến.

Tổng kết lại, hiệu năng của thuật toán AES được đánh giá rất cao trong việc bảo vệ thông tin quan trọng Nó có độ an toàn cao, tốc độ mã hóa nhanh và khả năng triển khai trên nhiều nền tảng phần cứng khác nhau.

Sự khác biệt giữa thuật toán DES và thuật toán AES

Khối dữ liệu được chia thành hai nửa Toàn bộ khối dữ liệu được xử lý dưới dạng một ma trận Hoạt động trên cấu trúc mật mã Feistel Hoạt động trên nguyên tắc thay thế và hoán vị Bản rõ là 64 bit Bản rõ có thể là 128, 192 hoặc 256 bit DES so với AES có kích thước khóa nhỏ hơn

AES có kích thước khóa lớn hơn so với

16 vòng 10 vòng cho thuật toán 128 bit

12 vòng cho thuật toán 192 bit

14 vòng cho thuật toán 256 bit Tên vòng: Giấy phép mở rộng, Xor, S- box, P-box, Xor và Swap

Tên vòng: Subbyte, Shiftbow, Mix cột,

Addroundkeys DES có khóa nhỏ hơn, kém an toàn hơn AES có khóa bí mật lớn tương đối do đó, an toàn hơn

DES tương đối chậm hơn AES nhanh hơn

ENCRYPTION MODES

Electronic Codebook (ECB)

ECB (Electronic Codebook) là chế độ mã hóa đơn giản nhất trong các chế độ mã hóa Với chế độ này, mỗi khối dữ liệu sẽ được mã hóa độc lập với các khối dữ liệu khác và không có bất kỳ liên kết nào giữa các khối dữ liệu.

Quá trình mã hóa của chế độ ECB gồm các bước sau:

Phân chia dữ liệu thành các khối cùng kích thước: Dữ liệu được phân chia thành các khối có kích thước cố định (ví dụ: 64-bit, 128-bit, 256-bit) Nếu dữ liệu không đủ kích thước, các khối cuối cùng sẽ được bổ sung thêm các giá trị không dùng (padding) để đạt được kích thước mong muốn.

Mã hóa các khối dữ liệu: Mỗi khối dữ liệu được mã hóa độc lập với các khối dữ liệu khác bằng cách sử dụng cùng một khóa mã hóa Thuật toán mã hóa sử dụng phép XOR (hoặc một phép toán khác tùy thuộc vào thuật toán mã hóa) để kết hợp khối dữ liệu với khóa mã hóa và tạo ra khối dữ liệu được mã hóa.

Gộp các khối dữ liệu đã mã hóa: Các khối dữ liệu đã được mã hóa được gộp lại để tạo ra dữ liệu mã hóa đầy đủ.

Việc giải mã dữ liệu được thực hiện bằng cách áp dụng các bước trên theo thứ tự ngược lại: tách dữ liệu đã mã hóa thành các khối, giải mã từng khối dữ liệu bằng cùng một khóa giải mã, và gộp các khối dữ liệu giải mã lại để thu được dữ liệu gốc. Đối với chế độ mã hóa ECB có một nhược điểm rất lớn: Khi cùng một khối dữ liệu được mã hóa nhiều lần bằng cùng một khóa mã hóa, kết quả đầu ra sẽ giống nhau. Điều này dẫn đến việc kẻ tấn công có thể dễ dàng phát hiện ra các mẫu của dữ liệu và phân tích nội dung dữ liệu gốc.

Hình chim cánh cụt là ví dụ minh họa lỗ hổng bảo mật lớn với chế độ mã hóa này:

Hình chưa được mã hóa hiển thị bên trái Hình bên phải cho thấy hình ảnh bảng mã khi sử dụng các chế độ mã hóa khác như CBC hoặc XTS Hình ở giữa thể hiện rõ các lỗ hổng liên quan tới ECB Do khuôn mẫu pixel hình ảnh giống nhau trong khối mã hóa được mã hóa bằng phương thức này sẽ tạo ra các khối mã hóa giống nhau,hình ảnh gốc bị lộ rõ.

Cipher Block Chaining (CBC)

Chế độ mã hóa CBC (Cipher Block Chaining) là một trong những chế độ mã hóa khối (block cipher modes) phổ biến và an toàn trong mật mã học

Trong chế độ này, dữ liệu được chia thành các khối có cùng kích thước và mỗi khối dữ liệu được mã hóa bằng cách sử dụng thuật toán mã hóa đối xứng (symmetric encryption algorithm) và một khóa mã hóa.

Mỗi khối dữ liệu được mã hóa thông qua việc kết hợp với khối dữ liệu trước đó (trừ khối đầu tiên) bằng phép XOR

Quá trình này được thực hiện như sau:

Khối đầu tiên được kết hợp với một giá trị khởi tạo (initialization vector - IV) bằng phép XOR IV có kích thước bằng với kích thước của khối dữ liệu.

Kết quả của quá trình mã hóa khối đầu tiên được sử dụng làm khối tiếp theo cho quá trình mã hóa khối thứ hai.

Tiếp tục thực hiện các bước trên cho đến khi tất cả các khối dữ liệu đều được mã hóa.

Chế độ CBC giúp tránh được vấn đề của chế độ ECB về việc cùng một khối dữ liệu được mã hóa nhiều lần Ngoài ra, việc sử dụng IV giúp ngăn chặn các cuộc tấn công bằng cách sử dụng các khối dữ liệu khác nhau với cùng một khóa mã hóa Tuy nhiên, chế độ CBC cũng có một số nhược điểm, bao gồm việc khó xử lý các khối dữ liệu độc lập và khó thực hiện song song trên các nền tảng phần cứng.

Cipher Feedback (CFB)

Chế độ phản hồi mật mã (CFB), ở dạng đơn giản nhất, sử dụng toàn bộ đầu ra của mật mã khối Trong biến thể này, nó rất giống với CBC, biến mật mã khối thành mật mã luồng tự đồng bộ hóa

Giải mã CFB trong biến thể này gần giống với mã hóa CBC được thực hiện ngược lại, Chỉ khác là trước khi plaintext xor với IV thì IV đã được mã khóa thành s bits và b-s bits nhưng chỉ lấy s-bit xor với plaintext Kết quả được đưa ra làm đầu vào cho thanh ghi dịch chuyển có bit bs thành lhs, bit s thành rhs và quá trình tiếp tục Quá trình mã hóa và giải mã giống nhau được hiển thị bên dưới, cả hai đều sử dụng thuật toán mã hóa. Ưu điểm:

● Khả năng bảo mật cao hơn ECB Ciphertext của một khối dữ liệu plaintext có thể khác nhau cho mỗi lần mã hóa vì nó phụ thuộc vào IV hoặc giá trị mã hóa (ciphertext) của khối dữ liệu liền trước

● Quá trình giải mã (mã hóa nghịch) vẫn có thể thực hiện song song nhiều khối dữ liệu.

● Tùy biến được độ dài khối dữ liệu mã hóa, giải mã thông qua thông số s

● Thiết kế phần cứng phức tạp hơn CBC Ngoài những thành phần logic như CBC, CFB cần thêm logic để chọn số bit cần được xử lý nếu là thông sốs cấu hình được.

● Lỗi bit bị lan truyền Nếu một lỗi bit xuất hiện trên ciphertext của một khối dữ liệu thì nó sẽ làm sai kết quả giải mã của khối dữ liệu đó và khối dữ liệu tiếp theo

● Không thể thực thi quá trình mã hóa song song vì xử lý của khối dữ liệu sau phụ thuộc vào ciphertext của khối dữ liệu trước, trừ lần mã hóa đầu tiên

Comparing encryption with CBC and CFB

CBC và CFB thực hiện các nhiệm vụ mã hóa dữ liệu chung giống nhau, với một vài ngoại lệ đáng chú ý Đầu tiên, dữ liệu ở chế độ CFB được mã hóa theo các đơn vị nhỏ hơn đơn vị mật mã có kích thước khối được xác định trước, thường là 64 bit, như trường hợp của CBC Thay vào đó, CFB mã hóa các đơn vị ở kích thước khối

1 hoặc 2 byte (8 hoặc 16 bit) và xử lý từng bit tại một thời điểm thay vì toàn bộ 64 bit.

Do đó, khi sử dụng chế độ CFB, không cần quá trình đệm khi kích thước dữ liệu nhỏ hơn 64 bit và cần nối thêm để đáp ứng yêu cầu về độ dài 64 bit.

Một điểm khác biệt chính khác giữa CBC và CFB là cách họ mã hóa dữ liệu văn bản gốc Không giống như CBC mã hóa trực tiếp các khối bản rõ, CFB mã hóa khối bản rõ đã được mã hóa trước đó và sau đó thêm khối này vào khối bản rõ tiếp theo Điều này có nghĩa là cùng một thuật toán được sử dụng để mã hóa dữ liệu có thể được sử dụng để giải mã nó, giúp đơn giản hóa quá trình giải mã CFB.

Output Feedback (OFB)

Chế độ này cũng gần giống với CBC và CFB , trừ việc nó gửi đầu ra được mã hóa dưới dạng phản hồi thay vì mật mã thực tế là đầu ra XOR( các phép XOR để tạo ra khối ciphertext là độc lập riêng rẽ, chứ không có sự phụ thuộc móc xích như trước nhưng các khối plaintext được XOR với các đầu ra của các hàm sinh mã mà riêng các phần tử output của hàm mã hóa này là vẫn phụ thuộc móc xích).

Chế độ phản hồi đầu ra tuân theo quy trình gần giống như chế độ Phản hồi mật mã ngoại trừ việc nó gửi đầu ra được mã hóa dưới dạng phản hồi thay vì mật mã thực tế là đầu ra XOR Trong chế độ phản hồi đầu ra này, tất cả các bit của khối được gửi thay vì gửi s bit đã chọn Chế độ Phản hồi đầu ra của mật mã khối có khả năng chống lại các lỗi truyền bit rất lớn Nó cũng làm giảm sự phụ thuộc hoặc mối quan hệ của mật mã vào bản rõ. Ưu điểm:

● Khả năng bảo mật cao hơn ECB Ciphertext của một khối dữ liệu plaintext có thể khác nhau cho mỗi lần mã hóa vì nó phụ thuộc vào IV hoặc khối ngõ ra của lần mã hóa trước đó.

● Lỗi bit không bị lan truyền Khi một lỗi bit xuất hiện trên một ciphertext, nó chỉ ảnh hưởng đến kết quả giải mã của khối dữ liệu hiện tại

● Thiết kế phần cứng đơn giản hơn CFB.

● Không thể thực hiện mã hóa/giải mã song song nhiều khối dữ liệu vì lần mã hóa/giải mã sau phụ thuộc vào khối ngõ ra của lần mã hóa/giải mã liền trước nó.

Counter (CTR)

Chế độ bộ đếm hoặc CTR là một triển khai mật mã khối dựa trên bộ đếm đơn giản Mỗi khi một giá trị khởi tạo ngược được mã hóa và được cung cấp làm đầu vào cho XOR với văn bản gốc dẫn đến khối bản mã Chế độ CTR độc lập với việc sử dụng phản hồi và do đó có thể được thực hiện song song.

Chế độ CTR có các đặc điểm tương tự như OFB, nhưng cũng cho phép thuộc tính truy cập ngẫu nhiên trong quá trình giải mã Chế độ CTR rất phù hợp để hoạt động trên máy đa bộ xử lý, nơi các khối có thể được mã hóa song song Hơn nữa, nó không gặp phải vấn đề chu kỳ ngắn có thể ảnh hưởng đến OFB.

Nếu IV/nonce là ngẫu nhiên, thì chúng có thể được kết hợp với bộ đếm bằng cách sử dụng bất kỳ thao tác không thể đảo ngược nào (ghép, bổ sung hoặc XOR) để tạo ra khối bộ đếm duy nhất thực tế để mã hóa Trong trường hợp nonce không ngẫu nhiên (chẳng hạn như bộ đếm gói), nonce và bộ đếm phải được nối với nhau (ví dụ:lưu trữ nonce ở 64 bit trên và bộ đếm ở 64 bit dưới của khối bộ đếm 128 bit) Chỉ cần thêm hoặc XOR nonce và truy cập vào một giá trị duy nhất sẽ phá vỡ tính bảo mật trong một cuộc tấn công bằng văn bản được chọn trong nhiều trường hợp, vì kẻ tấn công có thể thao túng toàn bộ cặp IV-bộ đếm để gây ra xung đột Khi kẻ tấn công kiểm soát cặp bộ đếm IV và bản rõ, XOR của bản mã với bản rõ đã biết sẽ mang lại một giá trị mà khi XOR với bản mã của khối khác chia sẻ cùng một cặp bộ đếm IV, sẽ giải mã khối đó.

Nonce trong sơ đồ này tương đương với vectơ khởi tạo (IV) trong các sơ đồ khác Tuy nhiên, nếu thông tin bù đắp/vị trí bị hỏng, sẽ không thể khôi phục một phần dữ liệu đó do phụ thuộc vào bù byte. Ưu điểm của Bộ đếm

● Vì có một giá trị bộ đếm khác nhau cho mỗi khối nên tránh được mối quan hệ giữa bản rõ và bản mã trực tiếp Điều này có nghĩa là cùng một văn bản thuần túy có thể ánh xạ tới các bản mã khác nhau.

● Có thể thực hiện mã hóa song song vì đầu ra từ các giai đoạn trước không bị xiềng xích như trong trường hợp của CBC.

Nhược điểm của Bộ đếm

● Thực tế là chế độ CTR yêu cầu bộ đếm đồng bộ ở cả máy phát và máy thu là một nhược điểm nghiêm trọng Việc khôi phục bản rõ là sai khi mất đồng bộ hóa.

Modes for Authenticated Encryption

Mã hóa xác thực (AE) là một chế độ hoạt động của mật mã khối đảm bảo về tính bảo mật và tính xác thực trên dữ liệu.

Một số chế độ mã hoá phổ biến:

● GCM (Galois/Counter Mode) là một chế độ hoạt động cho mật mã khối mật mã khóa đối xứng Nó là một thuật toán mã hóa xác thực được thiết kế để cung cấp cả xác thực và bí mật Chế độ GCM được xác định cho mật mã khối có kích thước khối là 128 bit.

● CCM (Bộ đếm với CBC-MAC ) là một chế độ hoạt động cho mật mã khối mật mã Nó là một thuật toán mã hóa xác thực được thiết kế để cung cấp cả xác thực và bảo mật Chế độ CCM chỉ được xác định cho mật mã khối có độ dài khối là 128 bit.

● OCB (Chế độ sách mã bù trừ) là một chế độ hoạt động dành cho mật mã khối mật mã.

PADDING

Padding

Padding trong cryptography là một kỹ thuật được sử dụng để thêm các bit bổ sung vào một thông điệp (plaintext) trước khi mã hóa nó Mục đích của padding là làm cho thông điệp ban đầu dài hơn và phức tạp hơn, điều này làm cho nó khó hơn để các kẻ tấn công giải mã thông điệp được mã hóa.

Padding thường được sử dụng khi độ dài của thông điệp plaintext không phải là một bội số của kích thước khối (block size) của thuật toán mã hóa Ví dụ, nếu một thuật toán mã hóa có kích thước khối là 64 bit, nhưng thông điệp plaintext chỉ có độ dài 40 bit, thì thông điệp sẽ cần được thêm padding với 24 bit bổ sung để làm cho độ dài của nó là một bội số của kích thước khối.

Có nhiều loại padding khác nhau được sử dụng trong cryptography, bao gồm:

PKCS#5 và PKCS#7: Các chuẩn padding này thêm các byte vào thông điệp plaintext sao cho thông điệp được thêm padding có độ dài là một bội số của kích thước khối Giá trị của mỗi byte được thêm vào là số lượng byte được thêm Ví dụ, nếu có 5 byte được thêm vào, thì mỗi byte sẽ có giá trị là 0x05.

ISO 10126: Chuẩn padding này thêm các byte ngẫu nhiên vào thông điệp plaintext, với byte cuối cùng chỉ ra số byte được thêm vào.

Zero padding: Chuẩn padding này thêm các byte có giá trị là 0 vào thông điệp plaintext cho đến khi độ dài của nó là một bội số của kích thước khối.

Chú ý rằng padding là một quá trình có thể đảo ngược, có nghĩa là người nhận của một thông điệp được mã hóa có thể loại bỏ padding để khôi phục lại thông điệp plaintext ban đầu.

Padding Experiment

Phần mềm giải mã thường biết vị trí đệm bắt đầu dựa trên sơ đồ đệm được sử dụng trong quá trình mã hóa Phần đệm được thêm vào một tin nhắn văn bản gốc trước khi mã hóa để đảm bảo rằng độ dài của tin nhắn là bội số của kích thước khối được sử dụng bởi thuật toán mã hóa.

Có một số sơ đồ đệm đang được sử dụng, chẳng hạn như PKCS#7 (còn được gọi là PKCS#5), ISO/IEC 7816-4 và ANSI X.923, trong số các sơ đồ khác Mỗi sơ đồ đệm chỉ định một cách khác nhau để thêm byte đệm vào thông báo văn bản gốc.

Ví dụ: trong phần đệm PKCS#7, tất cả các byte đệm được đặt thành số byte được thêm vào thông báo văn bản gốc để làm cho độ dài của nó là bội số của kích thước khối Vì vậy, nếu khối cuối cùng của bản mã chứa các byte đệm, phần mềm giải mã có thể xác định vị trí bắt đầu của phần đệm bằng cách xem giá trị của byte cuối cùng trong khối, giá trị này cho biết có bao nhiêu byte đệm đã được thêm vào.

Tóm lại, phần mềm giải mã biết vị trí đệm bắt đầu bằng cách áp dụng lược đồ đệm được sử dụng trong quá trình mã hóa và sử dụng thông tin được chỉ định trong lược đồ đệm để định vị các byte đệm trong bản mã.

Padding Experiment – Special case

Nếu kích thước của bản rõ đã là bội số của kích thước khối và bảy byte cuối cùng của nó đều là 0x07, thì vẫn cần thêm phần đệm.

Trong mật mã khối như AES, bản rõ được chia thành các khối có kích thước cố định trước khi mã hóa Nếu bản rõ không phải là bội số của kích thước khối, phần đệm sẽ được thêm vào để làm cho nó trở nên như vậy Tuy nhiên, ngay cả khi bản rõ đã là bội số của kích thước khối, thì phần đệm vẫn cần thiết để đảm bảo rằng người nhận có thể phân biệt chính xác giữa dữ liệu thực và phần đệm.

Lược đồ đệm phổ biến nhất được sử dụng trong mật mã khối được gọi là đệm PKCS#7, lược đồ này thêm một số byte vào cuối bản rõ sao cho khối cuối cùng được lấp đầy hoàn toàn Mỗi byte của phần đệm được đặt thành số byte được thêm vào, vì vậy nếu bảy byte cuối cùng của bản rõ đều là 0x07, thì phần đệm PKCS#7 sẽ thêm một byte khác có giá trị 0x01 vào cuối bản rõ, theo sau là sáu byte với giá trị 0x06.

Do đó, mặc dù bảy byte cuối cùng của bản rõ đã giống nhau, nhưng phần đệm vẫn cần thiết để đảm bảo rằng bản mã được người nhận xử lý chính xác.

INITIAL VECTOR

Initial Vector and Common Mistakes

Vectơ khởi tạo (IV) là một giá trị ngẫu nhiên hoặc giả ngẫu nhiên được sử dụng làm điểm bắt đầu để mã hóa thông báo Mục đích của IV là đảm bảo rằng mỗi tin nhắn được mã hóa bằng cùng một khóa là duy nhất, ngay cả khi nội dung tin nhắn giống nhau.

Dưới đây là một số lỗi phổ biến liên quan đến vectơ khởi tạo:

Sử dụng lại cùng một IV: Nếu cùng một IV được sử dụng cho nhiều thư được mã hóa bằng cùng một khóa, kẻ tấn công có thể khám phá khóa hoặc văn bản gốc của thư.

Sử dụng IV có thể dự đoán được: Nếu IV không phải là không thể đoán trước, kẻ tấn công có thể khám phá khóa hoặc văn bản gốc của thông báo Ví dụ: sử dụng dấu thời gian làm IV có thể giúp dự đoán và do đó dễ đoán hơn.

Truyền IV không an toàn: Nếu IV không được truyền an toàn, kẻ tấn công có thể chặn được và sử dụng IV để giải mã tin nhắn. Để tránh những sai lầm này, điều quan trọng là phải sử dụng một IV khác, không thể đoán trước cho mỗi thư được mã hóa bằng cùng một khóa và để đảm bảo rằng IV được truyền an toàn cùng với thư được mã hóa Ngoài ra, IV phải được tạo bằng trình tạo số ngẫu nhiên an toàn để đảm bảo rằng nó không thể đoán trước.

Experiment - IV should not be predictable

Trong mật mã, IV (Vectơ khởi tạo) không thể dự đoán hoặc lặp lại được.

IV là một giá trị ngẫu nhiên được sử dụng để khởi tạo thuật toán mã hóa và để tạo một bản mã duy nhất cho mỗi thông báo, ngay cả khi sử dụng cùng một khóa mã hóa Nếu IV có thể dự đoán hoặc lặp lại, kẻ tấn công có khả năng tìm hiểu thông tin về bản rõ hoặc khóa mã hóa bằng cách phân tích bản mã. Để đảm bảo rằng IV là không thể đoán trước, nó thường được tạo bằng cách sử dụng trình tạo số ngẫu nhiên hoặc trình tạo số giả ngẫu nhiên an toàn IV phải đủ dài để ngăn mọi sự lặp lại hoặc khả năng dự đoán và phải là duy nhất cho mỗi hoạt động mã hóa.

Trong một số trường hợp, IV có thể được tạo bằng cách lấy nó từ các giá trị khác,chẳng hạn như thời gian hiện tại hoặc bộ đếm Tuy nhiên, cần phải cẩn thận để đảm bảo rằng IV dẫn xuất là không thể đoán trước và không lặp lại, vì điều này vẫn có thể dẫn đến các lỗ hổng bảo mật.

Nhìn chung, điều quan trọng là sử dụng IV an toàn và không thể đoán trước trong thuật toán mã hóa để đảm bảo tính bảo mật và tính toàn vẹn của dữ liệu được mã hóa.

Authenticated Encryption

5.3.1 Mã hóa xác thực là gì?

Mã hóa xác thực (authenticated encryption) là một phương pháp mã hóa dữ liệu đảm bảo tính toàn vẹn và bảo mật của dữ liệu Nó kết hợp giữa việc mã hóa đối xứng (symmetric encryption) và xác thực tin (message authentication) để đảm bảo tính toàn vẹn và bảo mật của dữ liệu trong quá trình truyền tải và lưu trữ.

5.3.2 Cách thức hoạt động của Mã hóa xác thực

Trong mô hình này, dữ liệu đầu vào được chia thành hai phần, một phần là thông điệp (plaintext) cần được mã hóa và xác thực, và một phần là khóa bí mật (secret key) được sử dụng để mã hóa và xác thực dữ liệu. Đầu tiên, thông điệp được mã hóa đối xứng sử dụng một thuật toán mã hóa đối xứng như AES (Advanced Encryption Standard) hoặc ChaCha20-Poly1305 Kết quả của quá trình mã hóa là thông điệp đã được mã hóa (ciphertext).

Sau đó, một giá trị băm tin (MAC - message authentication code) được tính toán dựa trên nội dung của thông điệp và khóa bí mật Giá trị băm này đảm bảo tính toàn vẹn của dữ liệu và được sử dụng để xác thực (message authentication) của thông điệp.

Kết quả của quá trình tính toán giá trị băm được gửi cùng với thông điệp đã được mã hóa đối xứng.

Trong quá trình giải mã, giá trị băm tin được sử dụng để xác thực tính toàn vẹn của dữ liệu Nếu giá trị băm tin không trùng khớp với giá trị được tính toán lại từ nội dung của thông điệp và khóa bí mật, dữ liệu sẽ bị bác bỏ Ngược lại, nếu giá trị băm tin trùng khớp, thông điệp sẽ được giải mã đối xứng và dữ liệu sẽ được trả về dưới dạng plaintext.

The GCM Mode

GCM (Galois/Counter Mode) là một trong những chế độ hoạt động (mode of operation) của thuật toán mã hóa đối xứng (symmetric encryption algorithm) GCM kết hợp giữa việc sử dụng thuật toán mã hóa (encryption) và băm tin (hashing) để đảm bảo tính toàn vẹn và bảo mật của dữ liệu.

Trong GCM mode, dữ liệu được chia thành các khối có độ dài cố định Mỗi khối được mã hóa bằng thuật toán mã hóa đối xứng, thường là AES (Advanced Encryption Standard) Đồng thời, một băm tin được tính toán cho khối đó bằng cách sử dụng thuật toán GHASH.

GCM sử dụng một bộ đếm (counter) để tạo ra các giá trị nonce (number used once) cho việc mã hóa dữ liệu Giá trị nonce này được kết hợp với bộ đệm đầu vào (plaintext) để tạo ra giá trị mã hóa (ciphertext) Sau đó, giá trị băm tin (tag) được tính toán bằng cách sử dụng thuật toán GHASH trên giá trị mã hóa và nonce.

Trong quá trình mã hóa, dữ liệu đầu vào (plaintext) được chia thành các khối có độ dài cố định và mỗi khối được mã hóa bằng thuật toán AES (Advanced EncryptionStandard) sử dụng khóa mã hóa Tuy nhiên, trước khi mã hóa, mỗi khối được kết hợp với giá trị Nonce để tạo ra một giá trị Counter (CTR) unique, đóng vai trò như một tham số đầu vào cho AES Giá trị Nonce và Counter được kết hợp với nhau bằng phépXOR để tạo ra khóa cho AES.

Ngày đăng: 14/04/2024, 21:28

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN