powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Aes алгоритм. Как использовать ключ и вектор
6 сообщений из 6, страница 1 из 1
Aes алгоритм. Как использовать ключ и вектор
    #38985305
z3r9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хочу уточнить. В алгоритме шифрования RSA есть два ключа открытый и закрытый. Где открытым ключом шифруем текст и затем расшифровать его можно только с помощью закрытого ключа. То есть при передачи открытого ключа по открытому каналу сохраняется безопасность.

Сейчас смотрю алгоритм Aes реализованный на С# . И не совсем понятно как его использовать. Ключ и вектор передаются в связке по открытому каналу? И при их перехвате я смогу расшифровать зашифрованные данные? Или я что-то не понимаю. Подскажите как правильно использовать.
...
Рейтинг: 0 / 0
Aes алгоритм. Как использовать ключ и вектор
    #38985345
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
z3r9,

1. Вектор инициализации вполне можно передавать по открытому каналу, или вообще вместе с данными - он нужен лишь для предотвращения т.н. сhosen-plaintext attack , без ключа он не даст взломщику ничего.
2. Симметричные криптоалгоритмы действительно требуют наличия у обеих сторон ключа. Поэтому они либо применяются для криптования-декриптования данных только на одной стороне (одном компьютере) с соответствующей защитой хранимых ключей (напр., IsolatedStorage+DPAPI ), либо
3. Обе стороны хранят ключ не as is (в виде raw bytes), а в виде пароля, пароль переводится в ключ с помощью PBKDF2 (в FCL это делает класс Rfc2898DeriveBytes ). Для получения ключа по паролю дополнительно задают соль, и количество итераций (roundtrip). Эти данные также можно передавать открытыми (вместе с зашифрованными данными), т.к. они нужны только для предотвращения атаки по rainbow table . А сам пароль, разумеется, в наилучшем случае хранится только в голове.
4. Использовать связку RSA+AES: с помощью RSA шифровать ключ, и зашифрованный ключ передавать вместе с данными, зашифрованными по симметричному алгоритму этим ключом (и вместе с открытым ключом RSA).

И да, учтите: в FCL есть еще одна реализация AES - RijndaelManaged , в этой реализации есть некоторые отличия от AesCryptoServiceProvider - т.е. если одна из сторон будет пользоваться другой реализацией AES, то возможны сюрпризы.
...
Рейтинг: 0 / 0
Aes алгоритм. Как использовать ключ и вектор
    #38985359
z3r9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сон Веры Павловны, спасибо огромное за подробный ответ. RSA отличный алгоритм но не для больших объемов к сожалению. Просто когда человек шифрует закрытым ключом и если этот ключ хранится в программе то от такой шифровки нету почти толку. Только если для одностороннего использования или ручного ввода пароля. А совместное использование с RSA по сути только обеспечит безопасную передачу ключа. Но это все равно не обеспечит защиты на небезопасной стороне шифрования.
...
Рейтинг: 0 / 0
Aes алгоритм. Как использовать ключ и вектор
    #38985386
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
z3r9Но это все равно не обеспечит защиты на небезопасной стороне шифрования.
На небезопасной стороне симметричный ключ нужно хранить в зашифрованном по RSA виде, и каждый раз расшифровывать для симметричного криптования.
И разумеется, закрытый несимметричный ключ ни в коем случае нельзя хранить в программе, это вскрывается на раз. Только спец. контейнеры - например, хранилища X509-сертификатов.
...
Рейтинг: 0 / 0
Aes алгоритм. Как использовать ключ и вектор
    #38985405
z3r9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторНа небезопасной стороне симметричный ключ нужно хранить в зашифрованном по RSA виде, и каждый раз расшифровывать для симметричного криптования.
Не совсем понял что это даст.

Я так понимаю имеется ввиду генерируемый Aes ключ который отправляется вместе с данными? То есть берем генерируем произвольный ключ Aes и шифруем его по RSA открытому ключу. Далее отправляем вместе с зашифрованными данными и ключ зашифрованный по RSA.
Расшифровываем на стороне сервера ключ Aes при помощи закрытого ключа RSA и расшифровываем данные. При отправке на сторону клиента делаем все тоже самое только в обратном порядке. Я правильно понял?

Про сертификаты не знал. Спасибо что сказали, почитаю.
...
Рейтинг: 0 / 0
Aes алгоритм. Как использовать ключ и вектор
    #38985424
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
z3r9Я так понимаю имеется ввиду генерируемый Aes ключ который отправляется вместе с данными? То есть берем генерируем произвольный ключ Aes и шифруем его по RSA открытому ключу. Далее отправляем вместе с зашифрованными данными и ключ зашифрованный по RSA.
Расшифровываем на стороне сервера ключ Aes при помощи закрытого ключа RSA и расшифровываем данные. При отправке на сторону клиента делаем все тоже самое только в обратном порядке. Я правильно понял?
Да, именно так.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Aes алгоритм. Как использовать ключ и вектор
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]