СЕРТИФИКАТ РАЗРАБОТЧИКА. ПРОЦЕСС ПОДПИСИ И ПРОВЕРКИ КОДА

  • Лекции
  • docx
  • 17.03.2026
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала ИСК-1, ИСК-3 Сертификация ИС. Раздел 2. Лекция 11.docx

ЛЕКЦИЯ 11. СЕРТИФИКАТ РАЗРАБОТЧИКА. ПРОЦЕСС ПОДПИСИ И ПРОВЕРКИ КОДА

1.  Сертификаты разработчика

Сертификаты разработчика (Code Signing сертификаты) — это сер- тификат, которым подписывается программное обеспечение или скрипты, ко- торый подтверждает автора программы и гарантирует, что код не был изменен после того, как была наложена цифровая подпись.

Сертификат разработчика Code Signing гарантирует:

  подлинность источника, подтверждая посредством цифровой подпи- си, что ПО на самом деле выпущено указанной в сертификате компанией или физическим лицом;

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

Во всех современных версиях Windows, начиная с Windows XP SP2, при установке программного обеспечения без такой цифровой подписи вы получите предупреждение. То же самое, кстати, касается и установки драйверов, которые не имеют соответствующей цифровой подписи.

В случае если цифровая подпись не найдена, Windows выдаст предупре- ждение, что у этой программы «Неизвестный издатель» и запускать ее не реко- мендуется (рис. 19).

В случае если программа имеет цифровую подпись, то окошко будет вы- глядеть иначе и вы также сможете посмотреть информацию о сертификате (рис. 20).


Рис. 19

Сообщение о программе


Рис. 20

Сообщение о программе


 

2.  Виды сертификатов разработчика

Сертификаты по центрам сертификации, которые их выпускают, пред- ставлены в таблице 9. В колонках указаны названия центров сертификации, а в строках — тип сертификата или технология/платформа, для которой он исполь- зуется.


 

Таблица 9

Сертификаты по центрам сертификации

 

Платформа / центр сертифи- кации

Syman- tec

Thawte

Comodo

Digicert

Global- sign

Trust- wave

Startcom

Microsoft Authen-

ticode Signing

+

+

+

+

+

+

+

Code Signing for

Apple

+

+

 

+

+

+

+

Microsoft Vba

Signing

+

+

+

+

+

+

+

Java Code Signing

+

+

+

+

+

+

+

Adobe Air Signing

+

+

+

+

+

+

+

Kernel Mode

Signing

+

 

 

+

+

 

+

Android

+

 

 

 

 

 

 

Windows Phone

+

 

 

 

 

 

 

Qualcomm BREW

+

 

 

 

 

 

 

Стоимость, от

500$

250$

90$

220$

220$

330$

200$

Не все центры сертификации дают полную информацию о платформах, на которых работают их сертификаты, поэтому плюсом отмечены только те платформы, поддержка которых в явном виде заявлена центром сертификации.

Microsoft Authenticode. Для подписи 32- и 64-битных файлов (.exe, .cab,

.dll, .ocx, .msi, .xpi и .xap файлы). Также позволяет подписывать код для Micro- soft® Office, Microsoft VBA, Netscape Object Signing и Marimba Channel Signing. Поддерживает приложения на Silverlight 4.

Code Signing for Apple. Позволяет разработчикам подписывать програм- мы для Mac OS, а также обновления для программного обеспечения.

Microsoft Office Vba Signing. Подписывает VBA-объекты, скрипты и макросы для файлов Microsoft Office .doc, .xls, и .ppt. Для Microsoft Office и до- полнений, которые используют VBA.

Java Code Signing. Для подписи Java-апплетов. Позволяет подписывать

.jar-файлы и Java-приложения для настольных и мобильных устройств. Распо- знается Java Runtime Environment (JRE).

Adobe Air Signing. Для подписи файлов .air. Требуется для всех приложе- ний, основанных на AIR.

Kernel Mode Signing. Сертификаты разработчика Kernel-Mode позволяют подписывать так называемые kernel-mode приложения и драйверы устройств. 64-битная версия Windows Vista и Windows 7 требует, чтобы все kernel-mode приложения были подписаны сертификатом и доверенного центра сертифика- ции.

