Может Derby / JavaDB _really_ шифрует с Тройным DES, а не (плоскостью) DES?

Это, кажется, путает тройной DES (> 128 битов) с плоскостью DES (64 бита). Я пытаюсь зашифровать базу данных Derby с Тройным DES (или DESede) использование Java 1.5

Я нашел это сообщение дискуссионного форума о проблеме с JDK 1.5 случайно и так проверил, чтобы удостовериться, что это действительно использовало DESede и не плоскость DES. Когда я создал базу данных с Тройным DES (168 битов) URL

jdbc:derby:MySecureDB;dataEncryption=true;encryptionAlgorithm=DESede/CBC/NoPadding;bootPassword=$ecureC@deCanBr@kE0074242

Я все еще смог открыть его и получить доступ к нему с (плоскость) DES (64 бита) URL

jdbc:derby:MySecureDB;dataEncryption=true;encryptionAlgorithm=DES/CBC/NoPadding;bootPassword=$ecureC@deCanBr@kE0074242

Это не поведение, которое я ожидаю!!! Я не должен мочь открыть его с неправильным алгоритмом шифрования. Как я могу удостовериться, что это действительно шифрует его с правом (> 128 битов) алгоритм?

Derby, кажется, использует правильную функцию для Java 1.5, упомянутого в JCECipherProvider.java. Мое чтение кода указывает, что Derby не обрабатывает Тройной DES как отличающийся от плоскости DES... Я могу действительно положить, что это использует устойчивое шифрование?

5
задан sventechie 21 December 2009 в 17:01
поделиться

3 ответа

Я считаю, что документация неверна, и что на самом деле нет необходимости указывать алгоритм шифрования для использования при использовании алгоритма не по умолчанию, так как алгоритм, который должен использоваться, указан в $DERBY_HOME/БДД/Сервис. properties

В моем случае, когда я создавал базу данных с вашими параметрами, мой service.properties имел следующее содержимое (среди прочих не относящихся к делу записей):

log_encrypt_algorithm_version=1
encryptionAlgorithm=DESede/CBC/NoPadding
dataEncryption=true
derby.encryptionBlockSize=8
encryptionKeyLength=168-24
encryptedBootPassword=472b7cc5600605333392dd10a46067d2e2935fd4c350d533-43435
data_encrypt_algorithm_version=1

Вы можете проверить, что это используется, изменив используемый алгоритм. Если вы измените указанный алгоритм в этом файле на DES, то вы не сможете перезапустить базу данных.

Например:

$ ../bin/ij
ij version 10.4
ij> connect 'jdbc:derby:testdb;create=true;dataEncryption=true;encryptionAlgorithm=Blowfish/ECB/NoPadding;bootPassword=$ecureC@deCanBr@kE0074242';
ij> quit;
$ sed -i .o 's/Blowfish/DES/' testdb/service.properties 
$ ../bin/ij
ij version 10.4
ij> connect 'jdbc:derby:testdb;bootPassword=$ecureC@deCanBr@kE0074242';
ERROR XJ040: Failed to start database 'testdb', see the next exception for details.
ERROR XBM06: Startup failed. An encrypted database cannot be accessed without the correct boot password.  
ij> quit;
$ sed -i .o 's/DES/Blowfish/' testdb/service.properties 
$ ../bin/ij
ij version 10.4
ij> connect 'jdbc:derby:testdb;bootPassword=$ecureC@deCanBr@kE0074242';
ij> quit;
$ 
5
ответ дан 14 December 2019 в 08:52
поделиться

Я думаю, что параметр encryptionAlgorithm имеет значение только тогда, когда вы впервые выполняете шифрование (то есть, когда вы впервые создаете зашифрованную базу данных или когда вы впервые шифруете незашифрованную базу данных).

После того, как вы зашифровали базу данных, вам просто нужно указать bootPassword. Дерби уже знает, какой алгоритм шифрования использовался.

1
ответ дан 14 December 2019 в 08:52
поделиться

Согласно Работа с шифрованием из Руководства разработчика Java DB, первый URL-адрес выглядит нормально для шифрования базы данных при создании (поскольку он указывает dataEncryption = true ) и должен был создать 168-битный ключ шифрования.

Согласно документации, я не думаю, что вам следует использовать dataEncryption = true при Загрузка зашифрованной базы данных . Насколько я понимаю, вам просто нужно использовать bootPassword и encryptionAlgorithm .

Признаюсь, я не проверял это, и мне действительно интересно, что именно произойдет:

  • если вы не укажете dataEncryption и используете неправильный encryptionAlgorithm ] во втором URL.
1
ответ дан 14 December 2019 в 08:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: