Рейтинг:1

cryКакой алгоритм используют Trezor One и Trezor T для подписи сообщений?

флаг in

Мои познания в криптографии слишком поверхностны, и у меня есть проблема, которую я не могу решить.

Кошельки Trezor имеют два формата подписи сообщений: «Trezor» и «Electrum».

В моем коде есть метод, который извлекает открытый ключ из сообщений, подписанных с использованием кошельков BTC (я использую биткойн библиотека):

public VerificationStatus verifyMessage (String адрес кошелька, строковая фраза, строковая подпись) {
    Адрес для подписиAddress = null;
    Адрес addressFromKey = null;
    пытаться {
        signingAddress = Address.fromString(null, walletAddress);
        ECKey ecKey = ECKey.signedMessageToKey(фраза, подпись);
        addressFromKey = Address.fromKey(signingAddress.getParameters(), ecKey, signingAddress.getOutputScriptType());
    } поймать (исключение SignatureException) {
        LOGGER.error(exception.getMessage());
    }
    вернуть определение состояния проверки (адрес подписи, адрес из ключа);
}

Когда я подписываю сообщение с помощью кошелька Electrum или Trezor с выбранным форматом «Electrum», все работает нормально.

Пример данных для сообщения, подписанного Электрумом:

адрес: bc1qpluptcvxpvyzsmqzy8jrmdt3m985t6z95s24nu
сообщение: СООБЩЕНИЕ
подпись: H41bIfNhn1vT5yzgFUA3rZE7FNCM8epMrINVbzOefOImYs42hEIUHuoY/UkMd9ljjYkaci7fVJgCTUE6hPJN3Cg=

Но когда я пытаюсь использовать формат "Trezor", для которого подпись выглядит иначе:

адрес: bc1qpluptcvxpvyzsmqzy8jrmdt3m985t6z95s24nu
сообщение: СООБЩЕНИЕ
подпись: J41bIfNhn1vT5yzgFUA3rZE7FNCM8epMrINVbzOefOImYs42hEIUHuoY/UkMd9ljjYkaci7fVJgCTUE6hPJN3Cg=

я получаю Исключение Подписи брошенный ECKey.signedMessageToKey(фраза, подпись);, с сообщением об исключении:

Байт заголовка вне допустимого диапазона: 40

Как я упоминал в начале этого вопроса: моих знаний о криптографии почти нет, но я подозреваю, что Трезор подписывает сообщение, используя что-то другое, другой алгоритм, и это вызывает ECKey.signedMessageToKey() метод выдает исключение, говорящее о том, что байт заголовка находится вне допустимого диапазона

Мой вопрос: как Trezor создает подпись, используя так называемый «формат Trezor», и как я могу решить эту проблему программно?

Ответить или комментировать

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