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