Разгадки Code Signing (пока - только гипотеза)

Задал вопрос в Информатик, отчего ваша Орфо не выдает мне Secutity Warning в моем тестовом окружении, а много других программ (включая и наш RawDigger) - выдают.

Получил ответ: ничего такого не делали, никакой уличной магии, просто подписываем, еще вот Win7 Logo получили.

Тогда попроверял всякий пробованный варез (штук 20 разных инсталляторов) на выдачу Security Warning и на нахождение в Windows 7 Compatibility List. Получается вот что:

  • Подавляющее количество инсталляторов программ из этого списка запускаются без Security Warning.
  • Подавляющее количество того что не в списке - запускается с таким предупреждением.
  • Исключения, коих единицы, но есть:
    • Evernote 4.5 - запускается с Warning. В списке есть версия 4 (м.б. 4.5 и 4 - считаются разными).
    • Coretemp - взлетает мухой, без Warning, хотя в списке ее нет. Правда инсталлятор представляется как IntelliQ (это такая платформа монетизации бесплатных приложений), может быть его сертифицировали под каким-то еще соусом.

      Webmoney - нет в списке, но все работает.

Есть еще такие наблюдения:
  1. На свежепоставленном Win7 (в свежепоставленное состояние я его через VMWare snapshots возвращаю) все инсталляторы, которые потом выдадут Security Warning - запускаются ДОЛГО. Тот же Evernote с 70-мегабайтным дистрибутивом - секунд 30 может пройти.

    CPU при этом не загружен, т.е. все подозрения на сеть

  2. Сеть тоже помониторил, идет обращение к DNS спрашивают вот такое:
    45573+ AAAA? dns.msftncsi.com. 
    
    И ему отвечают, но ни с одним из имеющихся в ответе адресов - дальше общения я не вижу.

    С учетом первого пункта, похоже что оно хочет что-то в сети спросить, но не спрашивает.

    Дальше "нечто" кэшируется и повторный запуск того же инсталлятора приводит к мгновенному показу Security Warning.

    "Хорошие" инсталляторы - паузы из пункта 1 не имеют, делаю вывод что проверка на хорошесть - локальная.

  3. Какой-либо корреляции с наличием Alternate Data Streams (признака "файл скачан из интернета") - нету:
    • Этот признак есть и на "плохих" и на "хороших" инсталляторах.
    • На других и хороших и плохих - его нет.
    • Через сеть он все едино не виден.
  4. Какой-либо корреляции с сертификатом, которым подписан инсталлятор - нету. Среди "хороших" есть Microsoft-овский апдейт к Mobile Device Center, подписанный MS-овским сертификатом. Среди "плохих" - "NT Testing Tool" (MS-овская же), подписанная той же цепочкой, за исключением последнего ключа. Обе цепочки (и подпись и timestamp) растут из Microsoft Root Authority.
Сухой остаток: если бы не Webmoney, я бы с чистой совестью списал бы наблюдаемую разницу на 'Win7 Compatible Logo'. А так - осадочек пока остается. Но не вижу, куда копать еще.

Comments

Любопытно. Остается спрашивать реверсеров или кого-то изнутри MS.

1) да, ходит проверять сертификаты в сеть. на кывт в shareware недавно была ветка по твоей проблеме, там кто-то решал интеграцией промежуточных ключей в ключ для подписи, что бы винда за ними не ходила в интернеты или что-то в этом роде. я так, пролистал, может оно и не срослось. Так же в той ветке или рядом было про то, какие сертификаты предустановлены в windows, а какие нет, т.е. можно купить серт у крупного вендора, чью корневые сертификаты предустановлены в windows и тогда похода в сеть не будет (но смотреть что бы не оказалось что через пол-года корневой заэкспайрился, а новый не приехал с апдейтами)

2) установи на семерку fiddler -- увидишь куда пошли http запросы.

1) Как я понимаю, в подписи есть весь chain, кроме корневого (который, в свою очередь, входит в состав винды).
Включать intermediate через /ac (у signtool) попробую, конечно.
Попробовал - не вижу разницы

2) Запросы я на транзитном гейтвее отмониторю, так привычнее.

Спросить у ?

/oftopic

А эта Орфо - полезная в нынешних реалиях вещь?

