語言

KeyGenParameterSpec.Builder.SetRandomizedEncryptionRequired(Boolean) 方法

定義

設定使用此金鑰加密時是否必須足夠隨機化,以每次產生相同明文的不同密文。

[Android.Runtime.Register("setRandomizedEncryptionRequired", "(Z)Landroid/security/keystore/KeyGenParameterSpec$Builder;", "", ApiSince=23)]
public Android.Security.Keystore.KeyGenParameterSpec.Builder SetRandomizedEncryptionRequired(bool required);
[<Android.Runtime.Register("setRandomizedEncryptionRequired", "(Z)Landroid/security/keystore/KeyGenParameterSpec$Builder;", "", ApiSince=23)>]
member this.SetRandomizedEncryptionRequired : bool -> Android.Security.Keystore.KeyGenParameterSpec.Builder

參數

required
Boolean

傳回

屬性

備註

設定使用此金鑰加密時是否必須足夠隨機化,以每次產生相同明文的不同密文。 所需的形式密碼學性質是在選擇明文攻擊下不可區分性(IND-CPA)。 此特性重要,因為它能減輕密文可能洩漏明文資訊的多種弱點。 例如,若某明文總是產生相同的密文,攻擊者可能會看到重複的密文,並推斷出明文的某些內容。

預設情況下,IND-CPA 是必須的。

當需要 IND-CPA 時,禁止不提供 IND-CPA 的加密/解密轉換,例如帶有對稱加密演算法的 ECB 或無填充的 RSA 加密/解密。 在使用 IV 的區塊模式中,如 GCM、CBC 和 CTR,加密時會拒絕呼叫者提供的 IV,以確保只使用隨機 IV。

在停用此要求前,請考慮允許 Cipher 透過初始化加密產生隨機 IV,然後用 Cipher.getIV() 查詢該 IV。 如果 IV 是非隨機的,可以考慮改變設計,改用隨機 IV,並隨密文提供給需要解密的實體。 若使用 RSA 加密且無填充,可考慮提供 IND-CPA 的加密填充方案,如 PKCS#1 或 OAEP。

Android 參考資料。android.security.keystore.KeyGenParameterSpec.Builder.setRandomizedEncryptionRequired

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

適用於