bc_logo_135Компания BitPay разработала новый протокол беспарольной аутентификации BitAuth, который работает в пиринговой сети без центрального сервера, с использованием тех же протоколов шифрования, которые применяются в системе Bitcoin.

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

Для аутентификации по протоколу BitAuth клиент должен подписать каждый запрос с помощью секретного криптографического ключа. Сервер проверяет, что цифровая подпись соответствует открытому ключу клиента. Для защиты от атаки с повторным использованием ключа используются одноразовые коды (nonce).

Ключевой компонент нового протокола — идентификаторы SIN (System Identification Number), по сути аналогичные адресам Bitcoin. Они генерируются схожим способом.

base58check( 0x0F + 0x02 + ripemd160( sha256( k1 ) )

В этой функции k1 соответствует открытому ключу из пары ключей ECDSA secp256k1, 0x0F — специальный байт для SIN, а 0x02 соответствует типу идентификатора (в данном случае, автономный клиент).

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

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

Код BitAuth на Github



4 комментария

  1. 08.07.2014 at 08:58

    Кто нибудь знает ip центрального сервера Bitcoin?

    Данная информация нужна исключительно в ознакомительных целях.

  2. 14.07.2014 at 09:03

    Поздравляю авторов с изобретением велосипеда.

Оставить мнение