![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() День добрый!
Подскажите, пожалуйста. Есть Delphi, Postgres и CryptoAPI (XP или Windows 7) Надо сделать шифрование персональных данных в базе, текстовой информации и не больших графических файлов. (По всем доступным источникам использовать ГОСТ-89 не обязательно, да сейчас и не в этом вопрос) По ряду причин желательно использовать симметричное поточное шифрование RC4. В принципе, в Delphi через wcrypt2 все работает. Однако, классики утверждают, что если два в чем-то отличных сообщения зашифровать одним ключом, что они вскрываются элементарно. Ни длина ключа, ни что иное не имеет значения... Что можно сделать? 1. Манипуляции с паролем, на основании которого CryptoAPI создает ключ. А что если пароль разделить на две части? Постояннная, секретная, например в виде GUID и хранимая на флешке (чтоб не запоминать, флешка будет по-совместительству играть роль ключа, разумеется, ее надо беречь). И вторая часть, тот же GUID, не секретный, формируемый для каждой записи в БД и хранимый там же. Какие принципиальные недостатки у этого метода, сильно ли страдает защита? 2. Манипуляции с созданным ключом с помощью вызова CryptSetKeyParam, с параметрами KP_SALT или KP_IV (солт или вектор инициализации) Тут не понятно. По-идее, начиная с XP ключ уже не 40, а всегда 128 бит, даже при вызове провайдера PROV_RSA_FULL ? Какая разница между KP_SALT и KP_IV? Значит ли их использование, что просто часть из разрешенных 128 бит заменяется на соответсвующий не секретный параметр (который можно поместить в запись БД) из CryptSetKeyParam ? |