Chúng tôi mô tả một dịch vụ đám mây sử dụng phần cứng bảo mật để lưu trữ các khoá mã hoá, chẳng hạn như quyền truy cập vào các khoá này được bảo vệ bằng một yếu tố tri thức có entropi thấp (ví dụ: mã PIN màn hình khoá). Phần cứng bảo mật được thiết kế để ngăn chặn các cuộc tấn công bằng phương thức brute force (tấn công bằng cách thử mọi mật khẩu có thể) bằng cách khiến các khoá mật mã được lưu trữ không thể truy xuất vĩnh viễn sau khi có quá nhiều lần thử không thành công để cung cấp hệ số kiến thức chính xác.
Tác giả: Shabsi Walfish
Ngày phát hành phiên bản: 06/03/2018
Lưu ý: Tài liệu này vẫn đang trong quá trình hoàn thiện và thông tin chi tiết về cách triển khai vẫn đang được hoàn tất. Khi hệ thống ổn định và có thể tạo thêm tài liệu, chúng tôi sẽ cập nhật thêm thông tin chi tiết vào tài liệu này (đặc biệt là cùng với các bản phát hành nguồn mở có liên quan).
Tổng quan
Theo truyền thống, việc mã hoá (được dùng để đảm bảo quyền riêng tư của dữ liệu) yêu cầu sử dụng các khoá bí mật có độ hỗn loạn cao theo quan điểm của kẻ tấn công. Bạn cần có độ hỗn loạn cao vì giao thức mã hoá phải chống lại các cuộc tấn công bằng vũ lực nhằm khám phá không gian của tất cả các bí mật có thể xảy ra cho đến khi tìm thấy bí mật chính xác. Với sức mạnh tính toán hiện có, yêu cầu entropy tối thiểu hợp lý đối với các bí mật mã hoá có thể nằm trong khoảng từ 70 đến 80 bit. Thật không may, con người rất khó ghi nhớ và gợi nhắc một cách đáng tin cậy mật khẩu hoặc thông tin bí mật khác với lượng entropy đó1, đặc biệt là nếu mật khẩu hoặc thông tin bí mật đó hiếm khi được sử dụng (nhưng việc sử dụng thường xuyên mật khẩu có độ hỗn độn cao lại khó khăn và tẻ nhạt). Điều này đặt ra cho chúng ta một vấn đề đầy thách thức: làm cách nào để bảo vệ dữ liệu riêng tư bằng công nghệ mã hoá, nếu chúng ta muốn mật khẩu là "hệ số kiến thức" mà người dùng rất có thể sẽ nhớ được? Vì nhiều lý do, vấn đề này rất khó giải quyết nên các dịch vụ Bộ nhớ trên đám mây thường chỉ mã hoá dữ liệu bằng các khoá bí mật do chính nhà cung cấp Bộ nhớ trên đám mây quản lý, thay vì dựa vào người dùng để nhớ khoá bí mật của riêng họ.
Một phương pháp để thu hẹp khoảng cách giữa các yêu cầu đối với khoá bí mật mã hoá và khoá bí mật dễ nhớ của con người là sử dụng dịch vụ Kho khoá trên đám mây (CKV) để lưu trữ "khoá khôi phục" có độ hỗn loạn cao, được bảo vệ bằng khoá bí mật dễ nhớ của con người có độ hỗn loạn thấp. Dịch vụ CKV sẽ chỉ phát hành khoá khôi phục cho một bên chứng minh được việc biết chính xác mật khẩu mà con người có thể ghi nhớ. Dịch vụ CKV có thể ngăn chặn các cuộc tấn công bằng phương thức brute force vào mật khẩu dễ nhớ của con người. Dịch vụ này sẽ thực thi giới hạn tuyệt đối về số lần thử không thành công để chứng minh việc biết mật khẩu. Khoá khôi phục chính là khoá mật mã đối xứng tiêu chuẩn, phù hợp để sử dụng với một lược đồ mã hoá (được xác thực) có thể dễ dàng mã hoá một lượng lớn dữ liệu (chẳng hạn như bản sao lưu ổ đĩa) có thể được lưu trữ an toàn ở bất cứ đâu – dữ liệu đã mã hoá như vậy sẽ vô dụng đối với bất kỳ ai không thể lấy khoá khôi phục.
Sách trắng này mô tả phương pháp của chúng tôi để xây dựng dịch vụ Kho khoá trên đám mây bằng cách sử dụng Mô-đun phần cứng đáng tin cậy (THM). Lần triển khai đầu tiên của dịch vụ CKV được thiết kế để bảo vệ khoá khôi phục bằng Hệ số kiến thức trên màn hình khoá (LSKF) của người dùng – mã PIN, mật khẩu hoặc hình mở khoá bí mật dùng để mở khoá điện thoại thông minh. Con người có thể ghi nhớ LSKF một cách đáng tin cậy. Đồng thời, các khoá bí mật LSKF như vậy thường chỉ có đủ độ hỗn loạn để chống lại một kẻ tấn công có số lần thử rất hạn chế, khiến chúng phù hợp với dịch vụ CKV.
Ứng dụng đầu tiên của dịch vụ Kho khoá trên đám mây sẽ là bật tính năng sao lưu Android được mã hoá phía máy khách. Trước đây, các tệp được mã hoá cục bộ trên thiết bị Android sử dụng một khoá được bảo vệ bằng LSKF của người dùng, nhưng các bản sao lưu của các tệp đó được lưu trữ (và mã hoá) trong đám mây không được LSKF bảo vệ. Lần đầu tiên, Cloud Key Vault cũng hỗ trợ tính năng bảo vệ màn hình khoá cho các bản sao lưu Android được lưu trữ trên đám mây. Điều này có nghĩa là máy chủ của Google không thể truy cập hoặc khôi phục nội dung của các bản sao lưu đã mã hoá – chỉ thiết bị có LSKF của người dùng mới có thể giải mã các bản sao lưu đó.
Khái niệm cốt lõi
Ban đầu, nền tảng ứng dụng duy nhất được hỗ trợ cho dịch vụ Kho khoá trên đám mây là hệ điều hành Android 9 Pie. Khi đề cập đến ứng dụng trong suốt tài liệu này, chúng tôi đang đề cập đến một thiết bị chạy hệ điều hành Android 9 Pie có Dịch vụ Google Play. Phương thức triển khai phía máy chủ của chúng tôi chạy trên các máy chủ Google được chỉ định đặc biệt có cài đặt thêm một chip Titan2. Vi mạch Titan do Google thiết kế đóng vai trò là thành phần phần cứng trong Mô-đun phần cứng đáng tin cậy của chúng tôi. Chúng tôi đặc biệt cung cấp cho vi mạch này một trình tải khởi động và chương trình cơ sở tuỳ chỉnh triển khai các giao thức và cơ chế thực thi bảo mật của chúng tôi (như mô tả trong tài liệu này). Chúng tôi sử dụng các kỹ thuật chứng thực phần cứng để đảm bảo rằng giao thức của chúng tôi thực sự đang chạy trên phần cứng Titan.
Dịch vụ CKV phải mở rộng quy mô để xử lý lưu lượng truy cập từ hàng tỷ3 thiết bị Android mà không làm mất bất kỳ lượng dữ liệu người dùng đáng kể nào do sự cố phần cứng (ví dụ: hỏng chip) hoặc bị gián đoạn kéo dài do bảo trì trung tâm dữ liệu. Vì lý do này, các máy chủ có chip Titan được sắp xếp thành các nhóm thuần tập, trong đó mỗi nhóm thuần tập bao gồm một số THM độc lập, mỗi THM chứa một bản sao của cùng một tài liệu khoá. Một nhóm thuần tập nhất định sẽ được phân phối trên các trung tâm dữ liệu khác nhau về mặt vật lý trong các khu vực bảo trì khác nhau, để đảm bảo rằng hệ thống có thể đáp ứng các mục tiêu về khả năng sử dụng và độ tin cậy. Để có thể mở rộng quy mô, ứng dụng sẽ được phân đoạn thành một số nhóm thuần tập khác nhau để chúng ta có thể điều chỉnh dung lượng của dịch vụ chỉ bằng cách thêm nhiều máy chủ hơn để tăng số lượng nhóm thuần tập có sẵn.
Bây giờ, chúng ta đã sẵn sàng liệt kê các thành phần chính của cấu trúc dịch vụ Cloud Key Vault.
Thành phần cấu trúc / Từ vựng
Hệ số tri thức của phương thức khoá màn hình (LSKF): Một thông tin bí mật mà con người có thể ghi nhớ, chẳng hạn như mã PIN ngắn, hình vẽ vuốt trên lưới dấu chấm 3 x 3 hoặc mật khẩu. Khoá bí mật này được dùng để bảo vệ khả năng mở khoá thiết bị trên thiết bị và được coi là yếu tố xác thực chính (hoặc "mạnh") cho phương thức khoá màn hình trên thiết bị cục bộ của người dùng.
Ứng dụng: Thiết bị của người dùng cuối chạy hệ điều hành Android 9 Pie và Dịch vụ Google Play hoặc phần mềm được hỗ trợ tương đương.
-
Khung Android: chúng tôi sử dụng thuật ngữ chung này (hoặc chỉ Khung) để đề cập đến các API trong Android 9 Pie trở lên và không đề cập đến bất kỳ bản phát hành nào trước đó.
Dịch vụ Google Play: Một tập hợp các dịch vụ và ứng dụng chạy trên thiết bị của người dùng cuối, cho phép thiết bị đó hoạt động với hệ thống tài khoản của Google và các API máy chủ tuỳ chỉnh.
Recovery Agent (Trình khôi phục): Một ứng dụng hệ thống chạy trong các dịch vụ của Google Play trong không gian người dùng trên thiết bị Android 9 Pie (hoặc tương tự). Tác nhân khôi phục chịu trách nhiệm thực thi phía Máy khách của nhiều giao thức và giao tiếp với Hệ điều hành Android nếu cần để tạo mọi thông điệp giao thức liên quan đến LSKF.
Yêu cầu khôi phục: Khi muốn truy xuất Khoá khôi phục, người dùng phải tạo một Yêu cầu khôi phục. Yêu cầu này có một bản sao đã mã hoá của LSKF mà người dùng tuyên bố là biết. Thông thường, người dùng sẽ được yêu cầu nhập LSKF của thiết bị cũ trên một thiết bị mới đang cố gắng truy cập vào Khoá khôi phục của thiết bị cũ.
Khoá khôi phục: Khoá bí mật mã hoá được dịch vụ Kho khoá trên đám mây bảo vệ và dùng để mã hoá (và xác thực) dữ liệu tại thiết bị Khách hàng. Sau khi Khoá khôi phục được đưa vào Vault (xem bên dưới), bạn có thể xoá bản sao cục bộ ngay khi Ứng dụng hoàn tất việc sử dụng khoá đó để mã hoá dữ liệu.
Dịch vụ Kho khoá trên đám mây (CKV): Một dịch vụ Internet cho phép các thiết bị Khách hàng lưu trữ các khoá mã hoá được bảo vệ bằng LSKF mà con người có thể ghi nhớ.
-
Nhóm thuần tập: Tập hợp các Máy chủ Vault/THM có thể đóng vai trò là bản sao dự phòng của nhau.
Khoá công khai của nhóm thuần tập: Khoá công khai của một cặp khoá do một Nhóm thuần tập cụ thể của THM tạo ra. Khoá riêng tư tương ứng chỉ có trong các THM đã có trong Nhóm thuần tập tại thời điểm tạo khoá.
Mô-đun phần cứng đáng tin cậy (THM): Một mô-đun bảo mật chuyên dụng (vi điều khiển) được thiết kế để cung cấp một môi trường điện toán tối giản và đáng tin cậy. Ở mức tối thiểu, phần tử bảo mật phải có khả năng tạo và/hoặc lưu trữ khoá bí mật, đồng thời duy trì một số trạng thái phát triển không thay đổi (để có thể ngăn chặn các cuộc tấn công liên quan đến việc đặt lại về trạng thái trước đó).
Vault: Một mục cụ thể trong cơ sở dữ liệu của Dịch vụ CKV, chứa Khoá khôi phục được bảo vệ bằng LSKF của một thiết bị. Một người dùng cuối có thể có nhiều Kho lưu trữ trên hồ sơ, mỗi Kho lưu trữ tương ứng với một thiết bị hoặc LSKF khác nhau. Chỉ THM trong Máy chủ Vault mới có thể kiểm tra hoặc trích xuất nội dung của Vault.
Máy chủ Vault: Một máy đa năng hoạt động trong trung tâm dữ liệu của Google đã được trang bị lại một cách đặc biệt để thêm Mô-đun phần cứng đáng tin cậy (THM).
Thiết kế giao thức
Giao thức CKV bao gồm một số giai đoạn như sau:
Khởi chạy
Để khởi chạy hệ thống, Google sẽ cung cấp một khoá công khai cho "gốc tin cậy" mà Khung sẽ sử dụng để xác minh chứng thực phần cứng của Google. Khoá ký cho gốc tin cậy này được lưu trữ ngoại tuyến và được bảo mật cẩn thận, đòi hỏi nhiều nhân viên tham gia để ký bằng khoá này. Khoá công khai cho gốc tin cậy này được tích hợp vào hệ điều hành Android và chỉ có thể thay đổi thông qua bản cập nhật hệ điều hành.
Google cũng định kỳ phát hành danh sách khoá công khai cho mỗi Nhóm thuần tập THM, cùng với một chứng thực trên danh sách. Thông tin chứng thực trong danh sách sử dụng chữ ký liên kết trở lại gốc tin cậy. Mỗi bản cập nhật của danh sách đã xuất bản cũng chứa một số thứ tự để có thể ngăn chặn việc khôi phục. Tác nhân khôi phục sẽ tìm nạp danh sách khoá công khai của Nhóm thuần tập được phát hành gần đây nhất và cung cấp danh sách đó cho Khung. Sau đó, Khung xác minh thông tin chứng thực và chọn ngẫu nhiên một Khoá công khai của nhóm thuần tập trong danh sách để sử dụng trong giai đoạn Tạo kho tiền điện tử.
Tạo Vault
Sau khi giúp Khung hoàn tất quá trình Khởi chạy bằng cách tìm nạp danh sách Khoá công khai của nhóm thuần tập, Tác nhân khôi phục sẽ yêu cầu Khung tạo một Kho tiền mới. Bất cứ khi nào người dùng nhập LSKF lần tiếp theo, Khung sẽ tạo một Khoá khôi phục mới và trước tiên sẽ mã hoá khoá đó bằng một khoá bắt nguồn từ hàm băm của LSKF, sau đó là bằng Khoá công khai của nhóm thuần tập do Khung chọn trong quá trình Khởi chạy. Kết quả là một blob được mã hoá là Kho lưu trữ được khung truyền lại cho Tác nhân khôi phục, sau đó tác nhân này sẽ tải blob đó lên dịch vụ CKV của Google.
Mở Vault
Khi Recovery Agent (Trình khôi phục) trên thiết bị mới cần truy cập vào Recovery Key (Khoá khôi phục) được lưu trữ trong một Vault (Kho tiền mã hoá) cụ thể, trước tiên, trình này sẽ nhắc người dùng nhập LSKF của thiết bị ban đầu đã tạo Vault. Sau đó, Recovery Agent (Trình quản lý khôi phục) sẽ yêu cầu Khung tạo Recovery Claim (Yêu cầu khôi phục) bằng cách sử dụng LSKF đó. Khung này sẽ tạo một Khoá bên xác nhận mới và mã hoá Khoá bên xác nhận đó cũng như hàm băm của LSKF đã xác nhận bằng cùng một Khoá công khai của nhóm thuần tập mà Khoá ban đầu được mã hoá. Blob được mã hoá thu được được gọi là Recovery Claim (Thông báo xác nhận quyền sở hữu để khôi phục). Khung này sẽ truyền thông báo này đến Recovery Agent (Trình khôi phục), sau đó trình này sẽ hiển thị thông báo đó cho dịch vụ CKV.
CKV định tuyến Recovery Claim (Đơn khiếu nại khôi phục) (và Vault tương ứng) đến Máy chủ Vault thuộc đúng Nhóm thuần tập. Sau đó, THM trong Máy chủ Vault sẽ giải mã Thông báo xác nhận quyền khôi phục và cố gắng trích xuất Khoá khôi phục từ Vault ban đầu bằng cách sử dụng hàm băm LSKF đã xác nhận (để lấy khoá mã hoá bên trong). Nếu hàm băm LSKF ban đầu và hàm băm LSKF được xác nhận quyền sở hữu khớp nhau, thì THM sẽ trích xuất Khoá khôi phục từ Kho lưu trữ bảo mật và mã hoá lại khoá đó bằng Khoá bên xác nhận quyền sở hữu có trong Thông báo xác nhận quyền sở hữu khoá khôi phục. Nếu không, THM sẽ tăng bộ đếm số lần thử không thành công. Khi bộ đếm số lần thử không thành công đạt đến giới hạn, THM sẽ từ chối xử lý mọi Yêu cầu khôi phục tiếp theo cho Kho lưu trữ này.
Cuối cùng, nếu mọi thứ diễn ra suôn sẻ, Khoá khôi phục được mã hoá lại (hiện được mã hoá theo Khoá bên xác nhận quyền sở hữu) sẽ được gửi lại từ Máy chủ kho lưu trữ đến Khung. Khung này sử dụng bản sao của Khoá xác nhận quyền sở hữu để giải mã Khoá khôi phục và giao thức hiện đã hoàn tất.
Biện pháp bảo mật
Hệ thống Kho khoá trên đám mây nhằm mục đích cung cấp khả năng "bảo vệ theo chiều sâu" bằng cách đưa các biện pháp bảo mật vào nhiều cấp của ngăn xếp. Để hiểu rõ cách hoạt động của các biện pháp bảo vệ này, chúng ta sẽ bắt đầu bằng cách mô tả Ứng dụng và tìm hiểu về các lớp trong ngăn xếp đến Dịch vụ kho khoá trên đám mây.
Bảo mật ứng dụng
Tuỳ thuộc vào nhà sản xuất thiết bị gốc (OEM) và thiết bị cụ thể, Hệ số kiến thức trên màn hình khoá (LSKF) thường được lưu trữ và bảo vệ trên thiết bị bằng nhiều phương thức khác nhau tuỳ theo OEM. Ví dụ: các thiết bị Pixel 2 của Google sử dụng mô-đun bảo mật phần cứng chống can thiệp để lưu trữ LSKF ở trạng thái nghỉ và thực thi các giới hạn tốc độ dựa trên phần cứng đối với việc xác thực LSKF. Các API Khung mới đang được giới thiệu để cho phép sử dụng Kho khoá trên đám mây được thiết kế để duy trì các cam kết bảo mật hiện có ở mức độ cao nhất có thể, ngay cả khi thiết bị sử dụng mô-đun bảo mật phần cứng như vậy để bảo vệ bộ nhớ của LSKF.
Phần này sẽ tập trung vào các vấn đề bảo mật và biện pháp bảo vệ liên quan ảnh hưởng đến tính năng Kho khoá trên đám mây mới, thay vì cố gắng cung cấp thông tin đầy đủ về tất cả các cơ chế bảo mật liên kết với LSKF.
Bảo mật API khung
Các API Khung mới được thêm vào để hỗ trợ dịch vụ CKV được đánh dấu là @SystemApi và yêu cầu các quyền đặc biệt để đảm bảo rằng chỉ các ứng dụng hệ thống được OEM phê duyệt mới có thể sử dụng các API này, chẳng hạn như Dịch vụ Google Play. Điều này chủ yếu loại bỏ mọi bề mặt tấn công trực tiếp có thể bị lộ cho các ứng dụng mà người dùng cài đặt trên thiết bị.
Các API Khung cũng đảm bảo rằng Kho lưu trữ chỉ được tạo cho Khoá công khai của nhóm thuần tập được chứng thực bằng một gốc đáng tin cậy. Nhà sản xuất thiết bị gốc (OEM) sẽ đưa gốc tin cậy vào Khung khi phân phối và không thể thay đổi gốc tin cậy nếu không có bản cập nhật hệ điều hành. Điều này giúp bạn yên tâm rằng LSKF chỉ được dùng để tạo Kho lưu trữ sẽ thực thi đúng cách các biện pháp bảo vệ bằng phương thức tấn công brute force dựa trên phần cứng. Bằng cách dựa vào THM trong dịch vụ Kho khoá trên đám mây để bảo vệ bằng phương thức tấn công brute force cho LSKF, chúng ta có thể đạt được mức độ bảo mật tương đương với việc sử dụng phần cứng bảo mật trên thiết bị cho cùng một mục đích (như các thiết bị Google Pixel 2).
Vì chúng tôi không giả định rằng LSKF sẽ được lưu trữ ở bất kỳ đâu trên thiết bị bên ngoài phần cứng bảo mật, nên bạn chỉ có thể tạo một Kho tiền mới ngay sau khi mở khoá thiết bị. Tại thời điểm người dùng nhập LSKF để mở khoá thiết bị, LSKF sẽ được cung cấp ngắn gọn cho Khung trong RAM. Đó là thời điểm API mới để tạo Vault sử dụng API đó. Bạn không thể tạo Kho tiền mới được bảo vệ bằng LSKF trong khi thiết bị đang khoá vì không có LSKF.
Bảo mật Trình khôi phục
Phương thức bảo vệ bảo mật chính mà chúng tôi cung cấp tại Trình khôi phục là giao thức được thiết kế để ngăn Trình khôi phục nhìn thấy LSKF của thiết bị hiện tại hoặc bất kỳ Khoá khôi phục nào. Chỉ Khung mới thấy những nội dung đó ở phía Ứng dụng, khiến việc khai thác mọi lỗi tiềm ẩn hoặc lỗ hổng bảo mật trong Trình khôi phục trở nên khó khăn hơn nhiều. Tác nhân khôi phục chủ yếu được dùng để quản lý các sự kiện trong vòng đời và việc truyền dữ liệu qua lại giữa đám mây và Khung. Ngoại lệ duy nhất đối với điều này xảy ra trong quá trình khôi phục ngay trước giao thức Mở kho tiền khi người dùng phải nhập LSKF của thiết bị cũ – giao diện người dùng thu thập LSKF đã xác nhận quyền sở hữu cho thiết bị cũ được triển khai trong Trình khôi phục4. Tuy nhiên, việc triển khai Tác nhân khôi phục sẽ "quên" LSKF đã xác nhận quyền sở hữu ngay khi Khung tiếp quản việc tạo Thông báo xác nhận quyền sở hữu để khôi phục.
Các tính năng bảo mật của giao thức
Mặc dù việc phân tích đầy đủ về giao thức này nằm ngoài phạm vi của tài liệu này, nhưng chúng tôi muốn làm nổi bật một số biện pháp bảo vệ được tích hợp sẵn trong giao thức. Cụ thể, giao thức chỉ sử dụng hàm băm của LSKF trong suốt quá trình. Điều này có nghĩa là nếu LSKF có độ hỗn độn cao (ví dụ: nếu đó là một mật khẩu tốt có độ hỗn độn cao), thì việc lưu trữ Kho tiền sẽ tốt hơn nhiều so với việc lưu trữ hàm băm mật khẩu. Trong trường hợp này, hàm băm mật khẩu có thể cung cấp một biện pháp bảo mật độc lập với biện pháp bảo mật của THM. Vì lý do này, chúng tôi hỗ trợ tính năng băm "memory hard" (bằng muối) của LSKF như một phần của giao thức. Chúng tôi cũng liên kết Kho tiền mã hoá với một giá trị nhận dạng cho thiết bị đã tạo Kho tiền mã hoá đó và liên kết Thông báo xác nhận quyền khôi phục với một số chỉ dùng một lần được dùng làm thử thách trong giao thức Mở Kho tiền mã hoá để đảm bảo rằng Thông báo xác nhận quyền khôi phục là mới.
Vì Khoá khôi phục được tạo mới mỗi khi tạo Khoá, nên chúng tôi triển khai tính năng xoay khoá bằng cách ghi đè mục nhập Khoá hiện có bằng một Khoá mới tạo. Địa chỉ cho bộ đếm số lần thử không thành công mà Kho lưu trữ sử dụng được chọn trong quá trình tạo Kho lưu trữ và Khung đảm bảo rằng địa chỉ bộ đếm được sử dụng cho mọi Kho lưu trữ tiếp theo sẽ không thay đổi trừ phi LSKF đã được thay đổi hoặc có danh sách khoá công khai của nhóm thuần tập mới được chứng thực. Do đó, bạn có thể xoay Khoá khôi phục mà không ảnh hưởng đến tính năng bảo vệ bằng phương thức tấn công brute force cho LSKF.
Bảo mật máy chủ cho Dịch vụ kho khoá trên đám mây
Máy chủ được triển khai bằng cách kết hợp phần mềm chạy trên phần cứng máy chủ thông thường và phần mềm cơ sở chạy trên phần cứng chuyên dụng (chip Titan). Chúng tôi sẽ mô tả các biện pháp bảo vệ được cung cấp ở từng lớp.
Tính năng bảo vệ phần cứng
Phương thức bảo vệ bảo mật chính được triển khai ở phía máy chủ của dịch vụ CKV là Mô-đun phần cứng đáng tin cậy (THM) được xây dựng bằng các khối Titan do Google thiết kế tuỳ chỉnh. Các khối này đang chạy chương trình cơ sở hiển thị các API cần thiết để triển khai giao thức CKV. Cụ thể, họ có thể tạo và chia sẻ một cặp khoá một cách an toàn với các thành viên khác trong Nhóm thuần tập của họ sao cho logic của phần mềm cơ sở bảo vệ khoá riêng tư không bị rò rỉ ra ngoài các khối Titan trong Nhóm thuần tập. Các ứng dụng này cũng có thể thực hiện thao tác Mở Kho tiền và duy trì một bộ đếm số lần không thành công tăng lên một cách nghiêm ngặt cho mỗi Kho tiền (trong đó bộ đếm được sao lưu bằng trạng thái được lưu trữ bên trong khối Titan). Nội dung mô tả chi tiết hơn về giao thức do phần mềm của chip CKV Titan thực thi sẽ được cung cấp trong bản phát hành sau này của tài liệu này.
Do tính bảo mật của máy chủ bắt nguồn từ logic phần mềm trong các khối Titan, chúng ta phải đảm bảo rằng logic này không thay đổi theo cách cho phép các khối này rò rỉ thông tin bí mật hoặc bỏ qua các giới hạn bộ đếm. Để đạt được mục tiêu này, chúng tôi cũng thay đổi trình tải khởi động Titan để đảm bảo rằng dữ liệu được lưu trữ của chip (chẳng hạn như khoá riêng tư cho Nhóm thuần tập) được xoá hoàn toàn trước khi áp dụng bất kỳ bản cập nhật nào. Nhược điểm của biện pháp bảo vệ này là chúng ta không thể vá lỗi trong chương trình cơ sở mà không bị mất một số dữ liệu – việc cập nhật chương trình cơ sở tương đương về mặt chức năng với việc huỷ bỏ phần cứng hiện có và thay thế bằng các khối mới. Trong trường hợp cần phải có bản vá firmware quan trọng, Google sẽ cần tạo và phát hành một danh sách hoàn toàn mới gồm các Khoá công khai của nhóm thuần tập được chứng thực, đồng thời dần dần di chuyển tất cả người dùng sang danh sách mới. Để giảm thiểu rủi ro này, chúng tôi cố gắng giữ cho cơ sở mã của phần mềm cơ sở ở mức tối thiểu và kiểm tra kỹ cơ sở mã đó để tìm mọi vấn đề bảo mật tiềm ẩn.
Tính năng bảo vệ phần mềm
Ngoài các giới hạn cứng về số lần lỗi trên mỗi Kho lưu trữ do THM áp đặt, dịch vụ CKV cũng triển khai tính năng giới hạn tốc độ dựa trên phần mềm. Giới hạn tốc độ được thiết kế để ngăn kẻ xâm nhập truy cập vào tài khoản của người dùng và nhanh chóng dùng hết hạn mức số lần khôi phục không thành công, từ đó ngăn chặn hiệu quả quyền truy cập của người dùng thực vào Khoá khôi phục. Tương tự như độ trễ thời gian do thiết bị của người dùng áp đặt sau khi quá nhiều lần mở khoá màn hình không thành công, dịch vụ CKV sẽ thực thi độ trễ thời gian ngày càng tăng sau mỗi yêu cầu Mở khoá bảo mật không thành công tiếp theo.
Chúng tôi cũng triển khai các biện pháp bảo mật tiêu chuẩn cho các dịch vụ trên đám mây lưu trữ dữ liệu người dùng, bao gồm cả các biện pháp kiểm soát, giám sát và kiểm tra quyền truy cập nghiêm ngặt.
Thông số kỹ thuật chi tiết của giao thức
Quy cách giao thức chi tiết vẫn đang trong quá trình hoàn thiện và tài liệu này sẽ được cập nhật để bao gồm các thông tin chi tiết đó cùng với việc phát hành mã ứng dụng trong Dự án nguồn mở Android vào cuối năm nay.
Ghi chú
- "Hướng tới việc lưu trữ đáng tin cậy các bí mật 56 bit trong bộ nhớ của con người | USENIX". Ngày 1 tháng 8 năm 2014, https://www.usenix.org/node/184458. ↩
- "Blog Google Cloud Platform: Titan chuyên sâu: Bảo mật ở dạng văn bản thô". Ngày 24 tháng 8 năm 2017, https://cloudplatform.googleblog.com/2017/08/Titan-in-depth-security-in-plaintext.html. ↩
- "Google thông báo có hơn 2 tỷ thiết bị hoạt động hằng tháng trên Android ...." Ngày 17 tháng 5 năm 2017, https://www.theverge.com/2017/5/17/15654454/android-reaches-2-billion-monthly-active-users. ↩
- Điều này cho phép chúng tôi cung cấp giao diện người dùng linh hoạt để nhập LSKF của một thiết bị khác – Khung của thiết bị hiện tại có thể không có giao diện người dùng phù hợp để nhập LSKF của thiết bị cũ. ↩