DSA & RSA
Дело не в том, кто из них сильнее.
Я изучал этот вопрос в Интернете, и ниже приводится краткое изложение информации, которую я получил.Можете ли вы сообщить, если это правильно или нет, и если есть какие-то дополнительные важные вопросы, которые я здесь не упоминаю.
Здесь я говорю только о DSA против RSA в приложении к Java.Моя главная цель - использовать алгоритм с открытым ключом для отправки сессионного ключа (AES) с клиента на сервер, а затем для проверки подлинности клиента.
DSA.
1.В Java вы должны зашифровать файл закрытым ключом.
2.Это означает, что ЭТО - подпись - любой человек с открытым ключом может прочитать ее, но подписать ее может только владелец.
3.Если вы попытаетесь использовать открытый ключ как закрытый, и наоборот, у вас возникнут проблемы, потому что не так сложно угадать открытый ключ по частному.
4.Вы фактически не можете использовать DSA для отправки ключа сеанса, потому что каждый сможет его расшифровать.
RSA.
1.В Java вы должны зашифровать файл с открытым ключом.
2.Это означает, что это лучший способ доставки секретных сообщений одному конкретному получателю.Никто не может прочитать его после подписания, кроме владельца.
3.Если вы попытаетесь переключать клавиши друг с другом, это вызовет проблемы (такие же, как указано выше)
4.Вы можете эффективно использовать RSA для клиента, чтобы посылать ключ сеанса, зашифрованный открытым ключом сервера, и затем получать подтверждение от серверов, подписанных открытым ключом клиента.
Исходя из этого, я решил использовать RSA для своих целей.
AES256 против AES128
Еще один несвязанный вопрос - думаете ли вы, что для шифрования сеанса без каких-либо чрезвычайно конфиденциальных данных имеет смысл использовать AES256?
Я бы хотел, но он создаетпроблемы для конечного пользователя.Я знаю, что очень легко установить обновление для Java, которое позволяет использовать 256-битные ключи, но печальная правда в том, что даже такая простая вещь может сократить потенциальную базу пользователей наполовину.
С другой стороны - если я этого не сделаюотправить конфиденциальную информацию (например, номера кредитных карт), и каждый ключ используется не более чем на несколько дней, может быть, AES128 достаточно?
Очевидно, я собираюсь включить возможность использовать AES256 для тех пользователей, которые не являютсябеспокоит необходимость установки обновления.
Спасибо за любые комментарии!