При сегодняшнем многообразии бизнес-идей, которые могут быть реализованы с использованием интеллектуальной собственности компании nChain, я подробно расскажу, как приложение с использованием смарт-карты может помочь защитить биткоин-кошелек и осуществить аутентификацию псевдонимной (частной) и безопасной системы.
Мы (nChain) получили патент [3] на использование ECDSA (алгоритм с открытым ключом для создания цифровой подписи ) в качестве средства для безопасного обмена и создания ключей. Механизм может быть использован для создания системы, которая позволила бы проводить аутентификацию компьютеров или создать «магазин» ключей для кошельков, который мог бы работать со смарт-картой и мобильным телефоном для получения разового биткоин-ключа с постоянным обновлением адреса.
Существование Java смарт-карт, которые имеют биометрику, не является чем-то новым; такие карты получают все более широкое применение.
Кошелек можно использовать в качестве приложения на смартфоне. Данные, используемые в описанном ниже процессе, могут быть сохранены в открытом доступе без ущерба для безопасности, записаны в блокчейн или иным образом продублированы, что позволило бы восстановить эти данные в случае потери.
Биометрическая смарт-карта может выпускаться в тех случаях, когда ключ ECDSA для основной части биржи не публикуется и не находится в открытом доступе в блокчейне. Связанный адрес может быть даже подтвержден по PKI (инфраструктура открытого ключа), в то время как Биткоин-адрес (а не Открытый ключ) записывается ЦС (центром сертификации). Это позволит создать полную систему идентификации на основе AML / KYC, а биометрическая идентификационная карта (например, карта резидентства Великобритании или паспорт) позволит использовать процесс ECDSA на языке Java.
Такой процесс решает все проблемы, связанные с PKI и конфиденциальностью.
Если взять пример из патента, то теперь мы заменим ноутбук на смарт-карту.
В конце мы получаем систему, которая позволяет подписывать ключи на устройстве (таком как телефон). Здесь ключ хранится как совместный процесс:
P0 = секрет (смарт-карта) X G (G – это оператор ECDSA)
Pi = секрет (ценность кошелька) X G
«Помощь монетами» в блокчейне – это компоновщик C, то есть ценность (значение) кошелька плюс секрет смарт-карты, и пользователь может иметь резервную копию кошелька.
Приложение на телефоне отправляет секрет монеты (ценность кошелька) на смарт-карту с хэшем транзакции. Для этого приложение создает хэш транзакции (телефон имеет «СМАРТС», которые позволяют создавать транзакцию) и секрет (ценность Кошелька) для смарт-карты.
Смарт-карта подписывает хэш с помощью составного ключа:
- S = секрет (ценность кошелька) + секрет (смарт-карта)
Затем приложение на кошельке пользователя отправляет на смарт-карту следующее:
- Si = секрет (смарт-карта)
- H = хэш (транзакция, подлежащая подписанию)
Теперь смарт-карта вычисляет значение для биткоин-адреса, связанного с составным ключом (P0+Pi). Карта возвращает подпись как:
- (R,S) i— составная ECDSA подпись для адреса (P0+Pi).
Приложение устанавливает изменение (если таковое имеется) под новый адрес, P(i+1).
Адрес для P (coin+1) выводится на смарт-карту и возвращается в приложение. Для этого в приложении создается новый секрет, который отправляется на смарт-карту:
- P0 = секрет (смарт-карта) X G (G – это оператор ECDSA)
- P(i+1) = секрет (ценность кошелька + 1) X G
- P(coin+1) = P0 + P(i+1)
Приложению на телефоне не нужно отправлять секрет на карту, оно посылает открытый ключ. Если он известен — один из возможных способов сделать это — держателю карты (например, когда используется не только хэшированный адрес, но и ключ), приложение может сделать расчет.
За счет использования смарт-карты и приложения у вас теперь безопасный кошелек, который требует от карты подписи; это же можно сделать для улучшения таких кошельков, как Handcash или Centbee. Каждый раз, когда сообщение подписывается, безопасно генерируется новый ключ.
С помощью карты можно создать отдельный кошелек для каждого устройства и для разных назначений. Это как раз-таки то, что люди ждут от неуклюжих и устаревших аппаратных устройств, например, таких как Ledger, — им нужно гораздо больше гибкости. Процесс гарантирует, что вы используете ключ только один раз; более того, он позволяет отсрочить подтверждение ключа, сохраняя при этом полную конфиденциальность.
Каждая монета, когда она тратится, отправляется на новый адрес. При этом этот адрес используется только один раз, и карте нужно только выполнить простую операцию, так как большая часть процесса создания транзакции выполнена телефоном или приложением устройства.
Можно создать резервную копию смарт-карты и хранить ее в сейфе на случай необходимости восстановления данных; и карта и приложение вместе работают только тогда, когда для подписи доступны биометрические данные пользователя, например, отпечаток пальца. Одна и та же карта может использоваться неоднократно, при этом данные ключа не раскрываются, так как зарегистрированный на смарт-карте ключ никогда не используется для отправки и получения Биткоинов.
Более того, карта может использоваться в соответствии с процессом, детально описанным ниже, для надежной зашифровки файлов (см. также последний пост), а также для авторизации доступа к компьютеру и безопасного подключения VPN к удаленной системе.
Содержание статьи
Безопасность персонального устройства – сведения о базовом изобретении
Данное изобретение описывает новый способ безопасного шифрования данных на любом персональном электронном устройстве, включая (но не ограничиваясь) ПК, портативные компьютеры и планшеты. Метод использует технологию обмена тайной ценностью между двумя узлами, как описано в патенте компании nChain, озаглавленном как «Выявление общей секретной информации для двух узлов».
Описание проблемы
Шифрование данных на личных устройствах, таких как ноутбуки или ПК, предназначено для защиты данных на жестком диске в случае потери или кражи устройства. Существующие методы страдают от множества недостатков. Например, для расшифровки жесткого диска пользователю может потребоваться ввести секретную информацию, например, PIN-код или парольную фразу. Но короткие коды, например, PIN-коды, обычно состоящие из 4 – 8 символов, могут быть легко взломаны хакером, который физически завладел устройством и у которого много времени, чтобы попробовать разные комбинации. Парольные фразы гораздо более безопасны, но они зависят от пользователя, запоминающего длинный набор кодовых слов или длинное предложение. Гораздо более безопасный процесс включает использование криптографического ключа, например, путем подключения USB-накопителя. Даже такой метод, однако, имеет уязвимости в плане безопасности. Несмотря на прямое физическое подключение USB-накопителя к устройству, передаваемая секретная информация все еще может быть перехвачена из-за электромагнитных сигналов, генерируемых во время передачи (например, с помощью анализа мощности) [1].
Данный метод устраняет проблемы подобного характера за счет персонального устройства, используемого для вычисления секретной информации на основе передаваемой авторизованным пользователем информации, носящей исключительно несекретный характер.
Глоссарий
ВОСИ — патент под заголовком «Выявление общей секретной информации для двух узлов»
ПЭУ – персональное электронное устройство, подлежащее шифрованию (например, ноутбук, ПК и т.д.)
Keyring (брелок) – устройство, содержащее мастер-ключ пользователя (например, смартфон, USB-ключ и т.д.)
Пользователь—авторизованный пользователь ПЭУ и владелец Keyring
Программное обеспечение — при написании с заглавной буквы «Программное обеспечение» относится к приложению, работающему на персональном электронном устройстве, которое выполняет вычисления с помощью эллиптической кривой и связывается с Keyring.
Приложение – при написании с заглавной буквы «Приложение» относится к приложению, работающему на Keyring, который выполняет вычисления с помощью эллиптической кривой и взаимодействует с персональным электронным устройством.
ЭКК – «Эллиптическая кривая криптографии».
Сессия – это период времени, когда персональное электронное устройство не зашифровано и используется пользователем.
Сессия начинается с авторизации пользователя, затем следует расшифровка персонального электронного устройства и заканчивается шифрованием персонального электронного устройства.
Цикл – полный цикл событий шифрования и дешифрования (между которыми простаивает персональное электронное устройство)
Ключевыми элементами изобретения являются:
- Ключ шифрования / дешифрования – это полный криптографический ключ (например, AES256), который никогда не передается между пользователем и устройством. Вместо этого ключ пересчитывается при необходимости после проверки подлинности Keyring пользователя. Ключ шифрования используется только для одного цикла шифрования / дешифрования. Для каждого цикла вычисляется новый ключ.
- Этот метод использует протокол для обмена секретными ключами, описанный в патенте компании nChains под заголовком «Выявление общей секретной информации для двух узлов» (далее по тексту сокращенно ВОСИ — Выявление общей секретной информации).
Исключения
- Фактический процесс шифрования / дешифрования использует существующие стандарты и не описан здесь.
- Протоколы для обработки прерываний связи (например, отключенный кабель) здесь не описаны.
Техническое описание
В следующем описании делается ссылка на ВОСИ. Для согласованности здесь используется та же терминология, что и в ВОСИ, которая выглядит следующим образом:
- ПЭУ («Сервер») закрытый мастер-ключ = VMS (хранимая ПЭУ секретная информация)
- ПЭУ («Сервер») открытый мастер-ключ = PMS (несекретная информация)
- Keyring («Клиент») закрытый мастер-ключ = VMC (хранимая Keyring секретная информация)
- Keyring («Клиент») открытый мастер-ключ = PMC (несекретная информация)
В приведенном в качестве примера описании предполагается, что ПЭУ – это ноутбук, на котором работает программное обеспечение, а Keyring – это смартфон, на котором работает Приложение.
Инициализация (см. раздел ВОСИ «Регистрация»)
Фаза инициализации начинается с полностью незашифрованного ноутбука, на который загружено и установлено программное обеспечение (в раздел, который останется незашифрованным). Совместимая версия программного обеспечения для смартфонов установлена на телефон: под словом «совместимая» понимается тот же стандарт ЭКК (например, secp256k1) с общим набором параметров, включая генератор G, который используется на обоих устройствах, а программное обеспечение на каждом устройстве использует общий протокол, как описано здесь. Параметры ЭКК хранятся на каждом устройстве на постоянной основе (их не нужно хранить в безопасности).
1) Ноутбук и смартфон подключены. Подключение осуществляется с помощью кабеля или беспроводного протокола, например Bluetooth. Программное обеспечение ноутбука устанавливает контакт с приложением на смартфоне и проверяет через обмен соответствующими сигналами, что версии программного обеспечения совместимы и синхронизируются.
a. Примечание: предполагается, что все существующие меры безопасности соблюдены, т.е. смартфон был разблокирован с помощью кода безопасности пользователя, и пользователь вошел в систему ноутбука, введя пароль обычным способом.
2) Как программное обеспечение ноутбука, так и приложение на смартфоне независимо генерируют свои собственные открытые/закрытые пары ключей на основе G. Первоначальное поколение ключей являются мастер-ключами. Закрытые ключи (VMS и VMC) хранятся в безопасности на соответствующем устройстве-владельце. Открытые ключи (PMS и PMC) передаются на другое устройство. Каждое устройство постоянно сохраняет три мастер-ключа (их собственные закрытые/открытые ключи + открытый ключ другого устройства).
3) Ноутбук создает новое сообщение «Mn» (n = новый) и использует стандартный алгоритм для создания хэша сообщения, приводящего к 256-битному целому числу:
- Сообщение = Mn (Hash160 случайно сгенерированного числа)[1]
- Хэш сообщения = SHA-256(Mn)
Инициализация продолжается до конца первой фазы шифрования. С этого момента каждая сессия состоит из фазы расшифровки в начале и фазы шифрования в конце.
Шифрование
4) Программное обеспечение ноутбука использует Mn для повторного вычисления собственной пары закрытого/открытого ключей следующего поколения и нового открытого ключа смартфона:
- Новый закрытый ключ ноутбука = VnS = VMS + SHA-256(Mn)
- Новый открытый ключ ноутбука = PnS = PMS + SHA-256(Mn) X G
- Новый открытый ключ смартфона = PnC = PMC + SHA-256(Mn) X G
5) Программное обеспечение теперь может вычислить (новый) секрет Sn:
Программное обеспечение вычисляет Sn = VnS X PnC
(Примечание: Приложение также могло бы вычислить секрет, как в ВОСИ, но в настоящем изобретении для извлечения ценности требуется только программное обеспечение).
6) В данном примере секрет Sn не используется в качестве ключа шифрования, хотя в некоторых вариантах он может быть использован (см. вариант 1). В данном примере серийный номер ноутбука кодируется в ключ шифрования, чтобы убедиться, что он является специфическим только для ноутбука. Ключ шифрования E вычисляется следующим образом:
E = SHA256(SHA256(соль + Sn) + серийный номер)
где
Соль = Mn (объяснение, что такое криптографическая соль, см. [2])
7) Как часть процессов выхода из системы и выключения, программное обеспечение шифрует диск. Ключ шифрования E нигде не хранится, а сообщение Mn не хранится на ноутбуке. Сообщение Mn надежно хранится на смартфоне для использования в следующей сессии для расшифровки жесткого диска.
Расшифровка
8) Ноутбук и смартфон подключены. Подключение осуществляется с помощью кабеля или беспроводного протокола, например Bluetooth. Программное обеспечение ноутбука устанавливает контакт с приложением на смартфоне и проверяет через обмен соответствующими сигналами, что версии программного обеспечения совместимы и синхронизируются.
(Примечание: этот шаг идентичен шагу 1 в фазе инициализации)
9) Для авторизации приложения ноутбук создает новое сообщение «Mn». Mn будет использоваться для авторизации в текущей фазе расшифровки, а также будет использоваться для шифрования в последующей фазе шифрования. Ценность (значение) вновь создается и отличается от ранее созданного сообщения, которое было сохранено на смартфоне в конце фазы шифрования. Чтобы отличить два значения, ранее сохраненное сообщение будет называться Mo (o = «старое»).
Ноутбук отправляет Mn на смартфон и использует стандартный алгоритм для создания хэша сообщения, приводящего к 256-битному целому числу:
- Сообщение = Mn (Hash160 случайно сгенерированного числа)
- Хэш сообщения = SHA-256(Mn)
10) Приложение на смартфоне сначала вычисляет новое поколение пары закрытых/открытых ключей на основе значения Mn (подробнее см. ВОСИ)
- Новый закрытый ключ смартфона = VnC = VMC + SHA-256(Mn)
- Новый открытый ключ смартфона = PnC = PMC + SHA-256(Mn) X G
11) Затем приложение подписывает Mn с помощью своего нового закрытого ключа и отправляет его обратно на ноутбук:
- Подписанное сообщение = Sig-VnC
12) Как указано в ВОСИ, программное обеспечение проверяет подлинность приложения, проверяя подписанное сообщение. Оно делает это, самостоятельно вычисляя новый открытый ключ приложения (PnC), используя формулу в (10), а затем выполняя стандартную проверку ECDSA между Sig-VnC и PnC.
13) Установив учетные данные приложения, программное обеспечение теперь отправляет запрос в приложение на «старое» сообщение Mo, которое было надежно сохранено только на смартфоне во время предыдущей фазы шифрования. Для дополнительной безопасности приложение подписывает Mo своим закрытым ключом нового поколения и отправляет подписанное сообщение обратно в программное обеспечение: Sig-VnC . Программное обеспечение может проверить подпись и получить Mo обычным способом.
14) Сообщение Mo связано с предыдущим поколением пар открытых/закрытых ключей ноутбука и смартфона, т. е. ключей, которые были сгенерированы в предыдущем цикле шифрования. Теперь ноутбук может пересчитывать эти ключи и, следовательно, также пересчитывать секрет S и ключ шифрования.
15) Пересчитанный ключ шифрования используется для того, чтобы зашифровать диск, и пользователь может теперь использовать ноутбук как обычно. Вновь созданное сообщение Mn сохраняется в памяти в течение всего сеанса, который заканчивается фазой шифрования, когда пользователь выходит из системы, перезагружает или завершает работу (и т.д.).
Вариант 1: Ключ шифрования = Секретный ключ S
В некоторых сценариях может не потребоваться или нецелесообразно вставлять серийный номер в ключ шифрования, например, когда ПЭУ – это тип устройства, у которого нет доступного серийного номера. В таких случаях в качестве ключа шифрования может использоваться сам секрет Sn.
Вариант 2: шифрование папок/файлов
Вариантом является шифрование отдельных файлов или папок. Приложения ПЭУ и Keyring могут подсказывать пользователю, какие файлы/папки шифровать. Для каждого отдельного файла/папки будет сгенерирована новая соль (сообщение Mn), из которой будет получен ключ шифрования для файла/папки. В этом случае приложение Keyring будет безопасно хранить таблицу, связывающую уникальный идентификатор файла / папки с соответствующим сообщением. Что касается шифрования диска, ключ шифрования действителен только для одного цикла,так как новый ключ шифрования вычисляется для каждого нового цикла (т.е. соответствующее сохраненное сообщение Mn заменяется в таблице после каждого сеанса, в котором был осуществлен доступ к файлу/папке).
Ссылки
[1] https://theintercept.com/document/2015/03/10/tpm-vulnerabilities-power-analysis-exposed-exploit-bitlocker/
[2] https://en.wikipedia.org/wiki/Salt_(cryptography)
[3] Персональные устройства безопасности с использованием эллиптических криптографических кривых для обмена секретной информацией:
https://patentimages.storage.googleapis.com/4c/c5/d2/48ad44c210de89/EP3257006B1.pdf
Сноски
[1] Выбор сообщения является произвольным для генерации ключа шифрования, но обязательно должен быть новым для каждого цикла. Сообщение сокращено до 160 битов путем хэширования, чтобы сохранять длину сообщения короткой.