Шифрование с общественностью/закрытым ключом приложения в .NET

- новый - я нашел другое использование. Существуют некоторые данные, отправленные мне через HTTPS данные POST, и я хотел бы сохранить его в своем дб (Таком как родительская девичья фамилия, которую поддержка клиентов, возможно, должна считать позже вместо того, чтобы записать неправильно проверку, если хеш соответствует). Мне только нужен тот зашифрованный раздел а не весь DB, и использование отдельного DB не может стоить того. Вопрос: Как я мог бы использовать предварительно сделанный открытый ключ для шифрования симметричного ключа + текст с помощью.NET? (остальное для контекста, я просто хочу ответ),

- редактирование - я сделал симметричное шифрование прежде. Как я шифрую симметричный ключ с открытым ключом? хорошая премия - то, если можно сказать мне, как генерировать общественность/закрытый ключ в отдельном приложении, таким образом, я могу создать их и сохранить только открытый ключ в моем приложение.

Я рассматриваю имеющие более дешевые менее подчеркнутые резервные копии захвата сайта автоматически от более оживленного сайта. Передача данных не является проблемой, так как я могу использовать https, но я не делаю абсолютно доверительный, что мой более дешевый сайт так же безопасен, или привычка имеют людей, озирающихся в моих файлах. Я главным образом хочу защитить адрес электронной почты и PM, если у меня есть они на сайте.

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

- редактирование - это просто поразило меня. Пользователь/передача не был бы секретом. Таким образом, я должен был бы зашифровать свои резервные копии перед передачей. Как я шифрую симметричный ключ с открытым ключом с помощью.NET. Затем дешифруйте его на моей стороне. Шифрование файл с симметричным ключом, который я знаю, как сделать.

5
задан tshepang 24 February 2014 в 19:30
поделиться

3 ответа

Вы шифруете симметричным ключом, затем шифруете симметричный ключ открытым ключом, а затем отбрасываете симметричный ключ. Только владелец соответствующего закрытого ключа (вы) может позже расшифровать симметричный ключ и, следовательно, документ. В приложении нет секретов. Хорошей новостью является то, что для решения этой проблемы существует около тонны готовых продуктов (pgp) и протоколов (s-mime).

1
ответ дан 18 December 2019 в 10:44
поделиться

Во-первых: эшелонированная защита. Если у вас есть сомнения по поводу безопасности резервного сайта , защитите резервный сайт . Сдерживание атак с помощью шифрования - хорошая идея, но это не должно быть единственной идеей .

Во-вторых, почему вы думаете об использовании криптографии с открытым / закрытым ключом? Обычно вы используете шифрование с открытым / закрытым ключом только при попытке передать сообщение от отправителя к получателю. Какую ценность добавляет шифрование с открытым ключом в ваш сценарий?

Чтобы зашифровать поток на C #, эта страница может помочь:

http://support.microsoft.com/kb/307010

ОБНОВЛЕНИЕ:

Абсолютно, ДА, вы должны зашифровать файлы , прежде чем они попадут на сайт, который, как вы предполагаете, скомпрометирован .

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

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

Предположим, что операторы небезопасных резервных сайтов пытаются сделать все это с вами. Крипто - это смягчение некоторых из этих атак, но не всех.

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

14
ответ дан 18 December 2019 в 10:44
поделиться

Вы можете использовать алгоритм с симметричным ключом (AES, DES, Triple-DES), чтобы выполнить шифрование вашего кода и сохранить его в шестнадцатеричном формате в своей базе данных. (в поле nvarchar). Поскольку вам нужно передать это в зашифрованном виде кому-то другому, вам не нужно использовать какой-либо ассиметрический алгоритм (например, RSA, ElGamal и т. Д.). Если вам что-то вроде RSA, вам также придется подумать о подписании данных с помощью чего-то вроде PGP .

Но, независимо от того, какой алгоритм вы используете, вам необходимо убедиться, что ваши ключи максимально безопасны , то есть ваш симметричный ключ для AES и ваш закрытый ключ для RSA и т. Д.

В этой статье содержится учебное пособие о том, как выполнять симметричное шифрование с / без Salt.

http://www.obviex.com/samples/Encryption.aspx

1
ответ дан 18 December 2019 в 10:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: