Mã hoá và giải mã dữ liệu

Hướng dẫn này mô tả cách mã hoá và giải mã hoạt động bằng API Mã hoá phía máy khách của Google Workspace.

Bạn phải thêm mọi dịch vụ của Nhà cung cấp danh tính (IdP) mà người dùng chia sẻ tệp đã mã hoá sử dụng vào danh sách cho phép. Bạn thường có thể tìm thấy thông tin chi tiết cần thiết về IdP trong tệp .well-known được cung cấp công khai của họ; nếu không, hãy liên hệ với quản trị viên Google Workspace của tổ chức để biết thông tin chi tiết về IdP.

Mã hoá dữ liệu

Khi người dùng Google Workspace yêu cầu lưu hoặc lưu trữ dữ liệu được mã hoá phía máy khách (CSE), Google Workspace sẽ gửi yêu cầu wrap đến URL điểm cuối của Dịch vụ danh sách kiểm soát quyền truy cập khoá (KACLS) để mã hoá. Ngoài các bước kiểm tra bảo mật không bắt buộc, chẳng hạn như các bước kiểm tra dựa trên phạm vi và JWT, KACLS của bạn phải thực hiện các bước sau:

  1. Xác thực người dùng yêu cầu.

    • Xác thực cả mã xác thực token và mã uỷ quyền token.
    • Kiểm tra để đảm bảo mã uỷ quyền và mã xác thực là của cùng một người dùng bằng cách so khớp không phân biệt chữ hoa chữ thường đối với các khai báo email.
    • Khi mã xác thực chứa khai báo google_email không bắt buộc, bạn phải so sánh khai báo này với khai báo email trong mã uỷ quyền bằng phương pháp không phân biệt chữ hoa chữ thường. Không sử dụng khai báo email trong mã xác thực cho việc so sánh này.
    • Trong trường hợp mã xác thực thiếu khai báo google_email không bắt buộc, bạn nên so sánh khai báo email trong mã xác thực với khai báo email trong mã uỷ quyền bằng phương pháp không phân biệt chữ hoa chữ thường.
    • Trong trường hợp Google cấp mã uỷ quyền cho một email không liên kết với Tài khoản Google, thì phải có khai báo email_type. Đây là một phần quan trọng của tính năng Quyền truy cập của khách, cung cấp thông tin có giá trị cho KACLS để thực thi các biện pháp bảo mật bổ sung đối với người dùng bên ngoài.
      • Dưới đây là một số ví dụ về cách KACLS có thể sử dụng thông tin này:
      • Để áp đặt các yêu cầu bổ sung về việc ghi nhật ký.
      • Để giới hạn nhà phát hành mã thông báo xác thực thành một IdP khách chuyên dụng.
      • Để yêu cầu các khai báo bổ sung trên mã xác thực.
      • Nếu khách hàng chưa định cấu hình Quyền truy cập của khách, thì tất cả các yêu cầu mà email_type được đặt thành google-visitor hoặc customer-idp đều có thể bị từ chối. Các yêu cầu có email_typegoogle hoặc có email_type chưa được đặt sẽ tiếp tục được chấp nhận.
    • Khi mã xác thực chứa khai báo delegated_to không bắt buộc, mã này cũng phải chứa khai báo resource_name và bạn phải so sánh 2 khai báo này với các khai báo delegated_toresource_name trong mã uỷ quyền. Bạn nên so sánh các khai báo delegated_to bằng phương pháp không phân biệt chữ hoa chữ thường và resource_name trong mã thông báo phải khớp với resource_name của thao tác.
    • Kiểm tra để đảm bảo khai báo role trong mã uỷ quyền là writer hoặc upgrader.
    • Kiểm tra để đảm bảo khai báo kacls_url trong mã uỷ quyền khớp với URL KACLS hiện tại. Bước kiểm tra này cho phép phát hiện các máy chủ có khả năng bị tấn công xen giữa do người nội bộ hoặc quản trị viên miền giả mạo định cấu hình.
    • Thực hiện kiểm tra phạm vi bằng cả khai báo xác thực và khai báo uỷ quyền.
  2. Mã hoá các phần sau bằng thuật toán mã hoá đã xác thực:

    • Khoá mã hoá dữ liệu (DEK)
    • Giá trị resource_nameperimeter_id từ mã uỷ quyền
    • Mọi dữ liệu nhạy cảm bổ sung
  3. Ghi nhật ký thao tác, bao gồm cả người dùng bắt nguồn từ thao tác đó, resource_name và lý do được truyền trong yêu cầu.

  4. Trả về một đối tượng nhị phân mờ đục để Google Workspace lưu trữ cùng với đối tượng đã mã hoá và gửi nguyên trạng trong mọi thao tác mở gói khoá tiếp theo. Hoặc, phân phát một phản hồi lỗi có cấu trúc.

    • Đối tượng nhị phân phải chứa bản sao duy nhất của DEK đã mã hoá, dữ liệu dành riêng cho quá trình triển khai có thể được lưu trữ trong đó.