Android. Для подписи и оптимизации .apk-файлов для платформы Android Microsoft Windows Phone. Для цифровой подписи приложений для Windows Phone и Xbox 360. Требуется для сервиса Microsoft App Hub.

Qualcomm BREW. Для тех, кто разрабатывает приложения под платфор- му BREW (Binary Runtime Environment for Wireless).


3.  Принцип работы сертификата разработчика

(Code Signing)

Процесс подписи кода представлен на рисунке 21.


Рис. 21

Подпись кода

1.  Издатель (разработчик) запрашивает Code Signing сертификат у центра сертификации.

2.  Используя SIGNCODE.EXE или другую утилиту для подписи кода, из- датель создает хеш кода, используя алгоритмы MD5 или SHA.

3.  Кодирует хеш с помощью приватного ключа.

4.  Создает пакет, который включает в себя: код, зашифрованный хеш и сертификат издателя.

Процесс проверки подписанного кода представлен на рисунке 22.


Рис. 22

Проверка кода

1.  Пользователь скачивает или устанавливает подписанное ПО и плат- форма или система пользователя проверяет сертификат издателя, который под- писан корневым приватным ключом центра сертификации.

2.  Система запускает код, используя тот же самый алгоритм создания хе- ша, как издатель и создает новый хеш.


3.  Используя публичный ключ издателя, который содержится в сертифи- кате, система расшифровывает зашифрованный хеш.

4.  И сравнивает между собой два хеша.

4.  Центр сертификации (CA)

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

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

В случае, если хеши не совпадают, вы получите ошибку при запуске та- кого ПО — это может означать, что ПО было модифицировано вирусом или злоумышленником.

Когда ПО расшифровывает цифровую подпись, оно проверяет также кор- невой сертификат в системе, источник проверенной информации. В случае ис- пользования самоподписного сертификата вы получите ошибку: «издатель не может быть проверен». Поэтому важно использовать сертификаты того центра сертификации, чьи корневые сертификаты уже установлены в системе у пред- полагаемого пользователя программы.

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

Пример:

Сертификат действителен с: 01.01.2008 Сертификат действителен до: 31.12.2010 Подпись сделана: 04.07.2009

Подпись проверена: 30.04.2012

C временной меткой (timestamp) подпись пройдет проверку, поскольку на момент подписи сертификат был действителен. Без такой метки сертификат не пройдет проверку, поскольку на момент проверки у сертификата уже закончил- ся срок. То есть такая метка позволяет использовать подписанный код даже по- сле срока окончания сертификата.

Итак, для выбора сертификата сначала нужно выбрать центр сертифика- ции, который выпускает сертификаты под нужную вам платформу.

 

 

 

КОНТРОЛЬНЫЕ ВОПРОСЫ

 

1.  Что такое сертификат разработчика (Code Signing сертификат)?

2.  Какие две основные гарантии предоставляет сертификат разработчика?

3.  Что подтверждает «подлинность источника» программного обеспечения?

4.  Что подтверждает «целостность кода»?

5.  Начиная с какой версии Windows появляются предупреждения при установке неподписанного ПО?

6.  Что операционная система сообщает пользователю, если у программы «Неизвестный издатель»?

7.  Как выглядит сообщение системы о программе, имеющей действительную цифровую подпись?

8.  Для подписи каких типов файлов предназначен Microsoft Authenticode?

9.  Какой сертификат позволяет подписывать программы и обновления для Mac OS?

10. Что подписывает сертификат Microsoft Office VBA Signing?

11. Для подписи каких файлов используется Java Code Signing?

12. Какой сертификат требуется для приложений, основанных на Adobe AIR?

13. Что позволяет подписывать сертификат Kernel Mode Signing?

14. Какая версия Windows требует обязательной подписи kernel-модных приложений доверенным сертификатом?

15. Для подписи каких файлов используется сертификат для платформы Android?

16. Какой сертификат требуется для цифровой подписи приложений для Windows Phone и Xbox 360?

17. Для разработки под какую платформу предназначен сертификат Qualcomm BREW?

18. Какой из перечисленных центров сертификации (СА) предлагает самый дешевый код-сайнинг сертификат (согласно таблице)?

19. Поддержку каких платформ гарантирует центр сертификации Thawte?

20. Поддерживает ли центр сертификации Comodo код-сайнинг для Apple?

