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