2008-09-08 8 views
10

Действительно ли Bouncy Castle API Thread Safe? Особенно,Является ли Bouncy Castle API Thread надежным?

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

Я планирую написать одноплодную Spring боб для базовой поддержки уровня криптографической в ​​моем приложении. Поскольку это веб-приложение, есть больше шансов, что несколько потоков обращаются к этому компоненту за раз. Поэтому безопасность протектора здесь важна.

Пожалуйста, дайте мне знать, если вы столкнулись с такими ситуациями, используя Bouncy Castle.

ответ

12

На самом деле не имеет значения, является ли API/код потокобезопасным. CBC-шифрование само по себе не является потокобезопасным. Некоторые термины -

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. 

Действительно простой CBC реализация может выглядеть следующим образом: P1, P2, P3 = простые текстовые сообщения

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. 

Как вы можете видеть, результат шифрования P1, P2 и P3 (в этом порядке) отличается от шифрования P2, P1 и P3 (в указанном порядке).

Таким образом, при реализации CBC важно соблюдать порядок. Любой алгоритм, где порядок важен, по определению не может быть потокобезопасным.

Вы можете создать фабрику Singleton, которая поставляет объекты шифрования, но вы не можете доверять им, чтобы они были потокобезопасными.

+0

Да, Тнильсон, ваши рассуждения правы. Я нашел следующее сообщение: http://www.bouncycastle.org/devmailarchive/msg04715.html из списка рассылки bouncy castle. Это не полностью безопасный поток (по крайней мере, двигатель AES). – jatanp 2008-09-08 11:37:14

0

Версия J2ME не является потокобезопасной.

 Смежные вопросы

  • Нет связанных вопросов^_^