В 2007-м офисе он же, но очень сильно испоганен. Что в 10-м - я не проверял, потому что сразу поставил Орфо.
Орфо приятен еще тем, что там пополнение словаря человеческое, сразу все формы слова. В отличие от (опять же, в 2010-м офисе не смотрел как оно сделано).

А на Маке просто нету другого русского спеллера. Этот то - совсем недавно появился.

А есть альтернатива для русского? Нету. Сам-то MS Office умеет пользовательские слова только по одному, без флексий.

Мне в ОРФО одно бесит -- за английский интерфейс они хотят вдвое больше денег. А у меня и винда и офис английские.

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

Наши (для которых русский интерфейс) - не готовы платить много. А буржуи (всякие посольства, ООН-ы и прочие подобные места, где пишут документы на русском) - готовы.

Да что тут спрашивать? Это очевидно. Но бесит. Как любая вот такая сегментация рынка на ровном месте. Как, собственно, и фича мультиязычности у MS (только в старшей версии винды) и невозможность нормально купить английскую винду в России...

Ну, и, да, я таки ОРФО украл, когда увидел эту сегментацию. Из принципа. Хотите доп-денег за 10 строчек текста на другом языке? Ну так не получите ничего.

Тут же вопрос банальный - если повышение цены вдвое ведет к повышению продаж, то на пиратов плевать.

Я вот Acronis Workstation покупал, наоборот, у буржуев. Потому что там была скидка, а на русском сайте - не было. Глобализация.

> А на Маке просто нету другого русского спеллера.

cocoAspell? Вроде работает (кроме слишком умных приложений типа Хрома, а в Pages не работает мультиязычная проверка вообще непонятно почему).

Этот Орфо просто какой-то ну очень дофига дорогой!

Просто, для ясности: речь идёт не просто о словарях и словоформах, нет.
Речь идёт о проверке грамматики... Т.е., что слова согласуются и составляют согласованное предложение.
cocoAspell - он в курсе этого?

Понятно.

> Речь идёт о проверки грамматики...

То есть такое предложение он бы выделил как несогласованное? Надо же, до чего техника дошла.

Пардон, я из-под Линуха, здесь Орфо - не работает "из коробки".
Но эта самая "техника долшла" - прошлый век в MS Office (с теми же наработками из Информатика).

Про проверку согласований уже сказали. Про юзерский словарь со словоформами - вроде тоже.

Кроме того, утверждается что *spell-овскими словарями реально пользоваться нельзя. Моя практика это подтверждает, но она достаточно старая, я бросил писать тексты сидя под Linux уже очень давно (только MSWord, только хардкор), возможно с тех пор стало лучше (хотя с чего бы, принцип не поменялся).

А цена - по мне так $35 - вполне подъемная цена за ту экономию времени и сил, что оно дает. Если не писать много текстов, то не знаю.

Я там промахнулся кому отвечал:

http://blog.lexa.ru/2012/03/16/razgadki_code_signing.html#comment-25909

Это без разницы - в ЖЖ (где был задан вопрос) этот ответ все едино не появится :)

Как у тебя всё сложно! "_

Это не сложно, это я двустороннюю синхронизацию не осилил. Наоборот, просто!

гугл вот чо говорит про msftncsi.com:
http://blog.superuser.com/2011/05/16/windows-7-network-awareness/

Я понимаю, интересно, но не преувеличивается ли желание пользователя разбираться, какую из табличек с кнопками yes/no ему показывают? :)

Речь об уменьшении числа этих табличек. Чем их меньше, тем лучше.

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

Даже не спрашивай меня, откуда я знаю.

Что как бэ намекает нам, как на самом деле надо делать безпроблемный инсталлятор.

Мне это намекает только на то, что так сделать *можно*.
Но я не понимаю КАК (ну кроме как пытаться монетизироваться через IntelliQ, что мне противно)

> Но я не понимаю КАК

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

Это место густо усыпано другими граблями. Сетевые настройки, файрволлы и сетевые антивирусы, "просто нет сети" (скачал, поставить хотел в самолете).

Будет ли в сумме плюс или минус (по числу установок, к примеру) - интересно было бы узнать заранее.

> Это место густо усыпано другими граблями.

Это иллюзия. Подумай 5 минут.

> Сетевые настройки, файрволлы и сетевые антивирусы,

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

> "просто нет сети" (скачал, поставить хотел в самолете).

Надуманый сценарий, 1% ситуаций. Можно показывать вежливый мессач бокс "К сети подсоединись, даа?".

> Будет ли в сумме плюс или минус (по числу установок, к примеру) - интересно было бы узнать заранее.

Будет сильный плюс.

Короче мир ждет того героя, который напишет хороший фриварный сетевой инсталлятор а-ла IntelliQ, но без довесок. В котором будет патчится внешними средствами имя сервера.

Следующий шаг, очевидно - сделать эту хрень стартовалкой аппликейшена, чтоб она при каждом старте апгрейдилась и стучала в Центр витальную статистику.

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

Баальшой ваапрос. Сколько там процентов юзеров будет через него чего-то грузить, и когда они это начнут делать.

Впрочем несколько моих знакомых шараварщиков конкретно сейчас просто всё аплоядят в .zip-ах, ожидая как оно устаканится. Работает отлично.

Ну я могу судить по двум местам, где оставлена альтернатива (т.е. i-devices не считаются, Cydia - маргинальщина):

1) на Андроиде я вот просто не знаю о существовании других мест, откуда берется софт. Только Market, только хардкор!

2) На маке - очень много мелкого вареза (Growl, iStats, Evernote - из того чем пользуюсь) переехало в аппстор, а просто с сайта перестало раздаваться. И заодно из бесплатного стало платным.

Надуманый сценарий, 1% ситуаций. Можно показывать вежливый мессач бокс "К сети подсоединись, даа?".

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

Это зависит от нужности оного софта.

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

Если софт НУЖЕН, то его и из платного трафика вычтут.
Но вообще -- надо ещё помнить ок орпоративных свалках софта.
Если софт нужен на каждой рабочей станции в фирме, админы будут не рады, если нельзя будет скачать оффлайн-инсталлятор.

"Платный трафик на работе" - это непонятная для меня штука, с удивлением читаю про "вычтут". В условиях наличия безлимитных планов на мабиле - это же чудовищная дыра в безопасности.

В остальном же - с нужностью офлайн-инсталлятора я полностью согласен.

Да, как говорят, пройти Win7 Compatible - несложно.

Насколько я помню порядка $300, плюс за это дают один из сертификатов (VeriSign)?

Да вроде под семерку (в отличие от висты) - бесплатно.

Тогда надо попробовать.

Ну вот пишуть, что надо иметь $499-баксовый сертификат, который там же можно купить (как мы и купили) за 99.
Больше ни слова о деньгах :)

http://msdn.microsoft.com/en-us/windows/ff718579.aspx

Я предлагаю взять сертификаты и посмотреть. Те кто требует и те, которые "хорошие".

В сертификате, кроме цепочки подписи, есть еще и опциональные поля, в том числе числе, например, CRL DIstribution Points.
В частности это поле указывает URL-адрес, по которому можно поинтересоваться, не отменили ли уже этот сертификат.

Выпустив CRL Certificat Authority имеет право запретить использование сертификата, хотя его срок еще и не вышел.

При проверке валидности сертификата правильный центр обязан не только проверить цепочку доверия по подписям, но и опросить все указанные CRL-центры,
не отозван ли этот сертификат.
Но. Это поле опциональное и 'non-critical', т.е. если проверка не прошла - на усмотрение проверяющего. Для систем high securily level БЕЗ доступа к CRL-центру
получите отказ в валидации сертификата несмотря на валидность цепочки. В более низких уровнях секретности валидатор дает только предупреждения.

Мне кажется ваша проблема идет отсюда.

Ну вот для ACDSee Pro и для моего вареза - вся цепочка сертификации (т.е. и CRL - тоже) - одинакова. Отличаются только конечные сертификаты (CRL к которым находится на уровень выше т.е. опять одинаков).

Однако ACDSee ставится без 'Security Warning', а мой варез - с оным.

И, да, естественно, мой сертификат не отозван. Он выдан то реально позавчера.

В приведенных примерах только проверка цепочек доверия. Про CRL там ни слова.

Сертификат может быть и не отозванным. Но если он имеет ссылку на тот сервер, который его МОЖЕТ отозвать (CRL DIstribution Points), то валидатор НА МОМЕНТ ПРОВЕРКИ обязан сходить туда, прочитать ВСЕ CRL и, перебрав их, выяснить, совершенно случайно, еонечно, не числится ли Ваш сертификат в этих списках :)

Это правило проверки.

Повторю еще раз. CRL не имеет отношения в цепочке сертификации. Да, если не указан сервер явно, то обращение за CRL валидатор пытается сделать на сервер Issuer (ну естественно, кто подписал - тот и отозвать может). Но CRL - "подлый удар сбоку" по цепочке сертификации, т.к. он может выбить любое из звеньев цепочки. И CRL существуют отдельно от сертификатов.

Приведите ПОЛНЫЙ дамп Вашено сертификата и ACDSee. Тогда мождно говорить о различиях. SignTool показывает в цепочке сертификации не все данные сертификатов.

Не вижу разницы. В частности, X509v3 CRL Distribution Points - одинаковые

1)
Version: 3 (0x2)
Serial Number:
2e:e7:e6:25:c1:97:59:4e:63:54:fe:cd:e1:80:4e:9e
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=US, O=VeriSign, Inc., OU=VeriSign Trust Network, OU=Terms of use at https://www.verisign.com/rpa (c)10, CN=VeriSign Class 3 Code Signing 2010 CA
Validity
Not Before: Feb 28 00:00:00 2012 GMT
Not After : Feb 27 23:59:59 2013 GMT
Subject: C=US, ST=Maryland, L=N. Potomac, O=LibRaw LLC, OU=Digital ID Class 3 - Microsoft Software Validation v2, CN=LibRaw LLC
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
X509v3 Key Usage: critical
Digital Signature
X509v3 CRL Distribution Points:

Full Name:
URI:http://csc3-2010-crl.verisign.com/CSC3-2010.crl

X509v3 Certificate Policies:
Policy: 2.16.840.1.113733.1.7.23.3
CPS: https://www.verisign.com/rpa

X509v3 Extended Key Usage:
Code Signing
Authority Information Access:
OCSP - URI:http://ocsp.verisign.com
CA Issuers - URI:http://csc3-2010-aia.verisign.com/CSC3-2010.cer

X509v3 Authority Key Identifier:
keyid:CF:99:A9:EA:7B:26:F4:4B:C9:8E:8F:D7:F0:05:26:EF:E3:D2:A7:9D

Netscape Cert Type:
Object Signing
1.3.6.1.4.1.311.2.1.27:
0.......
Signature Algorithm: sha1WithRSAEncryption

2)
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
03:f7:9f:3f:d2:e5:0d:9b:3d:08:c8:67:c0:bf:43:02
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=US, O=VeriSign, Inc., OU=VeriSign Trust Network, OU=Terms of use at https://www.verisign.com/rpa (c)10, CN=VeriSign Class 3 Code Signing 2010 CA
Validity
Not Before: Apr 22 00:00:00 2011 GMT
Not After : May 10 23:59:59 2012 GMT
Subject: C=CA, ST=British Columbia, L=Victoria, O=ACD Systems International Inc, OU=Digital ID Class 3 - Microsoft Software Validation v2, OU=Development, CN=ACD Systems International Inc
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
X509v3 Key Usage: critical
Digital Signature
X509v3 CRL Distribution Points:

Full Name:
URI:http://csc3-2010-crl.verisign.com/CSC3-2010.crl

X509v3 Certificate Policies:
Policy: 2.16.840.1.113733.1.7.23.3
CPS: https://www.verisign.com/rpa

X509v3 Extended Key Usage:
Code Signing
Authority Information Access:
OCSP - URI:http://ocsp.verisign.com
CA Issuers - URI:http://csc3-2010-aia.verisign.com/CSC3-2010.cer

X509v3 Authority Key Identifier:
keyid:CF:99:A9:EA:7B:26:F4:4B:C9:8E:8F:D7:F0:05:26:EF:E3:D2:A7:9D

Netscape Cert Type:
Object Signing
1.3.6.1.4.1.311.2.1.27:
0.......
Signature Algorithm: sha1WithRSAEncryption

возможно глупое предположение, но раз других идей пока нет... может дело во множестве точек в RawDigger-0.9.10-Beta-RU-Setup.exe? что если имя будет попроще?