Важным свойством хорошо спроектированной системы управления ключами является решение, как минимум, двух сложных задач: обеспечения безопасности многочисленных ключей и локализации ответственности пользователя.
«Мечта об исправно работающей PKI стара, как сама идея криптоключа, – сказал как-то автор одного PKI решения. — Сделать основанные на криптографии инструменты простыми и доступными каждому пользователю — это еще одна сложная задача, которую разработчики общедоступной инфраструктуры поддержки и использования криптоключей давно пытаются решить и, похоже, им это начинает удаваться.»
Какое решение предлагает emcssh от EmerCoin?
Автор и разработчик программы Олег Ховайко рассказал блогу Hashflare о практических свойствах и значении своей разработки. (Напомним, что ранее мы уже писали о новой криптовалютной сети Эмеркоин, в рамках которой функционирует несколько инновационных разработок):
Предположим, что вы — системный администратор довольно крупной распределённой сети. Под вашим управлением — десятки и сотни компьютеров, к которым нужно обеспечивать доступ пользователей через ssh (secure shell). В нашей сети существуют также групповые адреса-роли, к которым имеют доступ сразу несколько пользователей.
Один из примеров управления сетью – это система pubmed.gov, над которой я когда-то работал. Для администрирования сети из 500 компьютеров, и нескольких десятков групповых аккаунтов, к которым имеют доступ десятки человек, необходим удобный способ управления этими данными.
Допустим, если на работу принимают нового сотрудника, ему необходимо предоставить доступ в какие-то аккаунты. Если сотрудника увольняют, доступ для него, соответственно, должен быть закрыт. Чтобы не перенастраивать вручную более 500 машин, с целью добавить или удалить нужный публичный ключ, нужна инфраструктура управления публичными ключами, PKI.
Олег пояснил, что ранее для решения проблемы управления публичными ключами применялись только PKI-решения корпоративного уровня с выделенными серверами авторизации: домен-контроллерами (на которых работал LDAP/Kerberos).Подобные решения требуют многократного дублирования (на случай падения сервера) и решения проблемы репликации данных между серверами авторизации. В результате, получается отдельная сеть в сети, требующая дополнительного обслуживания и соответствующих расходов. Коммерческие предложения по домен контроллерам от Oracle, IBM, HP стартуют от $5000. Создать глобальную систему достоверной аутентификации на базе таких решений никто ранее не пытался. Но на базе блокчейна сделать это оказалось возможным.
Emcssh — это инфраструктура публичных ключей общемирового масштаба, World Wide Public Key Infrastructure. Она решает проблему управления ключами, используя то свойство блокчейна, что он достоверен и не может быть фальсифицирован. Достоверность поддерживается постоянной работой майнеров.
Как работает emcssh?
Индивидуальный пользователь генерирует пару ключей, и в своём кошельке регистрирует публичный ключ из пары в EmerCoin NVS.
В качестве имени ключа используется произвольная текстовая строка с сервис-префиксом «ssh:», например: ssh:geek.
После регистрации этот ключ попадает в блокчейн и становится доступным каждому кошельку сети. Любой сервер, участвующий в emcshh, держит запущенным EMC-кошелёк, из которого может, при необходимости, быстро извлечь тот или иной публичный ключ. При логине пользователя на сервер, поддерживающий emcshh, запускается программа emcssh, которая читает локальный файл, содержащий имена ключей с разрешенным доступом.
Предположим, имеется групповой акаунт netadm, к которому разрешён доступ emcshh -пользователям kamillo и emergator. Тогда файл emcshh_keys будет содержать две строки-имени:
kamillo
emergator
Если администратор решил дать доступ к этому аккаунту пользователю geek, то это имя он просто добавляет в файл.
Вместо самих ключей, в файле хранятся только имена держателей ключей, по которым emcssh из блокчейна достаёт ключи. Администратору не приходится иметь дело с длинными строками нечитаемых символов, вместо них — короткие имена. В случае, если пользователь решил заменить свой ключ, он может сам, локально, в своём кошельке заменить его в NVS-записи — и новый ключ распространится по сети, после чего все сервера начинают распознавать новый ключ, а старый автоматически отзывается.
Еще одно важное свойство emcssh заключается в том, поясняет Олег, что списки доступа также могут находиться в блокчейне, и управление ими становится столь же удобным, как управление индивидуальными ключами.
Допустим, администратор решил дать доступ к групповому акаунту netadm всем сотрудникам проекта EmerCoin. Для этого он должен добавить в свой файл emcssh_keys ссылку на NVS-запись EmercoinTeam. Cсылку можно добавить, присоединив символ '@' к имени.
Тогда файл emcssh_keys будет иметь вид:
kamillo
emergator
geek
@ EmercoinTeam
При обработке такого файла emcssh найдёт ключи для пользователей (kamillo, emergator, geek), а ссылку @EmercoinTeam обработает как список, имён пользователей, и уже для них найдёт соответствующие ключи. Списки могут быть вложенными, и обрабатываются рекурсивно. Например, может существовать список corp_team, который ссылается на списки
@ support, @ admins, @ tech. А те, в свою очередь, могут содержать как ssh-ключи, так и ссылки на другие имена и списки.
Таким образом, преимущество emcssh заключается в том, что стоит один раз при установке сервера включить EmerCoin клиент – и все администрирование доступа будет сведено к управлению именами в вашем кошельке.
Эта разработка решает две существенных задачи, одна из которых – обеспечение простоты администрирования доступа: все изменения в панели управления администратора автоматически распространяются через EmerCoin-сеть и становятся доступными всем участникам. Вторая задача, во сути своей еще более глобальна, так как она относится к сфере локализации ответственности. При помощи emcssh пользователь может сам управлять своей записью, отвечать за ее сохранность, изменять ее содержание. Будь то идентифицирующие данные или пароли от криптокошельков. А администратор группы аккаунтов несет ответственность за свою группу.
В качестве еще одного примера практического применения этой разработки, Олег приводит опыт компании HashCoins:
HashCoins с успехом применяет технологию emcssh для управления доступом к массиву майнеров, расположенных в нескольких дата-центрах. Это решение позволило радикально снизить затраты на администрирование распределённой вычислительной сети. Причём emcssh, помимо стандартного применения (храненине ssh-ключей), использован и для управления списками SerialID SSL-сертификатов подсистемы WEB-доступа EMCSSL.
Каковы жизненные циклы ключей в сети Эмеркоин и в рамках emcssh?
Публичные ключи ssh не имеют срока давности, поэтому действуют до тех пор, пока не будут заменены хозяином, или же запись в NVS не истечёт.
По всей видимости, emcssh можно отнести к разряду тех инструментов, которые помимо удобства использования, реализуют еще одну важную функцию: позволяют пользователям почувствовать себя более уверенно в виртуальном мире, самолично владея и управляя собственными ключами (списками), и не полагаясь на посредников и третьих лиц.
Комментарии (12)
MrFrizzy
13.10.2015 22:10+1На ум приходят два вопроса:
1) В чем преимущество перед puppet, etc?..
2) В чем преимущество цепочки блокчаинов перед распределенной dht или централизованными хранилищами?
maxihatop
15.10.2015 17:51+1Отвечу на оба вышерасположенных коммента сразу. Для начала процитирую Пруткова:
Многие вещи нам непонятны не потому, что наши понятия слабы; но потому, что сии вещи не входят в круг наших понятий.
Здесь мы наблюдаем нечто подобное. Вопросы оппонентов происходят из того, что они мыслят в парадигме «PKI масштаба предприятия».
Если мыслить в этих рамках, то действительно, можно использовать «puppet, etc» и про блокчейн не вспоминать. Однако рассмотренная в статье система emcSSH — это PKI всемирного масштаба. Которая будет функционировать и после того, как то или иное предприятие выйдет из бизнеса, вместе с серверами, на которых работали «puppet, etc».
Ещё раз обращу внимание: emcSSH не принадлежит кому-либо, ни частному лицу, ни организации. Независимые участники могут размещать свои ключи, другие — создавать из них группы и администирть их, третьи — импортировать уже существующие группы в те или иные проекты, в том числе — и в вновь созданные предприятия. Согласитесь, что ситуация, когда человек или группа людей переживает крах одного предприятия и создание нового — довольно типична.MrFrizzy
15.10.2015 18:58Окей, тогда продублируем еще раз:
В чем преимущество цепочки блокчаинов перед распределенной dht или централизованными хранилищами?
В том же глобальном маштабе.
Зачем мне как пользователю выгружать себе цепочку со всеми ключами всех гиков всей планеты? В данном контексте мне больше подойдет DHT или IPFS или еще что-то такое, с возможностью выборочной проверки значения по ключу.
+ практика глобального хранения своих ключей в блокчеине в маштабах «когда человек или группа людей переживает крах одного предприятия и создание нового» ведет к пагубной практике генерировать один ключ для всего и не менять его потом всю жизнь.maxihatop
15.10.2015 19:10> В чем преимущество цепочки блокчаинов перед распределенной dht или централизованными хранилищами?
В достоверности, которую поддерживает множество независимых майнеров. Блокчейн один, и подмена записей или создание фальшивой альтернативы ему практически невозможны.
> Зачем мне как пользователю выгружать себе цепочку со всеми ключами всех гиков всей планеты?
Так уж блокчейн устроен, что хранится всё. Ну если у Вас дефицит дискового пространства, и нет лишнего десятка гигов — остаётся посочуствовать…
> мне больше подойдет DHT или IPFS или еще что-то такое
Прекрасно! Сделайте продукт, опубликуйте! Вы измените мир к лучшему.
MrFrizzy
15.10.2015 19:21>>> В достоверности, которую поддерживает множество независимых майнеров. Блокчейн один, и подмена записей или создание фальшивой альтернативы ему практически невозможны.
В том же ipfs достоверность подтверждается хэшем.
DHT как бы тоже подразумевает под собой хэш
>>> Так уж блокчейн устроен, что хранится всё. Ну если у Вас дефицит дискового пространства, и нет лишнего десятка гигов — остаётся посочуствовать…
Окей, а если цепочка будет терабайт? десятки терабайт? Канал интернета мобильный — я вот по 3g сижу. Или устройство будет мобильным?
>>> Прекрасно! Сделайте продукт, опубликуйте! Вы измените мир к лучшему.
Спасибо за мотивацию — у меня в голове эта идея уже месяц как крутиться ;)
<зануда мод он>
Вообще у Вас комментарии получаются излишне эмоциональны, имхо.
Здесь, конечно, всего лишь филиал хабра, но Вы рассказываете про технологическое решение, с ЦА в виде инженеров всех мастей (а кроме нас ключи пока мало кто использует, к сожалению). И при этом на запрос вашего видения сильных и слабых сторон вы фактами не оперируете.
Вы меня с Лебедевым не путайте, я ваш продукт говном пока не называл ;)
<зануда мод офф>
Конкретный вопрос:
В чем преимущество цепочки блокчаинов перед распределенной dht или централизованными хранилищами?maxihatop
15.10.2015 19:42> В чем преимущество цепочки блокчаинов перед распределенной dht или централизованными хранилищами?
Cнова повторю. В достоверности. В том, что MIM (например, провайдер Вашего сервера) может
подменить ответ из DHT на то, что ему хочется, и тем обеспечить себе несанкционированый доступ.
То есть, в DHT будет лежать одно, а Ваш сервер, когда запросит публичный ключ приходимца, получит у MIMa
нечто совершенно другое, выданное MIMом и прохешированое как положено.
Более того, при желании MIM сможет даже сделать локальный филиал DHT, с нужными ему values и значениями хешей.
С блокчейном такой фокус не пройдёт — MIM должен постоянно майнить сильнее всей остальной сети, для
поддержки фальшивого блокчейна. Причёи начиная с блока(момента), публикации ключа, который он решил подменить.
Касаемо мобильных приложений: Блокчейн нужен только на сервере. Клиент единственный раз публикует публичный
ключ — можно даже с другого компа, не мобильного. Поэтому проблема не стоит.MrFrizzy
15.10.2015 19:58Окей
— То есть Эмеркон позволяет в себе надежно хранить любое ключевое слово как ключевое слово для хранения публичного ключа ценой дискового пространства, трафика и (опционально) небольшого количества вычислительных ресурсов на поддержание сети.
— В DHT вы можете надежно использовать хэш сумму ключа как ключевое слово для хранения публичного ключа или любой другой информации ценой (опционально) небольшого количества вычислительных ресурсов на поддержание сети.
— В Центральном хранилище вы можете хранить любое слово как ключевое слово для хранения публичного ключа или любой другой информации ценой (опционально) безопастности и доверия.
Дальше идет вопрос выбора за и против из вариантов и их комбинаций
Спасибо, разобрался.
Можете добавить в пост сравнение в виде таблицы.maxihatop
15.10.2015 20:111. Эмеркоин хранит не просто слово, а пару ключ-значение. SSH-ключ выступает здесь в роли хранимого значения.
Для одного и того же поискового ключа(имени) хозяин всегда может менять значение — например, заменить устаревший или потенциально скомпрометированый ssh-ключ на новый, тем самым автоматически отозвав старый ключ. Или добавить в группу нового пользователя.
2. В DHT можно искать ключ по его хешу, да. Но как быть с комрометироваными ключами, которые надо отозвать? При замене ключа на другой — неизбежно поменяется и его хеш. Если ключ определяется его хешем — значит, нужен безопасный механизм смены хеша старого ключа на хеш нового у всех пользователей сети. То есть задача возвращается к изначальной, просто вместо самого ключа фигурирует его хеш, а проблемы управления (добавление, отзыв, группирование) остаются.
3. Да.MrFrizzy
15.10.2015 20:191) Да, именно это я и написал\имел ввиду
2) Да, и тут уже следует выбирать под конкретную задачу.
С одной стороны, я бы предпочел хранить в блокчаине любые значения, а не только ключи, но тогда будет очень легко забить его всяким мусором
Кстати, нечто похожее на dht + blockchain делает ipfs, если не ошибаюсь: dht для любых значений с поиском по их хэш сумме и при этом хранение этих хэш сумм в чем-то типо блокчэина как замена днс
Табличка в посте была бы очень кстатиmaxihatop
15.10.2015 20:34> С одной стороны, я бы предпочел хранить в блокчаине любые значения, а не только ключи
EMC NVS сделан так, что там и можно хранить любые значения — до 20KB каждое. И emcSSH — только один из сервисов. Есть ещё и многое другое — DNS, SSL, LNX, DPO — подробности на сайте emercoin.com
> но тогда будет очень легко забить его всяким мусором
Легко, но дорого. Когда система разрабатывалась, мы сделали такую цену записи, чтобы с одной стороны — не мешала честным пользователям, а с другой — ограничила инфяцию блокчейна от злонамереного раздувания. В результате, применённая система ценообразования такова, что для раздутия блокчейна до 60G нужно сжечь всю денежную массу EMC, что практически недостижимо.
Про IPFS — надо будет внимательнее почитать, и возможно — проверить BAN-логикой, если технология заинтересует.
Про табличку — передам пожелания авторам статьи. Я то не автор, я изобреталель emcSSH (Ну и emcSSL заодно).
wild_one
Хорошо. То есть, Вы предполагаете, что у группового аккаунта в хост-системе будет для всех пользователей один и тот же UID? Вообще говоря, держать такие аккаунты никогда хорошей практикой не было. В чем сложность работы через группы/extended ACL опять же?
Если у Вас крупная сеть, то это значит, что в том или ином виде будет развернута система управления конфигурацией (Ansible, Puppet… далее на выбор) — в чем сложность «разливать» SSH ключи через нее?
В общем да, у каждого подхода есть свои плюсы и минусы — но здесь я явно вижу только упрощение работы с некоей bad practice в виде групповых аккаунтов.
И да, при чем здесь тематический хаб «Финансы в IT-индустрии»?