Trong mật mã học, phần đệm là bất kỳ phương thức nào trong số các phương pháp riêng biệt, tất cả đều bao gồm việc thêm dữ liệu vào phần đầu, phần giữa hoặc phần cuối của thông báo trước khi mã hóa.
Đây là một câu cô đọng;
Các chế độ mật mã khối như CBC và ECB yêu cầu đệm để người ta có thể mã hóa các khối tin nhắn đúng cách - không phải tất cả các tin nhắn đều là bội số của kích thước khối của mật mã. Phần đệm phổ biến là PKCS#7 và được áp dụng cuối cùng. Gần đây, xu hướng là các chế độ như CTR không yêu cầu phần đệm. Điều này đã loại bỏ một véc tơ tấn công; tấn công tiên tri đệm.
Mã hóa khóa công khai của RSA yêu cầu phần đệm phải an toàn trước các cuộc tấn công, trong trường hợp này, dữ liệu có tiền tố là một số ký tự cố định và ngẫu nhiên.
- OAEP: $\text{T=lhash||PS||01||Message}$
- PKCS#1.v5 : $\text{EM = 0x00 || 0x02 || Tái bút || 0x00 || Tin nhắn}$
Trong khi băm, nếu chúng ta cần nối hai chuỗi, chúng ta không nối hai chuỗi theo cách nối sting thuần túy, thay vào đó chúng ta thêm một số dấu phân cách đặc biệt để chúng ta có thể tránh va chạm đơn giản;
$$Hash(\texttt{abcd||efgh}) = Hash(\texttt{abc||defgh})$$ ở đâu $s_1 = abcd, s_2 = efgh, s_3 = abc, s_4 = defgh$ là 4 chuỗi khác nhau, nhưng sự kết hợp của chúng vẫn tạo ra cùng một giá trị băm. Để giảm thiểu, chúng tôi áp dụng một số phần đệm ở giữa với một số giá trị đặc biệt cho miền;
$$Hash(\texttt{abcd||<sperator>||efgh}) \neq Hash(\texttt{abc||<sperator>||defgh})$$ sự thay đổi của xung đột là không đáng kể đối với một hàm băm mật mã tốt.
Trong mật mã học cổ điển, phần đệm có thể bao gồm việc thêm các cụm từ vô nghĩa vào một tin nhắn để che giấu thực tế là nhiều tin nhắn kết thúc theo những cách có thể dự đoán được.
Điều này là do thực tế là chúng tôi không muốn cung cấp cho kẻ tấn công bản rõ đã biết trong đó hầu hết tất cả các thuật toán cổ điển đều không an toàn trước điều này.
Xem xét mật mã Hill có kích thước $n$ và nếu khối cuối cùng chỉ chứa một ký tự từ tin nhắn và nếu bạn điền phần còn lại bằng một giá trị cố định đã biết thì bạn đã đưa cho kẻ thù chìa khóa của mình. Họ chỉ cần giải hệ phương trình 26 lần để lấy khóa mã hóa.
Như bạn có thể thấy rằng phần đệm thiên về bảo mật và hoạt động.
Tổng kiểm tra dường như phục vụ theo cùng một cách, được thêm vào trong thông báo và trình xác minh xác minh theo tổng và mô đun hóa ước số đã thỏa thuận trước.
Tổng kiểm tra là về việc phát hiện lỗi. Ở đây chúng tôi phân biệt tổng kiểm tra với tính toàn vẹn trong mật mã nơi chúng tôi sử dụng hàm băm. Hàm băm có thể cung cấp khả năng phát hiện lỗi, tuy nhiên, chúng mạnh hơn tổng kiểm tra.
Hãy nhớ rằng, mặc dù phần đệm có thể chỉ ra lỗi, như phần đệm PKCS#7, điều đó không có nghĩa là mục đích là tính toàn vẹn (hoặc tổng kiểm tra) và thật thú vị, lỗi này được sử dụng để tấn công tiên tri phần đệm để giải mã thư trên máy chủ trả về lỗi.