Tấn công quá trình thu hồi chứng thư số

08:26 | 12/04/2021

Bài viết này trình bày tấn công quá trình thu hồi chứng thư số đối với hạ tầng cơ sở khóa công khai trong phiên kết nối bảo mật bằng giao thức TLS. Cách thức tấn công hạ tầng cơ sở khóa công khai công cộng trong bước yêu cầu thu hồi chứng thư số từ người dùng tới trung tâm chứng thực. Phần cuối bài viết đưa ra kết luận và các khuyến nghị để hạn chế tấn công này.

Thông qua bài viết [1], thấy được nguy cơ, hậu quả nghiêm trọng có thể dẫn tới từ việc để lộ khóa riêng tương ứng chứng thư số người dùng trong hệ thống PKI. Khi đã để lộ khóa riêng thì chứng thư số sẽ không còn giá trị và có thể bị lợi dụng để thực hiện các tấn công giả mạo người dùng, hệ thống PKI cung cấp cơ chế thu hồi chứng thư số cho người dùng. Hai cơ chế thông báo chứng thư số đã thu hồi tới người dùng là: danh sách CRL và giao thức OCSP.

TẤN CÔNG NGĂN CHẶN DỊCH VỤ

Đối với hệ thống PKI công cộng

Đối với hệ thống PKI công cộng: Người dùng sử dụng chứng thư số của các CA tin cậy và phần mềm triển khai chứng thư số là các trình duyệt Web ứng dụng vào trong bảo mật dịch vụ mạng trên nền Web. Bên phát triển dịch vụ Web sẽ cung cấp máy chủ cung cấp danh sách CRL của các CA tin cậy hoặc máy chủ OCSP Responder chứa danh sách CRL này để phục vụ việc kiểm tra từ phía máy người dùng. Các trình Web phổ biến hiện nay không hỗ trợ cập nhật danh sách này tự động mà người dùng thực hiện thủ công. Đối với việc kiểm tra trạng thái chứng thư số với giao thức OCSP thì mặc định các trình Web sẽ không bật chức năng này (Firefox) hoặc thậm chí có trình duyệt Web không hỗ trợ giao thức này (Google Chrome) [3].

Trong quá trình kiểm tra, cập nhật danh sách chứng thư số thu hồi, trình duyệt Web người dùng sẽ thực hiện kết nối tới máy chủ chứa danh sách CRL hoặc máy chủ phản hồi OCSP. Những máy chủ này có địa chỉ công khai, khi đó kẻ tấn công hoàn toàn có thể ngăn chặn được quá trình cập nhật danh sách chứng thư số của người dùng từ trình duyệt: bằng cách chuyển hướng hoặc không phản hồi các thông điệp yêu cầu từ trình duyệt, bản chất làm trình duyệt tự nhận định rằng máy chủ CRL hay OCSP đang offline. Trình duyệt sau đó sẽ không kiểm tra và tiếp tục sử dụng các chứng thư số đã bị thu hồi như những chứng thư số hợp lệ.

Những điều kiện để kẻ tấn công thực hiện cuộc tấn công ngăn chặn dịch vụ này:

- Kẻ tấn công phải biết thời gian biểu cập nhật danh sách URL của người dùng trong cơ quan, tổ chức để tiến hành chặn bắt, chuyển hướng.

- Kẻ tấn công máy người dùng (máy mục tiêu) trong cùng mạng LAN sẽ dễ dàng ngăn chặn danh sách CRL từ máy chủ CA hoặc kết quả kiểm tra chứng thư số từ máy chủ OCSP gửi tới máy người dùng.

Một trường hợp khác là khi người dùng gửi yêu cầu thu hồi chứng thu số tới máy chủ CRL hoặc OCSP, thì các máy chủ bị tấn công DoS hoặc DDoS và không thể gửi phản hồi lại máy người dùng. Điều kiện xảy ra cuộc tấn công này là kẻ tấn công phải biết lịch thời gian cập nhật CRL hoặc kiểm tra chứng thư số của người dùng để thực hiện DoS hoặc DDoS máy chủ CA hoặc máy chủ OCSP tại thời điểm đó. Trường hợp này sẽ ít xảy ra bởi các tấn công này yêu cầu một số lượng máy rất lớn thực hiện cùng một thời điểm [2].

Hình 1. Tấn công từ chối dịch vụ máy chủ danh sách chứng thư số

Đối với hệ thống PKI chuyên dùng

Trong hệ thống PKI chuyên dùng: người dùng sử dụng chứng thư số các CA tin cậy và phần mềm triển khai chứng thư số phía người dùng cũng được phát triển bởi các CA này.

