Этот формат использует сильное шифрование и мульти-итерации на основе пароли ключей вывода для шифрования секретного ключа Bitcoin. Как и с любым форматом этого типа, то пароль может быть взломан. Однако, по современным стандартам, это очень трудно, подобной сложности для взлома паролей WiFi WPA2-PSK. Сложные пароли без каких-либо слов из словаря, по крайней мере, девяти символов потребуются более трех лет, чтобы взломать в течение очень находчивого злоумышленника.
Обновлено: Текущая схема выглядит следующим образом. Выражается в pixelglow для умных предложений.
privkey = 32 байт EC закрытый ключ, большой обратный порядок байт форма
пары = Дескриптор Параметр байт.
- 0: Краткий формат - без ведущего шифра, 4-байтовый соль, HMAC-SHA256 проверка пароля значение
- pbhash = HMAC-SHA256
- pbiter = 4096
- шифровать = AES-256-CBC
- 16: PKCS # 7-совместимый формат - проложенный шифр, 8-байтовое соль
- pbhash = HMAC-SHA256
- pbiter = 4096
- шифровать = AES-256-CBC
Для краткой формы:
поваренная соль = 4-байтовое случайное значение
ключ знак равно PBKDF2 (пароль, соль, pbhash, ИТЭР)
(ключ Затем разделить на cipherkeyiv а также hmackey. hmackey имеет длину 16 байт.)
pwcheck знак равно HMAC-SHA256 (hmackey, privkey)
protkey = пары | Шифр (privkey, cipherkeyiv, без ведущего) | pwcheck [0:64] | поваренная соль
Результат составляет 45 байт для большинства шифров
Для PKCS # 7-совместимый формат:
поваренная соль = 8-байтовое случайное значение
cipherkey знак равно PBKDF2 (пароль, соль, pbhash, ИТЭР)
protkey = пары | Шифр (privkey, cipherkey) | поваренная соль
Результат составляет 58 байт для большинства шифров
protkey значение, то есть класс данных байт (32 или 79) с префиксом к началу, и является основанием 58 кодируется в соответствии с функцией Биткойн EncodeBase58Check (). Ниже приведен пример закрытого ключа защищен паролем, используя эту схему, с помощью тестового пароля password1:
Адрес: 1HacknYhLRpttqGAiBew1fQAKRGnMorkxk
Privkey: 5JmsuCoDBDTPT8oBxx1Vv4cy9Fw14456rt7hvMKmvQY1DES2w6z
Protkey: PsQg61gLtNX6bg7PG8Kw9bpdFEfuP8h1Ri8dAoBjRpV1i1rPPx72EYrGgi7CfWWkbutH
Protkey: 2uhT7zkgeGXpVEw4aYTnCyAvTQ9G1hqSGPPNS5EpC4W62J28euHT8o9CQnKrZCqYwhcHgrxBASsWzYT bF3Qcx
(Осторожный: длинная форма выше, имеет дополнительное пространство, добавленное в форуме)
Краткое представление делает некоторые конкретные компромиссы, чтобы сохранить короткое представление. В этом режиме блока шифрование выполняются без какой-либо PKCS # 7 обивки в конце. Поскольку прокладка обеспечивает способ проверки правильности пароля, значение HMAC pwcheck вычисляется и добавляется к выходу. pwcheck значение вычисляется с использованием HMAC-SHA256 хэш открытого текста секретного ключа, используя 16 байт ключа материала, взятого из функции PBKDF2 в качестве ключа сообщения. Это экономит несколько байт в окончательном представлении. Значение соли также занимает всего четыре байта, короче, чем рекомендовано восемь.
Эта схема, если кто-то не может совать большое отверстие в нем или рекомендовать полезные изменения, будет отображаться в качестве дополнительного выходного формата в следующей версии vanitygen, наряду с паролем кодеком.
Пример из JavaScript из пароля кодека доступен Вот. Она работает в вашем браузере, но не передает ключи или пароли по сети.
Bounty: У меня нет много биткойна, чтобы бросить на это, но 5 BTC перейти к первому человеку, который может снять защиту с ниже ключа:
1NPHardFPnejsycvne2gvirm5MCr9gnAbf
PsV8XM6n5FvjonHPwwjzqvzA6UXruAAJfQ5VwbXFCJrSQEiQ4gyNNDhuYfL8JUBt6mxt
Чтобы подсластить сделку: пароль длиной 14 символов, только с верхними и строчными буквами, и содержит по крайней мере один словарное слово.