21. Каков первый шаг в процессе подписи кода для издателя?

22. Какие утилиты используются для подписи кода (приведите пример из лекции)?

23. Какие алгоритмы хеширования используются при создании хеша кода?

24. Что делает издатель после создания хеша кода?

25. Что включает в себя итоговый пакет подписанного кода?

26. Каков первый шаг в процессе проверки подписанного кода на стороне пользователя?

27. Что делает система пользователя после проверки сертификата издателя?

28. Как система пользователя получает оригинальный хеш, созданный издателем?

29. Что сравнивается на последнем этапе проверки подписи?

30. Что означает несовпадение хешей при проверке подписи?

31. Дайте определение Центру сертификации (CA).

32. Что проверяет Центр сертификации перед выдачей сертификата?

33. Что содержит корневой сертификат Центра сертификации и где он хранится?

34. Почему платформа доверяет сертификату, выданному определенным CA?

35. Какую ошибку получит пользователь при использовании самоподписного сертификата?

36. Что такое Timestamp (временная метка) в контексте цифровой подписи?

37. Какую проверку проводит система, если подпись содержит временную метку?

38. Что произойдет с подписью без временной метки, если срок действия сертификата истек?

39. Почему временная метка позволяет использовать подписанный код после окончания срока действия сертификата?

40. На что в первую очередь нужно обратить внимание при выборе сертификата разработчика?

41.     Помимо подтверждения подлинности и целостности, какую практическую выгоду получает разработчик от подписи кода для пользователей Windows?

42.     Чем отличается предупреждение системы для неподписанной программы от предупреждения для программы с недействительной или самоподписной подписью?

43.     Какие два типа алгоритмов хеширования упомянуты в лекции для создания хеша кода? Какой из них считается более современным и безопасным?

44.     Что такое приватный ключ разработчика и какова его роль в процессе подписи кода?

45.     Что такое публичный ключ разработчика и какова его роль в процессе проверки подписи?

46.     Почему в финальный пакет подписанного кода включается именно сертификат издателя, а не только цифровая подпись?

47.     Какую роль играет корневой сертификат Центра Сертификации (ЦС) на устройстве пользователя?

48.     Что такое самоподписной (самоизданный) сертификат и почему ему не доверяют по умолчанию операционные системы?

49.     Каковы последствия для пользователя, если он проигнорирует предупреждение системы о «Неизвестном издателе» и запустит неподписанную программу?

50.     В чем разница между проверкой доменного имени и расширенной проверкой организации, которую проводит ЦС перед выдачей сертификата?

51.     Как технология цифровой подписи кода обеспечивает «неотрекаемость» (non-repudiation)?

52.     Для чего именно в процессе подписи кода используется временная метка (Timestamp)?

53.     Что произойдет с подписанным кодом, если его сертификат истек, а временная метка не была применена?

54.     Какой тип сертификата требуется для подписи 64-битных драйверов режима ядра (Kernel-Mode) для современных версий Windows?

55.     Почему для подписи Java-апплетов требуется отдельный тип сертификата (Java Code Signing)?

56.     Какие центры сертификации из таблицы 9 поддерживают наибольшее количество различных платформ?

57.     Какой файл подписи используется для приложений Adobe AIR?

58.     Что означает знак "+" в таблице 9 на пересечении строки и столбца?

59.     Почему в таблице 9 у некоторых центров сертификации отсутствуют плюсы для определенных платформ?

60.     Какая утилита командной строки от Microsoft упомянута в лекции для подписи кода?

61.     Что такое CSR (Certificate Signing Request) и на каком этапе процесса он используется?

62.     Кто генерирует пару ключей (приватный и публичный) для сертификата разработчика?

63.     Почему критически важно хранить приватный ключ в секрете и защищенном месте?

64.     Какие действия должен предпринять разработчик, если его приватный ключ был скомпрометирован (украден)?

65.     Может ли один сертификат Code Signing использоваться для подписи программ как для Windows, так и для Mac OS? Ответ обоснуйте, исходя из данных лекции.

66.     Какие типы файлов, помимо .exe, можно подписать с помощью Microsoft Authenticode?

67.     Как цифровая подпись кода помогает в борьбе с вредоносным программным обеспечением?

68.     Что такое корневой центр сертификации и как его сертификат попадает в хранилище доверенных корневых сертификатов Windows?

