Посторонним в

Блог-форум Винни Пуха
 
ФорумФорум  ЧаВоЧаВо  ПоискПоиск  ПользователиПользователи  ГруппыГруппы  РегистрацияРегистрация  ВходВход  

Поделиться | 
 

 NEM Authenticator - 2FC / Atraura Blockchain

Предыдущая тема Следующая тема Перейти вниз 
АвторСообщение
Winnie
Admin


Сообщения : 862
Дата регистрации : 2015-06-10

СообщениеТема: NEM Authenticator - 2FC / Atraura Blockchain   2017-06-18, 05:43

NEM аутентификатор и 2-факторное подтверждение

Aleix Morgadas "NEM Authenticator - 2FC", 18 мая 2017
https://medium.com/@aleixmorgadas/nem-authenticator-2fc-ab607513c62d

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

NEM поставляется с богатым API, который позволяет легко интегрировать с ним как новое, так и существующее программное обеспечение. Таким образом, API - это необходимый уровень абстракции, которого достаточно любому программному решению для работы с NEM.

Вы можете подумать, что если NEM так легко интегрировать в любой софт, то обязательно найдутся нехорошие парни со злыми целями (в основном желающие украсть ваши деньги / активы). Такой злодей сможет разработать программное обеспечение с использованием NEM блокчейна, для которого требуется использовать приватный ключ вашего акаунта. Означает ли это, что теперь мы должны выпускать программное обеспечение, подтвержденное Фондом NEM? Конечно нет! Нет, если у нас есть NEM аутентификатор.

Итак, что такое NEM аутентификатор? Начнем с чего-то уже многим знакомого, например Google аутентификатора.

Аутентификатор Google - это приложение двух-факторной аутентификации (2FA), в котором пользователи должны сначала вводить свой пароль (то, что они знают) и PIN-код (то, что у них есть), чтобы иметь возможность входа на веб-сайт, например.


Но ... если всё, что вам нужно для использования аккаунта NEM - это публичный ключ и приватный ключ, то как вы можете сохранить свои деньги, если вы поделитесь своим приватным ключом с неизвестными людьми? Используя двухфакторный процесс подтверждения (2FC). 2FC - это способ абсолютно надёжно защитить ваши деньги / активы при использовании стороннего программного обеспечения.

NEM аутентификатор - это мобильное приложение для Android и iOS, позволяющее пользователю безопасно подтверждать свои транзакции при использовании стороннего софта. NEM аутентификатор разрабатывается Atraura Blockchain.


Технические подробности изложены в Техническом описании, 18 мая 2017 (v 1.3)
https://docs.google.com/document/d/1oH5Y0tKE1Ws_4gKMafUOKZWlTuZV_9qXBfFCrlbRVsc/edit

NEM аутентификатор - приглашаются бета тестеры, 5 июня 2017
https://forum.nem.io/t/nem-authenticator-be-a-beta-tester/5161


Android: https://play.google.com/store/apps/details?id=com.nemauthenticator.app

Дорожная карта: https://trello.com/b/5YctwWt7/nem-authenticator-public-roadmap

Aleix Morgadas "Nember experience", 17 июня 2017
https://medium.com/@aleixmorgadas/nember-experience-56cfa9507f0e
https://steemit.com/nem/@aleixmorgadas/nem-authenticator-a-2-factor-confirmation-mobile-application
Вернуться к началу Перейти вниз
Посмотреть профиль http://free.userboard.net
Winnie
Admin


Сообщения : 862
Дата регистрации : 2015-06-10

СообщениеТема: Re: NEM Authenticator - 2FC / Atraura Blockchain   2017-06-27, 05:32

NEM аутентификатор - 2-факторное подтверждение
https://docs.google.com/document/d/1oH5Y0tKE1Ws_4gKMafUOKZWlTuZV_9qXBfFCrlbRVsc/edit
Техническое описание v1.3, 18 мая 2017


Резюме.

NEM блокчейн предоставляет сообществу простой способ интеграции с ним реальных систем через его лёгкие HTTP API. В связи с этим возникает необходимость в решении для безопасных транзакций без ущерба для приватного ключа аккаунта, на котором хранятся деньги, когда пользователь использует недоверенное программное обеспечение.

Идея заключается в создании безопасного процесса, которое подписывает транзакции, при использовании NEM блокчейна с мобильным приложением.


