(no subject)
Mar. 26th, 2016 01:16 amНеожиданное продолжение этой темы - принят новый российский закон (ФЗ-445), обязывающий все фирмы, выпускающие свои цифровые сертификаты (Сertificate Authorities, Удостоверяющие Центры) не использовать в качестве корневого самоподписанный сертификат, а получить его от государства, за подписью от некоего Государственного Удостоверяющего Центра. Что означает, что отправной точкой, от которой выстраивается цепочка доверия той или иной цифровой подписи, становится не сертификат определённой фирмы (какого-то российского аналога Verisign), а этого самого ГУЦ.
В статье на Хабре в качестве обоснования этого шага приводится забота о юзере - ему, дескать, не надо решать вопрос доверия каждому из CA - добавил государственный корневой сертификат в список доверяемых и вся недолга. У меня такой подход вызывает сомнение: система PKI тем и хороша, что позволяет определять меру доверия разным CA (и соответственно, выданным ими сертификатам) независимо друг от друга, и в случае чего вовсе это доверие отменить (что чуть не произошло с фирмами TrustWave и TeliaSonera, и произошло с DigiNotar). Доверие единому корню же навязывает логику "всё или ничего" (ну и к тому же, сам факт государственной регуляции в области, где это совершенно не требуется...)
На это можно возразить, что такое построение не мешает конечным юзерам (или сисадминам в корпоративной сети) выстраивать цепочки доверия по своему усмотрению: занести сертификат ГУЦ или проштрафившегося частного CA в список недоверяемых, или наоборот, указать сертификат CA в качестве корневого, хоть он и не самоподписан.
Но вот что у меня сомнения не вызывает, так это то, что такая система позволяет государству подделать сертификат от любого CA из заверенных им, способом, куда более сложнообнаружимым, чем при нынешнем положении дел. Как я писал ранее, сегодня государство может заставить какой-нибудь из CA, действующий под его властью, выдать поддельный сертификат под любой сайт, почтовый адрес и т.д., который будет принят браузером или мэйлером без возражений - но проверка такого сертификата может обнаружить, что его CA внезапно изменился. Странно будет, если вдруг окажется, что сайт https://mail.google.com заверен израильской фирмой StartCom, а не американским GeoTrust, не так ли? По ссылке описан плагин CertLock, который именно это и проверял.
Но если государство само заверяет множество CA, то ему и заставлять их не надо: имея доступ к корневому ключу, элементарно сгенерировать сколь угодно длинную цепочку, на выходе которой будет сертификат, выглядящий как выданный законным CA, с точно такими же полями Issuer, Subject и так далее по всей длине цепочки. Единственное, что нельзя будет подделать, это собственно цифровые подписи на сертификатах (а следовательно, и байты публичных ключей, которыми их проверяют) - поскольку для них нужен доступ к приватным ключам CA. Но радости в этом немного, поскольку: a.) для обнаружения подделки нужно уже иметь сохраненную цепочку - если данный сайт запрашивается впервые, то сравнивать не с чем; б.) пары ключей могут изменяться и по легитимным причинам.
Если через какое-то время после выполнения этого распоряжения выйдет следующее, обязавающее владельцев российских сайтов получать сертификаты непременно от российских CA - всякое сомнение в том, что перехват и являлся целью этого закона, у меня отпадёт.
Что я могу посоветовать тем, кто имеет основания опасаться интереса к своему траффику со стороны российских спецслужб: если в списке "Trusted Root Certification Authorities" засветился какой-нибудь ГУЦ - переправить его в "Untrusted Certificates". Если опасения сильные, можно туда отправить и все прочие российские CA.
В статье на Хабре в качестве обоснования этого шага приводится забота о юзере - ему, дескать, не надо решать вопрос доверия каждому из CA - добавил государственный корневой сертификат в список доверяемых и вся недолга. У меня такой подход вызывает сомнение: система PKI тем и хороша, что позволяет определять меру доверия разным CA (и соответственно, выданным ими сертификатам) независимо друг от друга, и в случае чего вовсе это доверие отменить (что чуть не произошло с фирмами TrustWave и TeliaSonera, и произошло с DigiNotar). Доверие единому корню же навязывает логику "всё или ничего" (ну и к тому же, сам факт государственной регуляции в области, где это совершенно не требуется...)
На это можно возразить, что такое построение не мешает конечным юзерам (или сисадминам в корпоративной сети) выстраивать цепочки доверия по своему усмотрению: занести сертификат ГУЦ или проштрафившегося частного CA в список недоверяемых, или наоборот, указать сертификат CA в качестве корневого, хоть он и не самоподписан.
Но вот что у меня сомнения не вызывает, так это то, что такая система позволяет государству подделать сертификат от любого CA из заверенных им, способом, куда более сложнообнаружимым, чем при нынешнем положении дел. Как я писал ранее, сегодня государство может заставить какой-нибудь из CA, действующий под его властью, выдать поддельный сертификат под любой сайт, почтовый адрес и т.д., который будет принят браузером или мэйлером без возражений - но проверка такого сертификата может обнаружить, что его CA внезапно изменился. Странно будет, если вдруг окажется, что сайт https://mail.google.com заверен израильской фирмой StartCom, а не американским GeoTrust, не так ли? По ссылке описан плагин CertLock, который именно это и проверял.
Но если государство само заверяет множество CA, то ему и заставлять их не надо: имея доступ к корневому ключу, элементарно сгенерировать сколь угодно длинную цепочку, на выходе которой будет сертификат, выглядящий как выданный законным CA, с точно такими же полями Issuer, Subject и так далее по всей длине цепочки. Единственное, что нельзя будет подделать, это собственно цифровые подписи на сертификатах (а следовательно, и байты публичных ключей, которыми их проверяют) - поскольку для них нужен доступ к приватным ключам CA. Но радости в этом немного, поскольку: a.) для обнаружения подделки нужно уже иметь сохраненную цепочку - если данный сайт запрашивается впервые, то сравнивать не с чем; б.) пары ключей могут изменяться и по легитимным причинам.
Если через какое-то время после выполнения этого распоряжения выйдет следующее, обязавающее владельцев российских сайтов получать сертификаты непременно от российских CA - всякое сомнение в том, что перехват и являлся целью этого закона, у меня отпадёт.
Что я могу посоветовать тем, кто имеет основания опасаться интереса к своему траффику со стороны российских спецслужб: если в списке "Trusted Root Certification Authorities" засветился какой-нибудь ГУЦ - переправить его в "Untrusted Certificates". Если опасения сильные, можно туда отправить и все прочие российские CA.