Hướng dẫn chi tiết thiết lập chứng chỉ Code Signing trên Google Cloud HSM

12/08/2024
388 lượt xem
Để lại đánh giá post nếu bạn thấy hữu ích nhé
Chia sẻ qua
Hướng Dẫn Chi Tiết Thiết Lập Chứng Chỉ Code Signing Trên Google Cloud HSM

Gần đây, các đơn vị cấp chứng chỉ phần mềm (Authorized CA) đã thắt chặt các quy định về việc sử dụng chứng chỉ ký phần mềm EV, yêu cầu khóa riêng phải được lưu trữ trên token USB vật lý hoặc trong Mô-đun bảo mật phần cứng (HSM) tuân thủ tiêu chuẩn FIPS 140-2. Tuy nhiên, việc sử dụng USB Token gây khó khăn cho các quy trình tích hợp liên tục (CI/CD), và việc đầu tư vào HSM riêng là khá tốn kém và phức tạp. Chưa kể đến việc vận chuyển USB Token và nhập khẩu thiết bị USB Token vào Việt Nam rất khó khăn do quy định của hải quan.

Giải pháp hiệu quả hơn là sử dụng một khóa (single key slot) của Google Cloud HSM. Điều này giúp tiết kiệm chi phí, đáp ứng tiêu chuẩn bảo mật cao, và loại bỏ nhu cầu quản lý thiết bị vật lý. Giải pháp này vừa đáp ứng yêu cầu bảo mật vừa linh hoạt cho việc triển khai trong môi trường DevOps.

Trong quá trình này, khóa riêng (private key) sẽ được lưu trữ an toàn trong HSM của Google Cloud, kết hợp với công cụ ký mã (signing tool) trên máy tính hoặc pipeline CI/CD của bạn để thực hiện ký mã mà không cần USB Token vật lý. Hệ thống này đảm bảo tính toàn vẹn và bảo mật của quy trình ký mã, đồng thời đơn giản hóa việc tích hợp và triển khai.

Tại bài viết này, HVN sẽ hướng dẫn bạn chi tiết cách thiết lập và ký mã phần mềm sử dụng Google Cloud HSM.

Quy trình ký mã (Code Signing) trên Google Cloud HSM

Để hiểu rõ hơn về cách hoạt động của quy trình ký mã khi sử dụng khóa riêng (private key) được lưu trữ trong Google Cloud HSM, chúng tôi sẽ minh họa một cách đơn giản những gì xảy ra khi bạn thực hiện ký File thực thi bằng khóa riêng được lưu trữ trên Google Cloud HSM:

Trong sơ đồ này, có các thành phần chính như sau:

  1. Công cụ ký trên máy tính hoặc trong đường ống (pipeline) CI/CD: Đây là ứng dụng thực hiện việc ký mã trực tiếp trên File thực thi của bạn. Công cụ này có thể chạy trên máy tính cục bộ hoặc trong hệ thống Tích hợp liên tục (CI/CD).
  2. Google Cloud: Là dịch vụ cung cấp bởi Google Cloud. Vui lòng liên hệ với chúng tôi (đối tác cấp cao của Google) để được tư vấn và kích hoạt tài khoản Google Cloud.
  3. HSM của Google với khóa riêng của bạn: Đây là Mô-đun Bảo mật Phần cứng vật lý được lưu trữ trong trung tâm dữ liệu của Google, nơi bảo vệ khóa riêng của bạn khỏi nguy cơ bị đánh cắp hoặc xuất ra môi trường không đáng tin cậy.
  4. Máy chủ của cơ quan cấp dấu thời gian với khóa riêng (private key) của họ: Máy chủ này chịu trách nhiệm cấp dấu thời gian đã ký cho hàm băm của dữ liệu bạn cung cấp. Thông thường, máy chủ này được vận hành bởi các tổ chức CA nơi cấp chứng chỉ Code Signing của bạn.