69.     Какая организация в конечном счете определяет, доверять ли тому или иному ЦС (например, включать ли его корневой сертификат в ОС)?

70.     В чем заключается риск использования центра сертификации, чьи корневые сертификаты не распространены широко на устройствах пользователей?

71.     Что такое цепочка сертификации и какие элементы она в себя включает?

72.     Почему подпись кода для Kernel-Mode драйверов требует более строгих требований, чем для обычных пользовательских приложений?

73.     Какая информация, помимо имени издателя, обычно содержится в сертификате разработчика?

74.     Как пользователь может вручную просмотреть информацию о цифровой подписи файла в Windows?

75.     Что такое аннулирование сертификата и в каких случаях ЦС может аннулировать (отозвать) выданный сертификат?

76.     Как система пользователя проверяет, не был ли сертификат разработчика аннулирован?

77.     Почему даже при наличии валидной подписи пользовательское антивирусное ПО может заблокировать запуск программы?

78.     Какие факторы, помимо поддержки платформы, следует учитывать компании при выборе ЦС для покупки сертификата?

79.     В чем разница между подписью установочного пакета (.msi) и подписью отдельного исполняемого файла (.exe) с точки зрения отображения в системе?

80.     Как процесс подписи и проверки кода соотносится с концепцией инфраструктуры открытых ключей (PKI)?

 

 

 

ЗАДАНИЯ К ЛЕКЦИИ

 

1.                      Разработчик создал приложение для Windows, но при его установке пользователи видят предупреждение «Неизвестный издатель». Что необходимо сделать разработчику, чтобы устранить это предупреждение?

2.                      Компания разработала драйвер для устройства под управлением Windows 10. При установке драйвера система выдаёт ошибку. Какой тип сертификата необходим для решения этой проблемы?

3.                      Пользователь скачал подписанное приложение, но при запуске система сообщает, что цифровая подпись недействительна. Какие две основные причины могут вызвать эту ошибку?

4.                      Разработчик хочет подписывать Java-апплеты. Сертификаты какого центра сертификации из таблицы 9 ему подойдут?

5.                      При проверке подписи кода система сравнивает два хэша. Объясните, откуда берутся эти хэши и что означает их несовпадение.

6.                      Компания выбрала для подписи своего ПО сертификат от StartCom. В одной организации код проходит проверку, а в другой — нет. С чем это может быть связано?

7.                      Зачем в процессе подписи кода используется временная метка (Timestamp)? Приведите пример ситуации, когда она критически важна.

8.                      Разработчик подписал код с помощью самоподписного сертификата. Почему при запуске этого кода пользователь увидит ошибку «Издатель не может быть проверен»?

9.                      Какой алгоритм используется для создания хэша кода перед его подписью? Кто и когда его генерирует: разработчик или пользователь?

10.                  Вам необходимо подписать VBA-макросы в документе Excel. Какой тип сертификата для этого нужен и какие центры сертификации его предоставляют?

11.                  Приложение было подписано сертификатом, срок действия которого истёк. При каких условиях подпись будет признана валидной?

12.                  Чем отличается проверка подписи для kernel-mode драйверов в 64-битных версиях Windows от проверки обычных приложений?

13.                  Почему при подписи кода используется приватный ключ разработчика, а при проверке — публичный?

14.                  Компания хочет выпускать приложения для Mac OS. Сертификат какого типа ей потребуется и от каких центров сертификации его можно получить?

15.                  В процессе подписи кода создаётся пакет, который включает код, зашифрованный хэш и сертификат. Зачем нужен сертификат в этом пакете?

16.                  Центр сертификации (CA) выполняет проверку перед выдачей сертификата. Какие данные могут проверяться в зависимости от типа сертификата?

17.                  Почему устройство или ОС доверяет сертификату разработчика, выданному определённым CA?

18.                  Какой центр сертификации из таблицы 9 предлагает самый дешёвый код-сайнинг сертификат? Укажите его стоимость.

19.                  Для подписи .air-файлов приложений на Adobe AIR требуется специальный сертификат. Какие центры сертификации его поддерживают?

20.                  Что произойдёт, если злоумышленник изменит код уже подписанного приложения, не трогая цифровую подпись?

