HPKP là tiêu đề phản hồi bảo mật web không được dùng nữa, từ viết tắt của HTTP Public Key Pins. Nó nhằm ngăn chặn tổ chức cấp chứng chỉ bị xâm nhập hoặc giả mạo cấp chứng chỉ HTTPS được công khai, nhưng do hacker kiểm soát, đáng tin cậy cho một trang web. Trong trường hợp này, tin tặc có thể giải mã bất kỳ lưu lượng truy cập HTTPS nào bị chặn vào trang web bị ảnh hưởng.
Mẹo: Tiêu đề phản hồi web là các phần siêu dữ liệu mà máy chủ đưa vào khi phản hồi các yêu cầu. Một tập hợp con nhỏ trong số này được gọi là tiêu đề bảo mật, vì chúng kích hoạt và cấu hình các tính năng bảo mật khác nhau.
Cơ sở hạ tầng chứng chỉ HTTPS
Cơ sở hạ tầng chứng chỉ mà HTTPS được xây dựng dựa trên web tin cậy. Một số công ty hoạt động với tư cách là Tổ chức phát hành chứng chỉ (CA) xuất bản một hoặc nhiều chứng chỉ gốc. Một tập hợp các chứng chỉ gốc được bao gồm trong tất cả các thiết bị trong cửa hàng tin cậy. Khi một trang web yêu cầu chứng chỉ HTTPS của chính nó từ CA, chứng chỉ đó được ký bởi chứng chỉ gốc. Khi máy tính của bạn nhìn thấy chứng chỉ HTTPS, nó sẽ kiểm tra chữ ký. Nếu chứng chỉ được ký bởi chứng chỉ gốc mà nó tin cậy, thì máy tính của bạn cũng tin cậy chứng chỉ HTTPS.
Mẹo: Một CA cũng có thể có các chứng chỉ trung gian được ký bởi chứng chỉ gốc. Các chứng chỉ trung gian này cũng có thể được sử dụng để ký chứng chỉ HTTPS cho các trang web.
Công việc của cơ quan cấp chứng chỉ là chỉ cấp chứng chỉ khi họ đã xác minh rằng người yêu cầu họ là chủ sở hữu thực sự của trang web. Ý tưởng với cấu trúc này là nếu một tin tặc tạo chứng chỉ của riêng họ cho một trang web, thì chứng chỉ đó sẽ không được ký bởi CA mà máy tính của bạn tin cậy và vì vậy bạn sẽ thấy một cảnh báo.
HPKP đã làm gì?
Toàn bộ hệ thống chứng chỉ dựa vào độ tin cậy của các cơ quan cấp chứng chỉ. Tuy nhiên, ban đầu, không có biện pháp bảo vệ nào chống lại việc CA bị tin tặc xâm nhập hoặc giả mạo và chọn cấp chứng chỉ không chính xác.
HPKP được thiết kế để bảo vệ chống lại khả năng này. Nó cho phép các trang web chỉ định một danh sách độc quyền các chứng chỉ có thể được tin cậy cho trang web trong một quá trình được gọi là ghim. Có thể ghim chứng chỉ gốc hoặc chứng chỉ trung gian, về cơ bản cho phép một CA duy nhất cấp chứng chỉ cho trang web. Cũng có thể ghim chứng chỉ của chính trang web đó, ngăn không cho CA phù hợp cấp chứng chỉ hợp lệ khác.
Về mặt kỹ thuật, bản thân chứng chỉ không được ghim mà là một hàm băm của khóa của chứng chỉ. Hàm băm là một hàm mật mã một chiều. Điều này có nghĩa là có thể xác minh rằng chứng chỉ được trang web hiển thị cho trình duyệt khớp với chứng chỉ được ghim, nhưng không thể sử dụng hàm băm để tạo chứng chỉ hợp lệ.
HPKP yêu cầu ghim ít nhất hai khóa, ít nhất một trong số đó phải là bản sao lưu và không nằm trong chuỗi chứng chỉ hiện tại. Bản sao lưu này cho phép bạn định cấu hình chuyển giao trơn tru cho chứng chỉ mới mà không ngăn người dùng có thể kết nối.
Nếu chứng chỉ HTTPS được trang web hiển thị cho trình duyệt không khớp với một trong các chứng chỉ được ghim, thì trình duyệt bắt buộc phải từ chối chứng chỉ đó và ngăn người dùng bỏ qua thông báo lỗi chứng chỉ.
Cấu trúc của HPKP
Tiêu đề HPKP có ba phần bắt buộc và hai phần tùy chọn. Tiêu đề phải có tiêu đề “Public-Key-Pins”, hai hoặc nhiều chứng chỉ tiếp theo cần có mã băm SHA256 được mã hóa base64 được ghim ở định dạng 'pin-sha256 = ””'. Phần bắt buộc cuối cùng là "độ tuổi tối đa", là số tính bằng giây cho khoảng thời gian mà trình duyệt sẽ áp dụng các giới hạn.
Mẹo: SHA256 là thuật toán băm được HPKP sử dụng. Base64 là một bộ ký tự có 64 ký tự: 0-9, az, AZ và các ký tự đặc biệt “+” và “/”. Dấu “=” được sử dụng để thêm vào hai ký tự cuối cùng nếu cần.
Các cài đặt tùy chọn là “includeSubDomains” và “report-uri”. “IncludeSubDomains hướng dẫn trình duyệt áp dụng các biện pháp bảo vệ HPKP cho bất kỳ miền phụ nào của trang web hiện tại trong khoảng thời gian của bộ đếm thời gian“ max-age ”. “Report-uri” là một tính năng cho phép một trang web được chỉ định nơi có thể gửi các báo cáo lỗi và được thiết kế để giúp xác định và giải quyết các vấn đề.
Có một biến thể thứ hai của tiêu đề có tiêu đề “Public-Key-Pins-Report-Only”. Tuy nhiên, mọi thứ đều giống nhau, nếu lỗi được tìm thấy, không có hành động nào được thực hiện ngoài việc trả lại thông báo lỗi cho trình duyệt và cho “report-uri” nếu một lỗi được định cấu hình. Biến thể chỉ báo cáo được thiết kế để cho phép kiểm tra toàn bộ tiêu đề trước khi triển khai, nơi lỗi sẽ không gây ra sự cố cho người dùng.
Vấn đề với HPKP
HPKP không được dùng nữa vì hai lý do chính. Có hai cách mà tiêu đề có thể gây ra sự cố nghiêm trọng cho trang web sử dụng nó, chúng được đặt tên là HPKP Suicide và Ransom PKP.
HPKP Suicide là một vấn đề mà chủ sở hữu hợp pháp của trang web mất quyền truy cập vào tất cả các khóa được ghim. Điều này có thể xảy ra do vô tình xóa, tấn công, vi-rút, hỏng dữ liệu hoặc vì nhiều lý do khác. Do sự phức tạp của việc triển khai HPKP một cách chính xác, và đặc biệt là luôn cập nhật nó trong quá trình luân chuyển chứng chỉ, tương đối dễ xảy ra lỗi cấu hình. Tuy nhiên, với HPKP, nếu bạn làm sai, tất cả những khách truy cập gần đây vào trang web của bạn sẽ bị ngăn không thể truy cập vào trang web của bạn trong khoảng thời gian của bộ đếm thời gian "max-age". Trang web smashingmagazine.com đã đăng một bài viết trình bày chi tiết trải nghiệm của mình với chính xác vấn đề này, về cơ bản đã khiến trang web ngoại tuyến đối với hầu hết khách truy cập trong bốn ngày trước khi bản sửa lỗi được triển khai.
Ransom PKP là một cuộc tấn công trên lý thuyết, trong đó tin tặc có quyền truy cập vào máy chủ web, sau đó đánh cắp tất cả các chứng chỉ và khóa đáng tin cậy, sau đó yêu cầu trả lại tiền chuộc. Trong thiết lập thông thường, bạn chỉ có thể tạo các khóa và chứng chỉ mới, đồng thời sao lưu và chạy trang web trong vòng chưa đầy một giờ. Tuy nhiên, khi bật HPKP, các khóa đó sẽ được ghim, nếu bạn không thể cung cấp chứng chỉ đã ghim cho người dùng, họ sẽ không thể truy cập trang web trong khoảng thời gian của bộ hẹn giờ “max-age”. Tùy thuộc vào cấu hình và nếu tồn tại các bản sao lưu, không thể giải quyết vấn đề này.
Với cả hai vấn đề này, người dùng mới sẽ có thể truy cập trang web như bình thường, vì họ sẽ không bao giờ thấy tiêu đề HPKP cũ hướng dẫn trình duyệt của họ chỉ tin tưởng các chứng chỉ hiện đang bị thiếu. Tuy nhiên, tất cả khách truy cập gần đây, chẳng hạn như khách hàng thường xuyên và độc giả, sẽ phải đợi trong toàn bộ thời gian của bộ đếm thời gian "độ tuổi tối đa".
Do mức độ nghiêm trọng của những vấn đề này và sự phức tạp của cấu hình và bảo trì, việc sử dụng tiêu đề HPKP là rất thấp. Cuối cùng, các trình duyệt lớn đã đồng ý bỏ hỗ trợ hoàn toàn cho nó và trong vòng một vài năm, tiêu đề HPKP đã không còn được chấp nhận trên toàn cầu.