java - español - ¿Bouncy Castle API Thread es seguro?
bouncy castle java download (2)
La versión de J2ME no es segura para subprocesos.
¿ Bouncy Castle API Thread es seguro? Especialmente,
org.bouncycastle.crypto.paddings.PaddedBufferedBlockCipher
org.bouncycastle.crypto.paddings.PKCS7Padding
org.bouncycastle.crypto.engines.AESFastEngine
org.bouncycastle.crypto.modes.CBCBlockCipher
Estoy planeando escribir un bean de primavera singleton para el soporte de criptografía de nivel básico en mi aplicación. Dado que es una aplicación web, existen mayores posibilidades de que varios subprocesos accedan a este componente a la vez. Entonces la seguridad de la banda de rodadura es esencial aquí.
Por favor, avíseme si ha encontrado situaciones similares utilizando Bouncy Castle.
Realmente no importa si la API / Código es seguro para subprocesos. Cifrado CBC en sí mismo no es seguro para subprocesos. Alguna terminología -
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.
Una implementación de CBC realmente simple puede ser similar a: P1, P2, P3 = mensajes de texto sin formato
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.
Como puede ver, el resultado de encriptar P1, P2 y P3 (en ese orden) es diferente de encriptar P2, P1 y P3 (en ese orden).
Entonces, en una implementación de CBC, el orden es importante. Cualquier algoritmo donde el orden sea importante no puede, por definición, ser seguro para subprocesos.
Puede hacer una fábrica de Singleton que entregue objetos de cifrado, pero no puede confiar en que sean seguros para subprocesos.