Цели:
  1. Процесс создаёт мультиаккаунт 2 из 3: этот процесс обеспечивает правильную конфигурацию, необходимую конечному пользователю для успешной защиты аккаунта, содержащего активы.
  2. NEM аутентификатор: мобильное приложение, которое позволяет координировать ранее выполненную мультиаккаунтную транзакцию.
  3. Приложение должно быть с открытым кодом: распространяется через GitHub под лицензией MIT.
  4. Решение позволяет безопасно использовать недоверенное программное обеспечение, для работы которого требуется приватный ключ NEM: можно безопасно пользоваться проприетарным сторонним софтом или софтом, который вы подозреваете что он был модифицирован с недобрыми целями.


Описание

Мультиаккаунт 2 из 3.

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


Рисунок 1.

На рисунке жёлтым цветом выделен системный аккаунт, голубым - аккаунты пользователя.
  • Системный аккаунт:
    • 2FC аккаунт: аккаунт, который автоматически подписывает ожидающую подписи транзакцию
  • Аккаунты пользователя:
    • Основной аккаунт: аккаунт, который пользователь использует в небезопасных средах (он пустой).
    • Аккаунт безопасности: аккаунт, который собственно и предоставляет пользователю все полномочия (его приватный ключ контролируется только пользователем).
    • Мультиаккаунт: аккаунт, который является держателем активов.
Аккаунт  безопасности, как правило, является аккаунтом пользователя с активами. Другие аккаунты создаются системой 2FC.


Конфигурация 2 из 3 позволяет владельцу аккаунта совершать следующие действия:

Совершать безопасные транзакции.
На рисунке 2 показаны аккаунты, участвующие в отправке транзакции с мультиаккаунта на аккаунт получателя; это основной аккаунт и 2FC аккаунт. Процесс заключается в следующем:
  • Основной аккаунт инициирует транзакцию.
  • NEM аутентификатор (2FC аккаунт) показывает пользователю список транзакций, ожидающих соподписи.
  • Пользователь даёт подтверждает для соподписи ожидающей транзакции.


Рисунок 2.

Управлять 2FC аккаунтом.
Конфигурация аккаунта 2 из 3 даёт возможность пользователю управлять 2FC аккаунтом. Используя функционал NEM блокчейна, пользователь может:
  • Удалить 2FC аккаунт
  • Заменить 2FC аккаунт
  • Подписать мультиакаунтную транзакцию без участия 2FC аккаунта


Рисунок 3.



NanoWallet модуль

В NanoWallet будет добавлен модуль 2FC, в котором пользователю процесс работы с двухфакторным подтверждением будет представлен визуально:


Пользователь сможет:
  • Создать новый мультиаккаунт
  • Создать основной аккаунт
  • Создать 2FC аккаунт
  • Настроить соподписантов мультиаккаунта
Примечание. В исходный момент пользователь зарегистрирован в аккаунте безопасности.


Сценарии сбоев

Сценарий 1: недостаточное количество XEM
Актуально для основного аккаунта или 2FC аккаунта
Когда на аккаунте меньше 6 XEM
Затем информация сохраняется в локальной базе данных для повторной попытки транзакции
И отображается сообщение об ошибке, описывающее ошибку и решение

Сценарий 2: превышение лимита времени для соподписи
Допустим для подписи отведено время X секунд
И транзакция не была подписана за это время
Затем информация сохраняется в локальной базе данных для повторной попытки транзакции
И отображается сообщение об ошибке, описывающее ошибку и решение


Ограничения мультиаккаунта

Мультиаккаунт не может быть подписан другим мультиаккаунтом. Таким образом, система создаст 2FC аккаунт с нуля, а затем преобразует его в мультиаккаунт 2 из 3.
Этот процесс обеспечивает правильную конфигурацию 2FC.


Этапы работ
  1. Процесс создания мультиаккаунта
  2. NEM аутентификатор
  3. NanoWallet модуль
  4. Документация
    • Установка
    • Использование
    • Руководство по интегрированию стороннего софта с 2FC системой
Вернуться к началу Перейти вниз
Посмотреть профиль http://free.userboard.net
Winnie
Admin


Сообщения : 862
Дата регистрации : 2015-06-10

СообщениеТема: Re: NEM Authenticator - 2FC / Atraura Blockchain   2017-10-22, 17:27



Что такое Nem Authenticator?

Nem Authenticator - это 100% децентрализованная система двухфакторного подтверждения (2FC - 2 Factor Confirmation) на блокчейне NEM, защищающая активы/токены от кражи. Система состоит из двух приложений:
  • Веб-страница (Web Page) - создаёт и управляет учётными записями NEM Authenticator с помощью понятного и простого интерфейса (находится в стадии разработки).
  • Мобильное приложение (Mobile Application) - содержит список транзакций, ожиидающих подписи/подтверждения для включения в блок.