21.                  Разработчик использует утилиту SIGNCODE.EXE. На каком этапе процесса подписи она применяется и что именно она делает?

22.                  Одинаковы ли требования к сертификатам для подписи приложений на Windows Phone и Android? Ответ обоснуйте, используя данные из таблицы.

23.                  Какие файлы можно подписать с помощью технологии Microsoft Authenticode? Приведите не менее трёх примеров.

24.                  Объясните, какую роль в процессе проверки подписи играет корневой сертификат центра сертификации.

25.                  В чём разница между гарантиями «подлинности источника» и «целостности кода», которые предоставляет код-сайнинг сертификат?

26.                  Сертификат какого типа необходим для подписи обновлений программного обеспечения на Mac OS?

27.                  Почему некоторые центры сертификации в таблице 9 не отмечены плюсами для всех платформ?

28.                  Пользователь получает сообщение, что «ПО было изменено после подписания». На каком этапе проверки подписи была обнаружена эта проблема?

29.                  Как разработчик может получить публичный ключ для проверки подписи, если он не передаётся явно в процессе установки ПО?

30.                  Компания разрабатывает приложения для Qualcomm BREW. Сертификаты какого центра сертификации ей подойдут согласно
таблице 9?

31.     Объясните, в чем заключается разница между простой проверкой доменного имени и расширенной проверкой организации, которую проводит ЦС. Как это может влиять на доверие пользователя?

 

32.     Опишите процедуру аннулирования (отзыва) сертификата. Кто инициирует этот процесс и каковы его последствия для уже подписанного и распространенного ПО?

 

33.     Сравните два алгоритма хеширования — MD5 и SHA, упомянутых в лекции, с точки зрения их современности и безопасности. Почему сегодня рекомендуется использовать SHA?

 

34.     Составьте пошаговый алгоритм действий для разработчика, чей приватный ключ от сертификата был утерян или скомпрометирован.

 

35.     Объясните, что такое «цепочка сертификации» и как она используется при проверке подписи кода на стороне пользователя.

 

36.     Проанализируйте таблицу 9 и определите, центр сертификации с каким самым дорогим и самым дешевым сертификатом предлагает поддержку подписи Java-апплетов.

 

37.     Предположите, почему некоторые центры сертификации (например, Thawte, Digicert) имеют более высокую стоимость сертификатов по сравнению с другими (например, Comodo). Какие факторы, помимо поддержки платформ, могут влиять на цену?

 

38.     Опишите, каким образом технология цифровой подписи кода обеспечивает свойство «неотрекаемость» (non-repudiation).

 

39.     Объясните, почему для подписи драйверов режима ядра (Kernel Mode) требуется специальный сертификат, и чем его проверка строже, чем для обычного приложения.

 

40.     Сформулируйте рекомендации для разработчика по безопасному хранению приватного ключа от сертификата.

 

41.     Предложите, что должно быть включено в политику безопасности компании, касающуюся процедур подписи кода и управления сертификатами.

 

42.     Объясните, как временная метка (Timestamp) технически позволяет проверить валидность подписи после истечения срока действия самого сертификата.

 

43.     Сравните процесс подписи и проверки кода с процессом подписи и проверки обычного электронного документа. В чем сходства и различия?

 

44.     Проанализируйте, может ли один сертификат Code Signing от одного ЦС использоваться для подписи как .exe файлов (через Authenticode), так и .jar файлов (Java Signing). Ответ обоснуйте данными из лекции.

 

45.     Опишите сценарий, в котором использование самоподписного сертификата является оправданным и целесообразным.

 

46.     Объясните, каким образом операционная система определяет, что пора показать пользователю предупреждение о «Неизвестном издателе», а не просто молча заблокировать выполнение кода.

 

47.     Предположите, какие технические причины, помимо истечения срока действия или повреждения файла, могут привести к ошибке проверки цифровой подписи на стороне пользователя.

 

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

 

49.     Объясните, почему подпись кода не заменяет собой антивирусную проверку, а лишь дополняет ее.

 

50.     Опишите, как развивалась политика Microsoft в отношении обязательной подписи кода, начиная с Windows XP SP2 и до современных версий Windows 10/11.

 

Кейс 1

Компания «Альфа» разработала новое 64-битное приложение для Windows (.exe) и планирует его распространение через свой сайт. При тестовой установке на Windows 10 появляется строгое предупреждение системы безопасности о «Неизвестном издателе».

