KeyProtection.Builder.SetRandomizedEncryptionRequired(Boolean) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
設定使用此金鑰加密時是否必須足夠隨機化,以每次產生相同明文的不同密文。
[Android.Runtime.Register("setRandomizedEncryptionRequired", "(Z)Landroid/security/keystore/KeyProtection$Builder;", "", ApiSince=23)]
public Android.Security.Keystore.KeyProtection.Builder SetRandomizedEncryptionRequired(bool required);
[<Android.Runtime.Register("setRandomizedEncryptionRequired", "(Z)Landroid/security/keystore/KeyProtection$Builder;", "", ApiSince=23)>]
member this.SetRandomizedEncryptionRequired : bool -> Android.Security.Keystore.KeyProtection.Builder
參數
- required
- Boolean
傳回
- 屬性
備註
設定使用此金鑰加密時是否必須足夠隨機化,以每次產生相同明文的不同密文。 所需的形式密碼學性質是在選擇明文攻擊下不可區分性(IND-CPA)。 此特性重要,因為它能減輕密文可能洩漏明文資訊的多種弱點。 例如,若某明文總是產生相同的密文,攻擊者可能會看到重複的密文,並推斷出明文的某些內容。
預設情況下,IND-CPA 是必須的。
當需要 IND-CPA 時:禁止不提供 IND-CPA 的轉換,例如使用 ECB 模式或無填充的 RSA 加密的對稱密碼;在使用 IV 的轉換中,如 GCM、CBC 和 CTR 區塊模式的對稱密碼,加密時會拒絕呼叫者提供的 IV,以確保只使用隨機 IV 。在停用此要求之前,請考慮以下方法:如果你是產生一個隨機 IV 來加密,然後用這個 IV 初始化一個密碼,解決方法是讓密碼自己產生一個隨機 IV。 如果密碼初始化為無 IV 的加密,則會發生這種情況。 接著可以透過 Cipher.getIV() 查詢 IV;如果你正在產生非隨機的 IV(例如,來自非完全隨機的事物,例如被加密的檔案名稱、交易 ID、密碼或裝置識別碼),可以考慮改變設計,使用隨機 IV,這樣就能在密文之外提供給需要解密的實體;如果你使用無填充的 RSA 加密,建議考慮切換至 IND-CPA 的填充方案,例如 PKCS#1 或 OAEP。
Android 參考資料。android.security.keystore.KeyProtection.Builder.setRandomizedEncryptionRequired
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。