Что такое Nem?

NEM - это p2p криптовалюта и блокчейн платформа, запущенная 31 марта 2015, использующая алгоритм консенсуса Proof-of-Importance (POI). NEM блокчейн использует ряд новых элементов, таких как система репутации узлов Eigentrust++.

Возможности:
  • Пространства имён (Namespaces)
  • Мозаики/токены (Mosaics)
  • Сообщения (Messages, Encrypted and Plain)
  • Транспортация токенов (Transfer assets)
  • Мультиподписные аккаунты (Multisig Accounts)
Nem Authenticator применим только для мультиподписных аккаунтов.


Как работают мультиподписные аккаунты?

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

Мультиподписной аккаунт может включать до 32 соподписантов. Нужны ли подписи всех соподписантов? - нет, это указывается при создании мультиподписного аккаунта N/M, где N - это необходимое количество подписей, а M - общее количество соподписантов. Например, 1-1, 1-2, 1-32, 3-30, 30-30.


Почему важно использовать мультиподписные аккаунты?

Если кто-то украдёт приватный ключ вашего обычного аккаунта, то вы потеряете все свои средства окончательно, game over.

Если кто-то украдёт приватный ключ вашего мультиподписного аккаунта, хакер не сможет украсть ваши токены. А если ваши соподписанты находятся на том же компьютере? - тогда вы тоже потеряете свои средства.

Решение? - хранить аккаунты соподписантов на разных устройствах.


Nem Authenticator полностью решает данную проблему.


Как разработан Nem Authenticator?

Использовались следующие инструменты:

Конфигурация мультиподписного аккаунта

Мультиподписной аккаунт Nem Authenticator имеет 2/3 структуру, нужно минимум 2 подписи для совершения транзакции.

  • 2FC Account будет находиться на мобильном приложении
  • Main Account - обычный аккаунт Nanowallet
  • Security Account - бэкап, необходим в случае взлома одного из аккаунтов
  • Multisig Account содержит активы


Импорт 2FC Account в Nem Authenticator


Используем QR код для импорта 2FC Account в приложение Nem Authenticator. 2FC Account защищён паролем.

Код:
// https://github.com/aleixmorgadas/NEM-Authenticator/blob/master/src/pages/setup/setup-account.modal.ts
verifyAccount() {
    try {
      const password = new Password(this.form.get('password').value);
      const qrService = new QRService();
      // this.WalletQRText is the result of the QR scan
      const privateKey = qrService.decryptWalletQRText(password, this.walletQRText);
      const simpleWallet = SimpleWallet.createWithPrivateKey("NEM Auth Account", password, privateKey);
      // Return to the previous view with the wallet imported
      this.viewCtrl.dismiss({
        wallet: simpleWallet,
        account: simpleWallet.open(password)
      })
    } catch (e) {
      // error visual logic
    }
}
  • QRService для безопасного импорта/экспорта кошелька между девайсами
  • SimpleWallet хранит кошелёк локально до момента импорта



Верификация валидности кошелька

Проверка соподписанта
Код:
// Callback of the previous code
modal.onDidDismiss((wallet: { wallet: SimpleWallet, account: Account }) => {
      if (wallet != null) {
        // Visual logic
        // ...
        /*
        * We fetch the information from the imported account.
        */
        new AccountHttp().getFromAddress(this.account.address).subscribe(accountMetaData => {
          // Check that the account is Cosignatory of just one account
          if (accountMetaData.cosignatoryOf.length != 1) {
            // Show error logic
          } else {
            // We save the information of the imported 2FA Account and the Multisig Account
            this.multisigAddress = accountMetaData.cosignatoryOf[0].publicAccount.address;
          }
          // Visual Logic
        }, err => {
            // Visual error logic
       
        });
      }
});
Код:
https://github.com/aleixmorgadas/NEM-Authenticator/blob/master/src/pages/setup/setup.ts


Ожидающие транзакции

2FC Account будет вытягивать транзакции 2 способами:
  • Вытягивание транзакций во время запуска приложения
  • Подтягивание транзакций во время работы приложения


Код:
@Component({
    selector: 'page-home',
    templateUrl: './home.html'
})
export class HomePage {

    private account: Account;
    unconfirmedTransactions: MultisigTransactionPlusView[];
    loader: Loading;
    accountPulling: Observable<MultisigTransactionPlusView[]>;

