Domanda

È API del castello gonfiabile Discussione sicura?Particolarmente,

org.bouncycastle.crypto.paddings.PaddedBufferedBlockCipher
org.bouncycastle.crypto.paddings.PKCS7Padding
org.bouncycastle.crypto.engines.AESFastEngine
org.bouncycastle.crypto.modes.CBCBlockCipher

Sto progettando di scrivere un bean Spring singleton per il supporto della crittografia di livello base nella mia app.Poiché si tratta di un'applicazione Web, ci sono maggiori possibilità che più thread accedano a questo componente contemporaneamente.Quindi la sicurezza del battistrada è essenziale qui.

Per favore fatemi sapere se vi siete imbattuti in situazioni simili utilizzando Bouncy Castle.

È stato utile?

Soluzione

Non importa se l'API/codice è thread-safe.La crittografia CBC di per sé non è thread-safe.Un po' di terminologia -

E(X) = Enctrypt message X
D(X) = Dectrypt X. (Note that D(E(X)) = X)
IV = Initialization vector. A random sequence to bootstrap the CBC algorithm
CBC = Cipher block chaining.

Un'implementazione CBC davvero semplice può assomigliare a:P1, P2, P3 = Messaggi di testo normale

1. Generate an IV, just random bits.
2. Calculate E( P1 xor IV) call this C1
3. Calculate E( P2 xor C1) call this C2
4. Calculate E( P3 xor C2) call this C3.

Come puoi vedere, il risultato della crittografia di P1, P2 e P3 (in quest'ordine) è diverso dalla crittografia di P2, P1 e P3 (in quest'ordine).

Quindi, in un’implementazione CBC, l’ordine è importante.Qualsiasi algoritmo in cui l'ordine è importante non può, per definizione, essere thread-safe.

Puoi creare una factory Singleton che fornisca oggetti di crittografia, ma non puoi fidarti che siano thread-safe.

Altri suggerimenti

La versione J2ME non è thread-safe.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top