An toàn cho PKI
Chức năng an toàn cho hệ thống PKI được phân chia thành an toàn hệ thống và an toàn mật mã.
An toàn hệ thống với các yêu tố chính sau:
- Bảo đảm an toàn cho máy chủ CA: Mọi tấn công hệ thống PKI trước hết nhằm làm mất khả năng an toàn của mạng CNTT bên trong hạ tầng PKI, bao gồm các máy chủ CA. Khi có khả năng truy cập đến các máy chủ CA, kẻ tấn công sẽ tạo ra các CTS giả mạo và hạ tầng PKI bị coi là mất tính năng tin cậy. Đầu tiên, kẻ tấn công nhằm vào hệ thống bảo vệ an toàn vật lý, phá vỡ ngăn cách tiếp cận giữa các vùng an toàn khác nhau và làm lộ ra các dữ liệu xác thực sinh trắc, mật mã... nhằm truy cập vật lý đến các CA. Tiếp đến là các tấn công lôgic, những lựa chọn cài đặt các cơ chế an toàn hay các tùy chọn cấu hình không đúng đắn dẫn đến xảy ra lỗi lôgic của hệ thống.
- Ngăn chặn các mối quan hệ tin cậy bắc cầu: Các mối quan hệ tin cậy này cho phép người quản trị có quyền truy cập bắc cầu đến nhiều hệ thống CA trong một miền. Nếu quyền ưu tiên bị leo thang trong một hệ thống thì nó sẽ được leo thang trong tất cả các hệ thống còn lại.
- Thiết lập cơ chế xác thực mạnh mọi lúc, mọi nơi, sử dụng cơ chế xác thực hai nhân tố được thiết lập từ các đầu cuối đến với nhau. Áp dụng xác thực mạnh riêng biệt cho hệ thống CA và RA để giảm thiểu nguy cơ sử dụng các thiết bị phần cứng an toàn (HSM) sinh các CTS giả. Chỉ sử dụng các phần mềm ứng dụng nội bộ để vận hành RA và các chức năng cá thể hóa thẻ Smartcard, để không làm lộ lọt thông tin liên quan đến các quá trình kiểm tra.
- Bảo vệ các dữ liệu kiểm toán để dễ dàng theo dõi vết kẻ tấn công. Đưa dữ liệu kiểm toán vào hệ thống riêng biệt và phân tách vai trò kiểm soát truy cập nhằm tạo ra một lớp an toàn bổ sung có chức năng theo dõi vết chuẩn hóa và tập trung hóa.
- Dữ liệu gỡ bỏ CTS cũng cần có bản danh sách trắng (White list). Trong khi CRL cài đặt cơ chế danh sách đen (Black list) cho các CTS bị gỡ bỏ thì OCSP cài đặt cả cơ chế danh sách đen và danh sách trắng. Để cung cấp danh sách trắng các CTS, khi đó CA phải cung cấp dịch vụ trả lời với trạng thái hiển thị các CTS đã được cấp phát. CTS nào không khớp với các thông báo trả lời hiện hữu thì bị coi là giả mạo.
Ngoài ra, thiết bị HSM được sử dụng để phân tách các vai trò trong hệ thống, xác thực hai nhân tố; sử dụng CTS để ký số các mã chương trình nhằm chống lại việc đánh cắp các CTS và các khóa bí mật. RA cũng cần được bảo vệ để tránh kẻ tấn công yêu cầu cấp phát và nhận được các CTS giả một cách hợp thức. Cũng cần lưu ý đến các cài đặt an toàn. Đó là các chương trình đại diện SSL được cài đặt để giải mã các kết nối SSL khởi đầu từ bên trong mạng liên kết. Chúng hỗ trợ cài đặt quét mã độc hại và bảo vệ chống mất dữ liệu tại biên giới mạng liên kết. Các chương trình đại diện SSL có thể trở thành nguồn cho tấn công người đứng giữa (MITM) vì các CTS của chúng có chức năng giống như các CTS trung gian.
Mật mã trong hệ thống PKI phải bảo đảm chống lại các dạng tấn công cơ bản sau:
- Tấn công thực hiện ký số hợp lệ lên các phần mềm độc hại rồi sau đó phát tán các phần mềm này như là một phần mềm hợp lệ, nếu kiểm tra CKS trên chúng.
- Tấn công chống lại các thuật toán, như tấn công đếm thời gian (Timing attack) thực hiện các phép toán mật mã, tấn công vào các hệ mật có độ dài khóa nhỏ hay tấn công dựa vào các va chạm (Collision) của hàm băm MD5.
- Tấn công chống lại các cài đặt mật mã. Kiểu tấn công này dựa vào rất nhiều các giải pháp cài đặt không hoàn thiện các nguồn sinh số ngẫu nhiên. Các nhà nghiên cứu đã khám phá ra một số lượng đáng kể các khóa RSA tích cực hoặc là bị đặt ngầm định, lặp lại hoặc có chứa các thừa số nguyên tố chia sẻ.
Trường hợp khóa bị đặt ngầm định là do các cấu hình chương trình thực thi đơn giản, các khóa được tích hợp sẵn vào thiết bị (ở nơi sản xuất) không được thay thế lại trước khi đưa vào sử dụng.
Các khóa bị lặp lại hoặc chia sẻ thừa số nguyên tố được tạo thành từ các nguồn sinh số ngẫu nhiên với độ bất định thấp. Các cặp khóa lặp hoàn toàn là khi cả hai thừa số nguyên tố đều được sinh ra với cùng độ bất định thấp. Trường hợp chia sẻ thừa số nguyên tố được tạo ra khi thừa số nguyên tố thứ nhất được sinh ra từ một nguồn sinh số ngẫu nhiên với độ bất định thấp, và thừa số nguyên tố thứ hai lại được sinh ra sau khi nguồn sinh số ngẫu nhiên này thiết lập lại mầm sinh khóa để cải thiện độ bất định. Trường hợp cả hai thừa số nguyên tố được sinh ra không lặp lại, nhưng đều từ nguồn sinh số ngẫu nhiên với độ bất định thấp hoặc không hoàn toàn ngẫu nhiên thì cũng là điểm yếu dễ bị tấn công bằng các thuật toán phân tích số.
Trên thực tế, có những lớp số nguyên tố được sinh ra từ các nguồn sinh số ngẫu nhiên yếu; đã không kháng được các tấn công phân tích số sử dụng phương pháp phân tích của Coppersmith với thuật toán LLL.
Các khóa mật mã cũng có nguy cơ bị lộ do các nguồn sinh số ngẫu nhiên được sử dụng kém chất lượng về khía cạnh mật mã, nhất là các nguồn sinh bằng phần cứng và được thiết lập sẵn trong các thẻ Smartcard (dạng Etoken) được sử dụng để sinh và lưu trữ khóa bí mật RSA.
Nguồn sinh số ngẫu nhiên và an toàn mật mã trong PKI
Hiện nay, nhiều hạ tầng PKI đang sử dụng các thiết bị Smartcard làm phương tiện sinh và lưu trữ các khóa bí mật RSA khi cấp phát các CTS. Các Smartcard này thường là các USB Token, được các hãng chuyên nghiệp sản xuất theo đặt hàng. Có các nguồn sinh số ngẫu nhiên được thiết lập sẵn bên trong Smartcard thường được thông báo là có chất lượng tuân theo các tiêu chuẩn về an toàn của quốc tế, với chứng nhận FIPS 140-2 mức 2.
Các Smartcard hoạt động có tính chất độc lập so với các máy tính trạm mà chúng giao tiếp, do đó đòi hỏi phải có nguồn sinh số ngẫu nhiên độc lập bảo đảm vận hành các chức năng mật mã. Smartcard thường có năng suất vận hành và khả năng lưu trữ thấp, nên chức năng mật mã được thiết lập bên trong chúng cũng phải rất nhỏ gọn và có hiệu quả, kể cả các nguồn sinh số ngẫu nhiên được thiết lập sẵn trong Smartcard. Do đó các nguồn sinh số ngẫu nhiên này không hoàn toàn giống các nguồn sinh số ngẫu nhiên được thiết lập trong các hệ điều hành máy tính. Điều này có thể gây ra các vấn đề mất an toàn đối với các khóa mật mã.
Sau đây là một trường hợp thực tế mà khóa mật mã RSA của CTS đã bị tấn công ảnh hưởng tới an toàn của giao dịch điện tử, đã xảy ra ở Đài Loan.
Năm 2003, Đài Loan triển khai Chính phủ điện tử (E-Government) bằng cách cung cấp hạ tầng PKI quốc gia cho công dân. Dịch vụ CTS quốc gia này cho phép các công dân sử dụng các thẻ chứng minh nhân dân (ID Card) để xác thực trong nhiều giao dịch số hóa. Các CTS sử dụng khóa mật mã RSA có độ lớn 1024 bit. Các khóa này được sinh ra bởi các Smartcard có các nguồn sinh số ngẫu nhiên phần cứng được thiết lập sẵn bên trong, vượt qua chứng nhận chuẩn FIPS 140-2 mức 2.
Tuy nhiên, đến tháng 7/2012, các kết quả tấn công làm lộ khóa RSA của CTS quốc gia Đài Loan đã được công bố. Đến tháng 6/2013, danh sách các CTS bị lộ khóa đã được thông báo. Cơ quan cấp CTS của Đài Loan đã yêu cầu các thuê bao có CTS bị lộ khóa phải thay khóa mới; Gỡ bỏ các CTS bị lộ khóa và thay thế tất cả các thẻ bị tổn thương thuộc cùng loạt cấp phát.
Trong trường hợp này, kẻ tấn công đã sử dụng CSDL bao gồm hơn hai triệu CTS của Đài Loan được công bố công khai và phân tích thành công được 184 khóa RSA khác nhau. Trong 184 khóa này, có 103 khóa chia sẻ các thừa số nguyên tố và có thể dễ dàng bị phân tích bằng thuật toán tìm ước số chung lớn nhất theo loạt (Batch-GCD). Với 81 khóa còn lại không chia sẻ các thừa số nguyên tố, kẻ tấn công đã khai thác sâu hơn những sai lầm trong việc sinh số ngẫu nhiên. Hacker đã sử dụng các số nguyên tố được chia sẻ làm điểm tựa để đặc trưng hóa các sai lầm và sau đó dùng tấn công khôi phục khóa từng phần kiểu Coppersmith.
Đây là ứng dụng công khai thành công đầu tiên của tấn công kiểu Coppersmith. Điều đặc biệt là tấn công này được thực hiện rất “ngẫu hứng” và dễ dàng, nên là loại tấn công nguy hiểm, vì các CTS để công khai trên Internet, dễ dàng có thể tiếp cận được. Nguồn các CTS càng lớn thì tỷ lệ tấn công thành công càng cao, chưa kể các phương pháp phân tích số tiếp tục được cải tiến hoặc mở rộng.
Từ trường hợp tấn công trên đây, có thể phân tích một số lỗi trong nguồn sinh số ngẫu nhiên:
- Nếu nguồn sinh số ngẫu nhiên đảm bảo chất lượng thì các thừa số nguyên tố p, q trong hệ mật RSA được sinh ra sẽ ngẫu nhiên và các tấn công phân tích các thừa số nguyên tố sẽ không dễ dàng thành công được.
- Điểm mấu chốt là, một khi được sinh ngẫu nhiên thực sự, thì các thừa số nguyên tố sẽ tuân theo đúng tỷ lệ về phân bố các số nguyên tố trong các số nguyên ngẫu nhiên, xác suất lặp lại là vô cùng nhỏ trong các số nguyên có tới 512 bit và càng nhỏ đối với các số nguyên có 1024 bit. Các số nguyên tố được sinh ra sẽ không rơi vào các mẫu sai sót để có thể áp dụng tấn công kiểu Coppersmith.
- Sai lầm lớn nhất là lặp lại các thừa số nguyên tố trong quá trình tạo ra chúng sử dụng nguồn sinh số ngẫu nhiên. Trong ví dụ trên, người ta chỉ cần sử dụng thuật toán tìm ước số chung lớn nhất theo loạt (Batch-GCD) là đã có thể phân tích được 103 khóa bí mật.
- Trong phương pháp chia thử theo loạt (Batch trial division), xuất phát từ các khóa mật mã hay thừa số nguyên tố bị lặp lại, người ta dchỉ ra mô hình tạo ra các mẫu để sinh các thừa số nguyên tố mà do mắc sai lầm mà các nguồn sinh số ngẫu nhiên có thể sinh ra chúng.
Nâng cao chất lượng nguồn sinh số ngẫu nhiên
Giải pháp nâng cao chất lượng nguồn sinh số ngẫu nhiên tốt là không được cho phép sinh các số ngẫu nhiên có độ bất định thấp và không an toàn mật mã. Các nguồn sinh số ngẫu nhiên phải không cho phép lặp lại hoặc sinh ra các số ngẫu nhiên theo một mẫu nào đó.
Việc tìm được các thừa số nguyên tố lặp lại từ nguồn sinh số ngẫu nhiên thể hiện rằng, không chỉ các khóa RSA cụ thể này bị tổn thương mà hơn thế nữa, nguồn sinh số ngẫu nhiên này chất lượng kém hoặc không hoạt động đúng chức năng. Việc cần làm là phải gỡ bỏ toàn bộ các khóa RSA được sinh ra bởi nguồn sinh số ngẫu nhiên đó và đồng thời gỡ bỏ luôn cả nguồn sinh số ngẫu nhiên tương ứng và thay nó bằng một nguồn sinh số ngẫu nhiên đảm bảo chất lượng.
Hơn thế nữa, trong trường hợp không có các thừa số nguyên tố lặp lại thì cũng chưa thể khẳng định được rằng nguồn sinh số ngẫu nhiên là an toàn. Người ta có thể thêm số tuần tự của thẻ Smartcard thành các bit đứng đầu, khiến các khóa RSA được sinh ra không bao giờ bị lặp lại, nhưng khóa RSA này vẫn có thể bị phân tích bởi những kẻ tấn công.
Có rất nhiều tổn thương tiềm năng gây ra từ nguồn sinh số ngẫu nhiên tồi. Việc quan trọng là phải kiểm thử kỹ từng thành phần của nguồn sinh số ngẫu nhiên để đánh giá chất lượng của nó trước khi đưa vào một ứng dụng cụ thể.
Kết luận
Việc sinh các số ngẫu nhiên chất lượng cao có tính quyết định đối với độ an toàn của các hệ thống mật mã. Đây là một công việc đầy khó khăn và đã có một số tiêu chuẩn về vấn đề này. Tuy nhiên, các tiêu chuẩn này trên thực tế cũng cần thường xuyên được điều chỉnh, cải tiến hoặc bổ sung nâng cao chất lượng. Bên cạnh đó, các nguồn sinh số ngẫu nhiên cũng có thể bị cài kênh ngầm hay cửa sập để sau này dễ dàng phá vỡ các tham số mật mã do chúng sinh ra.
Để có nguồn sinh số ngẫu nhiên tốt cho ứng dụng mật mã, đối với phần cứng và phần mềm, nhất là đối với các thiết bị Smartcard, cần có những nghiên cứu sâu sắc cả về lý thuyết và thực hành theo các chuẩn quốc tế.