Các phần mềm triển khai chứng thư số này chứa danh sách CRL và sẽ cập nhật danh sách CRL theo định kỳ thời hạn ghi trong trường Next Update trong danh sách CRL đã lưu trong cơ sở dữ liệu. Trước khi thực hiện bất kỳ một tác vụ: ký hay mã hóa văn bản đều kiểm tra trạng thái chứng thư số thông qua giao thức OCSP. Việc kiểm tra CRL không thành công hoặc kiểm tra OCSP không thành công, phần mềm triển khai sẽ báo lỗi và không cho thực hiện các bất kỳ tác vụ gì khác.

Hình 2. Danh sách chứng thư số thu hồi CRL

Như vậy, tấn công từ chối dịch vụ chỉ khả thi với các hệ thống PKI công cộng và không khả thi với các hệ thống PKI chuyên dùng. Các tấn công này hiệu quả với hệ thống PKI tự phát triển mã nguồn mở như EJBCA, OpenCA, OpenSSL EasyCA bởi các PKI này hoạt động dựa trên nguyên lý các PKI công cộng, nhưng không có khả năng công bố danh sách CRL vào các máy chủ CRL của nhà phát triển trình duyệt Web. Việc công bố danh sách CRL thủ công bởi các đội ngũ quản trị các PKI này.

TẤN CÔNG XEN GIỮA

Tấn công xen giữa cũng dựa trên giả thiết mạnh là bị lộ khóa riêng của người dùng (với những nguyên nhân xem trong [1]) và với chính sách kiểm tra trạng thái nghiêm ngặt của các hệ thống PKI chuyên dùng thì tấn công này cũng không hiệu quả với các hệ thống này. Vì vậy phần này chỉ trình bày tấn công xen giữa với hệ thống PKI công cộng.

Trường hợp máy chủ dịch vụ và máy chủ CA thuộc cùng bên thứ ba cung cấp có nghĩa người dùng sử dụng một chứng thư số cho cả tác vụ: sử dụng dịch vụ và kiểm tra danh sách chứng thư số thu hồi. Kẻ tấn công biết được khóa riêng chứng thu số người dùng, sẽ thực hiện giả mạo người dùng kết nối tới máy chủ CA. Người dùng khi yêu cầu cập nhật, kiểm tra danh sách chứng thư số thu hồi đều không nhận được phản hồi từ máy chủ [4].

Hình 3. Tấn công xen giữa

Điều kiện thực hiện thành công tấn công này: diễn ra khi máy chủ dịch vụ thực hiện cài đặt tích hợp giao thức OCSP trên cùng thiết bị. Khi này, chứng thư số bị lộ khóa riêng người dùng sẽ dùng xác thực với cả máy chủ OCSP và máy chủ dịch vụ.

Những hệ thống PKI lớn được cấp phép bởi các tổ chức, cơ quan uy tín sẽ rất ít bị tấn công bởi dùng các khóa công khai RSA có độ dài khóa lớn (>2048 bit) hoặc các khóa công khai trên hệ mật Elliptic. Thông thường các PKI này sẽ hỗ trợ máy chủ OCSP riêng rẽ có khả năng chống DoS, DDoS tốt và cài đặt đầy đủ tính năng OCSP Stapling [3]. Để sử dụng hệ thống PKI này thì chi phí trả sẽ lớn hơn so với các giải pháp PKI tự phát triển.

Tuy nhiên, đối với các tổ chức, doanh nghiệp nhỏ thiết lập hệ thống PKI của riêng mình thông qua đội ngũ quản trị riêng hoặc thuê bên thứ ba khác, thì nguy cơ các tấn công trên là rất cao. Bởi đội ngũ quản trị hoặc các bên thứ ba cung cấp PKI thường hay thiết lập các thông số PKI mặc định: như PKI mã nguồn mở có độ dài khóa 1024 bit (thậm chí vẫn hỗ trợ 512 bit).

BIỆN PHÁP PHÒNG CHỐNG

Cài đặt tùy chọn OCSP Stapling trên máy chủ dịch vụ

Nếu một trang web HTTPS (hoặc một máy chủ dịch vụ khác) được rất nhiều khách truy cập, thì máy chủ truy vấn OCSP của CA sẽ phải xử lý tất cả các yêu cầu OCSP được thực hiện bởi trình duyệt của từng máy khách truy cập.

