Я заинтересован в предоставлении управляемой DLL для использования в .NET, которая обеспечивает аутентифицированные услуги шифрования. DLL может использоваться в программе WPF или приложении ASP. У меня есть пара вопросов, связанных с криптографическими и потоковыми моделями Microsoft.CryptoStream и аутентифицированные режимы шифрования
Аутентифицированные режимы шифрования (CCM, CWC, EAX, GCM и т. Д.) Обычно создают два артефакта - сначала это шифрованный текст, а второй - тег аутентификации. Его довольно простое шифрование, но могут быть некоторые проблемы. Например, CCM не может быть потоковым из-за способа создания заголовка, а аутентифицированные режимы шифрования создают тег аутентификации.
Расшифровка сложнее, поскольку она не может быть передана. Расшифровка не может быть потоковой, потому что весь текст шифрования должен быть доступен, и этот шифрованный текст должен быть проверен с использованием тега аутентификации перед расшифровкой.
Как адаптировать аутентифицированный режим шифрования для блочного шифрования, чтобы его можно было использовать в CryptoStream
? Возможно ли это? Возможно, это почему Microsoft не предоставляет его?
Имеет ли рекомендация Microsoft? Например, разбейте большое сообщение на более мелкие сообщения или единицы (каждый со своим собственным тегом)? Или MS рекомендует буферизацию, пока не будет введено все сообщение и тег?
Где Microsoft рекомендует «поместить» тег? В начале потока? В конце потока?
Некоторые полезные ссылки:
Отлично, спасибо. Не нужно заново изобретать колесо. – jww
Я видел, что GCM используется как в XML-шифровании, так и в последних спецификациях проекта TSL. Добавление GCM в качестве аутентифицированного шифрования имеет большой смысл. CCM также безопасен, но это PITA для использования и реализации. –
@owlstead - «CCM также безопасен, но это PITA для использования и реализации». Lol .... +1. Я просто читал книгу по технике безопасности и рассказывал об истории и политике принятия СКК. Мне жаль, что я не помню, какую книгу это было ..... – jww