Huong Dan Thiet Lap Chung Chi Code Signing Tren Google Cloud Hsm 5

Giải thích các thành phần trong sơ đồ:

  • x || y: Phép nối hai chuỗi nhị phân.
  • sign(priv_key, data): Phép ký bất đối xứng sử dụng thuật toán RSA hoặc ECDSA.
  • priv_key: Khóa riêng của bạn được lưu trữ trong Google Cloud HSM.
  • ts_priv_key: Khóa riêng (private key) của cơ quan cấp dấu thời gian (do tổ chức CA cấp chứng chỉ Code Signing của bạn lưu trữ).
  • SHA256(app): Hàm băm mật mã file nhị phân của ứng dụng, loại trừ một số phần không được bao gồm trong chữ ký (do đó không phải là hàm băm file đơn giản).
  • SHA256(app_sig): Hàm băm mật mã chữ ký của bạn, được sử dụng để áp dụng dấu thời gian (timestamp) đáng tin cậy.

*Lưu ý: Sơ đồ này có thể không bao quát hết các chi tiết kỹ thuật. Tuy nhiên, mục đích chính của nó là minh họa quy trình ký mã (Code signing) ở mức độ khái niệm.

Cách tính chi phí

Việc đăng ký chứng chỉ Code Signing và lưu trữ chứng chỉ này trên HSM của Google Cloud sẽ cần một số chi phí nhất định. Dưới đây là cách tính chi phí tính chi tiết:

  • Chi phí cho chứng chỉ Code Signing xem chi tiết tại đây.
  • Chi phí để lưu trữ một khóa riêng (private key) trên Google Cloud HSM. 
  • Chi phí cho mỗi lần thực hiện ký mã (code signing).
  • Chi phí dịch vụ tư vấn và triển khai chứng chỉ Code Signing (tùy chọn).

Ngoài ra, còn có các chi phí phát sinh liên quan đến thời gian và công sức của bạn:

  • Thời gian chuẩn bị tài liệu và hoàn thành quy trình thẩm định từ CA.
  • Thời gian cho việc thiết lập HSM trên Google Cloud, tạo CSR, và kiểm tra quy trình ký mã.
  • Thời gian để tạo đường ống Tích hợp liên tục (CI/CD) cho việc ký mã.

Hướng dẫn thiết lập chứng chỉ Code Signing trên Google Cloud HSM

Bước 1: Khởi tạo Tài khoản Google Cloud

Để bắt đầu, bạn cần đăng ký một tài khoản trên Google Cloud Platform. Hãy liên hệ với đội ngũ tư vấn của HVN để được tư vấn kích hoạt tài khoản Google Cloud và hỗ trợ thanh toán chi phí một cách tối ưu (bạn có thể sẽ không thể tiếp tục nếu không cung cấp thông tin thanh toán hoặc giấy tờ, hóa đơn hợp lệ để khai báo chi phí hợp lý của công ty với cơ quan thuế). Sau khi tài khoản được khởi tạo, bạn cần khởi tạo một dự án mới (New Project).

Bước 2: Truy cập Quản lý khóa (Key Management)

Sau khi khởi tạo dự án mới hoàn tất, bạn cần vào mục Bảo mật -> Quản lý khóa trong Google Cloud Console (Security -> Key Management section in Google Cloud Console).

*Lưu ý quan trọng: Bạn có thể được chuyển hướng đến Google Cloud Marketplace, nơi yêu cầu bạn bật “Cloud Key Management Service (KMS) API”.

Vui lòng bật API này và thử điều hướng trở lại mục “Bảo mật -> Quản lý khóa” (Security -> Key Management). Nếu gặp phải thông báo rằng tính năng Thanh toán chưa được bật (mặc dù đã bật) hoặc bị chuyển hướng liên tục đến trang Marketplace, hãy đợi vài phút để các thay đổi có hiệu lực hoặc thử lại sau qua Cloud Console.

