Emcssh – простое управление цифровыми ключами

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



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

    «Мечта об исправно работающей 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 можно отнести к разряду тех инструментов, которые помимо удобства использования, реализуют еще одну важную функцию: позволяют пользователям почувствовать себя более уверенно в виртуальном мире, самолично владея и управляя собственными ключами (списками), и не полагаясь на посредников и третьих лиц.

    Метки:
    HashFlare 124,01
    Разработка ПО и услуги облачного майнинга
    Поделиться публикацией
    Комментарии 12
    • +1
      Хорошо. То есть, Вы предполагаете, что у группового аккаунта в хост-системе будет для всех пользователей один и тот же UID? Вообще говоря, держать такие аккаунты никогда хорошей практикой не было. В чем сложность работы через группы/extended ACL опять же?

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

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

      И да, при чем здесь тематический хаб «Финансы в IT-индустрии»?
      • +1
        На ум приходят два вопроса:
        1) В чем преимущество перед puppet, etc?..
        2) В чем преимущество цепочки блокчаинов перед распределенной dht или централизованными хранилищами?
        • +1
          Отвечу на оба вышерасположенных коммента сразу. Для начала процитирую Пруткова:

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

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

            + практика глобального хранения своих ключей в блокчеине в маштабах «когда человек или группа людей переживает крах одного предприятия и создание нового» ведет к пагубной практике генерировать один ключ для всего и не менять его потом всю жизнь.
            • 0
              > В чем преимущество цепочки блокчаинов перед распределенной dht или централизованными хранилищами?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

          Самое читаемое