Предлагаю ответить на вопрос: "Как часто Вы внимательно читаете положение об обработке персональных данных, когда устанавливаете игру или, например, оформляете подписку на сервис крупной компании?" Скорее всего, не часто. Большинство из нас даёт согласие на обработку своих персональных данных без вникания во все пункты этих соглашений, желая как можно скорее потреблять контент. Мы уповаем на хорошую репутацию компаний: не будут же такие серьезные организации передавать наши данные третьим лицам. Иногда убеждаемся в обратном, возмущаемся, но противозаконных действий при этом и не совершается. Потом опять так же бездумно соглашаемся на все условия. Неприятным последствием соглашения со всеми условиями может являться превращение в Человекайпадоножку (англ. HUMANCENTiPAD) из мультсериала "Южный парк". Но кому-то такое развитие событий, может, и приглянется.
Чтобы защитить конфиденциальные данные пользователей, компания Intel разработала механизм EPID (англ. Enhanced Privacy Identification), который применяется на серверах, компьютерах, смартфонах и других устройствах. Прежде чем погружаться в принципы его работы, следует определить, а что вообще такое "конфиденциальность"?
О понятии конфиденциальности
— Да, мы не продадим Ваши персональные данные кому-то, но взамен мы выжмем из Вас всё по максимуму. Мы отследим Вашу активность и предложим Вам товары, которые наверняка могут понравиться.
В наше время ожидается скорее такое поведение от компаний. Кому-то это даже окажется полезным, но в большинстве своем подобные предложения воспринимаются как спам на почте.
Политика конфиденциальности ещё и склонна меняться, и с обновлением могут появиться пункты, которые точно способны насторожить параноидального потребителя. Порою даже скачанный калькулятор просит разрешения к контактам и галерее на мобильном устройстве, и, казалось бы, зачем. Всё это представляет угрозу для конфиденциальности.
А что гарантирует конфиденциальность? Пожалуй, самым простым ответом является анонимность — в идеальном обезличенном мире данные всех людей одинаковы. Если мы ведем речь о конфиденциальности, то анонимность может быть пассивной и активной.
Пассивная анонимность проявляется, когда потребитель не хочет сохранять информацию о себе, и сервис подчиняется этому. Обеспечение пассивной анонимности полностью ложится на плечи компании. Например, пользователь запрещает сохранять историю просмотров в онлайн-кинотеатре.
Как определить грань, какую информацию следует хранить, а какую нет, — всё ещё открытый вопрос. Тот же пользователь захочет поделиться названиями просмотренных фильмов с друзьями и скрывать их от коллег.
На практике потребители всё же не полностью доверяют поставщикам услуг, и для защиты конфиденциальности применяются специальные технологии. Как раз под этим уже подразумевается активная анонимность. Активная анонимная аутентификация решает две проблемы: непосредственно аутентификации (проверки подлинности) и, как ни странно, анонимности: поставщик не то чтобы не хочет отследить действия пользователя, он не может этого сделать. Кроме того, провайдер не способен отличить действия одного пользователя от другого, он только может удостовериться, что пользователь принадлежит к группе лиц, имеющих доступ к услуге.
Самое простое решение поставленной проблемы заключается в использовании одних и тех же данных входа для всех пользователей из одной группы доступа. Дёшево и сердито. Хотя если злоумышленнику удастся взломать хотя бы одну учетную запись (а вместе с ней и всю группу), то посмотрим, насколько дёшево это обойдется компании. В связи с этим, компаниям хочется обеспечить также и возможность отказа от обслуживания (англ. revocation) какого-то определенного пользователя или группы, не влияя при этом на других. Это можно выделить как третью проблему активной анонимности. Как же люди справлялись до изобретения EPID?
Processor Serial Number как предпосылка появления EPID
В далеком 1999 компания Intel представила в своём Pentium III новую особенность: в процессе производства в каждый процессор вписывалась уникальная 64-битная строка с указанием серийного номера процессора (англ. Processor Serial Number, PSN). PSN нельзя было изменить. Однако по умолчанию этот номер можно спокойно увидеть, введя команду "CPUID", т.е. установленные программы таким образом могли получить доступ к такой конфиденциальной вещи, как PSN.
Казалось бы, зачем PSN вообще нужен? Но его можно использовать в двухфакторной аутентификации (метод идентификации пользователя при помощи запроса аутентификационных данных двух разных типов) во втором её этапе, в качестве подтверждения использования лицензионных программ и, например, в качестве механизма отслеживания устройств в корпоративных сетях, т.к. процессор заменяется гораздо реже остального железа.
Если же процессор, конечно, пришлось заменить, то все сервисы, где есть привязка к старому PSN, придется обновить, что доставит хлопот. Также, если PSN удалось перехватить, то злоумышленник получает второй компонент аутентификации, что тоже весьма неприятно. Более того, нет никакой гарантии, что программы, у которых нет явного разрешения получать PSN, не используют его в своих интересах. Поэтому в следующих после Pentium III процессорах PSN убрали, а потребность в защите данных всё еще осталась.
Непосредственно EPID
Intel EPID был разработан в 2008 году. Эта технология позволяет разрешить три проблемы активной анонимности: аутентификации, анонимности и отказа от обслуживания. Математически EPID основывается на арифметике конечных полей и эллиптических кривых (англ. Elliptic Curve Crypthography, ECC). В экосистему EPID входят три объекта:
EPID-управление (англ. EPID-authority, a.k.a. Issuer). Оно ответственно за создание групповых и приватных ключей, за отказ от обслуживания пользователей или групп. У него есть ECC-ключ для подписи публичных ключей, параметров EPID и списков на отстранение (revocation);
Платформа (англ. Platform, a.k.a. Member). Чаще всего под этим подразумевается сам потребитель;
Верификатор (англ. Verifier). Провайдер, оказывающий премиальные услуги определенному пользователю.
На рис. 1 показана взаимосвязь между ними.
На этапе настройки EPID-управление создает групповые приватные и публичные ключи. Приватные групповые ключи используются для создания новых приватных ключей для пользователей, следовательно, хранятся в тайне. Приватные ключи платформ защищенно доставляются до конечных устройств, затем они стираются у EPID-управления. Также EPID-управление заведует сервером для всех верификаторов, где получает групповые публичные ключи и другие параметры. Одним верификатором могут обслуживаться платформы из разных групп, поэтому все верификаторы должны знать все групповые ключи, которые получают по запросу. Платформам тоже нужны собственные групповые ключи и параметры EPID для генерации подписей.
Как только верификатор и платформы получили необходимую им информацию, платформа может подписывать сообщения от верификатора, а верификатор — проверять, действительна ли эта подпись. Как и во всех механизмах аутентификации, доказывающая сторона (англ. prover), т.е. платформа, должна обладать подтверждающими данными и показать верификатору, что они у неё есть. С другой стороны, верификатор, т.е. провайдер услуг, должен заранее знать достаточно, чтобы проверить правильность предоставленных платформой данных. Более подробный механизм работы EPID будет разобран ниже.
Простой пример: подтверждающими данными может служить пароль, потребитель знает пароль и вводит его. Верификатору есть с чем сравнить введенный пароль.
В аутентификации посредством публичного ключа подтверждающими данными является приватный ключ. Верификатор посылает запрос платформе, которая предоставляет цифровую подпись, сгенерированную с помощью приватного ключа и запроса. У верификатора должен быть публичный ключ, чтобы определить подлинность подписи.
К сожалению, такая аутентификация не является анонимной. Верификатор определяет платформу по уникальным подтверждающим данным. Как и в этих примерах, платформа EPID обладает уникальным приватным ключом и хранит его в тайне. Платформа и верификатор знают групповой публичный ключ.
В отличие от традиционной криптографии посредством публичного ключа, для EPID характерно следующее:
Приватный ключ EPID — случайное число. Приватный ключ ECC тоже случайное число, когда как приватный ключ RSA не случайный. Генерация ключа в EPID быстрее, чем в RSA;
-
Одному приватному EPID ключу соответствует один публичный ключ — групповой публичный ключ. Однако каждому групповому ключу соответствует множество приватных ключей. Если приватных ключей много, то считается, что такая группа "более анонимна", чем группа с малым количеством соответствующих приватных ключей.
Уникальный приватный ключ в зашифрованном виде "вшит" в каждую микросхему на этапе производства. Intel является EPID-управлением в экосистеме EPID. Используя приватный ключ, Intel проверяет, что платформа имеет право на получение обслуживания компании.
Математическая составляющая
Алгоритм EPID использует четыре математические группы:. Первые три из них — это группы эллиптических кривых, а — группа над конечным полем.
занимает 512 битов, каждый элемент группы представляют собой пару где — целые числа от до включительно, — простое число;
занимает 1536 битов. Каждый элемент представляет собой , где — целые числа от до включительно, — простое число;
занимает 512 битов, каждый элемент группы представляют собой пару где — целые числа от до включительно, — простое число;
занимает 1536 битов. Каждый элемент представляет собой где — целые числа от до включительно, — простое число.
Параметры этих групп позволяют конструировать ключи. Так, например, групповой публичный ключ состоит из следующих элементов:
Групповой ID, 32 бита;
(512 битов): элемент из ;
(512 битов): элемент из ;
(1536 битов): элемент из ;
А приватный ключ платформы в свою очередь:
Групповой ID, 32 бита;
(512 битов): элемент из ;
(256 битов): целое число от до где — один из параметров ;
(256 битов): целое число от до ;
(256 битов): целое число от до .
Подробный механизм подписи можно найти в работах, где представлена математическая составляющая механизма вместе с улучшениями, дающими алгоритму более высокий уровень безопасности [3, 4]. Несмотря на то, что публичный групповой ключ и параметры всем известны, платформа должна удостовериться, что верификатору можно доверять. Групповой публичный ключ и параметры подписаны EPID-управлением с помощью ECDSA (англ. Elliptic Curve Digital Signature Algorithm). Платформа проверяет подпись ECDSA EPID-управления перед тем, как обращаться к верификатору.
Подготовка к использованию EPID
Несмотря на то, что приватные ключи сразу "вшиты" в устройства, они не знают свой публичный групповой ключ. Чтобы начать использовать EPID, должен произойти процесс первичного снабжения параметрами (англ. provisioning). Его достаточно пройти один раз за всё время использования устройства. Механизм работы представлен на рис. 2, в ходе которого верификатор предоставляет групповой публичный ключ и другие параметры EPID конечному устройству.
Отказать от обслуживания может только EPID-управление. Если у верификатора есть основания для отказа в обслуживании платформы, то он отправляет запрос EPID-управлению. В зависимости от того, что известно о платформе, есть три алгоритма отказа: по приватному ключу, по подписи или по группе. Если группа, которой принадлежит платформа, не состоит в так называемом "бан-листе" (GROUP-RL), то на группу заводится список отвергнутых подписей (SIG-RL) и приватных ключей (PRIV-RL).
Если известен приватный ключ платформы из "незабаненной" группы , то проверятся, является ли он генератором какой-либо подписи группы . Если да, то удаляются соответствующие подписи из листа и ключ помещается в PRIV-RL. Если нет, то ключ помещается в PRIV-RL.
Если платформа ведет себя неестественно: отправляет слишком много запросов или отправляет одну и ту же подпись на все, то верификатор может поместить эту подпись в SIG-RL. Если известна подпись из "незабаненной" группы , то проверяется, создана ли эта подпись кем-то из PRIV-RL. Если нет, то подпись добавляется в SIG-RL, если да, то ничего не делать. Верификатор может использовать опцию отслеживания всех подписей от одной и той же платформы, чтобы детектировать подозреваемого.
Если есть необходимость поместить всю группу в GROUP-RL, то она помещается в этот список, стирая списки PRIV-RL и SIG-RL для этой группы.
Очевидно, что отказ в обслуживании по групповому признаку обладает самым высоким приоритетом, потом следом идет отказ по ключу и по подписи.
Создание подписи
Сама электронная подпись создаётся, используя следующие параметры:
Приватный ключ платформы;
Групповой публичный ключ;
Само сообщение;
Доказательство того, что ранее созданные подписи не попали в список на отказ от обслуживания, т.е. SIG-RL.
Для проверки подписи требуются:
Подпись от платформы;
Само сообщение;
Сертификат от центра сертификации (англ. Certificate Authority certificate), который доказывает подлинность EPID-управления;
Групповой публичный ключ;
GROUP-RL;
PRIV-RL;
SIG-RL.
Сферы применения
Отличным примером использования технологии EPID является проверка подлинности устройства. Как только устройство поступает на продажу и попадает пользователю, оно должно пройти проверку подлинности, чтобы получать те же обновления от компании-производителя.
Intel's Identity Protection Technology с One Time Password (OTP) тоже использует технологию EPID для двойной аутентификации.
EPID применяется и в сфере технических средств защиты авторских прав (англ. digital rights management), когда надо подтверждать, что устройство обладает минимальным уровнем защиты для стриминга.
EPID используется для аутентификации устройств Интернета вещей, быстрорастущей отрасли с увеличивающимся числом устройств. Всех их необходимо безопасно распознавать: устройства всё чаще используются в медицине, в целях обеспечение безопасности, в финансовой сфере и др. областях, требующих защиты данных.
Заключение
Многие из пользователей хотят чувствовать себя защищенными в сети. Технологии не стоят не месте, и многие используют их не во благо. Это ведет к утечке пользовательских данных, что далеко не всегда безобидно. Дабы защитить пользователей, был разработана технология EPID, позволяющая аутентифицировать себя для провайдера услуг, оставаясь при этом анонимным. EPID уже применяется и в процессорах Intel, и на стриминговых сервисах. Также Intel запатентовал эту технологию для применения и на процессорах других компаний, таких как Microchip и Cypress Semiconductor.
При написании статьи были использованы ресурсы:
Ruan X. Platform Embedded Security Technology Revealed — Apress, Berkeley, CA, 2014. — С. 263 — ISBN 978-1-4302-6572-6
Brickell E., Li J. Enhanced privacy ID: A direct anonymous attestation scheme with enhanced revocation capabilities //Proceedings of the 2007 ACM workshop on Privacy in electronic society. – 2007. – С. 21-30.
Brickell E., Li J. Enhanced Privacy ID from Bilinear Pairing //IACR Cryptol. ePrint Arch. – 2009. – Т. 2009. – С. 95.
https://intel-epid-sdk.github.io/ecosystem/
grossws
Ура, заново изобретён kerberos, oauth2, u2f/webauthn и тонна других схожих механизмов с разделением клиента, провайдера и доверенной стороны.
Ну и автору стоит вычитать статью и проверить что он не путатет authn и authz.
snumbrikvolgo Автор
Спасибо за комментарий! Действительно, в некоторых местах аутентификацией называлась авторизация, также более корректно перевелся термин provisioning. Замечания учтены.