Huong Dan Thiet Lap Chung Chi Code Signing Tren Google Cloud Hsm 3

Khi tài khoản và dự án của bạn được cấu hình thành công và các thay đổi đã có hiệu lực, bạn sẽ thấy trang quản lý khóa (Key Management) khi nhấp vào “Bảo mật -> Quản lý khóa”.

Huong Dan Thiet Lap Chung Chi Code Signing Tren Google Cloud Hsm 2

Bước 3: Tạo nhóm chìa khóa mã hóa (key ring) và khóa HSM

Để tạo một Key Ring, nhấp vào + CREATE KEY RING và nhập tên cho Key Ring mới của bạn. Chọn một vùng phù hợp (location) có dịch vụ khả dụng.

Huong Dan Thiet Lap Chung Chi Code Signing Tren Google Cloud Hsm

Sau khi tạo Key Ring, bạn điều hướng vào bên trong Key Ring mới tạo và nhấp vào + CREATE KEY. Chọn một tên cho khóa và bắt buộc chọn các tùy chọn sau:

  • Protection Level (Mức độ bảo vệ): HSM
  • Key material: HSM-generated key
  • Purpose: Asymmetric sign;
  • Algorithm: 4096 bit RSA – PKCS#1 v1.5 padding – SHA256 Digest;

Các trường còn lại có thể giữ nguyên theo mặc định.

Huong Dan Thiet Lap Chung Chi Code Signing Tren Google Cloud Hsm 4

Bước 4: Nhận bằng chứng xác thực (attestation)

Để nhận bằng chứng xác thực, hãy điều hướng đến khóa mới tạo và chọn tab Versions. Sau đó, nhấp vào Actions (biểu tượng ba dấu chấm) -> Verify attestation -> Download attestation. Bạn sẽ nhận được một file ZIP chứa thông tin xác thực của khóa.

*Lưu ý quan trọng: Hãy lưu trữ file ZIP này ở một nơi an toàn. Cơ quan cấp chứng chỉ Code Signing của bạn có thể yêu cầu bạn cung cấp file này.

Khóa xác thực (key attestation) bao gồm thông tin cơ bản về khóa của bạn, như khóa công khai khớp, thông tin về việc khóa được tạo trên HSM và xác nhận rằng khóa riêng không thể xuất ra ngoài. Điều này có nghĩa là bạn có thể sử dụng khóa để ký, nhưng HSM sẽ không cho phép bạn tải khóa riêng xuống máy tính của mình. Bằng chứng xác thực này được ký bởi Google và nhà sản xuất phần cứng của HSM.

Huong Dan Thiet Lap Chung Chi Code Signing Tren Google Cloud Hsm 1

*Lưu ý: Các khóa được lưu trữ trong Google Cloud KMS tuân thủ tiêu chuẩn FIPS 140-2 Cấp độ 3, vượt xa các yêu cầu hiện tại về bảo mật cho việc lưu trữ khóa riêng dùng để ký mã.

Bước 5: Tạo mã CSR (Certificate Signing Request)

Bạn có thể tạo CSR (Certificate Signing Request) bằng các công cụ tiêu chuẩn thông thường như openssl, nhưng bạn lại cần phải ký CSR này bằng khóa riêng tương ứng để chứng minh rằng khóa này thực sự tồn tại và bạn có quyền truy cập vào nó. Tuy nhiên, vì khóa riêng (private key) của bạn được lưu trữ trên Google Cloud HSM, chứ không phải trên ổ cứng máy tính của bạn, do đó bạn cần hướng dẫn openssl truy cập khóa riêng (private key) thông qua API của Google. Điều này có thể được thực hiện bằng cách cài đặt Thư viện Google Cloud KMS PKCS#11 và thực hiện một số bước bổ sung.

