Сильное шифрование Java — автономная библиотека — только исходный код

Я ищу библиотеку шифрования на основе Java с поддержкой сильного шифрования.

Мне известно о расширении Java Cryptography Extension, но чтобы использовать его, я хотел бы сначала получить доступ к исходному коду, изменить его, скомпилировать и использовать свою собственную версию ( i плевать на лицензии с открытым исходным кодом )

В качестве альтернативы мне интересно, есть ли какие-либо хорошие, надежные библиотеки шифрования на основе Java, которые не полагаются и не используют что-либо из криптобиблиотек JDK. Здесь я также заинтересован в том, чтобы получить доступ к исходным файлам, чтобы скомпилировать их самостоятельно.

Как видите, я стараюсь избегать любых атак «человек посередине», включая модифицированные версии JVM или модифицированные сторонние библиотеки. Это просто одержимость.

Спасибо!


person mmm    schedule 14.03.2013    source источник
comment
Не сочиняйте сами, пожалуйста!   -  person Tom Cammann    schedule 14.03.2013
comment
Я не уверен, что Jasypt использует библиотеки Java, но взгляните.   -  person Sotirios Delimanolis    schedule 14.03.2013
comment
@TomCammann, почему бы и нет? Я не собираюсь делать свой собственный, просто переупаковать существующий, вот и все :)   -  person mmm    schedule 14.03.2013
comment
Том прав. Криптокод очень хрупок. Даже небольшое изменение может сделать его уязвимым для атаки по побочному каналу. Знаете ли вы, как написать код, который может избежать атаки по времени? Некоторые версии AES уязвимы, а другие нет. Ты знаешь разницу?   -  person rossum    schedule 14.03.2013
comment
@rossum, не совсем, но я просто думаю об изменении имен пакетов, а не фактической реализации.   -  person mmm    schedule 14.03.2013
comment
@SotiriosDelimanolis Спасибо, я обязательно посмотрю на это   -  person mmm    schedule 14.03.2013
comment
Злоумышленник, который может изменить JVM, может так же легко поставить точку останова в вашей пользовательской функции AES и скопировать ключ.   -  person CodesInChaos    schedule 16.03.2013


Ответы (2)


Я не уверен, что создание собственной библиотеки — это хорошая идея, но если вы действительно этого хотите, посмотрите на bouncycastle.

person obourgain    schedule 14.03.2013
comment
Есть пара нерешенных проблем, возможно, ничего серьезного, но все же: bouncycastle.org/jira /secure/BrowseProject.jspa Но я рассмотрю исходный код и посмотрю, что можно с ним сделать. Знаете ли вы что-нибудь о BouncyCastle и Cryptix с точки зрения того, насколько надежное шифрование для AES или RSA они обеспечивают? - person mmm; 14.03.2013
comment
К сожалению, я не знаю Cryptix, я не могу сравнивать. - person obourgain; 14.03.2013

Вы пробовали Криптикс? Это бесплатный исходный код, совместимый с библиотекой JCA, поэтому вы можете установить его как единственного поставщика безопасности.

person Cromax    schedule 14.03.2013
comment
Я совместим с JCA? Это означает, что для этого требуется JCA? Я стараюсь ни на кого не полагаться... внизу сайта cryptix: ..Cryptix Foundation ltd больше не существует, она не может получить обновленный сертификат. Таким образом, новой версии Cryptix JCE не будет. Требуется сертификат от SUN/Oracle? Сейчас он кажется немного устаревшим.. - person mmm; 14.03.2013
comment
AFAIK Cryptix не разрабатывается с 05 года, но я не совсем уверен, о каком сертификате вы говорите. В 2004 мне понадобилась надежная криптография, а она не была доступна в стандартной Java, поэтому я использовал исходный код Cryptix для своих целей. Что вы подразумеваете под этим требуется JCA? Cryptix использует свои собственные процедуры, поэтому вы не полагаетесь на безопасные алгоритмы, написанные Oracle/Sun. (Насколько я знаю, вы можете использовать его самостоятельно). Однако вы можете установить его в JRE как ЕДИНСТВЕННЫЙ поставщик безопасности, поэтому JCA просто предоставляет стандартный способ доступа к материалам, но Cryptix делает все самостоятельно. - person Cromax; 14.03.2013
comment
Внизу: cryptix.org вы видите мою цитату. Итак, вы говорите, что с помощью сертификата я могу переключить криптографическую реализацию SUN на использование этого вместо этого, но для этого ему нужен сертификат, но если я не хочу, то я могу использовать его как стоять в одиночестве? Любая ссылка на исходный код? Который из них? Есть несколько вариантов загрузки. Спасибо - person mmm; 14.03.2013
comment
Ммм, вы меня озадачили... Трудно сказать (для меня), что будет, если сертификат устарел. А что касается библиотек --- это зависит от того, что вам нужно. Я начал с cryptix-openpgp-provider.jar (он должен быть в архиве Cryptix OpenPGP), а затем проследил за зависимостями. Я получаю (дополнительно) с: certpath-api-compat.jar, cryptix-jce-api.jar, cryptix-jce-provider.jar, cryptix-message-api.jar, cryptix-pki-api.jar. Другое дело, вам нужно изменить local_policy.jar и US_export_policy.jar на версии USJP и отредактировать java.security, чтобы определить поставщиков JCA (jre/security). - person Cromax; 14.03.2013
comment
Вам также нужно поместить эти банки в каталог jre/ext. (Если вы не хотите использовать самостоятельно, как вы сказали). - person Cromax; 14.03.2013
comment
Я могу быть глупым здесь, но зачем мне вся эта экспортная политика? Это должно быть связано с доступом к простым классам Java с реализацией AES. Я думал, что это JCE требует правил экспортной политики. Я не хочу менять поставщика безопасности JDK, я просто хочу другого, на той стороне, которую я намерен использовать сам по себе. - person mmm; 14.03.2013