Проверка электронной цифровой подписи Authenticode. Часть 1. Теория - VB
Формулировка задачи:
Привет!
Я как-то довольно давно заинтересовался темой цифровых подписей, какова их защита, как они устроены изнутри, как с ними работать из-под CryptoAPI. По мере изучения возникало много подводных камней. Наконец, я готов рассказать и вам на доступном языке о принципах шифрования и подписания, практике и готовой реализации проверки подписей.
Затронуто много косвенных тем, так что статья весьма объёмна. Запаситесь чипсами и пивом . А в перерывах, можете сразу пощупать 3-ю часть статьи, где вас ждёт готовая программа, а также несколько хорошо прокомментированных исходников, в т.ч. для пакетной проверки всех PE-файлов в системе с отчётом в формате CSV. Большинство примеров кода представлено на языке VB6, просто потому что на C++ примеров очень много в сети, а на этом языке подобных комплексных реализаций я не видел вообще, да и этот язык я лучше всего знаю.
Итак, статья состоит из 3 частей:Часть 1. ТеорияЧасть 2. Описание реализацииЧасть 3. Набор программ
Содержание:
Часть 1. Кусочек теории.
1.1. Что такое электронная цифровая подпись (ЭЦП) и зачем она нужна? 1.2. Надёжность ЭЦП и эксплуатация вредоносным ПО.
1.2.1. Человеческий фактор и приватные ключи. 1.2.2. Уязвимости в структуре ЭЦП. 1.2.3. Стойкость алгоритма хеша.1.3. Что означает, легитимна ли подпись? 1.4. Терминология, алгоритм подписания и проверки.
1.4.1. Что такое Authenticode (Code signing). 1.4.2. Что такое хеш. 1.4.3. Что такое выборка (digest). 1.4.4. Что такое приватный и публичный ключи, симметричное и асимметричное шифрование. 1.4.5. Что такое сертификат, центр сертификации и цепочка доверия. 1.4.6. Форматы файлов сертификатов и ключей для Authenticode подписи и их преобразование.1.5. Само-подписанный (self-signed) сертификат. 1.6. Двойная (вторичная) подпись. 1.7. Способы подписания 1.8. Перечисление сертификатов в хранилище 1.9. Удаление подписи. 1.10. Покупка сертификата.а) Виды форматов. б) Преобразование форматов.1.4.7. Что такое подпись и подписание. 1.4.8. Что такое отпечаток (Thumbprint / Fingerprint). 1.4.9. Как проверяется подпись. 1.4.10. Чем отличаются понятия «алгоритм подписи», «алгоритм хеша подписи», «алгоритм хеша выборки», «алгоритм хеша отпечатка».
Часть 2. Описание реализации программы проверки подписей
2.1. Подготовка к проверке 2.2. Запуск процедуры проверки и обработка результатов 2.3. Очистка ресурсов. 2.4. Извлечение сертификатов и содержащейся в них информации 2.5. Извлечение атрибутов и крос-подписей
Часть 3. Программа проверки Authenticode ЭЦП
- Назначение - Совместимость / Требования - Примеры использования / Флаги и дополнительная информация
Заключение Приложения и исходные коды Дополнительная литература
Решение задачи: «Проверка электронной цифровой подписи Authenticode. Часть 1. Теория»
textual
Листинг программы
Private Function VerifySecondarySign(sFile As String) As SignResult_TYPE Dim SignResult As SignResult_TYPE ' we should disable checking by catologue, because in that case number of signatures will be unavailable SignVerify sFile, SV_DisableCatalogVerify, SignResult If (SignResult.NumberOfSigns > 1) Then SignVerify sFile, SV_CheckSecondarySignature, VerifySecondarySign End If End Function
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д