· Вопрос: Какой тип сертификата необходим компании «Альфа» для решения этой проблемы? Какой процесс ей необходимо пройти, чтобы пользователи не видели это предупреждение?

Кейс 2

Разработчик Пётр создал драйвер для нового графического оборудования. Драйвер успешно работает на 32-битной Windows 7, но на 64-битной Windows 10 он не устанавливается, и система выдаёт ошибку.

· Вопрос: Объясните причину проблемы. Какой именно сертификат нужен Петру, и почему обычного Code Signing сертификата может быть недостаточно?

Кейс 3

Компания «Бета» три года назад подписала свой программный продукт, используя сертификат от Comodo. Срок действия сертификата истёк год назад. Пользователи, которые скачали программу в период действия сертификата, продолжают её успешно устанавливать. Однако новые пользователи при установке получают ошибку о недействительной подписи.

· Вопрос: Почему ситуация отличается для двух групп пользователей? Что компания «Бета» упустила из виду при подписи кода три года назад?

Кейс 4

Стартап разрабатывает кроссплатформенное приложение: версию для Windows (.exe), плагин для Microsoft Office (VBA) и мобильное приложение для Android (.apk). Бюджет ограничен.

· Вопрос: Изучив таблицу 9, предложите стратегию выбора сертификата(ов). Можно ли обойтись одним сертификатом? Если нет, то какой центр сертификации предлагает наиболее выгодное покрытие нужных платформ?

Кейс 5

Пользователь скачал легальную программу «X», подписанную цифровой подписью. При запуске антивирусное ПО сообщает, что программа была модифицирована и содержит вредоносный код.

· Вопрос: Объясните, исходя из процесса проверки подписи, на каком этапе и как именно могла произойти компрометация программы. Почему система не выдала предупреждение о несовпадении хэшей?

Кейс 6

Компания «Гамма» хочет подписывать свои Java-апплеты (.jar), чтобы они не блокировались в браузерах клиентов. Им необходимо выбрать между сертификатами от Thawte и Startcom.

· Вопрос: На основании каких критериев, помupportedнии стоимости, следует сделать выбор? Какие вопросы следует задать центрам сертификации перед покупкой?

Кейс 7

Разработчик, использующий самоподписанный сертификат для внутренних нужд, скопировал подписанный файл на компьютер коллеги. При запуске файла коллега получил ошибку «Издатель не может быть проверен».

· Вопрос: Почему это произошло? Что должно быть на компьютере коллеги, чтобы подпись считалась доверенной?

Кейс 8

При проверке подписанного кода система успешно верифицировала сертификат издателя (он был действительным и подписан доверенным ЦС), но проверка целостности кода не прошла.

· Вопрос: Что именно произошло на этапах 2-4 процесса проверки подписи? О чём именно свидетельствует этот результат?

Кейс 9

Компания «Омега» приобрела код-сайнинг сертификат для подписи своего ПО. Через месяц после его получения сервер с приватным ключом был взломан.

· Вопрос: Какие немедленные и долгосрочные действия должна предпринять компания «Омега»? Почему компрометация приватного ключа критична?

Кейс 10

Разработчик создал установочный пакет (.msi) и подписал его с помощью сертификата Microsoft Authenticode. Он утверждает, что этого достаточно для всех версий Windows.

· Вопрос: Верно ли его утверждение? Встретится ли его подписанный пакет с какими-либо проблемами на старых версиях ОС (например, Windows XP) и почему?

Кейс 11

Компания «Сигма» разрабатывает программное обеспечение для встраиваемых систем, работающих под управлением ОС, требующей подписи кодом для Qualcomm BREW.

· Вопрос: Согласно данным таблицы 9, у какого центра сертификации им есть возможность приобрести нужный сертификат? Является ли этот выбор широким?

Кейс 12

Пользователь дважды скачал одну и ту же программу с официального сайта с разницей в неделю. Первая установка прошла успешно, а при второй системе выдала предупреждение о повреждённом файле.

· Вопрос: Каковы наиболее вероятные причины такого расхождения? Кто виноват: разработчик, центр сертификации или пользователь?

Кейс 13

Вам необходимо разработать инструкцию для junior-разработчика по подписанию кода с использованием временной метки (timestamp).

