PGP 加密
PGP 是一組標準的加密、解密和簽署演算法, 以及提供加密編譯隱私和驗證機制
使用 PGP 加密酬載時,合作夥伴必須能夠執行下列作業:
- 使用多個 PGP 金鑰加密及解密酬載。
- 使用多個 PGP 金鑰簽署酬載。
- 使用多個簽章驗證酬載,任一簽名可以是 簽章。
- 將採用 Base64 編碼的網路安全酬載解密。
提供給 Google 的 PGP 公開金鑰必須具有用於加密的子金鑰。 子鍵可獨立輪替主金鑰。主金鑰 用於身分驗證。私密金鑰須為 2048 以上版本 位元 RSA 金鑰,效期為一年,生命週期最長為兩年。
在開始開發前,請務必先與 Google 交換 PGP 金鑰。 在這個步驟中,您會產生 PGP 公開/私密金鑰組,並將 金鑰傳送給 Google,並從 Google 收回公開金鑰。在開發期間 您只需要交換用於開發及測試的沙箱金鑰 它也沒有在正式環境使用在測試及發布正式版前,您必須完成 執行另一項正式版金鑰的交換作業
產生新的 PGP 金鑰
假設系統路徑中存在 GPG 二進位檔, 可以使用以下 POSIX 指令建立新的金鑰組。
$ gpg --full-generate-key
當系統提示時,請選取熵長度至少為 2048 位元的 RSA 金鑰,並加上 有效期限為 1 至 2 年這個指令應會同時建立主金鑰 (已加上 SC 標籤,「S」代表簽署,「憑證代表產生」) 和子鍵 (標有 E 標籤,「E」代表加密)。
PGP 程式庫設定
傳送酬載
- 簽署時應使用
SHA384
做為摘要演算法。不使用SHA1
或MD5
- 加密時應使用
AES256
做為對稱加密 演算法;不要使用CAST5
或IDEA
- 加密或簽署郵件時,請務必選取含有
對應用途;請使用
CAN_SIGN
金鑰簽署,並使用ENCRYPT_COMMS
/ENCRYPT_STORAGE
金鑰 (用於加密)
接收酬載
- 驗證酬載時,請確認程式庫支援新型雜湊
例如
SHA384
自 起,Google 會開始對所有新的金鑰中採用此演算法 2023 年 5 月 14 日。 - 解密酬載時,請確認程式庫支援新型對稱式
加密演算法,例如
AES256
。Google 會開始用於所有新的 。
GPG 酬載加密示例
以下示例說明如何在使用 GPG 時選取安全選項。 這項作業應在信任的環境中執行, 使用者無法存取私密金鑰或機密輸入檔案。
gpg --output signed-and-encrypted.pgp \
--sign --digest-algo SHA384 \
--encrypt --cipher-algo AES256 \
--armor \
--recipient {key_id} \
input.txt
GPG 會針對每項作業,自動從套件中選取正確的金鑰 以及您要求 LLM 執行的工作
搭配使用 JWE 加密和 JWS 簽署功能
JSON Web Encryption (JWE) 是由 rfc7516 定義的標準,可加密應用程式中的內容 第二,自訂角色只能 套用至專案或機構JSON Web Signature (JWS) 是 rfc7515 應用程式層級
要求和回應會以非對稱式 (公開) 加密的 JWE 權杖 來使用「精簡序列化」加密如果有需要 SQL 指令的分析工作負載 則 BigQuery 可能是最佳選擇JWE 權杖會 包含已簽署的酬載做為 JWS 權杖。JWS 也使用非對稱式金鑰; 私密金鑰 (用於簽署私密金鑰) 和公開金鑰 (用於驗證)。
傳送酬載時,請先簽署該酬載,再加密。時間 接收酬載、解密,然後驗證簽章。
使用 JWE 時,合作夥伴必須能執行下列作業:
- 使用精簡序列化功能。
- 透過其中一組 JWE 金鑰解密酬載。
- 使用 RSA-OAEP、RSA-OAEP-256 或 ECDH-ES 演算法管理金鑰。
- 填入
alg
標頭 (rfc7518 第 4.1 節)。
- 填入
- A256GCM
A128GCM、
A128CBC-HS256,或
A256CBC-HS512
用於內容加密
- 已填入至
enc
標頭。
- 已填入至
kid
標頭,用於識別公開加密金鑰。- 採用 JWE 加密的訊息酬載必須使用內容類型 application/jose;charset=utf-8。
使用 JWS 時,合作夥伴必須能執行下列作業:
- 使用精簡序列化功能。
- 透過其中一組 JWS 金鑰驗證酬載。
- 包括 HS256、HS384、HS512
使用 RS256、RS384、RS512、ES256、PS256、PS384 或 PS512 演算法建立簽章。
- 填入
alg
標頭 (rfc 7518 第 3.1 節)。
- 填入
kid
標頭,用於識別私密簽署金鑰。
JWE/JWS 字串將編碼為 UTF-8 字串,而其酬載可能是 任意位元組
私密金鑰須為 RSA/ECDH-ES 金鑰,效期為一年,且上限為 有效期限所有私密金鑰 ID 一律須停留在 並據此計算所有簽名值,因此 合作夥伴的伺服器。
在開始開發前,請務必先與 Google 交換 JWE 和 JWS 金鑰。 交換金鑰時,應採用 JWK 格式,如 rfc7517。 在這個步驟中,您會產生公開/私密金鑰組,並將公開金鑰的 金鑰傳送給 Google,並從 Google 收回公開金鑰。在開發期間 您只需要交換用於開發及測試的沙箱金鑰 它也沒有在正式環境使用在測試及發布正式版前,您必須完成 執行另一項正式版金鑰的交換作業