    constructor(// ..
        public accountHttp: AccountHttp,
        private accountService: AccountService,
        public transactionHttp: TransactionHttp,
        private translateService: TranslateService) {
        // Visual logic
        // ...
        // We receive the 2FC Account
        this.account = this.accountService.getAccount();
        // Fetch all unconfirmed transactions for 2FC Account
        this.accountPulling = accountHttp.unconfirmedTransactions(this.account.address)
            // We transform the result from an Transaction[] to Transaction to apply the logic individually
            .flatMap(_ => _)
            // Remove from the result all the transactions that are not of type Multisig
            .filter(transaction => transaction.type == TransactionTypes.MULTISIG)
            // Trasnform the MultisigTransaction into a ModelView class for visual reasons
            .map(multisigTransaction => new MultisigTransactionPlusView(<MultisigTransaction>multisigTransaction, false, false))
            // We compact all the results into an array to print all of them at the same time
            .toArray();
        // Resolve the Observable in fetchTransactions and print the result
        this.fetchTransactions();

        // Receive the Multisig Account that we are cosignatory
        let multisig = accountService.getMultisig();
        // Start listen via WebSocket the multisig transactions to print it
        new UnconfirmedTransactionListener().given(multisig)
            .delay(1000)
            .subscribe(_ => {
                this.fetchTransactions();
            });

        // Listen when a signed transaction is included in a block to remove it from the pending to sign list
        new ConfirmedTransactionListener().given(multisig)
            .subscribe(transaction => {
                if (transaction.type == TransactionTypes.MULTISIG) {
                    this.unconfirmedTransactions = this.unconfirmedTransactions
                        .filter(x => {
                            const innerData = x.transaction.hashData.data;
                            const confirmedTransactionInnerData = (<MultisigTransactionInfo>(<MultisigTransaction>transaction).getTransactionInfo()).innerHash.data;
                            return innerData != confirmedTransactionInnerData;
                        })
                }
            })
    }

    fetchTransactions(refresher?: any) {
        this.unconfirmedTransactions = [];
        this.accountPulling.subscribe(
            value => {
                // List all unconfirmedTransactions
                this.unconfirmedTransactions = value;
                // Visual logic
            },
            error => {
                // Error logic
            }
        );
    }
}
Код:
https://github.com/aleixmorgadas/NEM-Authenticator/blob/master/src/pages/home/home.ts

Здесь присутствуют следующие компоненты  NEM Library:

Проверка основной информации,  Hash как и в NanoWallet, и подпись.
Код:

private signTransaction(unconfirmedTransaction: MultisigTransactionPlusView) {
    // We create as MultisigSignedTransaction that contains
    // TimeWindow: The interval of time that the transaction can be included in a block
    // The address of who started the transaction
    // The hash to identify the Multisig transaction
    const multisigSignedTransaction = MultisigSignatureTransaction.create(
        TimeWindow.createWithDeadline(),
        unconfirmedTransaction.transaction.otherTransaction.signer.address,
        unconfirmedTransaction.transaction.hashData
    );
    // Visual logic
    unconfirmedTransaction.signing = true;
    // The 2FC account signs the multisigSignedTransaction (notice that we do not expose the private key)
    const signedTransaction = this.account.signTransaction(multisigSignedTransaction);
    // We send the transaction into the network already signed by the 2FC Account
    this.transactionHttp.announceTransaction(signedTransaction).subscribe(x => {
        // Visual logic
        unconfirmedTransaction.signing = false;
        unconfirmedTransaction.signed = true;
    }, err => {
        // Error logic
    }
    );
}
Код:
https://github.com/aleixmorgadas/NEM-Authenticator/blob/master/src/pages/home/home.ts

Несколько строчек кода позволяют подписать транзакцию и включить в блок.


NEM Authenticator 100% безопасен?

Нет, мы лишь увеличили уровень безопасности в блокчейне NEM. Если 2 устройсва будут украдены одновременно, то вы потеряете свои средства.


NEM Authenticator уже есть в основной сети?

NEM Authenticator находится в бета тестировании, но скоро будет релиз.

Код NEM Authenticator  — это приложение с открытым исходным кодом и  MIT License.
https://github.com/aleixmorgadas/NEM-Authenticator
Вернуться к началу Перейти вниз
Посмотреть профиль http://free.userboard.net
Спонсируемый контент




СообщениеТема: Re: NEM Authenticator - 2FC / Atraura Blockchain   

Вернуться к началу Перейти вниз
 
NEM Authenticator - 2FC / Atraura Blockchain
Предыдущая тема Следующая тема Вернуться к началу 
Страница 1 из 1

Права доступа к этому форуму:Вы не можете отвечать на сообщения
Посторонним в :: Блокчейн проекты :: NEM и связанные с ним проекты :: Сервисы, расширяющие функциональность NEM-
Перейти: