Понимание шифрования данных .net

239
29 марта 2018, 06:08

Хочу уточнить пару вещей.

Например, мне надо зашифровать некую строку (json) для передачи по клиент-серверной архитектуре. Как я понял, мне надо сгенерировать ключ и IV (вектор) для AES, зашифровать их по 'асимметричному' алгоритму (RSA), и передать при подключении клиента. И у клиента расшифровать RSA ключ, получить AES key и IV и по этому AES ключу и IV расшифровывать строку. И так: Создаю экземпляр AESManaged Генерирую AES ключ и IV (GenerateKey()/GenerateIV()).

Затем создаю экземпляр RSACryptoServiceProvider Дальше для него создаются RSAParameters, Вопрос: что такое Modules и Exponent? Это и есть открытый и закрытый ключ? Т.е. открытый (Modules) я передаю клиенту, и Exponent клиент уже должен знать, так? Допустим...

Дальше, я шифрую AES key и IV через RSA, передаю, клиенту, он расшифровывает это по Exponent'у. И получает AES key и IV.

Все правильно?

Перечитал msdn, кажется я написал фигню... 2ой час ночи уже, башка не варит. Да, и Exponent и Modules - части открытого ключа. А набор D, P, и Q - закрытый ключ.

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

Подтвердите, если это так.

Answer 1

Да, все верно, кроме того, что IV не обязательно шифровать. Его можно передавать в открытую, от этого безопасность не пострадает. Самое важное, что бы IV всегда был разный. Если вы будете использовать GenerateIV(), то об этом можно даже не задумываться.

Пара RSA ключей должна генерироваться на стороне, которая будет проводить расшифровку. Если это сервер, то генерируете пару на нем, открытый ключ отдаете клиенту, он шифрует, вы расшифровуете приватным ключом.

READ ALSO
С# взаимодействие потоков

С# взаимодействие потоков

Как реализовать обмен данными между основным циклом и потоками? Допустим есть такой псевдокод Пример:

262
Как работать с числами с плавающей запятой в С#?

Как работать с числами с плавающей запятой в С#?

Есть вот такой код простого конвертера валют(SOM - это валюта Кыргызстана)

246
c# WebBrowser Как при открытии сайтов игнорировать x-frame-options:?

c# WebBrowser Как при открытии сайтов игнорировать x-frame-options:?

При открытии сайтов должны игнорироваться x-frame-options (запрет на открытие некоторых страниц в iframe, в браузерах решается установкой мини-плагина)

237