2008-09-08 18 views
10

¿Es Bouncy Castle API Thread Safe? Especialmente,¿Es seguro Bouncy Castle API Thread Safe?

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

Tengo la intención de escribir un grano de primavera Singleton con soporte básico nivel de criptografía 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í.

Háganme saber si se ha encontrado con situaciones tales utilizando Bouncy Castle.

Respuesta

12

Realmente no importa si la API/Código es seguro para subprocesos. Cifrado CBC en sí mismo no es seguro para subprocesos. cierta 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 muy sencilla aplicación CBC puede verse como: 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 se puede ver, el resultado de cifrar P1, P2 y P3 (en ese orden) es diferente de encriptar P2, P1 y P3 (en ese orden).

Por lo tanto, 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 crear una fábrica de Singleton que entregue objetos de cifrado, pero no puede confiar en que sean seguros para la ejecución de subprocesos.

+0

Sí, Tnilsson, su razonamiento es correcto. Encontré la siguiente publicación, http://www.bouncycastle.org/devmailarchive/msg04715.html de la lista de correo de Bouncy Castle. No es completamente seguro para hilos (al menos el motor AES). – jatanp

0

La versión de J2ME no es segura para subprocesos.