Điểm:1

Giải mã Khóa RSA một phần được mã hóa AES-128-CBC

lá cờ cn

Tôi được cung cấp một khóa RSA riêng, tiêu đề này cho biết rằng nó được mã hóa AES-128-CBC. Lưu ý rằng mười dòng cuối cùng của khóa bị thiếu. (Đây là một phần của nhiệm vụ giáo dục.)

----- BEGIN RSA PRIVATE KEY -----
Loại Proc: 4, ĐƯỢC MÃ HÓA
DEK-Thông tin: AES-128-CBC,8B7CE35DB731727CEABA217FAE404DB8

... 37 dòng rưỡi mỗi dòng 64 ký tự

Nhiệm vụ là tìm ra cụm mật khẩu của khóa (được biết là một số có bốn chữ số). Tôi đã đạt được cơ chế bẻ khóa chung bằng cách sử dụng John The Ripper và thêm phần bắt buộc -----KẾT THÚC KHÓA RSA RSA----- đến cuối khóa một phần, nhưng cho đến nay, khóa không thể giải mã được, điều này có thể liên quan đến thực tế là một vài dòng cuối cùng của khóa bị thiếu (vì CBC liên quan đến tất cả các khối của tệp). Tôi đã cố gắng cắt độ dài nội dung chính thành bội số của 128 bit và giải mã nó, nhưng điều đó không thay đổi được gì. Để tìm ra cách thích hợp để vẫn có thể giải mã khóa, tôi cần hiểu rõ hơn về quy trình giải mã.

Quá trình giải mã hoạt động như thế nào và cụm mật khẩu của khóa liên quan đến việc này như thế nào? Tôi đã tra cứu một số trang web có chứa wikipedia về mã hóa CBC nói chung, nhưng tôi không thể hiểu quá trình giải mã thực tế diễn ra như thế nào liên quan đến cụm mật khẩu của khóa.

Cảm ơn trước tất cả các giải thích hoặc gợi ý về cách tiếp cận nhiệm vụ này.

Maarten Bodewes avatar
lá cờ in
Bạn nên tra cứu cách thực tế mà tệp được mã hóa (ví dụ: liên quan đến cách khóa được lấy và IV được sử dụng). Sau đó, bạn nên *cơ sở 64 giải mã các dòng* bạn được cung cấp và cố gắng giải mã trực tiếp bằng AES-CBC (sử dụng "không có phần đệm" vì việc giải mã sẽ không thành công). Lưu ý rằng tiêu đề DER của khóa riêng rất dễ phân biệt với văn bản ngẫu nhiên.
Maarten Bodewes avatar
lá cờ in
Thật thú vị, tôi không thể tìm thấy KDF được sử dụng để lấy khóa. Đó có thể là một `EVP_BytesToKey` dành riêng cho OpenSSL, nhưng tôi sẽ gặp nguy hiểm nếu tôi có thể tìm thấy phương pháp chính xác cần thiết để chuyển từ mã PIN sang khóa. Bạn có thêm thông tin về mã PIN/khóa không?
BenjyTec avatar
lá cờ cn
@MaartenBodewes Cảm ơn sự giúp đỡ của bạn. Không, rất tiếc là không có thêm thông tin nào về mã PIN hoặc khóa được cung cấp. Điều bổ sung duy nhất là một tệp được mã hóa sẽ được giải mã bằng khóa được khôi phục sau đó, nhưng tôi nghĩ điều này không giúp được gì vào thời điểm này.
Điểm:4
lá cờ cn

Loại Proc: 4, ĐƯỢC MÃ HÓA chỉ ra rằng khóa được lấy từ mật khẩu được chỉ định bởi RFC 1421 §4.6.1.1 f.. Đối với ý nghĩa của Thông tin DEK, RFC 1423 cũ hơn AES và tôi không biết tài liệu tham khảo nào khác ngoài mã nguồn OpenSSL.

Khóa mã hóa được lấy từ mật khẩu sử dụng PBKDF1-MD5 như được chỉ định bởi PKCS#5. Muối là phần thứ hai của Thông tin DEK tiêu đề và số lần lặp lại là 1. (Vâng, điều này yếu một cách lố bịch. Chỉ sử dụng mật khẩu entropy cao để mã hóa PEM, không phải mật khẩu thực sự đáng nhớ!) Một lần nữa, tài liệu tham khảo duy nhất tôi biết là mã nguồn OpenSSL: pem_bytes_read_bio_flags cuộc gọi PEM_do_header cuộc gọi nào EVP_BytesToKey.

Không có cơ chế tích hợp để kiểm tra xem mật khẩu có chính xác khi giải mã hay không. Mật khẩu không hợp lệ rất có thể dẫn đến rác. Nếu bạn chuyển đầu vào bị cắt bớt cho một công cụ mong đợi khóa RSA hợp lệ, thì nó sẽ luôn báo lỗi. Bạn có thể phải viết công cụ của riêng bạn.

Để xác định xem phần giải mã của phần bạn có có chính xác hay không, hãy kiểm tra xem phần đó có khớp với định dạng của khóa riêng tư RSA được tìm thấy bên trong tệp PEM như vậy hay không. Định dạng này được chỉ định trong PKCS#1 §A.1.2. Nếu bạn chưa quen với ASN.1, mồi Let's Encrypt ASN.1 sẽ hữu ích, và tất nhiên bạn nên xem xét một số ví dụ.Khóa riêng RSA bắt đầu bằng 0x30 (chỉ báo trình tự), sau đó là độ dài (thường là 0x82 và hai byte nữa) của toàn bộ, sau đó là 0x02 0x01 0x00 (mã hóa phiên bản dưới dạng số nguyên ASN.1), sau đó (đối với 2048 -bit số mũ, như một ví dụ) 0x02 0x82 0x01 0x01 0x00 và 256 byte của giá trị số mũ, sau đó 0x02 0x03 0x01 0x00 0x01 cho số mũ công khai 65537, v.v.

dave_thompson_085 avatar
lá cờ cn
Lưu ý rằng 3 thành phần cuối cùng (không tùy chọn hoặc tiền 2.1) trong RSAPrivateKey của PKCS1 có thể được tạo lại một cách tầm thường và p, q cũng có thể được tạo lại khá dễ dàng, do đó, khoảng 1800 trong số 2280 byte của OP là quá đủ, mặc dù các công cụ tiêu chuẩn sẽ không hoạt động trên nó và phải được sửa đổi hoặc thay thế.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.