Tôi sẽ bắt đầu với một so sánh chức năng của RSAES-PKCS1-v1_5 với RSAES-OAEP.
Cái sau là sự thay thế gần như hiện đại của cái trước.
Trước hết, về cơ bản, không thể tạo một thư viện triển khai giải mã RSAES-PKCS1-v1_5 để đảm bảo an ninh trước các cuộc tấn công kênh bên. Nhiều nỗ lực để có được bảo mật cấp ứng dụng đã thất bại: kẻ thù có thể thực hiện một số lượng truy vấn khiêm tốn đối với thiết bị đang thực hiện giải mã và quan sát hành vi của thiết bị đó (mã lỗi, kích thước gói, thời gian, truy cập đĩa, bộ đệm, âm thanh nguồn cung cấp...) thường thành công [nghĩa là quản lý để giải mã một tin nhắn mà họ đã chặn hoặc ký một tin nhắn nếu khóa được sử dụng kép]. Cuộc tấn công CCA của Bleichenbacher có rất nhiều biến thể mà thật khó để theo dõi. Ngược lại với RSAES-OAEP: một số lượng hạn chế trong quá trình triển khai thư viện sẽ ngăn chặn cuộc tấn công tương đương.
Ngoài ra, RSAES-PKCS1-v1_5 được xác định để cho phép tính ngẫu nhiên xuống tới 64 bit, điều này không đủ theo tiêu chuẩn hiện đại để ngăn chặn mạnh mẽ việc kiểm tra dự đoán chính xác của văn bản gốc. Cách duy nhất để khắc phục điều này là ngăn mã hóa thư quá gần với kích thước tối đa cho phép.
RSAES-OAEP có bằng chứng về bảo mật (với giả định rằng vấn đề RSA là khó và hàm băm có thể được mô hình hóa dưới dạng hàm giả ngẫu nhiên và việc triển khai không có kênh phụ). RSAES-PKCS1-v1_5 thì không.
Một nhược điểm của RSAES-OAEP là nó cho phép các thông báo nhỏ hơn cho cùng một mô-đun, nhưng đó hiếm khi là vấn đề trong thực tế, vì khi kích thước thông báo tăng lên, chúng tôi sử dụng mã hóa lai.
các đề xuất hiện có (ví dụ: CMS, PKIX) về việc sử dụng và khởi tạo RSAES-OAEP và RSASSA-PSS
Như đã chỉ ra trong bình luận đối với câu hỏi, thực tiễn tốt nhất hiện tại là sử dụng MGF1 với hàm băm giống như phần còn lại của cấu trúc. SHA-256 là phổ biến, SHA-512 sẽ là tốt nhất. Sai lệch phổ biến nhất so với điều đó là việc sử dụng SHA-1 trong MGF1 cho RSAES-OAEP, vì API Java khiến nó dễ mắc lỗi (xem cái này). Điều đó vẫn an toàn theo như chúng tôi biết.
Vì RSASSA-PSS, một cách làm phổ biến (nhưng không phải là tốt nhất) là để trống ruộng muối, đó là sử dụng $sLen=0$ Trong EMSA-PSS.
Về mặt lý thuyết, việc sử dụng SHAKE-{128,256} làm MGF sẽ hợp lý nhưng chưa được thực hiện trong các ứng dụng mà tôi biết và có thể sẽ không bao giờ thực hiện được.
Có ID được chỉ định (từ IANA hoặc các tổ chức tương tự) không?
Có OIDs cho RSAES-OAEP, RSASSA-PSS, MGF1, SHA-256 và SHA-512. Bây giờ, các OID này nên được sử dụng kết hợp như thế nào trong ví dụ: chứng chỉ X.509 và có thứ gì đó sẽ tiếp tục hoạt động nếu thử không? Tôi vượt qua.