Помогите разобрать в использовании RSA

smitt

Новичок
Помогите разобрать в использовании RSA

Добрый день!

Нужно мне отдать пользователю на сохранение данные, строку, и получить её в неизменном виде обратно, кроме того пользователь не должен её прочитать.

Я так понял, что для этого можно использовать алгоритм шифрования RSA, нашел реализацию на PHP. Но вот как использовать сам механизм - мне не совсем мне понятно.

Лирическое отступление

Работает это так: с помощью функции generate_keys() генерируются три значения:

modulo - я не понял, для чего это
public - публичный ключ
private - приватный ключ

Далее с помощью функции rsa_encrypt я шифрую строку, используя публичный ключ и модуль
Затем я могу с помощью функции rsa_decrypt, указав ей приватный ключ и модуль расшифровать строку.
Собственно, суть вопрса: что мне нужно отдавать пользователю на хранение?

Тоесть, я могу сгенерировать ключи один раз и отдавать пользователям только зашифрованные публичным ключем строки и получая от них данные расшифровывать приватным ключем, будет ли это безопасно?

Или есть более правильный вариант?
 

partizan

Новичок
Re: Помогите разобрать в использовании RSA

Автор оригинала: smitt
Тоесть, я могу сгенерировать ключи один раз и отдавать пользователям только зашифрованные публичным ключем строки и получая от них данные расшифровывать приватным ключем, будет ли это безопасно?
Да, если библиотека написана с умом. Только в строку перед кодированием надо добавить какую-то подпись, чтоб ты смог определить, если юзер попытается изменить даную ему строку. Например:

$str = 'Это правильная строка' . $str; (Перед шифрованием)

А при получении, после расшифровки проверять, что полученная строка начинается с текста 'Это правильная строка' (Если юзер попытается модифицировать даную ему строку, то после расшифровки получится абра-кадабра).
.
А какой длины ключ?
 

fog

Рыцарь Джедай
Но ведь если всегда использовать одни и те же ключи - зашифрованная строка будет одинаково начинаться, и её можно будет вычислить, разве не так?
 

partizan

Новичок
С чего-бы это она должна одинаково начинаться?
Я не знаю, как работает та библиотека на пхп, но в классической схеме RSA такого нет

Вообще да, насчет добавления 'Это правильная строка' я прогнал. Лучше добавлять к документу md5 от этого документа вместо константной строки.
 

smitt

Новичок
Если шифровать этой функцией используя один и тот же ключ несколько разных строк, начинающихся одинаково, то начала зашифрованных строк будут одинаковыми.
 

smitt

Новичок
Конечно, в этом что-то есть, но всё равно защита от дурака получается =)
 

partizan

Новичок
Я бы вообще перед шифрованием RSA применил к тексту какой-нибудь простенький алгоритм, который изменил бы его до неузнаваемости, хотя наверно это лишнее

-~{}~ 07.09.07 15:15:

Кстати, дай плиз линк на твою библиотеку
 

Андрейка

Senior pomidor developer
partizan
и что дает строка, мд5 или простенький алгоритм?

smitt
а чего у тебя за данные то?
 

smitt

Новичок
Часть запроса к LDAP. Мне в определённой ситуации между запросами пользователя удобно отдавать ему строку на хранение, чтобы не вычислять каждый раз.

Не хотелось хранить её где-то, а пользователю выдавать ключик, поэтому решил отдавать его пользователю на хранение в зашифрованном виде.
 

partizan

Новичок
и что дает строка, мд5 или простенький алгоритм?
md5 дает возможность убедиться, что полученная от юзера строка не была модифицирована им.

Простенький алгоритм предотвращает возможные попытки расшифровать данные, если известны какие-то сведения о структуре исходной строки (например, если все строки содержат какую-то общую часть информации, и злоумышленнику об этом станет известно)
 
Сверху