Identity¶
Что такое Identity?¶
Участниками блокчейн-сети являются пиры, ordering-службы, клиентские приложения, администраторы и многие другие. Каждый участник — активный элемент, способный потреблять услуги, находящийся внутри сети или за ее пределами — имеет цифровую identity, инкапсулированную в цифровом сертификате X.509. Identity имеет большое значение, поскольку она определяет разрешения на ресурсы и доступ к информации, которыми владеют участники блокчейн-сети.
Помимо этого цифровая identity имеет некоторые дополнительные атрибуты, которые Fabric использует для определения разрешений. У совокупности identity и связанных с ней атрибутов существует специальное имя — principal. Principals похожи на userIDs или groupIDs, но более гибкие, они могут включать в себя широкий спектр свойств, определяющих identity участника — его огранизацию, подразделение, роль и т.д. Principals - наборы свойств, определяющие права участников.
Чтобы identity была проверяемой, она должна исходить от доверенного центра. MSP (Membership service provider) является этим доверенным центром в Fabric. Говоря конкретнее, MSP - компонент, определяющий правила, которые управляют валидными identities для этой организации. По умолчанию MSP реализация Fabric использует сертификаты X.509 в качестве identities, придерживаясь традиционной Public Key Infrastructure (PKI) иерархической модели (больше про PKI чуть позже).
Простой сценарий, объясняющий использование Identity¶
Представьте, что вы зашли в супермаркет, чтобы купить товары. На кассе вы видите знак, что принимаются только карты Visa, Mastercard и AMEX. Если вы хотите заплатить другой картой — назовем ее “ImagineCard” — не важно реальна ли она и есть ли у вас на ней деньги. Ее не примут.

Иметь валидную кредитную карточку недостаточно — ее должны принимать в магазине! PKI и MSP работают вместе таким же образом — PKI предоставляет список identities, а MSP говорит, кто из них состоит в сети определенной организации, которая участвует в сети.
PKI CA (certificate authorities — сертифицированные центры) и MSP предоставляют похожий набор функций. PKI как поставщик карты — он предоставляет множество видов проверяемых identities. С другой стороны, MSP как список поставщиков карт, принимаемых в магазине, определяющий, какие identities — доверенные члены (участники) магазинной платежной сети. MSP превращает проверяемых identities в членов блокчейн-сети.
Давайте рассмотрим эти концепции более детально.
Что такое PKI?¶
Public key infrastructure (PKI) (инфраструктура публичного ключа) это набор веб- технологий, которые обеспечивают безопасные коммуникации в сети. Именно PKI отвечает за букву S в HTTPS — и, если вы читаете эту документацию в браузере, вы тоже скорее всего используете PKI, чтобы удостовериться, что она получена из проверенного источника.