– Tùy chọn: Bạn có thể sử dụng công cụ icedevml/kms-csr-tool để tạo CSR một cách nhanh chóng. Nếu chọn sử dụng công cụ này, bạn có thể bỏ qua các bước tiếp theo. Nếu bạn không muốn sử dụng công cụ của bên thứ 3, hãy tiếp tục làm theo các hướng dẫn dưới đây.

Chuẩn bị môi trường & điều kiện

Trước tiên, cài đặt gói bắt buộc bằng lệnh sau:

apt-get update && apt-get install -y libengine-pkcs11-openssl

Sau đó, tải xuống file libkmsp11.so từ trang phát hành GitHub của GoogleCloudPlatform/kms-integrations.

Giải nén File đã tải xuống và lưu trữ libkmsp11.so trong thư mục /usr/local/lib. Sau đó, thiết lập đường dẫn đến thư viện trong biến môi trường bằng lệnh:

export PKCS11_MODULE_PATH=/usr/local/lib/libkmsp11.so

Tiếp theo, tạo một file văn bản /etc/pkcs11-kms.yml và lưu các nội dung sau vào file:

tokens:

– key_ring: “projects/{projectId}/locations/{location}/keyRings/{keyRingName}”

Trong đó:

  • {projectId} là ID dự án Google Cloud của bạn (là chuỗi, không phải số; bạn có thể kiểm tra tại trang Billing Project),
  • {location} là vị trí nơi lưu trữ Key Ring của bạn (ví dụ: asia-southeast1),
  • {keyRingName} là tên bạn đã sử dụng khi tạo Key Ring.

Cuối cùng, lưu trữ đường dẫn đến file cấu hình của bạn trong biến môi trường bằng lệnh:

export KMS_PKCS11_CONFIG=/etc/pkcs11-kms.yml

Xác thực Google Cloud

Sau khi hoàn tất các bước chuẩn bị, bạn cần xác thực với Google Cloud để có thể truy cập vào khóa của mình. Thực hiện lệnh sau để đăng nhập:

gcloud auth application-default login

Khởi tạo mã CSR

Sau khi xác thực, bạn có thể tạo CSR thực tế bằng lệnh sau:

openssl req -new -subj ‘/E={yourEmail}/CN={companyName}/O={companyName}/’ -sha256 -engine pkcs11 \

-keyform engine -key pkcs11:object={keyName}

Trong đó:

  • {yourEmail}: Thay bằng email của bạn (CA sẽ gửi thông tin về chứng chỉ qua Email này).
  • {companyName}: Thay bằng tên công ty / tổ chức của bạn (CA sẽ cấp chứng chỉ theo tên này).
  • {keyName}: Thay bằng tên của khóa mà bạn đã tạo trước đó trên Google Cloud Console.

Bạn cũng có thể cần thêm các tham số bổ sung trong phần -subj (chủ đề) nếu cơ quan cấp chứng chỉ (CA) yêu cầu.

Hoàn tất! CSR (Certificate Signing Request) đã được tạo. Mã CSR này đã được ký bằng khóa riêng được lưu trữ vật lý trên HSM của Google Cloud.

Kiểm tra mã CSR đã tạo

Nếu bạn muốn kiểm tra xem CSR có được tạo bằng khóa chính xác hay không, bạn có thể sử dụng công cụ icedevml/kms-attest-verifier để so sánh khóa công khai (public key) trong CSR với khóa công khai có trong file chứng thực HSM (xem phần “Nhận bằng chứng xác thực” ở trên). Công cụ này sẽ xác minh xem file chứng thực có khóa được tạo an toàn trên HSM và được đánh dấu là không thể trích xuất hay không. Điều này rất hữu ích nếu bạn muốn thực hiện kiểm toán nội bộ để đảm bảo tất cả các tác vụ đã được thực hiện chính xác.

Bước 6: Thiết lập chứng chỉ và trải qua quy trình thẩm định