· Вопрос: Что должно быть включено в инструкцию? Объясните junior'у, зачем это нужно, используя пример из лекции с датами (2008-2012).

Кейс 14

Компания «Дельта» купила сертификат для подписи Adobe AIR приложений. При попытке подписать .air файл утилита выдала ошибку.

· Вопрос: Каковы возможные технические причины ошибки, если сам сертификат действителен? На что следует обратить внимание разработчику?

Кейс 15

Крупный банк хочет выпустить собственное безопасное ПО для онлайн-банкинга. Для них критически важны максимальное доверие со стороны пользователей и визуальное отличие их подписи в UAC от подписей мелких разработчиков.

· Вопрос: Какой тип проверки со стороны ЦС (из упомянутых в лекции) им следует пройти? Как это отразится на отображении издателя в предупреждении Windows?

Кейс 16

Разработчик подписал программу, используя алгоритм MD5 для создания хэша. Системный администратор в компании-клиенте заблокировал выполнение этой программы, сославшись на уязвимость.

· Вопрос: Прав ли системный администратор? Обоснуйте ответ, исходя из современных стандартов безопасности.

Кейс 17

Появилась информация, что центр сертификации «Икс», чьи корневые сертификаты широко распространены, был скомпрометирован.

· Вопрос: Какие последствия это будет иметь для всех разработчиков, чьи сертификаты были выпущены этим ЦС? Что должны сделать производители ОС и браузеров?

Кейс 18

Компания купила самый дешёвый код-сайнинг сертификат с таблицы 9. Впоследствии выяснилось, что он не поддерживает подпись VBA-макросов в Excel, что было необходимо.

· Вопрос: Чья это ошибка и как её можно было избежать на этапе выбора сертификата?

Кейс 19

После обновления операционной системы на компьютерах пользователей перестало запускаться старое, но критически важное ПО, подписанное 10 лет назад.

· Вопрос: Выдвините две гипотезы, основанные на материалах лекции, почему это могло произойти.

Кейс 20

Вам поручено выбрать центр сертификации для подписи всего спектра продуктов компании: драйверов, Desktop-приложений для Windows/Mac и Java-апплетов.

· Вопрос: Проанализируйте таблицу 9. Какой центр сертификации предоставляет наиболее полное покрытие всех этих платформ? Сравните его предложение с другими по широте охвата.

Кейс 21
Компания «Зет» подписала свое ПО, но через год сменила юридическое название. При этом приватный ключ и сертификат остались прежними.

· Вопрос: Будет ли отображаться новое название компании в предупреждении системы при установке? Что должна сделать компания, чтобы имя издателя соответствовало новому названию?

Кейс 22
Разработчик создал легитимную программу, но использовал для подписи алгоритм MD5. Крупная корпорация запретила использование ПО, подписанного с помощью MD5, во внутренней сети по соображениям безопасности.

· Вопрос: Правомерно ли решение корпорации? Обоснуйте ответ, исходя из известных уязвимостей MD5.

Кейс 23
Центр сертификации «Омега-CA», чьи корневые сертификаты были предустановлены в Windows и macOS, объявил о банкротстве и прекратил деятельность.

· Вопрос: Какие долгосрочные последствия это будет иметь для разработчиков, которые использовали сертификаты этого ЦС? Смогут ли их программы запускаться в будущем?

Кейс 24
Приложение было подписано сертификатом с временной меткой. Спустя 5 лет обнаружилась критическая уязвимость в библиотеке, использованной в этом приложении. Разработчик выпустил исправленную версию, но старую версию все еще можно скачать со сторонних сайтов.

· Вопрос: Будет ли система считать валидной подпись на уязвимой, но старой версии программы? Как это влияет на безопасность пользователей?

Кейс 25
Компания «Ипсилон» разрабатывает комплексный продукт, включающий Desktop-приложение для Windows (.exe), плагин для Office (VBA) и драйвер устройства (Kernel-Mode). Бюджет ограничен.

· Вопрос: Проанализируйте таблицу 9. Какой центр сертификации позволяет покрыть все эти нужды одним сертификатом? Если такого нет, какая комбинация ЦС будет наиболее экономически выгодной?

