REMME - BlockchainUA Hackathon Guideline

Для участников

Одно из направлений хакатона будет посвящено разработкам решений базирующихся на протоколе REMME PKId и Hyperledger Sawtooth. Команды хакатона, которые предложат наилучшее решение в рамках данного технологического стека, получат вознаграждение с общим призовым фондом в $5,000.

Цель данного направления хакатона заключается в популяризации технологий, развитии комьюнити разработчиков и выявлении талантливых специалистов, способных предложить свое оригинальное видение и инженерный подход. Направления и задачи для участников хакатона предполагают разработку технологических решений, соответствующих уровню готовности Proof-of-concept, Prototype.

О REMME

REMME- это open source протокол, который является решением в сфере безопасности и управления доступом и учетными данными (IAM: Identity and Access Management) пользователей, физических устройств и программных сущностей. Продукт REMME предоставляет возможность беспарольной аутентификации пользователей и устройств на основе SSL/TLS-сертификатов и управления PKI (Public Key Infrastructure) с использованием технологии блокчейн. В марте 2018 года REMME стала членом инициативы Hyperledger от Linux Foundation.

Инструкция по деплою: https://github.com/Remmeauth/remme-core#how-to-run-a-node

Документация: https://docs.remme.io/

Вопросы команде REMME: можно задать в чате - https://t.me/remmeopensource

How to use REMME testnet

Архитектура проекта

Для общего понимания парадигмы текущей архитектуры проекта необходимо ознакомиться с архитектурой Sawtooth 1.0.5.

В рамках этой архитектуры система содержит две transaction family (TF): Адреса в пространстве имён формируются следующим образом:
  • account: sha512(“account”)[:6] + sha512(hex_encoded_pub_key)[:64].
  • public key: sha512(“pub_key”)[:6] + sha512(pem_encoded_pub_key)[:64].
Для формирования транзакций необходимо ознакомиться с детальным описанием формирования транзакции от Hyperledger Sawtooth и использовать REMME protobuf для формирования payload транзакции: И после формирования данных о транзакции по соответствующим протобафам, необходимо воспользоваться TransactionPayload в transaction.proto, передав ему в:
  • method - метод из enum AccountMethod.Method или PubKeyMethod.Method
  • data - информацию о транзакции, собранную по соответствующим протобафам.

Примеры формирования транзакции:

  • Для account TF:
  • Для public key TF:
    • payload = :
      • data = NewPubKeyPayload:
        • publicKey = pem_encoded_public_key
        • publicKeyType = NewPubKeyPayload.PubKeyType.RSA
        • entityType = NewPubKeyPayload.EntityType.PERSONAL
        • entityHash = hex(sha512(certificate)))
        • entityHashSignature = sender_private_key.sign(entityHash)
        • validFrom = timestamp_from
        • validTo = timestamp_to
      • method = PubKeyMethod.Method.STORE
    • header = TransactionHeader:
      • payloadSha512 = sha512(payload)
      • inputs = [account_sender_address, pub_key_address, economy_address]
      • outputs = [account_sender_address, pub_key_address, economy_address]
      • signer_public_key = sender_public_key
      • batcher_public_key = node_public_key (api/v1/node_key)
      • family_name = “pub_key”
      • family_version = “0.1”
      • nonce = random_number()
    • header_signature = sender_private_key.sign(header)

Задания

IoT

Название: REMME IoT / M2M shell
Уровень сложности: Middle
Задача: Обеспечение безопасности коммуникаций между устройствами (Machine-to-Machine) и пользователем (Human-to-Machine), используя подпись REMME сертификата (публичного ключа).
Возможное решение: Выписка сертификата на устройствах и подпись ключами информации, которую они пересылают между собой.
Необходимо для реализации:Для получения сертификата, необходимо использовать REMME REST API, а также иметь в наличии, как минимум, два работающих IoT устройства (Arduino, Raspberry, и т.п.)

Название: Biometric certificate
Уровень сложности: Hard
Задача: Создание сертификата из биометрии (отпечатка пальца, сетчатки глаза, биение сердца)
Возможное решение: Использование артефактов (байтов) из распознаваемой датчиком информации для генерации приватного ключа сертификата.
Необходимо для реализации: Иметь в наличии сканеры для распознавания отпечатка пальца или сетчатки глаза и т.п.

Название: REMME WiFi
Уровень сложности: Hard
Задача: Использование REM сертификата для авторизации в сети WiFi
Возможное решение: Интеграция с протоколом radius
Необходимо для реализации: Wifi роутер

dApps

Название: REMME License
Уровень сложности: Middle
Задача: Хранение лицензий ПО
Возможное решение: Сервер обновлений доверяет только дистрибьюторам ПО. Которые могут выпускать лицензии, отзывать, продлевать.

Название: REMME RA
Уровень сложности: Hard
Задача: Серверные сертификаты с проверкой владения доменом
Возможное решение: Есть n нод, которые консенсусом определяют имя файла, которое пользователь должен загрузить на сервер, и после этого отправляют запрос и проверяют его. Как только собралось 2f+1 подписей, что они проверили, то отправляют информацию на REMME блокчейн, с публичным ключом того, кто отправил на хранение.

SDK / Libs

Название: Integration libraries
Уровень сложности: Easy
Задача: Необходимо разработать библиотеку на одном из представленных языков, а именно C++, Go, Kotlin, Swift
Необходимо для реализации:Использование готовых библиотек в качестве примера.

Необходимо обеспечение единого интерфейса.
(https://docs.remme.io/remme-client-js/docs/)

Integrations

Название: REMME SSH
Уровень сложности: Middle
Задача: Разработать плагин для OpenSSH, чтобы использовать наши сертификаты для подключения в SSH.

Название: REMME OS
Уровень сложности: Hard
Задача: Разработать модуль для использования REMME сертификатов для аутентификации в десктопных и/или мобильных нативных приложениях (Windows, IOS, Android, Windows Mobile).
Необходимо для реализации: Целевое приложение для тестирования реализации.

Название: REMME oAuth
Уровень сложности: Middle
Задача: Интеграция REMME протокола с oAuth протоколом
Необходимо для реализации: Целевое приложение для тестирования реализации.

Название: REMME LDAP (Lightweight Directory Access Protocol) / Active Directory
Уровень сложности: Middle
Задача: Интегрировать REMME Protocol в LDAP для использования сертификатов в качестве аутентификации в LDAP / Active Directory
Необходимо для реализации: Целевое приложение для тестирования реализации.

Название: REMME plugins
Уровень сложности: Easy
Задача: Плагины аутентификации в DB (Oracle, PostgreSQL, MySQL, MongoDB, Redis), CMS/CRM (Bitrix, OpenCart, Magento, WordPress, Joomla, etc)
Необходимо для реализации: Целевое приложение для тестирования реализации.

UI

Название: REMME Light client / Wallet
Уровень сложности: Easy
Задача: Написать клиент REMME, в который входит все, что касается конкретного аккаунта (keystore file), сертификаты, которые к нему привязаны и управление ими (продление, удаление), а также, для уровня Middle, можно расширить задачу, добавив реализацию истории использования (log service).
Возможные решения: Необходимы веб, iOS, Android версии (одну на выбор)