OCSP Stapling là một tùy chọn khi cài đặt máy chủ OCSP, cấu hình mặc định sẽ không được bật lên. Khi máy chủ web được cấu hình OCSP stapling hoàn chỉnh, đầu tiên máy chủ sẽ thực hiện truy vấn OCSP đến máy chủ OCSP của CA và lưu trữ kết quả trên bộ nhớ đệm của máy chủ web. Máy chủ web sẽ tự động thực hiện lại quá trình truy vấn OCSP và cập nhật kết quả này sau một khoảng thời gian nhất định. Kết quả truy vấn OCSP này sẽ được đính kèm trong quá trình thực hiện TLS Handshake giữa trình duyệt và máy chủ web thông qua thuộc tính mở rộng Certificate Status Request. Từ đó trình duyệt có thể sử dụng ngay kết quả kiểm tra tình trạng hợp lệ của chứng thư số TLS mà không cần phải thực hiện truy vấn đến máy chủ OCSP của CA [4].

Hình 4. Cơ chế OCSP Stapling

Việc bật OCSP Stapling chống được tấn công DoS hoặc DDoS bởi các lý do:

- Kẻ tấn công không biết địa chỉ máy chủ OCSP để tấn công (địa chỉ này không đình kèm theo chứng thư số người dùng).

- Thiết lập OCSP Stapling, khi đó người dùng gửi chứng thư số của mình tới máy chủ dịch vụ kẻ tấn công coi đó là phiên liên lạc bình thường và không biết lúc nào để thực hiện DoS hoặc DDoS được. Vì để thực hiện các cuộc tấn công này yêu cầu nhiều thiết bị hoạt động tấn công cùng một thời điểm.

Tự sinh cặp khóa công khai từ phía người dùng

Người dùng có thể tự sinh cặp khóa công khai dựa trên mã nguồn tự phát triển, mã nguồn mở hoặc sinh từ thiết bị phần cứng an toàn chống sao chép (PKI Token, HSM) được cung cấp bởi bên thứ ba tin cậy.

Quá trình xin cấp chứng thư số trên hệ thống PKI người dùng chỉ cần cung cấp khóa công khai. Điều này, sẽ hạn chế nguy cơ mất khóa riêng và đảm bảo tính riêng tư về khóa của người dùng.

Thông tin về khóa riêng bị mất về CA

Khi bị mất hoặc lộ lọt khóa riêng, người dùng cần thông tin ngay lập tức về các CA để hủy bỏ chứng thư. Điều này sẽ hạn chế các tấn công giả mạo người dùng.

Thiết kế, triển khai an toàn hệ thống PKI mã nguồn mở

Đối với các quản trị hệ thống PKI mã nguồn mở cần cấu hình hệ thống PKI dựa trên các tiêu chuẩn an toàn về các thuật toán hiện hành, không nên để cấu hình mặc định.

Ngoài ra, có thể triển khai thêm các biện pháp phòng chống tấn công DoS, DDoS trong hệ thống như: giải pháp cân bằng tải, tường lửa hoặc hệ thống PKI dự phòng.

KẾT LUẬN

Qua bài viết, thấy rằng việc tấn công quá trình thu hồi chứng thư số trong hạ tầng cơ sở khóa công khai hiện nay là khả thi với các hệ thống PKI tự phát triển (bởi các phần mềm mã nguồn mở) thường xảy ra với các hệ thống PKI công cộng lớn nhưng với nhiều điều kiện tấn công hà khắc đi kèm. Hậu quả các cuộc tấn công này dẫn tới là nghiêm trọng, gây thiệt hại lớn. Yêu cầu đặt ra là quản trị viên CA cần có sự hiểu biết thấu đáo về các tấn công này để triển khai PKI được hiệu quả và có các biện pháp phòng tránh. Với người dùng, nên tự sinh cặp khóa công khai khi xin cấp chứng thư, thông tin ngay cho bên CA khi lộ khóa riêng và nên thường xuyên cập nhật các tham số an toàn cho trình duyệt Web.

TÀI LIỆU THAM KHẢO

1. Đỗ Quang Trung, Nguyễn Văn Nghị, Đào Thị Thu Thủy, Một số nguyên nhân gây rò rỉ khóa riêng chứng thư số, Tạp chí ATTT, số 4(056) 2020.

2. Scott Helme, HTTPS Certificate Revocation is broken, and it’s time for some new tools, arstechnica.com, 2017.

3. Alexey Samoshkin, SSL certificate revocation and how it is broken in practice, 2018.

4. https://medium.com/@alexeysamoshkin/howssl-certificate-revocation-is-broken-in-practiceaf3b63b9cb3

5. Alexey Busygin, Legacy of Heartbleed: MITM and Revoked Certificates, 2018.