Как реализовать собственную цифровую подпись для моих плагинов? - PullRequest
2 голосов
/ 30 мая 2011

В приложении C ++ (на самом деле плагин для браузера, но это не слишком актуально) мне нужно, чтобы оно могло запускать внешние процессы, которые предоставляют определенный интерфейс через IPC.Вроде как архитектура плагинов, но плагины представляют собой отдельные приложения, а не библиотеки DLL и т.д.вредоносные SWF-файлы, кроме SWF-файлов, помещены в песочницу.Затем, если кто-то с установленным плагином для браузера придет на эту страницу, он загрузит и запустит злонамеренный процесс в виде атаки типа «Drive-by».

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

Ответы [ 2 ]

0 голосов
/ 30 мая 2011

Обе библиотеки DLL и EXE подписаны с использованием технологии Authenticode и сертификатов X.509.

Для проверки подписи Authenticode в Windows с использованием механизмов, встроенных в Windows, вы используете WinVerifyTrust функцию CryptoAPI.Для этого потребуется, чтобы каждый «плагин» был подписан с использованием сертификата, выпущенного неким известным CA (по крайней мере, известным Windows).

Если вы хотите предоставить разработчикам плагинов свои собственные сертификаты (чтобы они могли сэкономить на покупке сертификатов в центрах сертификации), вы можете взять пакет PKIBlackbox нашего продукта SecureBlackbox и стать вашим собственным сертификатом.власть.PKIBlackbox также позволяет создавать и проверять подписи Authenticode.

0 голосов
/ 30 мая 2011

Одним из способов является использование криптографической библиотеки, такой как GPG или OpenSSL. С ними обоими вы создаете пару открытый / закрытый ключ Вы подписываете заявку с помощью закрытого ключа. Плагин для браузера содержит открытый ключ, который используется для проверки подписи. Эти библиотеки не особенно просты в использовании. Прочитайте, например, dgst.c из пакета OpenSSL. Вам нужно будет адаптировать его (по крайней мере, часть проверки) к вашему плагину. Есть много API для изучения! Вы можете использовать dgst.c как есть, чтобы подписать файлы.

Если вы работаете в Windows, вы также можете использовать Windows Crypto API (CAPI) практически таким же образом, но я почти ничего не знаю о Windows API.

Другой способ - реализовать алгоритм подписи с нуля. Это не для слабонервных тоже. Прочитайте http://en.wikipedia.org/wiki/Digital_signature,, выберите метод, который выглядит легко реализуемым (RSA, DSA, ElGamal ...), и реализуйте его (как подписывающую и проверяющую части, так и только проверяющую часть), но затем убедитесь, что он совместим с OpenSSL или GPG, поэтому вы можете использовать их для подписи.

...