Форматы ключей
Иногда открытый ключ нужно буквально вводить руками, например, через “воздушный зазор”. Открытый ключ в ECDSA (и, кстати, в ГОСТ-подписи, но не только там) – это точка на кривой, заданной в параметрах. Речь тут про кривые, используемые в криптосистемах на практике, например, P-256. Координаты точки – это два числа X, Y (сторого говоря, два элемента соответствующего конечного поля, но это технические детали). Если разрядность 256 бит, то может показаться, что для передачи ключа придётся руками вводить 2*32 == 64 байта, что в hextext составит аж 128 знаков. Однако обычно можно ограничиться одной координатой X, а Y – вычислить из уравнения кривой. Такой способ кодирования называется сжатым представлением ключа. Единственная хитрость в том, что, так как в уравнение кривой Y входит в квадрате, координат, соответствующих данному X, пара. Это обратные по сложению элементы (всем привычные +/-). Поэтому нужно передать знак элемента, но для передачи знака достаточно одного дополнительного бита. Поэтому сжатое представление в два раза короче, но “разрядность ключа” при этом никак не страдает (страдают вычислительные затраты на принимающей ключ стороне, но этим часто можно пренебречь; иногда, впрочем, приключаются проблемы с обработкой заведомо неверных значений). Кстати, по этим же причинам ключи криптосистем с ed25519 короче в записи – они изначально “в сжатой форме”.
Адрес записки: https://dxdt.ru/2022/12/01/9345/
Похожие записки:
- Интерпретация DMARC в разрезе DKIM
- Офтопик: "греческий амперсанд"
- TLS: выбор сертификата по УЦ в зависимости от браузера
- Реплика: задача с делением и 25519
- Алгоритм Шора в фантастической машине превращения вероятностей
- Перспективный ИИ в "разработке кода"
- Вычисления на различной аппаратуре
- "Начала" Евклида, палеография и особенности чтения манускриптов
- Занятный замок Fichet 787
- Вращение Солнца и соцопросы
- Сорок лет Интернету
Написать комментарий