Sau khi hoàn tất các bước thiết lập ban đầu và có được mã CSR, bạn cần chọn loại chứng chỉ và Cơ quan cấp chứng chỉ (CA) phù hợp theo nhu cầu. Hãy liên hệ với HVN để được tư vấn chi tiết. Quan trọng nhất là chọn một CA hỗ trợ rõ ràng việc lưu trữ khóa riêng trên HSM bên ngoài. Hãy chắc chắn rằng bạn đã kiểm tra kỹ điều này trước khi đặt hàng, vì nếu chọn sai, CA có thể gửi cho bạn một thiết bị USB Token chứa private key, và bạn sẽ không thể chuyển khóa đó lên Google Cloud HSM.

– Thông tin thêm: Bạn có thể đặt hàng chứng chỉ ký mã chuẩn (OV), Tuy nhiên HVN thường khuyến khích khách hàng sử dụng chứng chỉ EV ngay từ đầu, vì bạn sẽ phải thực hiện quy trình tương tự như chứng chỉ EV với chứng chỉ OV, nhưng với chứng chỉ OV cảnh báo Windows SmartScreen sẽ chỉ ngừng hiển thị cảnh báo sau khi phần mềm của bạn đã tạo dựng được “uy tín”. Điều này không được định nghĩa rõ ràng và có thể yêu cầu một số lượng cài đặt nhất định.

*Lưu ý: Chứng chỉ Code Signing chỉ cấp phát cho các doanh nghiệp / tổ chức có giấy tờ xác minh hợp lệ. Do đó, nếu bạn là cá nhân và muốn có chứng chỉ ký mã EV, bạn sẽ cần phải đăng ký một doanh nghiệp / tổ chức hợp lệ trước khi đăng ký chứng chỉ Code Signing với CA.

Quy trình thẩm định

Thời gian thẩm định và các bước cụ thể có thể khác nhau tùy thuộc vào từng CA và khu vực. Thông thường với các nhà cung cấp chứng chỉ (CA) là đối tác với HVN sẽ chỉ mất vài ngày làm việc, và đại diện CA thường phản hồi khá nhanh chóng. 

Trong quá trình thẩm định, bạn sẽ cần cung cấp CSR (Certificate Signing Request). CA cũng có thể yêu cầu bản khai báo về nhà sản xuất và kiểu máy của HSM.

*Lưu ý: Tính đến thời điểm tháng 3 năm 2023, Google KMS dường như đang sử dụng thiết bị Marvell LiquidSecurity (trước đây là Cavium LiquidSecurity). Bạn có thể xác minh thông tin này bằng cách kiểm tra chuỗi chứng chỉ được trả về từ gói chứng thực (File attestation bundle). 

Bước 7: Ký file thực thi (Code Siging)

Để ký file thực thi, trước tiên bạn cần tải xuống công cụ ebourg/jsign, công cụ này cho phép ký file thực thi bằng cách sử dụng mô-đun PKCS#11 bên ngoài.

Bạn có thể tải xuống công cụ này bằng lệnh sau:

curl -L -o jsign.jar https://github.com/ebourg/jsign/releases/download/4.2/jsign-4.2.jar

Tùy chọn, bạn có thể xác minh tổng kiểm tra (checksum) của file đã tải xuống để đảm bảo tính toàn vẹn của nó:

echo ‘290377fc4f593256200b3ea4061b7409e8276255f449d4c6de7833faf0850cc1  jsign.jar’ | sha256sum -c

Đảm bảo rằng bạn đã đăng nhập và xác thực với Google Cloud:

gcloud auth login

Cuối cùng, bạn có thể ký file thực thi của mình bằng cách sử dụng lệnh sau (ví dụ với chứng chỉ của GlobalSign):

java -jar jsign.jar \

    –storetype GOOGLECLOUD \

    –storepass “$(gcloud auth print-access-token)” \

    –keystore “projects/{projectId}/locations/{location}/keyRings/{keyRingName}” \

    –alias “{keyName}” \

    –certfile “codesign-chain.pem” \

    –tsmode RFC3161 \

    –tsaurl http://timestamp.globalsign.com/tsa/r6advanced1 \

    app.exe

Trong đó, hãy thay thế các giá trị tương ứng như sau:

  • {projectId}: ID dự án Google Cloud của bạn (chuỗi, không phải số).
  • {location}: Vùng lưu trữ Key Ring của bạn (ví dụ: asia-southeast1).
  • {keyRingName}: Tên Key Ring mà bạn đã tạo trong Google Cloud Console.
  • {keyName}: Tên khóa HSM mà bạn đã tạo trong Google Cloud Console.

Lưu ý:

  • –tsaurl <url>: Đây là URL của máy chủ dấu thời gian của CA. URL này thường được cung cấp trên trang web hoặc trong tài liệu của CA. Bạn không cần phải thực hiện cấu hình bổ sung nào ngoài việc nhập URL chính xác vào lệnh trên.
  • codesign-chain.pem: File này phải chứa chuỗi chứng chỉ, bao gồm chứng chỉ Code Signing của bạn và tất cả các chứng chỉ của CA (root and intermediate), để tạo thành toàn bộ đường dẫn từ chứng chỉ gốc đến chứng chỉ của bạn.
  • Không sử dụng các chứng chỉ được tải xuống từ gói chứng thực khi gọi jsign.jar. Các chứng chỉ từ gói chứng thực chỉ hữu ích để xác minh rằng bạn đang giữ đúng khóa ký mã và không thể sử dụng cho lệnh ký này.
  • File codesign-chain.pem phải chứa chứng chỉ ký mã của bạn (được cấp bởi CA của bạn) và các chứng chỉ gốc và trung gian từ CA của bạn. Hãy kiểm tra tài liệu của CA để tìm hiểu thêm chi tiết về cách kết hợp các chứng chỉ này.

Lưu ý về việc đăng nhập vào CI Pipeline

Sau khi bạn đã thiết lập thành công việc ký thủ công các file nhị phân bằng chứng chỉ mới, bạn có thể áp dụng quy trình tương tự trong các đường ống Tích hợp liên tục (CI) của mình. Dưới đây là một số khuyến nghị cần lưu ý:

Không sử dụng tài khoản cá nhân để xác thực

Tránh sử dụng tài khoản Google Cloud cá nhân của bạn (với nhiều quyền hạn) để ký ứng dụng tự động trong đường ống CI. Nếu thông tin đăng nhập của bạn bị rò rỉ, kẻ tấn công có thể truy cập vào tài khoản của bạn, dẫn đến các hậu quả nghiêm trọng như xóa khóa HSM, ký phần mềm độc hại, hoặc tạo các tài nguyên đắt tiền như Máy ảo thay mặt bạn.

Quyền Google Cloud bắt buộc

Mã thông báo xác thực được chuyển đến công cụ jsign cần phải có các quyền sau trong Google Cloud:

  • cloudkms.cryptoKeyVersions.list
  • cloudkms.cryptoKeyVersions.useToSign

Các quyền này cho phép công cụ jsign chỉ liệt kê các phiên bản khóa HSM của bạn và sử dụng chúng để ký bất đối xứng, mà không cần quyền truy cập khác. Lưu ý rằng các công cụ ký khác nhau có thể yêu cầu một tập hợp quyền khác nhau để hoạt động chính xác.

Để đảm bảo an toàn, hãy tạo một tài khoản dịch vụ riêng (service account) với vai trò tùy chỉnh, chỉ có các quyền bắt buộc cho quy trình CI.

Điều kiện IAM của Google Cloud

Bạn có thể tăng cường bảo mật bằng cách giới hạn quyền truy cập để tài khoản dịch vụ (service account) chỉ có thể sử dụng khóa cụ thể trong Cloud KMS. Bằng các áp dụng các điều kiện IAM sau:

resource.type == “cloudkms.googleapis.com/CryptoKey” &&

resource.name == “projects/{projectId}/locations/{location}/keyRings/{keyRingName}/cryptoKeys/{keyName}”

Các điều kiện này nên được áp dụng cho cả hai quyền cloudkms.cryptoKeyVersions.listcloudkms.cryptoKeyVersions.useToSign.

Tránh cấp quyền liên quan đến IAM không cần thiết

Khi cấu hình quyền cho tài khoản dịch vụ (service account), hãy đảm bảo rằng bạn không cấp các vai trò iam.serviceAccountUser hoặc iam.serviceAccountTokenCreator. Các vai trò này cung cấp quyền truy cập cấp cao, không cần thiết trong quy trình này, và có thể tiềm ẩn rủi ro về bảo mật.

Bằng cách áp dụng những khuyến nghị trên, bạn có thể đảm bảo rằng quy trình ký mã trong CI Pipeline của bạn diễn ra một cách an toàn và bảo mật.

Phương pháp xác thực tài khoản dịch vụ

Có hai phương pháp cơ bản để xác thực với Google Cloud dưới dạng tài khoản dịch vụ (service account):

  1. Sử dụng Key file: Đường ống có thể xác thực bằng lệnh gcloud auth activate-service-account bằng cách cung cấp file khóa JSON.
  2. Sử dụng OIDC (OpenID Connect): Ngoài ra, bạn có thể sử dụng OpenID Connect để xác thực trình chạy đường ống của mình với Google Cloud mà không cần lưu trữ File bí mật trong đường ống. Nếu bạn đang sử dụng GitHub Actions, hãy xem các hướng dẫn của họ để thiết lập OpenID Connect.

Trong cả hai trường hợp, hãy đảm bảo rằng tài khoản dịch vụ của bạn chỉ có quyền tối thiểu cần thiết, và mọi thông tin xác thực đều được bảo vệ và sử dụng an toàn trong đường ống. Nếu thông tin xác thực bị đánh cắp, kẻ tấn công có thể truy cập vào khóa riêng của bạn, điều này có thể dẫn đến việc ký các File thực thi không liên quan (như phần mềm độc hại) bằng chứng chỉ của bạn, dẫn đến việc chứng chỉ bị báo cáo với CA và bị thu hồi.

Giới hạn quyền truy cập vào đường ống ký mã (signing pipeline)

Nếu hệ thống CI của bạn hỗ trợ việc phê duyệt quy trình công việc hoặc các biện pháp hạn chế tương tự, hãy bật chúng cho các tác vụ Tích hợp liên tục (CI) liên quan đến quy trình ký nhị phân. Nếu dự án của bạn là công khai hoặc có nhiều nhà phát triển truy cập, đảm bảo rằng chỉ những người bảo trì dự án đáng tin cậy mới có thể tạo ra các File nhị phân đã ký.

Điều tối quan trọng đó là phải hiểu rõ cách hệ thống CI của bạn hoạt động và đảm bảo rằng chỉ những người có thẩm quyền phù hợp mới có thể ký File.

Xác thực các File nhị phân tải xuống bên ngoài

Nếu bạn đang tải xuống các File nhị phân từ nguồn bên ngoài (như công cụ jsign.jar) trong đường ống ký mã của mình, hãy đảm bảo xác thực chúng bằng cách sử dụng hàm băm hoặc các phương pháp tin cậy khác. File nhị phân từ bên ngoài có thể bị thay thế bởi các tác nhân độc hại, do đó, hãy đảm bảo rằng bạn luôn sử dụng phiên bản phần mềm mong muốn.

Câu hỏi thường gặp

1. Tại sao tôi không thể chỉ lưu trữ privatekey.pem của mình trên đĩa?

