Một phân tích chính thức đã được Phil Rogaway thực hiện vào năm 2011, tại đây . Mục 1.6 đưa ra một bản tóm tắt mà tôi phiên âm ở đây, thêm phần nhấn mạnh của riêng tôi in đậm (nếu bạn không kiên nhẫn, thì khuyến nghị của anh ấy là sử dụng chế độ CTR, nhưng tôi khuyên bạn nên đọc đoạn văn của tôi về tính toàn vẹn của tin nhắn so với mã hóa bên dưới).
Lưu ý rằng hầu hết trong số này yêu cầu IV là ngẫu nhiên, có nghĩa là không thể dự đoán được và do đó nên được tạo bằng bảo mật mật mã. Tuy nhiên, một số chỉ yêu cầu "nonce", không yêu cầu tài sản đó mà thay vào đó chỉ yêu cầu rằng nó không được sử dụng lại. Do đó, các thiết kế dựa trên nonce ít bị lỗi hơn các thiết kế không (và tin tôi đi, tôi đã thấy nhiều trường hợp CBC không được thực hiện với lựa chọn IV thích hợp). Vì vậy, bạn sẽ thấy rằng tôi đã thêm đậm khi Rogaway nói điều gì đó như "tính bảo mật không đạt được khi IV là nonce", điều đó có nghĩa là nếu bạn chọn IV bảo mật bằng mật mã (không thể đoán trước), thì không vấn đề gì. Nhưng nếu bạn không, thì bạn đang mất các thuộc tính bảo mật tốt. Không bao giờ sử dụng lại IV cho bất kỳ chế độ nào trong số này.
Ngoài ra, điều quan trọng là phải hiểu sự khác biệt giữa tính toàn vẹn của thông điệp và mã hóa. Mã hóa che giấu dữ liệu, nhưng kẻ tấn công có thể sửa đổi dữ liệu được mã hóa và kết quả có thể được phần mềm của bạn chấp nhận nếu bạn không kiểm tra tính toàn vẹn của tin nhắn. Mặc dù nhà phát triển sẽ nói "nhưng dữ liệu đã sửa đổi sẽ trở lại như rác sau khi giải mã", một kỹ sư bảo mật giỏi sẽ tìm thấy xác suất rác gây ra hành vi bất lợi trong phần mềm, và sau đó anh ta sẽ biến phân tích đó thành một cuộc tấn công thực sự. Tôi đã thấy nhiều trường hợp sử dụng mã hóa nhưng tính toàn vẹn của thông điệp thực sự cần thiết hơn mã hóa. Hiểu những gì bạn cần.
Tôi nên nói rằng mặc dù GCM có cả tính toàn vẹn về mã hóa và thông điệp, nhưng nó là một thiết kế rất dễ vỡ: nếu bạn sử dụng lại IV, bạn sẽ bị lừa - kẻ tấn công có thể khôi phục khóa của bạn. Các thiết kế khác ít dễ hỏng hơn, vì vậy cá nhân tôi rất ngại giới thiệu GCM dựa trên số lượng mã hóa kém mà tôi đã thấy trong thực tế.
Nếu bạn cần cả hai, tính toàn vẹn của thông điệp và mã hóa, bạn có thể kết hợp hai thuật toán: thông thường chúng ta thấy CBC với HMAC, nhưng không có lý do gì để buộc mình vào CBC. Điều quan trọng cần biết là mã hóa trước, sau đó MAC nội dung được mã hóa , không phải cách khác. Ngoài ra, IV cần phải là một phần của tính toán MAC.
Tôi không nhận thức được vấn đề IP.
Bây giờ đến những thứ tốt từ Giáo sư Rogaway:
Chặn các chế độ mật mã, mã hóa nhưng không toàn vẹn tin nhắn
ECB : Một mã hóa khối, chế độ mã hóa các thông điệp là bội số của n bit bằng cách mã hóa riêng từng đoạn n bit. Các thuộc tính bảo mật là yếu , phương pháp rò rỉ sự bình đẳng của các khối trên cả vị trí khối và thời gian. Có giá trị di sản đáng kể và có giá trị như một khối xây dựng cho các chương trình khác, nhưng chế độ không đạt được bất kỳ mục tiêu bảo mật mong muốn chung nào theo quyền riêng của mình và phải được sử dụng một cách thận trọng; ECB không nên được coi là một chế độ bảo mật của mục đích chung của thành phố .
CBC : Một sơ đồ mã hóa dựa trên IV, chế độ được bảo mật như một sơ đồ mã hóa xác suất, đạt được sự không thể phân biệt từ các bit ngẫu nhiên, giả sử IV ngẫu nhiên. Tính bảo mật không đạt được nếu IV chỉ là một nonce , cũng như nếu nó không được mã hóa theo cùng khóa được sử dụng bởi lược đồ, như tiêu chuẩn gợi ý không chính xác. Mật mã rất dễ uốn. Không có bảo mật tấn công mã hóa (CCA) được chọn. Bảo mật bị mất vì sự hiện diện của một nhà tiên tri chính xác cho nhiều phương pháp đệm. Mã hóa không hiệu quả từ vốn đã nối tiếp. Được sử dụng rộng rãi, các thuộc tính bảo mật chỉ riêng tư của chế độ dẫn đến việc sử dụng sai thường xuyên. Có thể được sử dụng như một khối xây dựng cho các thuật toán CBC-MAC. Tôi có thể xác định không có lợi thế quan trọng so với chế độ CTR.
CFB : Một sơ đồ mã hóa dựa trên IV, chế độ được bảo mật như một sơ đồ mã hóa xác suất, đạt được sự không thể phân biệt từ các bit ngẫu nhiên, giả sử IV ngẫu nhiên. Tính bảo mật không đạt được nếu IV có thể dự đoán được , cũng như nếu nó được tạo bởi một nonce được mã hóa theo cùng khóa được sử dụng bởi lược đồ, như tiêu chuẩn gợi ý không chính xác. Mật mã có thể dễ uốn. Không bảo mật CCA. Mã hóa không hiệu quả từ vốn đã nối tiếp. Lược đồ phụ thuộc vào một tham số s, 1 ≤ s ≤ n, thường là s = 1 hoặc s = 8. Không hiệu quả khi cần một lệnh gọi mã hóa để xử lý chỉ các bit s. Chế độ đạt được một thuộc tính tự đồng bộ hóa thú vị của Cameron; việc chèn hoặc xóa bất kỳ số lượng ký tự s-bit nào vào bản mã chỉ tạm thời phá vỡ giải mã chính xác.
OFB : Một sơ đồ mã hóa dựa trên IV, chế độ được bảo mật như một sơ đồ mã hóa xác suất, đạt được sự không thể phân biệt từ các bit ngẫu nhiên, giả sử IV ngẫu nhiên. Bảo mật không đạt được nếu IV là nonce, mặc dù một chuỗi IV cố định (ví dụ: bộ đếm) hoạt động tốt. Mật mã rất dễ uốn. Không bảo mật CCA. Mã hóa và giải mã không hiệu quả từ vốn đã nối tiếp. Tự nhiên mã hóa các chuỗi có độ dài bit bất kỳ (không cần đệm). Tôi có thể xác định không có lợi thế quan trọng so với chế độ CTR.
TLB : Một sơ đồ mã hóa dựa trên IV, chế độ đạt được sự không thể phân biệt với các bit ngẫu nhiên giả sử IV không. Là một lược đồ không dựa trên an toàn, chế độ cũng có thể được sử dụng làm lược đồ mã hóa xác suất, với IV ngẫu nhiên. Hoàn toàn thất bại về quyền riêng tư nếu một nonce được sử dụng lại trên mã hóa hoặc giải mã. Tính song song của chế độ thường làm cho nó nhanh hơn, trong một số cài đặt nhanh hơn nhiều so với các chế độ bảo mật khác. Một khối xây dựng quan trọng cho các chương trình mã hóa xác thực. Nhìn chung, thường là cách tốt nhất và hiện đại nhất để đạt được mã hóa chỉ riêng tư.
XTS : Một sơ đồ mã hóa dựa trên IV, chế độ hoạt động bằng cách áp dụng một mã hóa khối có thể điều chỉnh (bảo mật như một PRP mạnh) cho mỗi đoạn n bit. Đối với các thư có độ dài không chia hết cho n, hai khối cuối được xử lý đặc biệt. Việc sử dụng chế độ chỉ được phép là để mã hóa dữ liệu trên thiết bị lưu trữ có cấu trúc khối. Độ rộng hẹp của PRP cơ bản và xử lý kém các khối cuối cùng phân đoạn là vấn đề. Hiệu quả hơn nhưng ít mong muốn hơn một mã hóa bảo mật PRP (khối rộng) sẽ là.
MAC (tin nhắn toàn vẹn nhưng không mã hóa)
ALG1 Vang6 : Một bộ sưu tập MAC, tất cả đều dựa trên CBC-MAC. Quá nhiều đề án. Một số được chứng minh an toàn như VIL PRF, một số là PRF PHIM và một số không có bảo mật có thể chứng minh được. Một số kế hoạch thừa nhận các cuộc tấn công gây thiệt hại. Một số chế độ được ghi ngày. Việc tách khóa không được chú ý đầy đủ cho các chế độ có nó. Không nên được thông qua hàng loạt, nhưng có thể chọn lọc các phương án tốt nhất của người Hồi giáo là có thể. Cũng không nên chấp nhận bất kỳ chế độ nào trong số này, có lợi cho CMAC. Một số MAC ISO 9797-1 được tiêu chuẩn hóa và sử dụng rộng rãi, đặc biệt là trong ngân hàng. Phiên bản sửa đổi của tiêu chuẩn (ISO / IEC FDIS 9797-1: 2010) sẽ sớm được phát hành [93].
CMAC : Một MAC dựa trên CBC-MAC, chế độ này có thể được bảo mật một cách rõ ràng (đến giới hạn sinh nhật) dưới dạng PRF (VIL) (giả sử mã hóa cơ bản là một PRP tốt). Về cơ bản chi phí tối thiểu cho một chương trình dựa trên CBCMAC. Bản chất nối tiếp vốn là một vấn đề trong một số miền ứng dụng và việc sử dụng mã hóa 64 bit sẽ thỉnh thoảng phải nhập lại khóa. Sạch hơn bộ sưu tập MAC 9797-1 của MAC.
HMAC : MAC dựa trên hàm băm mật mã thay vì mã hóa khối (mặc dù hầu hết các hàm băm mật mã đều dựa trên blockciphers). Cơ chế thích các giới hạn bảo mật có thể chứng minh mạnh mẽ, mặc dù không từ các giả định ưa thích. Nhiều biến thể liên quan chặt chẽ trong tài liệu phức tạp đạt được sự hiểu biết về những gì đã biết. Không có cuộc tấn công gây thiệt hại đã từng được đề xuất. Được chuẩn hóa và sử dụng rộng rãi.
GMAC : MAC không dựa trên MAC là trường hợp đặc biệt của GCM. Kế thừa nhiều đặc điểm tốt và xấu của GCM. Nhưng nonce-request là không cần thiết cho MAC, và ở đây nó mua rất ít lợi ích. Các cuộc tấn công thực tế nếu các thẻ bị cắt ngắn tới 64 bit và phạm vi giải mã không được theo dõi và hạn chế. Thất bại hoàn toàn về việc không sử dụng lại. Sử dụng là ẩn dù sao nếu GCM được thông qua. Không khuyến nghị cho tiêu chuẩn hóa riêng biệt.
mã hóa xác thực (cả mã hóa và toàn vẹn thông điệp)
CCM : Một lược đồ AEAD không dựa trên kết hợp mã hóa chế độ CTR và CBC-MAC thô. Hoàn toàn nối tiếp, giới hạn tốc độ trong một số bối cảnh. Có thể an toàn, với giới hạn tốt, giả sử mã hóa cơ bản là một PRP tốt. Xây dựng chắc chắn mà thực hiện công việc. Đơn giản hơn để thực hiện hơn GCM. Có thể được sử dụng như một MAC không dựa trên. Được chuẩn hóa và sử dụng rộng rãi.
GCM : Một lược đồ AEAD không dựa trên kết hợp mã hóa chế độ CTR và hàm băm phổ quát dựa trên cơ sở GF (2128). Đặc tính hiệu quả tốt cho một số môi trường thực hiện. Kết quả tốt có thể chứng minh an toàn giả sử cắt ngắn thẻ tối thiểu. Tấn công và giới hạn bảo mật có thể chứng minh kém trong sự hiện diện của việc cắt thẻ đáng kể. Có thể được sử dụng như một MAC không dựa trên, sau đó được gọi là GMAC. Lựa chọn đáng ngờ để cho phép các nonces ngoài 96 bit. Đề nghị hạn chế nonces đến 96 bit và thẻ tối thiểu 96 bit. Được chuẩn hóa và sử dụng rộng rãi.