Что является лучшим способом цифровой подписи ZIP-файла для загрузки с помощью .Net - PullRequest
1 голос
/ 02 сентября 2010

Какой лучший способ цифровой подписи на стороне файлового сервера с помощью .Net, прежде чем предлагать ее для загрузки через веб-сайт asp.net

Кроме того, как мне запустить проверку подписи и, следовательно, доказать, что файл не был подделан во время процесса загрузки в веб-браузере

Ответы [ 3 ]

3 голосов
/ 03 сентября 2010

Подпись не обязательно должна быть включена в ZIP-файл, это может быть «отдельная» подпись. Таким образом, вы можете иметь zip и позволить кому-то проверить подпись, которая обычно представляет собой просто последовательность шестнадцатеричных или base64 символов, вне приложения, которое вы пишете.

На высоком уровне шаги подписи:

AsymmetricAlgorithm privateKey = certificate.PrivateKey;
byte[] buffer = Encoding.Default.GetBytes(<data from the zip>);
byte[] signature = privateKey.SignData(buffer, new SHA1Managed());

и проверка:

RSACryptoServiceProvider publicKey =  certificate.PublicKey.Key as RSACryptoServiceProvider;
bool verify = publicKey.VerifyData(buffer, new SHA1Managed(), signature);
0 голосов
/ 02 сентября 2010

Вам необходимо определить, от каких рисков вы хотите защитить себя и пользователя. Хотя формат AppNote для ZIP в PKWare определяет цифровую подпись как часть этого формата, я сомневаюсь, что существует множество расстегивающих молний, ​​которые должным образом поддерживают проверку цифровых подписей в файлах ZIP.

Если вы беспокоитесь, что содержимое файла может быть изменено посередине, у вас есть следующие опции: 1) HTTPS, как указано выше 2) PGP-подписанный пакет. Вы можете либо создать отдельную подпись для существующего ZIP-архива, которую вы распространяете, и поместить подпись рядом со ссылкой для загрузки, либо, если вы ориентируетесь на Windows, создать самораспаковывающийся архив PGP. Формат PGP также включает сжатие. В обоих случаях вам нужно будет поместить ваш открытый ключ PGP на ваш сайт. Но учтите, что люди, которые изменят файл, смогут изменить и открытый ключ, если вы распространите его таким образом.

0 голосов
/ 02 сентября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...