Việc lưu trữ khóa riêng (privatekey.pem) của bạn trên ổ đĩa không còn được coi là an toàn. Khóa riêng dùng để ký mã phải được lưu trữ trên một thiết bị HSM (Hardware Security Module) được chứng nhận, được sở hữu và quản lý bởi Google Cloud. HSM đảm bảo rằng khóa riêng của bạn không thể bị tải xuống hay tiếp cận từ bên ngoài. Lưu trữ khóa riêng trực tiếp trên ổ cứng sẽ tiềm ẩn rủi ro bảo mật, vì các tác nhân độc hại có thể đánh cắp khóa này và sử dụng chứng chỉ ký mã của bạn một cách không kiểm soát.

2. Google Cloud hoặc CA của tôi có thấy các file nhị phân mà tôi đang ký không?

Theo sơ đồ quy trình đã đề cập, mặc dù quá trình ký mã liên quan đến việc giao tiếp với hai máy chủ từ xa (Google Cloud và máy chủ timestamp của CA), nhưng không có máy chủ nào trong số này có thể thấy nội dung thực tế của file thực thi mà bạn đang ký. Chỉ các hàm băm mật mã (SHA-256 hoặc tương tự) của file nhị phân mới được truyền qua mạng. Hàm băm này không chứa thông tin có ý nghĩa và do đó, không ai có thể nhìn thấy nội dung file nhị phân của bạn cho đến khi bạn chính thức xuất bản nó.

3. Tại sao cần có bước đóng dấu thời gian bổ sung?

Nếu không có dấu thời gian, không có cách nào để xác định chính xác thời điểm bạn đã ký file nhị phân của mình. Điều này dẫn đến việc tất cả các chữ ký của bạn sẽ trở nên không hợp lệ sau khi chứng chỉ ký mã hết hạn (thường là sau một hoặc hai năm). Đây là biện pháp phòng ngừa để ngăn các nhà phát triển phần mềm giả mạo ngày ký. Nếu không có bước này, bạn có thể lùi đồng hồ trên máy tính của mình và tiếp tục sử dụng chứng chỉ đã hết hạn.

Bằng cách áp dụng dấu thời gian đáng tin cậy, bạn sẽ có thông tin chính xác về thời điểm chữ ký được tạo. Nhờ đó, chữ ký của bạn vẫn sẽ được coi là hợp lệ ngay cả sau khi chứng chỉ ký mã hết hạn, miễn là cơ quan cấp dấu thời gian (TSA) vẫn được tin cậy và hàm băm không bị phá vỡ. Khi chứng chỉ Code Sign bị hết hạn sẽ không ảnh hưởng đến tính hợp lệ của chữ ký của bạn, trừ khi chứng chỉ đó bị thu hồi do lý do bảo mật.

Việc thêm dấu thời gian vào chữ ký không yêu cầu truy cập vào khóa riêng (private key) của bạn và chỉ đòi hỏi một số bước thiết lập bổ sung đơn giản. 

Lời kết

Với vai trò là đối tác ủy quyền cấp cao của Google và các hãng chứng chỉ bảo mật hàng đầu trên toàn thế giới, HVN Group cung cấp dịch vụ tư vấn và triển khai toàn diện cho khách hàng muốn tích hợp Code Signing EVHSM trên nền tảng Google Cloud. Đội ngũ chuyên gia của chúng tôi sẵn sàng hỗ trợ bạn từ khâu tư vấn ban đầu, triển khai kỹ thuật cho đến việc quản lý và duy trì hệ thống, giúp bạn an tâm tập trung vào phát triển sản phẩm mà không lo lắng về bảo mật.

Hãy liên hệ với chúng tôi qua LiveChat bên dưới để nhận được tư vấn chi tiết và giải pháp tối ưu cho nhu cầu xác nhận danh tính của nhà phát triển / nhà phát hành phần mềm và đảm bảo tính toàn vẹn của mã nguồn phần mềm của bạn.

Bài viết liên quan
0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest

0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất
Phản hồi nội tuyến
Xem tất cả bình luận