Закрытый и открытый ключи однозначно определяют друг друга?

Интересно, каждому закрытому/открытому ключу соответствует уникальный открытый/закрытый ключ?

Конечно, вычислительно невозможно вычислить закрытый ключ из открытого ключа, но верно ли это для другого направления?

Может ли кто-нибудь ответить, могут ли два пользователя в блокчейне Ethereum использовать один и тот же закрытый ключ, хотя они не могут использовать один и тот же открытый ключ (адрес EOA)?

В частности, какая случайность связана с генерацией ключей, чтобы два пользователя не получили один и тот же открытый ключ?

Ответы (1)

Закрытый ключ Эфириума — это просто число, случайно выбранное из диапазона от 0 до примерно 2^256. Это огромный диапазон; вероятность того, что два человека независимо друг от друга используют один и тот же закрытый ключ, невероятно мала (1 из 2^128).

Открытый ключ детерминированно генерируется из закрытого ключа, так что закрытый ключ однозначно определяет открытый ключ.

Теоретически два разных открытых ключа могут привести к одному и тому же адресу, поскольку адрес представляет собой усеченный хэш открытого ключа. Опять же, шансы на это астрономически малы — в данном случае 1 из 2^80, или 0,0000000000000000000000082%

Изменить для более подробной информации:

Открытый ключ в необработанном виде составляет 65 байт (это пара x,y на эллиптической кривой). Однако его можно сжать до 33 байт (возьмите только xбайт и байт четности)

Источник случайности не указан, но большинство реализаций будут использовать свой источник случайности ОС (/dev/urandom).

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

Потрясающий ответ. Итак, и открытый, и закрытый ключ имеют длину 32 байта? Адрес получен детерминированным хешированием открытого ключа (и использовать только первые 20 байтов)? Какая (псевдо) случайность используется для генерации закрытого ключа (любая фиксированная схема)? Если бы два открытых ключа приводили к одному и тому же адресу, новый пользователь мог бы использовать исходный баланс эфира пользователя (как пользователи могут жить с таким риском)? Не могли бы вы ответить на эти вопросы? :-) +1
Здесь есть хорошее пошаговое руководство по созданию адреса вручную kobl.one/blog/create-full-ethereum-keypair-and-address.