Элементы Public Key Infrastructure (PKI). PKI состоит из Certificate Authorities, которые выдают цифровые сертификаты субъектам (например, пользователям и поставщикам услуг), которые в свою очередь используют их, чтобы аутентифицировать себя в сообщениях, которыми они обмениваются в окружающей среде. Certificate Revocation List (CRL) (список отзыва сертификатов) CA — справочник сертификатов, утративших валидность. Отзыв сертификата может произойти по ряду причин. Например, сертификат может быть аннулирован, если криптографические приватные материалы, привязанные к нему, просрочены.
Хотя блокчейн-сеть это больше, чем сеть коммуникаций, она основана на стандарте PKI, для того чтобы обеспечить безопасную связь между различными участниками сети и надлежащую аутентификацию сообщений, размещенных в блокчейн-сети. Важно понимать азы PKI и почему MSP так важны.
У PKI четыре ключевых элемента:
- Цифровые сертификаты
- Публичные и приватные ключи
- Certificate Authorities
- Certificate Revocation Lists
Давайте немного поговорим об этих элементах PKI. Если вы хотите знать больше деталей, можно начать с Википедии.
Цифровые сертификаты¶
Цифровой сертификат — это документ, содержащий атрибуты владельца сертификата. Самый распространенный тип сертификата это соответствующий [стандарт X.509] (https://ru.wikipedia.org/wiki/X.509), который позволяет кодировать идентификационные данные субъекта в своей структуре.
К примеру, Мэри Моррис из производственного подразделения Mitchell Cars в Детройте, Мичиган
может иметь цифровой сертификат с атрибутом “SUBJECT”, равным C=US, ST=Michigan, L=Detroit,
O=Mitchell Cars, OU=Manufacturing, CN=Mary Morris /UID=123456.
Сертификат Мэри похож на ее социальную карту — он предоставляет информацию о Мэри, с помощью
которой вы можете узнать ключевые факты о ней. Существует множество других атрибутов в
сертификате X.509, но давайте пока сконцентрируемся на этих.

Цифровой сертификат описывает сторону по имени Мэри Моррис. Мэри это SUBJECT (субъект)
сертификата, и выделенный SUBJECT текст указывает ключевые факты о Мэри. Сертификат также
содержит еще много другой информации. Очень важно то, что публичный ключ
Мэри содержится в ее сертификате, а приватный — нет.
Важно, что все атрибуты Мэри могут быть записаны с использованием криптографии так, что подделка аннулирует сертификат. Криптография позволяет Мэри показывать свой сертификат остальным, чтобы подтверждать свою личность, пока другая сторона доверяет поставщику сертификата — Certificate Authority (CA, центр сертификации). Если CA хранит некоторую криптографическую информацию безопасным образом (с помощью его собственного личного приватного ключа), читающие сертификат Мэри могут быть уверены, что информация не была подделана или изменена — она всегда будет иметь конкретные атрибуты Мэри Моррис. Можно думать о ее сертификате X.509 как о цифровой идентификационной карточке, которую невозможно изменить.
Аутентификация, приватные и публичные ключи.¶
Аутентификация и целостность сообщений - важные концепции в области безопасной коммуникации. Аутентификация требует, чтобы стороны, которые обмениваются сообщениями, были уверены в подлинности identity, написавшей определенное сообщение. “Целостность” означает, что сообщение не может быть изменено во время передачи. Например, вы можете убедиться, что вы общаетесь с настоящей Мэри Моррис, а не с ее двойником. Или, если Мэри посылает вам сообщение, вы можете убедиться, что оно не было никем подделано во время передачи.
Традиционные механизмы аутентификации основываются на цифровых подписях, которые, как можно догадаться, позволяют стороне по-цифровому подписать сообщение. Цифровые подписи также предоставляют гарантию целостности подписанного сообщения.
Строго говоря, механизмы цифровой подписи требуют, чтобы каждая сторона имела два криптографически связанных ключа: публичный ключ, который всем доступен и является аутентификационной привязкой, и приватный ключ, который используется для того, чтобы ставить на сообщениях цифровую подпись. Получатели сообщений с цифровой подписью могут проверить автора сообщения и целостность сообщения.
Уникальное отношение между приватным ключом и публичным — криптографическая магия, обеспечивающая безопасное соединение. Уникальное математическое отношение между ключами гарантирует, что созданная приватным ключом цифровая подпись уникальна как для публичного ключа, так и для конкретного сообщения.

В примере, приведенном выше, Мэри использует приватный ключ для подписи сообщения. Подпись может быть проверена любым, кто видит подписанное сообщение, с использованием ее публичного ключа.
Certificate Authorities¶
Участник или узел участвует в блокчейн-сети с помощью цифровой identity, выданной ему доверенным центром. Обычно цифровые identities (или просто identities) имеют форму криптографически проверенных цифровых сертификатов, соответствующих стандарту X.509 и выданных Certificate Authority (CA).
CA - обычная часть протоколов интернет-безопасности. Вы наверняка слышали о самых популярных: Symantec (раньше Verisign), GeoTrust, DigiCert, GoDaddy, Comodo и другие.

Certificate Authority раздает сертификаты разным участникам. Эти сертификаты имеют цифровую подпись CA и связывают участника и его публичный ключ (при необходимости с перечнем собственности участника). В результате, если первый участник доверяет CA и знает его публичный ключ, он может быть уверен, что второй участник привязан к публичному ключу, указанному в сертификате, и обладает теми атрибутами, что там указаны, если проверит подпись CA на сертификате второго участника.
Сертификаты могут быть широко распространены, поскольку они не содержат приватного ключа ни участника, ни CA. Они могут использоваться как залог доверия аутентификации сообщений от разных участников.
CA тоже владеет широко доступным сертификатом. Это позволяет проверять данные identity, выданных определенным CA, проверяя, что этот сертификат мог быть сгенерирован владельцем соответствующего приватного ключа (CA).
Каждый участник блокчейн-сети, желающий взаимодействовать с сетью, должен иметь identity. Можно сказать, что один или больше CA используются для определения членов организации с цифровой точки зрения. CA обеспечивает участников организации поддающейся проверке цифровой identity.
Корневые CA (Root CA), промежуточные CA (Intermediate CA) и цепочки доверия¶
CA бывают корневыми и промежуточными. Поскольку корневые CA (Symantec, Geotrust и др) должны безопасно раздавать сотни миллионов сертификатов интернет-пользователям, они поручают этот процесс так называемым промежуточным CA. Эти промежуточные CA имеют сертификаты, выданные корневым CA или другим промежуточным доверенным органом, что устанавливает так называемые “цепочки доверия” для всех сертификатов, выдаваемых любым звеном цепи CA. Возможность дойти по этой цепочке вплоть до корневого CA не только позволяет масштабировать CA, все еще обеспечивая безопасность — позволяя организациям доверять промежуточным CA — но и уменьшает риск взлома корневого CA, который, будучи скомпроментированным, ставит под угрозу всю цепочку доверия. Если же будет скомпрометирован лишь промежуточный CA, то последствий будет гораздо меньше.

Цепочка доверия устанавливается между корневым CA и группой промежуточных CA, пока у каждого из этих CA есть сертификат от корневого CA, или от промежуточного CA, уже входящего в цепочку доверия.
Промежуточные CA обеспечивают большую гибкость при выдаче сертификатов во многих организациях, что очень полезно для permissioned блокчейн-сети (такой как Fabric). Например, вы увидите, что разные организации могут использовать разные корневые CA или одинаковые корневые CA, но разные промежуточные CA — это зависит от нужд сети.
CA Fabric¶
Поскольку CA очень важны, Fabric предоставляет встроенный компонент CA, чтобы позволить вам создавать CA в блокчейн-сети, формируемой вами. Этот компонент — так называемый Fabric CA является приватным корневым провайдером CA, способным управлять цифровыми identities участниками Fabric, имеющими сертификат X.509. Поскольку Fabric CA это особый CA рассчитанный на нужды корневых CA Fabric, он не способен предоставлять SSL сертификаты для общего/автоматического использования в браузере. Однако, поскольку некоторые CA нужны для управления identity (даже в тестовой среде), Fabric CA может предоставлять и управлять сертификатами. Также возможно использовать публичный/коммерческий корневой или промежуточный CA для идентификации.
Если вы заинтересовались, можете почитать больше о Fabric CA [в секции документации CA] (http://hyperledger-fabric-ca.readthedocs.io/).
Certificate Revocation Lists¶
Certificate Revocation List (CRL) (список отозванных сертификатов) — это список ссылок на отозванные по той или иной причине сертификаты. Если обратиться к сценарию с магазином, то CRL — это список украденных кредитных карт.
Когда третья сторона хочет проверить личность другой стороны, она сначала проверяет CRL, чтобы убедиться, что сертификат не был аннулирован. Проверяющая сторона не обязана это делать, но тогда она рискует принять скомпрометированную identity.

Использование CRL для проверки действительности сертификата. Если мошенник (на картинке — impersonating principal) попытается передать скомпрометированный цифровой сертификат проверяющей стороне, она может пробить сертификат в CRL CA и отвергнуть мошенника.
Отозванный сертификат сильно отличается от сертификата с истекшим
сроком действия. Срок действия отозванных сертификатов не истек
— они, если забыть про CRL, являются валидными сертификатами. Чтобы узнать больше о CRL, перейдите по ссылке.
//ToDo: заменить ссылку на русскую
Теперь, когда вы увидели, как PKI обеспечивает проверяемость identities с помощью цепочек доверия, следующий шаг — понять, как именно identities представляют доверенных членов блокчейн-сети. Здесь в игру входит Membership Service Provider (MSP) — он предоставляет identity членам организаций в блокчейн-сети.