Tấn công của Bleichenbacher trên PKCS1

Một phần của tài liệu Xây dựng thuật toán tấn công RSA không cần phân tích nhân tử (Trang 30)

Trước khi dùng RSA để mã hóa thông điệp, ta chèn n bít ngẫu nhiên vào nó. Trong phiên bản chuẩn cũ – Public Key Cryptography Standard 1 (PKCS1) đã sử dụng cách tiếp cận này. Sau khi chèn vào, thông điệp có dạng:

02 Random 00 M

Khi nhận được một 1 thông điệp PKCS 1 từ Bob, một ứng dụng (như web browser) giải mã nó, kiểm tra khối khởi tạo, và cắt đoạn bít ngẫu nhiên thêm vào. Tuy nhiên, một vài ứng dụng khi kiểm tra khối khởi tạo mà không thấy chuỗi “02” nó sẽ gửi trở lại một thông báo “bản mã lỗi”. Tuy nhiên Bleichenbancher đã chỉ ra rằng lỗi này dẫn đến hậu quả rất nghiệm trọng đó là: kẻ tấn công như Marvin sử dụng lỗi này để thực hiện tấn công và có thể giải mã được bản mã.

Thực vậy Marvin chặn một bản mã C mà Bob đang mong và muốn giải mã nó. Để thực hiện tấn công, Marvin lấy ngẫu nhiên một số r  Z*

N, tính C’ = rC mod N, và gửi C’ đến máy Bob. Một ứng dụng trên máy Bob sẽ nhận C’ và cố gắng giải mã nó. Nó có thể thu được một thông điệp lỗi hoặc chẳng thu được gì vì rằng có thể C’ vô tình vẫn đúng khuôn dạng. Vì thế Marvin có thể thu được toàn bộ toàn bộ 16 bít tín hiệu giải mã của C’ bằng 02. Trong trường hợp này, Marvin sẽ tiên đoán và kiểm tra liệu 16 bít tín hiệu có ý nghĩa của bản giải mã của rC mod N có bằng 02 không ? Với bất kỳ r mà anh ấy đã chọn, Bleichenbacher đã chỉ ra rằng như thế đủ để giải mã C.

Một phần của tài liệu Xây dựng thuật toán tấn công RSA không cần phân tích nhân tử (Trang 30)