Writeup - RSA return (ROCA: Tấn công khôi phục các khóa RSA)
Năm nay 2018, EasyCTF IV có một bài Crypto hay, áp dụng lỗ hổng ROCA mới được phát hiện trên hệ mã hóa RSA. Đã có bài viết chi tiết về lỗ hổng ROCA trên Whitehat: https://whitehat.vn/threads/lo-hong...oa-rsa-ca-nhan-tren-hang-trieu-thiet-bi.9680/
Tool neca được sử dụng có thể phá mã RSA 512bit trong khoảng nửa tiếng.
Đề bài:
===========================================================================
n = 9637828843823500407917687664441327784714605952794831018467094508166140790258515855681653788687192363262499178812675284846293988948568322307302995971433129
e = 65537
c = 744372384092422293657230440929981477879274068697788092531354927993093987582083018137886004402518974542009040817374858469786477527000745005045012289929736
===========================================================================
Cách làm:
Để giải bài này, ta phải phân tích n ra p và q. Tuy nhiên đây là số 512 bit, vượt tầm các tool phổ biến như yafu (phân tích được n với kích thước 256 bit thôi).
Khi liên hệ đến lỗ hổng ROCA mới đây, ta sử dụng công cụ roca-detect để xác định xem n có bị nguy cơ trước lỗ hổng này không.
Tool: https://github.com/crocs-muni/roca
Để kiểm tra được, ta phải tạo ra file PEM public key tạo từ n và e.
Sử dụng script sau để tạo file PEM rsareturn.pub:
Detect:
=> Có khả năng có lỗ hổng Roca
Sử dụng tool neca (https://gitlab.com/jix/neca) để thực hiện decrypt:
Sau hơn nửa tiếng, ta đã có được p và q:
p = 121588253559534573498320028934517990374721243335397811413129137253981502266611
q = 79266117915777331935558561759105375936182700866258172021902853781249206532339
=> Ta sử dụng script sau để giải mã cipher text:
Flag: easyctf{4b8xofjwvy4rqkbuba}
Link tham khảo:
+ Writeup gốc: https://ctftime.org/writeup/8805
+ Cấu trúc file PEM public key: https://www.ietf.org/rfc/rfc2313.txt
+ Tạo file PEM từ public key: https://crypto.stackexchange.com/questions/25498/how-to-create-a-pem-file-for-storing-an-rsa-key
+ Giải mã RSA từ p, q, e: https://crypto.stackexchange.com/questions/19444/rsa-given-q-p-and-e
Tool neca được sử dụng có thể phá mã RSA 512bit trong khoảng nửa tiếng.
Đề bài:
===========================================================================
n = 9637828843823500407917687664441327784714605952794831018467094508166140790258515855681653788687192363262499178812675284846293988948568322307302995971433129
e = 65537
c = 744372384092422293657230440929981477879274068697788092531354927993093987582083018137886004402518974542009040817374858469786477527000745005045012289929736
===========================================================================
Cách làm:
Để giải bài này, ta phải phân tích n ra p và q. Tuy nhiên đây là số 512 bit, vượt tầm các tool phổ biến như yafu (phân tích được n với kích thước 256 bit thôi).
Khi liên hệ đến lỗ hổng ROCA mới đây, ta sử dụng công cụ roca-detect để xác định xem n có bị nguy cơ trước lỗ hổng này không.
Tool: https://github.com/crocs-muni/roca
Để kiểm tra được, ta phải tạo ra file PEM public key tạo từ n và e.
Sử dụng script sau để tạo file PEM rsareturn.pub:
Detect:
=> Có khả năng có lỗ hổng Roca
Sử dụng tool neca (https://gitlab.com/jix/neca) để thực hiện decrypt:
Sau hơn nửa tiếng, ta đã có được p và q:
p = 121588253559534573498320028934517990374721243335397811413129137253981502266611
q = 79266117915777331935558561759105375936182700866258172021902853781249206532339
=> Ta sử dụng script sau để giải mã cipher text:
Flag: easyctf{4b8xofjwvy4rqkbuba}
Link tham khảo:
+ Writeup gốc: https://ctftime.org/writeup/8805
+ Cấu trúc file PEM public key: https://www.ietf.org/rfc/rfc2313.txt
+ Tạo file PEM từ public key: https://crypto.stackexchange.com/questions/25498/how-to-create-a-pem-file-for-storing-an-rsa-key
+ Giải mã RSA từ p, q, e: https://crypto.stackexchange.com/questions/19444/rsa-given-q-p-and-e
Chỉnh sửa lần cuối: