|
Aes алгоритм. Как использовать ключ и вектор
|
|||
---|---|---|---|
#18+
Хочу уточнить. В алгоритме шифрования RSA есть два ключа открытый и закрытый. Где открытым ключом шифруем текст и затем расшифровать его можно только с помощью закрытого ключа. То есть при передачи открытого ключа по открытому каналу сохраняется безопасность. Сейчас смотрю алгоритм Aes реализованный на С# . И не совсем понятно как его использовать. Ключ и вектор передаются в связке по открытому каналу? И при их перехвате я смогу расшифровать зашифрованные данные? Или я что-то не понимаю. Подскажите как правильно использовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2015, 01:02 |
|
Aes алгоритм. Как использовать ключ и вектор
|
|||
---|---|---|---|
#18+
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, то возможны сюрпризы. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2015, 06:27 |
|
Aes алгоритм. Как использовать ключ и вектор
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, спасибо огромное за подробный ответ. RSA отличный алгоритм но не для больших объемов к сожалению. Просто когда человек шифрует закрытым ключом и если этот ключ хранится в программе то от такой шифровки нету почти толку. Только если для одностороннего использования или ручного ввода пароля. А совместное использование с RSA по сути только обеспечит безопасную передачу ключа. Но это все равно не обеспечит защиты на небезопасной стороне шифрования. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2015, 08:09 |
|
Aes алгоритм. Как использовать ключ и вектор
|
|||
---|---|---|---|
#18+
z3r9Но это все равно не обеспечит защиты на небезопасной стороне шифрования. На небезопасной стороне симметричный ключ нужно хранить в зашифрованном по RSA виде, и каждый раз расшифровывать для симметричного криптования. И разумеется, закрытый несимметричный ключ ни в коем случае нельзя хранить в программе, это вскрывается на раз. Только спец. контейнеры - например, хранилища X509-сертификатов. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2015, 08:47 |
|
Aes алгоритм. Как использовать ключ и вектор
|
|||
---|---|---|---|
#18+
авторНа небезопасной стороне симметричный ключ нужно хранить в зашифрованном по RSA виде, и каждый раз расшифровывать для симметричного криптования. Не совсем понял что это даст. Я так понимаю имеется ввиду генерируемый Aes ключ который отправляется вместе с данными? То есть берем генерируем произвольный ключ Aes и шифруем его по RSA открытому ключу. Далее отправляем вместе с зашифрованными данными и ключ зашифрованный по RSA. Расшифровываем на стороне сервера ключ Aes при помощи закрытого ключа RSA и расшифровываем данные. При отправке на сторону клиента делаем все тоже самое только в обратном порядке. Я правильно понял? Про сертификаты не знал. Спасибо что сказали, почитаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2015, 09:31 |
|
Aes алгоритм. Как использовать ключ и вектор
|
|||
---|---|---|---|
#18+
z3r9Я так понимаю имеется ввиду генерируемый Aes ключ который отправляется вместе с данными? То есть берем генерируем произвольный ключ Aes и шифруем его по RSA открытому ключу. Далее отправляем вместе с зашифрованными данными и ключ зашифрованный по RSA. Расшифровываем на стороне сервера ключ Aes при помощи закрытого ключа RSA и расшифровываем данные. При отправке на сторону клиента делаем все тоже самое только в обратном порядке. Я правильно понял? Да, именно так. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2015, 09:51 |
|
|
start [/forum/topic.php?fid=20&msg=38985405&tid=1401434]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
32ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
others: | 301ms |
total: | 413ms |
0 / 0 |