1. Tổng quan
Cloud KMS là một dịch vụ quản lý khoá được lưu trữ trên đám mây, cho phép bạn quản lý các khoá mã hoá cho các dịch vụ đám mây của mình theo cách tương tự như khi bạn làm việc trên máy chủ. Thư viện này hỗ trợ mã hoá, giải mã, ký và xác minh bằng nhiều loại và nguồn khoá, bao gồm cả Cloud HSM cho khoá dựa trên phần cứng. Hướng dẫn này sẽ hướng dẫn bạn cách ký và xác minh dữ liệu bằng khoá bất đối xứng của Cloud KMS.
Bạn sẽ tìm hiểu được
- Cách bật API Cloud KMS
- Cách tạo một Bộ khoá
- Cách tạo Khoá mã hoá để ký/xác minh bất đối xứng
2. Cách thiết lập và các yêu cầu
Thiết lập môi trường theo tốc độ của riêng bạn
- Đăng nhập vào Cloud Console rồi tạo một dự án mới hoặc sử dụng lại một dự án hiện có. (Nếu chưa có tài khoản Gmail hoặc G Suite, bạn phải tạo một tài khoản.)
Hãy ghi nhớ mã dự án, một tên duy nhất trên tất cả các dự án Google Cloud (tên ở trên đã được sử dụng và sẽ không hoạt động đối với bạn, rất xin lỗi!). Mã này sẽ được gọi là PROJECT_ID
ở phần sau của lớp học lập trình này.
- Tiếp theo, bạn cần bật tính năng thanh toán trong Cloud Console để sử dụng các tài nguyên của Google Cloud.
Việc tham gia lớp học lập trình này sẽ không tốn kém nhiều chi phí, nếu có. Hãy nhớ làm theo mọi hướng dẫn trong phần "Dọn dẹp". Phần này sẽ hướng dẫn bạn cách tắt các tài nguyên để bạn không phải trả phí sau khi hoàn tất hướng dẫn này. Người dùng mới của Google Cloud đủ điều kiện tham gia chương trình Dùng thử miễn phí 300 USD.
Khởi động Cloud Shell
Trong lớp học lập trình này, bạn sẽ sử dụng Cloud Shell, một môi trường ảo hoá miễn phí chạy trên Google Cloud. Trên Bảng điều khiển GCP, hãy nhấp vào biểu tượng Cloud Shell trên thanh công cụ trên cùng bên phải:
Quá trình cấp phép và kết nối với môi trường sẽ chỉ mất vài phút. Khi quá trình này hoàn tất, bạn sẽ thấy như sau:
Máy ảo này được tải sẵn tất cả các công cụ phát triển mà bạn cần. Ứng dụng này cung cấp một thư mục gốc 5 GB ổn định và chạy trên Google Cloud, giúp nâng cao đáng kể hiệu suất mạng và xác thực. Trừ phi có hướng dẫn khác, hãy chạy tất cả lệnh từ shell này.
3. Bật Dịch vụ Cloud KMS
Trước khi có thể sử dụng Cloud KMS, trước tiên, bạn phải bật dịch vụ này trong dự án của mình. Bạn chỉ cần thực hiện việc này một lần cho mỗi dự án. Để bật dịch vụ Cloud KMS, hãy chạy lệnh sau:
$ gcloud services enable cloudkms.googleapis.com \ --project "${GOOGLE_CLOUD_PROJECT}"
Quá trình bật có thể mất đến 1 phút. Lệnh này sẽ báo cáo thành công khi hoàn tất.
4. Tạo khoá KMS
Tạo một Bộ khoá Cloud KMS. Trong Cloud KMS, Bộ khoá là một tập hợp hợp lý các khoá mã hoá. Bộ khoá chứa siêu dữ liệu về các khoá, chẳng hạn như vị trí của khoá. Tạo một Key Ring có tên là my-keyring
trong vùng global
:
$ gcloud kms keyrings create "my-keyring" \ --location "global"
Bây giờ, hãy tạo một Khoá mã hoá có tên my-asymmetric-signing-key
với mục đích asymmetric-signing
bên trong Key Ring (Bộ khoá) mà bạn vừa tạo.
$ gcloud kms keys create "my-asymmetric-signing-key" \ --location "global" \ --keyring "my-keyring" \ --purpose "asymmetric-signing" \ --default-algorithm "rsa-sign-pkcs1-4096-sha512"
5. Dữ liệu chữ ký
Không giống như việc mã hoá, việc giải mã dữ liệu đã được mã hoá bằng khoá bất đối xứng của Cloud KMS yêu cầu quyền truy cập trực tuyến vào dịch vụ Cloud KMS. Giải mã văn bản đã mã hoá từ tệp bằng công cụ dòng lệnh gcloud
:
Tạo một tệp chứa dữ liệu cần ký và sử dụng công cụ dòng lệnh gcloud
để ký dữ liệu bằng khoá Cloud KMS:
$ echo "my-contents" > ./data.txt
$ gcloud kms asymmetric-sign \ --location "global" \ --keyring "my-keyring" \ --key "my-asymmetric-signing-key" \ --version "1" \ --digest-algorithm "sha512" \ --input-file ./data.txt \ --signature-file ./data.txt.sig
Chữ ký được lưu trong data.txt.sig
trên ổ đĩa. Nếu mở tệp data.txt.sig
, bạn sẽ thấy tệp này có các ký tự lạ, không in được. Đó là do dữ liệu thu được ở định dạng nhị phân.
Khi lưu trữ chữ ký trong cơ sở dữ liệu hoặc truyền chữ ký đó dưới dạng một phần của yêu cầu HTTP, bạn có thể cần mã hoá dữ liệu. Một cơ chế mã hoá phổ biến là base64.
6. Xác minh dữ liệu
Với khoá bất đối xứng, Cloud KMS không trực tiếp thực hiện quy trình xác minh. Thay vào đó, ứng dụng này cung cấp quyền truy cập vào khoá công khai và bạn xác minh dữ liệu bằng cách sử dụng khoá công khai đó thông qua mã hoá khoá công khai. Với khoá bất đối xứng, bạn có thể xác minh hoàn toàn ngoại tuyến và không cần quyền truy cập vào Cloud KMS hoặc bất kỳ API Google Cloud nào khác. Quá trình xác minh được thực hiện bằng một công cụ mã hoá như openssl
hoặc bằng một ngôn ngữ lập trình hoặc thư viện hỗ trợ mã hoá khoá công khai.
Tải khoá công khai xuống từ Cloud KMS:
$ gcloud kms keys versions get-public-key "1" \ --location "global" \ --keyring "my-keyring" \ --key "my-asymmetric-signing-key" \ --output-file ./key.pub
Xác minh chữ ký dựa trên khoá công khai bằng công cụ dòng lệnh openssl
:
$ openssl dgst -sha256 \ -verify ./key.pub \ -signature ./data.txt.sig ./data.txt
Bảng điều khiển sẽ in thông báo thành công, cho biết chữ ký số là hợp lệ.
Verified OK
7. Xin chúc mừng!
Bạn đã bật API Cloud KMS, tạo khoá ký bất đối xứng, ký và xác minh dữ liệu! Cloud KMS là một sản phẩm mạnh mẽ và tính năng ký/xác minh chỉ là một phần nhỏ trong các tính năng của sản phẩm này.
Dọn dẹp
Nếu bạn đã khám phá xong, vui lòng cân nhắc xoá dự án của mình.
- Truy cập vào Bảng điều khiển Cloud Platform
- Chọn dự án mà bạn muốn đóng, rồi nhấp vào "Xoá" ở trên cùng. Thao tác này sẽ lên lịch xoá dự án.
Tìm hiểu thêm
Giấy phép
Tác phẩm này được cấp phép theo Giấy phép chung Ghi công theo Creative Commons 2.0.