#.net #security #encryption
#.net #Безопасность #шифрование
Вопрос:
У меня есть приложение (App1), и ему нужно записать зашифрованную строку. Другое приложение (App2) должно иметь возможность расшифровать и прочитать эту строку, и, расшифровав, убедиться, что она была зашифрована App1. Приложение 2 не должно иметь возможности записывать новую зашифрованную строку.
Я знаю, что это касается пар открытого / закрытого ключей, но я не знаю, какова текущая технология наилучшей практики в этой области, и я не знаю, какие классы .net ее реализуют? Я могу использовать сертификат по мере необходимости.
Приветствуется любой ввод.
Спасибо.
Комментарии:
1. Должны ли зашифрованные данные быть доступны для чтения только App2? Кроме того, насколько ценна информация? В криптографии очень легко ошибиться , поэтому, если здесь задействована значительная ценность, привлеките к вашему проекту кого-нибудь, кто это хорошо понимает.
2. Данные для передачи большие или маленькие?
3. Зашифрованные данные должны быть доступны для чтения только App2, а объем данных невелик.
Ответ №1:
App1 и App2 генерируют свои собственные пары закрытого / открытого ключей и обмениваются парами открытых ключей. Затем рабочий процесс выглядит следующим образом:
App1 -> Data App2-PublicKey = Encrypted Data
App2 -> Encrypted Data App2-PrivateKey = Data
Итак, App1 или App2 шифруют данные только с помощью открытого ключа другого, поэтому только это приложение может расшифровать их, используя свой закрытый ключ. Таким образом, обмен данными безопасен. Если шифрование похоже:
App1 -> Data App1-PrivateKey App2-PublicKey = Encrypted Data
App2 -> Encrypted Data App1-PublicKey App2-PrivateKey = Data
теперь обмен данными является одновременно безопасным и аутентичным (т. Е. два приложения будут уверены, что это другое приложение связывается с ним). Ссылка:http://en.wikipedia.org/wiki/Transport_Layer_Security
Напоминание: Открытый ключ предназначен для шифрования, а закрытый — для проверки. Кроме того, этап подписи всегда является последним, поскольку он выполняется для окончательных обработанных данных.
Комментарии:
1. Но вы пропустили необходимые шаги аутентификации (и противоположное использование открытых / закрытых ключей), чтобы гарантировать, что данные получены из App1 — тогда вы попадаете в классические перебранки между шифрованием с последующей аутентификацией, аутентификацией с последующим шифрованием или шифрованием и аутентификацией, что не очевидно.
2. Вам также необходимо подписать и подтвердить с помощью ключа App-1, чтобы убедиться, что файл был зашифрован App-1.
3. И, поскольку вы не можете просто подписать данные напрямую ключами, я бы порекомендовал вам обратиться к контейнерному формату. PGP или CMS были бы наиболее очевидными вариантами. Используйте PGP, если вы не хотите настраивать весь PKI.