Исторически так сложилось, что сертификаты для подтверждения подлинности веб-сайтов при шифровании были выстроены в иерархическую структуру.
Имеется корневой супер-надёжно охраняемый сертификат (а точнее его секретный ключ), хранящийся в изолированном от глобального Интернета контуре, за 5-ю заборами с колючей проволокой, с бронированными дверями и конечно надёжно зашифрованный и расшифровывающийся комбинацией из нескольких ключей, независимо хранящихся у разных людей — гарантов его секретности (это реализуется, например, схемой Шамира).
Далее корневым сертификатом подписывается (заверяется) менее, но всё ещё очень надёжный промежуточный сертификат, или несколько таких. От которых в свою очередь цепочка доверия распространяется на промежуточные сертификаты следующего уровня или уже на оконечные (листьевые) сертификаты, которые используются собственно сайтами и веб-порталами для шифрования трафика. Конкретно сертификат используется с целью подтверждения, что содержимое вам отдаёт именно удостоверенная сторона, именно тот сайт, адрес которого вы набирали в строке адреса в браузере, а не какой-то шпион или кракер.
И тут весь вопрос в том, кому вы доверяете.
Описанные выше корневые сертификаты с их поддеревьями заверенных иерархий образуют своеобразный лес: от каждого корня — отдельное дерево.
Стандартно браузеры либо используют свой список доверенных корневых сертификатов, либо пользуются средствами среды, то есть операционной системы (будь то Windows, iOS или Android). Как правило этот список можно дополнить или заменить на свой собственный. Например, можно выписать свой персональный (или корпоративный) сертификат, и только его оставить в списке. Это на случай, если вы доверяете только себе самому. При этом вы сами (или ваша организация) храните в тайне его секретный ключ, которым осуществляется подпись других сертификатов. И вы лично отвечаете тогда за безопасность.
Проблема в том, что если таким сертификатом заверен некий сайт (например вашего личного ВасяПупкинБанка), то обычные рядовые пользователи, ничего не знающие про вас, ваш ВасяПупкинБанк и вашу систему безопасности не имеют никакого представления о существовании вашего корневого сертификата. И таким образом ваш сертификат по сути (по факту) корневым не является.
Что касается сертификатов, которые стали выписывать в последнее время россйские банки, то они заверены корневым сертификатом МинЦифры, который существует уже некоторое время. Это вынужденная мера, потому что в услуге заверения отказали основные западные а теперь и китайские центры сертификации. Но! Это не значит что сертификат небезопасный. Это ровно настолько же безопасный (при условии надёжной охраны), насколько и другие корневые сертификаты. И тут вопрос только в том, кто имеет доступ к секретному ключу МинЦифры, кто имеет право подписывать другие ветви и листья этого дерева? Я полагаю ФСБ точно имеет, а значит если вы внесёте сертификат МинЦифры в список доверенных, то непонятно какой (любой?) фсбшник (или грушник?) сможет выписать сертификат для любого домена в интернете и заверить его сертификатом МинЦифры. Частично защититься от этого может помочь система с разделённым доступом к секретному ключу. Та же схема Шамира на 5-10 человек, например. Таким образом, подделать любой сайт — это называется фишинг — сможет только группа ответственных лиц. То есть это примерно как схема с системой пуска ядерных ракет: надёжная защита — разделение доступа между людьми.
Но если вы утверждаете, что сертификат МинЦифры снизит вашу безопасность — я вас огорчу, она уже снижена. Потому что, например, к американским центрам сертификации наверняка имеют доступ американские спецслужбы, в данном случае АНБ. Я вас уверяю, АНБ — супероснащённая в техническом плане служба с большим числом высококвалифицированных ИТ-специалистов (если верить американским фильмам, то численность её сотрудников превосходит все остальные американские спецслужбы вместе взятые, но вы уточните у Э.Сноудена). И это не секрет ни для кого. Все помнят, что такая ситуация сложилась после известных событий 11 сентября 2001 года.
Так что весь вопрос только в том, чьим спецслужбам вы доверяете — ФСБ, АНБ или Моссаду (а может китайцам или КСИР?) или какие лично вам принесут меньше вреда в случае чего.
Тут проблема ещё и в том, что вы не можете в обычном браузере указать область действия для сертификата. То есть сертификат, будучи внесённым в корневые доверенные, будет подтверждать подлинность вообще любых сайтов, цепочка доверия которых ведёт к нему. А было бы неплохо иметь возможность ограничивать область его влияния (scope), для, например, только сайтов в домене .ru или даже для конкретных порталов (Госуслуги, банки под санкциями и прочее). Сейчас вы можете частично решить проблему, если будете иметь отдельную среду для доступа именно к российским сайтам. Это отдельный смартфон, либо браузер, запущенный в виртуальной машине на обычном компьютере.
Как я сказал, проблема вызвана самой структурой заверения сертификатов — она строго иерархическая. К сожалению, в стандартной реализации протоколов X.509 нет возможности заверить сертификат сайта сразу несколькими центрами сертификации. А это решило бы (скорее всего) проблему доверия корневым сертификатам.
То есть как это работало БЫ. Вы берёте два и более независимых центра сертификации, желательно ведущих цепочку доверия из разных стан, ещё лучше — из разных частей света. И заверяете ими ВСЕМИ свой сайт. Тогда сотрудник АНБ, желая прослушать ваш трафик, сможет заверить подделанную подпись в американском удостоверяющем центре, но у него нет (надеюсь) доступа к китайскому центру сертификации, и тогда пользователь вашего сайта, загружая страницу от АНБ, увидит, что подпись заверена американцами, но не заверена китайцами. Что это значит? Наверняка вас прослушивает АНБ. То же самое с фсбшником: сайт заверен МинЦифры, но не заверен американцами — вас слушает ФСБ, либо владелец сайта под американскими санкциями. Если действительных подписей вообще нет — вас пытается прослушать Вася Пупкин из соседнего подъезда, или неквалифицированный товарищ майор в грубой форме. Ну или вы забыли внести свой персональный/корпоративный сертификат в доверенные.
Специалисты могут вспомнить про существование протоколов PGP и их сетей доверия. Было бы конечно приятно увидеть их поддержку в браузерах хотя бы в качестве опции. Но и там, насколько я слышал сейчас проблемы: используемый для подписи хэш SHA-1 уже считается неустойчивым и исключён из всех более-менее новых стандартов как небезопасный.
ссылка на оригинал статьи https://habr.com/ru/articles/1067820/