Michael Stay nhận được một tin nhắn khá lạ ở LinkedIn vào tháng 10/2019. Một người lạ, hoàn toàn không quen biết, không thể truy cập khóa riêng tư ví Bitcoin của anh ta, và muốn Stay giúp để giải cứu lượng tiền mã hóa tương đương 300.000 USD bên trong.
Không phải tự nhiên mà The Guy, cái tên Stay đặt cho anh chàng kia, tìm tới cựu kỹ sư bảo mật của Google. Cách đây 19 năm, Stay xuất bản một báo cáo khoa học về kỹ thuật mở khóa các file zip đã mã hóa.
The Guy mua khoảng 10.000 Bitcoin vào tháng 1/2016, trước khi Bitcoin bùng nổ về giá trị một năm sau. Anh ta đã tạo một khóa riêng tư và lưu vào tập tin zip, nhưng lại quên mất mật khẩu. Stay là hi vọng của The Guy.
Hợp đồng trị giá 100.000 USD
Zip là một trong những loại tập tin nén phổ biến nhất. Định dạng này không nằm trong nhóm những định dạng bảo mật tốt nhất, bởi các tiêu chuẩn ban đầu vốn không tập trung vào mã hóa.
Tập tin của The Guy sử dụng một trong những ứng dụng mã hóa thời đầu, với độ phức tạp không cao, và Stay cho rằng anh vẫn có thể dùng sức mạnh của máy tính để mở khóa tập tin này. Sau khi tính toán, Stay đưa ra mức giá 100.000 USD để phá khóa tập tin zip. The Guy đồng ý, vì với mức giá lúc đó của Bitcoin anh ta vẫn sẽ lãi lớn.
"Đó là dự án làm tôi thích thú nhất trong nhiều năm. Sáng nào tôi cũng háo hức thức dậy và làm việc, tiếp cận vấn đề. Mã hóa zip được phát triển nhiều năm trước, do một chuyên gia bảo mật làng nhàng tạo nên. Thật khó tin là nó tồn tại lâu như vậy", Stay, hiện là giám đốc công nghệ tại một công ty blockchain chia sẻ.
Tập tin của The Guy sử dụng phương thức mã hóa Zip 2.0 Legacy, về lý thuyết là vẫn có thể bẻ được và dễ tiếp cận hơn so với phương thức mã hóa AES về sau. Anh chàng này vẫn còn giữ chiếc laptop dùng để tạo file zip, cũng như chương trình tạo file nguyên bản từ thời đó.
Từ các mật khẩu mà The Guy thường dùng và khóa bảo mật anh vẫn giữ, Stay đã "thu hẹp" mã khóa xuống còn một phần tỷ tỷ, là con số có thể thực hiện được với những máy tính có khả năng tính toán mạnh mẽ.
Để có thể bẻ khóa, Stay sẽ cần thuê một hệ thống máy chủ đám mây tính toán bằng GPU. Dù rằng việc bẻ khóa về lý thuyết là "thực hiện được" thì đây vẫn không phải là công việc đơn giản.
"Dự tính ban đầu của chúng tôi là sẽ thiết kế bẻ khóa trong vài tháng, và máy tính cũng sẽ phải chạy thêm vài tháng mới có thể hoàn thành công việc. Cuối cùng Michael đã thiết kế được chương trình bẻ khóa khá hiệu quả, nên chúng tôi mất nhiều thời gian hơn để lập trình nhưng thời gian để bẻ khóa chỉ tốn khoảng 1 tuần. Điều này giúp The Guy tiết kiệm được tiền thuê hạ tầng.
Nếu là 10 năm trước, chẳng có cách nào bẻ khóa được tập tin này nếu như không có phần cứng thiết kế riêng biệt, và chi phí đó có lẽ còn lớn hơn giá trị số Bitcoin", Nash Foster, CEO công ty mà Michael Stay đang làm việc chia sẻ.
Bài toán khó
Kể cả khi chương trình bẻ khóa đã được thiết kế rất chi tiết, cũng chưa thể đảm bảo nó sẽ bẻ khóa được tập tin zip. Sau hàng tháng trời thiết kế, Stay mới thực sự bắt tay vào bẻ khóa.
The Guy không tin tưởng và giao phó toàn bộ file zip cho nhóm Stay, mà chỉ cần đưa đoạn đầu của file chứa các thông tin mã hóa. Máy tính chạy hết 10 ngày, nhưng không thể mở được khóa của tập tin. "Tôi đã rất đau lòng", Stay cho biết.
"Chúng tôi đã tìm được rất nhiều lỗi phần mềm trước đó, nhưng sau khi chạy thử trên laptop thì phần mềm bẻ khóa hoạt động rất chuẩn. Nếu như là một lỗi thì hẳn đây là lỗi rất nhỏ, và tôi sợ rằng sẽ phải rất lâu mới tìm ra nó", Stay kể lại trên blog của mình. Đó là thời điểm tháng 2/2020, khi mà giá Bitcoin đang giảm tới 1.000 USD, và The Guy tất nhiên rất sốt ruột với số tiền mã hóa mình có trong máy tính.
Stay đã phải kiểm tra lại toàn bộ quá trình tấn công của mình, sau đó nghĩ lại điểm bắt đầu thử giải mã hóa. Cả anh và The Guy đều chạy chương trình trên máy tính của mình, và The Guy nhận ra lỗi bắt đầu ở GPU. Stay và Foster xác nhận lỗi, và thử bẻ khóa lại.
"Bùm! Và thế là một đống Bitcoin hiện ra. Thật là nhẹ người", Foster cho biết.
Chi phí thuê hạ tầng để bẻ khóa cuối cùng chỉ vào khoảng 6.000-7.000 USD, thay vì con số 100.000 USD dự tính ban đầu. The Guy đồng ý trả số tiền 25.000 USD, và đây vẫn là một hợp đồng rất béo bở với anh chàng này.
"Những dự án như thế này rất lạ và khác biệt, và nếu anh ta sử dụng phần mềm phiên bản mới hơn thì việc bẻ khóa sẽ là bất khả thi. Thật may, trong trường hợp này chúng tôi vẫn có thể làm được việc", Foster kể.