Giải mã dữ liệu

Khi người dùng Google Workspace yêu cầu mở dữ liệu được mã hoá phía máy khách (CSE), Google Workspace sẽ gửi yêu cầu unwrap đến URL điểm cuối KACLS để giải mã. Ngoài các bước kiểm tra bảo mật không bắt buộc, chẳng hạn như các bước kiểm tra dựa trên phạm vi và JWT, KACLS của bạn phải thực hiện các bước sau:

  1. Xác thực người dùng yêu cầu.

    • Xác thực cả mã xác thực token và mã uỷ quyền token.
    • Kiểm tra để đảm bảo mã uỷ quyền và mã xác thực là của cùng một người dùng bằng cách so khớp không phân biệt chữ hoa chữ thường đối với các khai báo email.
    • Khi mã xác thực chứa khai báo google_email không bắt buộc, bạn phải so sánh khai báo này với khai báo email trong mã uỷ quyền bằng phương pháp không phân biệt chữ hoa chữ thường. Không sử dụng khai báo email trong mã xác thực cho việc so sánh này.
    • Trong trường hợp mã xác thực thiếu khai báo google_email không bắt buộc, bạn nên so sánh khai báo email trong mã xác thực với khai báo email trong mã uỷ quyền bằng phương pháp không phân biệt chữ hoa chữ thường.
    • Trong trường hợp Google cấp mã uỷ quyền cho một email không liên kết với Tài khoản Google, thì phải có khai báo email_type. Đây là một phần quan trọng của tính năng Quyền truy cập của khách, cung cấp thông tin có giá trị cho KACLS để thực thi các biện pháp bảo mật bổ sung đối với người dùng bên ngoài.
      • Dưới đây là một số ví dụ về cách KACLS có thể sử dụng thông tin này:
      • Để áp đặt các yêu cầu bổ sung về việc ghi nhật ký.
      • Để giới hạn nhà phát hành mã thông báo xác thực thành một IdP khách chuyên dụng.
      • Để yêu cầu các khai báo bổ sung trên mã xác thực.
      • Nếu khách hàng chưa định cấu hình Quyền truy cập của khách, thì tất cả các yêu cầu mà email_type được đặt thành google-visitor hoặc customer-idp đều có thể bị từ chối. Các yêu cầu có email_typegoogle hoặc có email_type chưa được đặt sẽ tiếp tục được chấp nhận.
    • Khi mã xác thực chứa khai báo delegated_to không bắt buộc, mã này cũng phải chứa khai báo resource_name và bạn phải so sánh 2 khai báo này với các khai báo delegated_toresource_name trong mã uỷ quyền. Bạn nên so sánh các khai báo delegated_to bằng phương pháp không phân biệt chữ hoa chữ thường và resource_name trong mã thông báo phải khớp với resource_name của thao tác.
    • Kiểm tra để đảm bảo khai báo role trong mã uỷ quyền là reader hoặc writer.
    • Kiểm tra để đảm bảo khai báo kacls_url trong mã uỷ quyền khớp với URL KACLS hiện tại. Điều này cho phép phát hiện các máy chủ có khả năng bị tấn công xen giữa do người nội bộ hoặc quản trị viên miền giả mạo định cấu hình.
  2. Giải mã các phần sau bằng thuật toán mã hoá đã xác thực:

    • Khoá mã hoá dữ liệu (DEK)
    • Giá trị resource_nameperimeter_id từ mã uỷ quyền
    • Mọi dữ liệu nhạy cảm bổ sung
  3. Kiểm tra để đảm bảo resource_name trong mã uỷ quyền và blob đã giải mã khớp nhau.

  4. Thực hiện kiểm tra phạm vi bằng cả khai báo xác thực và khai báo uỷ quyền.

  5. Ghi nhật ký thao tác, bao gồm cả người dùng bắt nguồn từ thao tác đó, resource_name và lý do được truyền trong yêu cầu.

  6. Trả về DEK đã mở gói hoặc phản hồi lỗi có cấu trúc reply.