Question

Est API de château gonflable Fil de discussion sécurisé ?En particulier,

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

Je prévois d'écrire un bean Spring singleton pour la prise en charge de la cryptographie de niveau de base dans mon application.Puisqu'il s'agit d'une application Web, il y a plus de chances que plusieurs threads accèdent à ce composant à la fois.La sécurité de la bande de roulement est donc essentielle ici.

S'il vous plaît laissez-moi savoir si vous avez rencontré de telles situations en utilisant Bouncy Castle.

Était-ce utile?

La solution

Cela n'a vraiment pas d'importance si l'API/le code est thread-safe.Le cryptage CBC en lui-même n’est pas thread-safe.Un peu de terminologie -

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.

Une implémentation CBC très simple peut ressembler à :P1, P2, P3 = Messages en texte brut

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.

Comme vous pouvez le constater, le résultat du chiffrement de P1, P2 et P3 (dans cet ordre) est différent du chiffrement de P2, P1 et P3 (dans cet ordre).

Ainsi, dans une implémentation CBC, l’ordre est important.Tout algorithme où l’ordre est important ne peut pas, par définition, être thread-safe.

Vous pouvez créer une usine Singleton qui fournit des objets de chiffrement, mais vous ne pouvez pas leur faire confiance pour qu'ils soient thread-safe.

Autres conseils

La version J2ME n'est pas thread-safe.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top