Кейс 26
Пользователь скачал программу с официального сайта. Цифровая подпись валидна, издатель проверен, но при запуске встроенный защитник Windows (Defender) поместил программу в карантин как потенциально нежелательную.

· Вопрос: Как такое возможно? Объясните разницу между проверкой цифровой подписи и эвристическим анализом антивируса.

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

· Вопрос: Что увидят пользователи, скачавшие такую версию? На каком именно этапе проверки подписи возникнет ошибка?

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

· Вопрос: Какой механизм инфраструктуры PKI позволяет реализовать такую модель? Что должен сделать производитель, чтобы ОС доверяла таким сертификатам?

Кейс 29
Компания «Фи» приобрела сертификат для подписи VBA-макросов. Однако при открытии документа в Microsoft Office у пользователей все равно появляется предупреждение о недоверенных макросах.

· Вопрос: Каковы возможные причины, кроме отсутствия подписи, которые могут вызывать это предупреждение? Что нужно настроить дополнительно?

Кейс 30
При проверке подписи кода система успешно проверила целостность (хеши совпали), но не смогла верифицировать сертификат издателя (не доверенный ЦС).

· Вопрос: Какое сообщение увидит пользователь в этом случае? Чем эта ситуация опаснее, чем ситуация с несовпадением хешей?

Кейс 31
Появилась информация, что хакеры получили доступ к серверам центра сертификации «ГлобалСайн» и незаконно выпустили несколько код-сайнинг сертификатов.

· Вопрос: Какие экстренные меры должен предпринять «ГлобалСайн»? Как производители ОС (Microsoft, Apple) могут защитить пользователей от таких скомпрометированных сертификатов?

Кейс 32
Разработчик хочет подписывать свои программы для максимально широкой аудитории, включая пользователей устаревших систем, таких как Windows XP.

· Вопрос: На что ему следует обратить особое внимание при выборе алгоритмов хеширования и шифрования, чтобы его подпись распознавалась на старых ОС?

Кейс 33
Компания «Эпсилон» использует один и тот же код-сайнинг сертификат для подписи как коммерческого, так и демонстрационного (с ограниченным функционалом) ПО.

· Вопрос: Сможет ли пользователь, видя имя издателя в системе, отличить коммерческую версию от демонстрационной только по цифровой подписи? Какие есть риски у такой практики?

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

· Вопрос: Как повлияет такая модификация на целостность цифровой подписи при скачивании файла пользователем?

Кейс 35
Стартап разрабатывает приложение для IoT-устройств, работающих под управлением ОС, требующей подписи кода. Производитель устройств рекомендует конкретный, малоизвестный ЦС.

· Вопрос: Какие вопросы следует задать стартапу производителю устройств относительно этого ЦС, чтобы убедиться в его надежности и долгосрочной поддержке?

Кейс 36
Приложение, подписанное 10 лет назад, перестало запускаться после крупного обновления ОС. При этом проверка подписи проходит успешно.

· Вопрос: Выдвините гипотезу, почему легитимное подписанное приложение может быть заблокировано ОС, даже если с подписью все в порядке.

Кейс 37
Компания «Каппа» хочет не только подписывать код, но и обеспечить его проверку на стороне клиента до запуска, используя собственную инфраструктуру.

· Вопрос: Какой тип сертификата (код-сайнинг или другой) может им для этого понадобиться? Опишите принцип работы такого механизма.

Кейс 38
Разработчик заметил, что файл, подписанный с использованием временной метки, имеет значительно больший размер, чем тот же файл, подписанный без нее.

· Вопрос: Объясните, чем технически обусловлено увеличение размера подписанного файла при использовании временной метки.

Кейс 39
Две компании-партнера, «Лямбда» и «Мю», разрабатывают совместное ПО. «Лямбда» владеет сертификатом, а «Мю» пишет часть кода.

· Вопрос: Как организовать процесс подписи так, чтобы итоговый продукт был подписан сертификатом «Лямбды», если сборка происходит на серверах «Мю»? Можно ли безопасно передавать приватный ключ?

Кейс 40
Пользователь перенес подписанную портативную (portable) программу с одного компьютера на другой с помощью флешки. На втором компьютере система выдала предупреждение о неизвестном издателе.

· Вопрос: Почему это произошло, если файл не изменялся? С чем может быть связано отсутствие доверия к подписи на втором компьютере?