Управление ключами играет важнейшую роль в криптографии, как основа защищённого обмена информацией, идентификации и целостности данных.



Важным свойством хорошо спроектированной системы управления ключами является решение, как минимум, двух сложных задач: обеспечения безопасности многочисленных ключей и локализации ответственности пользователя.

«Мечта об исправно работающей 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)


  1. wild_one
    13.10.2015 17:52
    +1

    Хорошо. То есть, Вы предполагаете, что у группового аккаунта в хост-системе будет для всех пользователей один и тот же UID? Вообще говоря, держать такие аккаунты никогда хорошей практикой не было. В чем сложность работы через группы/extended ACL опять же?

    Если у Вас крупная сеть, то это значит, что в том или ином виде будет развернута система управления конфигурацией (Ansible, Puppet… далее на выбор) — в чем сложность «разливать» SSH ключи через нее?

    В общем да, у каждого подхода есть свои плюсы и минусы — но здесь я явно вижу только упрощение работы с некоей bad practice в виде групповых аккаунтов.

    И да, при чем здесь тематический хаб «Финансы в IT-индустрии»?


  1. MrFrizzy
    13.10.2015 22:10
    +1

    На ум приходят два вопроса:
    1) В чем преимущество перед puppet, etc?..
    2) В чем преимущество цепочки блокчаинов перед распределенной dht или централизованными хранилищами?


  1. maxihatop
    15.10.2015 17:51
    +1

    Отвечу на оба вышерасположенных коммента сразу. Для начала процитирую Пруткова:

    Многие вещи нам непонятны не потому, что наши понятия слабы; но потому, что сии вещи не входят в круг наших понятий.

    Здесь мы наблюдаем нечто подобное. Вопросы оппонентов происходят из того, что они мыслят в парадигме «PKI масштаба предприятия».
    Если мыслить в этих рамках, то действительно, можно использовать «puppet, etc» и про блокчейн не вспоминать. Однако рассмотренная в статье система emcSSH — это PKI всемирного масштаба. Которая будет функционировать и после того, как то или иное предприятие выйдет из бизнеса, вместе с серверами, на которых работали «puppet, etc».
    Ещё раз обращу внимание: emcSSH не принадлежит кому-либо, ни частному лицу, ни организации. Независимые участники могут размещать свои ключи, другие — создавать из них группы и администирть их, третьи — импортировать уже существующие группы в те или иные проекты, в том числе — и в вновь созданные предприятия. Согласитесь, что ситуация, когда человек или группа людей переживает крах одного предприятия и создание нового — довольно типична.


    1. MrFrizzy
      15.10.2015 18:58

      Окей, тогда продублируем еще раз:
      В чем преимущество цепочки блокчаинов перед распределенной dht или централизованными хранилищами?
      В том же глобальном маштабе.
      Зачем мне как пользователю выгружать себе цепочку со всеми ключами всех гиков всей планеты? В данном контексте мне больше подойдет DHT или IPFS или еще что-то такое, с возможностью выборочной проверки значения по ключу.

      + практика глобального хранения своих ключей в блокчеине в маштабах «когда человек или группа людей переживает крах одного предприятия и создание нового» ведет к пагубной практике генерировать один ключ для всего и не менять его потом всю жизнь.


      1. maxihatop
        15.10.2015 19:10

        > В чем преимущество цепочки блокчаинов перед распределенной dht или централизованными хранилищами?

        В достоверности, которую поддерживает множество независимых майнеров. Блокчейн один, и подмена записей или создание фальшивой альтернативы ему практически невозможны.

        > Зачем мне как пользователю выгружать себе цепочку со всеми ключами всех гиков всей планеты?

        Так уж блокчейн устроен, что хранится всё. Ну если у Вас дефицит дискового пространства, и нет лишнего десятка гигов — остаётся посочуствовать…

        > мне больше подойдет DHT или IPFS или еще что-то такое

        Прекрасно! Сделайте продукт, опубликуйте! Вы измените мир к лучшему.


        1. MrFrizzy
          15.10.2015 19:21

          >>> В достоверности, которую поддерживает множество независимых майнеров. Блокчейн один, и подмена записей или создание фальшивой альтернативы ему практически невозможны.
          В том же ipfs достоверность подтверждается хэшем.
          DHT как бы тоже подразумевает под собой хэш

          >>> Так уж блокчейн устроен, что хранится всё. Ну если у Вас дефицит дискового пространства, и нет лишнего десятка гигов — остаётся посочуствовать…
          Окей, а если цепочка будет терабайт? десятки терабайт? Канал интернета мобильный — я вот по 3g сижу. Или устройство будет мобильным?

          >>> Прекрасно! Сделайте продукт, опубликуйте! Вы измените мир к лучшему.
          Спасибо за мотивацию — у меня в голове эта идея уже месяц как крутиться ;)

          <зануда мод он>
          Вообще у Вас комментарии получаются излишне эмоциональны, имхо.
          Здесь, конечно, всего лишь филиал хабра, но Вы рассказываете про технологическое решение, с ЦА в виде инженеров всех мастей (а кроме нас ключи пока мало кто использует, к сожалению). И при этом на запрос вашего видения сильных и слабых сторон вы фактами не оперируете.
          Вы меня с Лебедевым не путайте, я ваш продукт говном пока не называл ;)
          <зануда мод офф>

          Конкретный вопрос:
          В чем преимущество цепочки блокчаинов перед распределенной dht или централизованными хранилищами?


          1. maxihatop
            15.10.2015 19:42

            > В чем преимущество цепочки блокчаинов перед распределенной dht или централизованными хранилищами?

            Cнова повторю. В достоверности. В том, что MIM (например, провайдер Вашего сервера) может
            подменить ответ из DHT на то, что ему хочется, и тем обеспечить себе несанкционированый доступ.
            То есть, в DHT будет лежать одно, а Ваш сервер, когда запросит публичный ключ приходимца, получит у MIMa
            нечто совершенно другое, выданное MIMом и прохешированое как положено.
            Более того, при желании MIM сможет даже сделать локальный филиал DHT, с нужными ему values и значениями хешей.

            С блокчейном такой фокус не пройдёт — MIM должен постоянно майнить сильнее всей остальной сети, для
            поддержки фальшивого блокчейна. Причёи начиная с блока(момента), публикации ключа, который он решил подменить.

            Касаемо мобильных приложений: Блокчейн нужен только на сервере. Клиент единственный раз публикует публичный
            ключ — можно даже с другого компа, не мобильного. Поэтому проблема не стоит.


            1. MrFrizzy
              15.10.2015 19:58

              Окей
              — То есть Эмеркон позволяет в себе надежно хранить любое ключевое слово как ключевое слово для хранения публичного ключа ценой дискового пространства, трафика и (опционально) небольшого количества вычислительных ресурсов на поддержание сети.
              — В DHT вы можете надежно использовать хэш сумму ключа как ключевое слово для хранения публичного ключа или любой другой информации ценой (опционально) небольшого количества вычислительных ресурсов на поддержание сети.
              — В Центральном хранилище вы можете хранить любое слово как ключевое слово для хранения публичного ключа или любой другой информации ценой (опционально) безопастности и доверия.

              Дальше идет вопрос выбора за и против из вариантов и их комбинаций
              Спасибо, разобрался.
              Можете добавить в пост сравнение в виде таблицы.


              1. maxihatop
                15.10.2015 20:11

                1. Эмеркоин хранит не просто слово, а пару ключ-значение. SSH-ключ выступает здесь в роли хранимого значения.
                Для одного и того же поискового ключа(имени) хозяин всегда может менять значение — например, заменить устаревший или потенциально скомпрометированый ssh-ключ на новый, тем самым автоматически отозвав старый ключ. Или добавить в группу нового пользователя.

                2. В DHT можно искать ключ по его хешу, да. Но как быть с комрометироваными ключами, которые надо отозвать? При замене ключа на другой — неизбежно поменяется и его хеш. Если ключ определяется его хешем — значит, нужен безопасный механизм смены хеша старого ключа на хеш нового у всех пользователей сети. То есть задача возвращается к изначальной, просто вместо самого ключа фигурирует его хеш, а проблемы управления (добавление, отзыв, группирование) остаются.

                3. Да.


                1. MrFrizzy
                  15.10.2015 20:19

                  1) Да, именно это я и написал\имел ввиду
                  2) Да, и тут уже следует выбирать под конкретную задачу.

                  С одной стороны, я бы предпочел хранить в блокчаине любые значения, а не только ключи, но тогда будет очень легко забить его всяким мусором

                  Кстати, нечто похожее на dht + blockchain делает ipfs, если не ошибаюсь: dht для любых значений с поиском по их хэш сумме и при этом хранение этих хэш сумм в чем-то типо блокчэина как замена днс

                  Табличка в посте была бы очень кстати


                  1. maxihatop
                    15.10.2015 20:34

                    > С одной стороны, я бы предпочел хранить в блокчаине любые значения, а не только ключи

                    EMC NVS сделан так, что там и можно хранить любые значения — до 20KB каждое. И emcSSH — только один из сервисов. Есть ещё и многое другое — DNS, SSL, LNX, DPO — подробности на сайте emercoin.com

                    > но тогда будет очень легко забить его всяким мусором

                    Легко, но дорого. Когда система разрабатывалась, мы сделали такую цену записи, чтобы с одной стороны — не мешала честным пользователям, а с другой — ограничила инфяцию блокчейна от злонамереного раздувания. В результате, применённая система ценообразования такова, что для раздутия блокчейна до 60G нужно сжечь всю денежную массу EMC, что практически недостижимо.

                    Про IPFS — надо будет внимательнее почитать, и возможно — проверить BAN-логикой, если технология заинтересует.

                    Про табличку — передам пожелания авторам статьи. Я то не автор, я изобреталель emcSSH (Ну и emcSSL заодно).


                    1. MrFrizzy
                      15.10.2015 20:49

                      И за это вам спасибо =)