Комментарии 16
Статья замечательная. Хочется подробностей о самом проекте.
0
Собственно для этого.
habrahabr.ru/post/240815
habrahabr.ru/post/240815
0
Не «Берштейн», а «Бернштейн» (или «штайн»?).
0
Однако использование непонятно как работающей реализации представляется немногим лучше
Вполне понятных реализаций довольно много. Например, tweetNaCl, написанная тем же Берштейном (для нее есть порты и на другие языки), если так трудно читать стандартный NaCl или libsodium код.
Проблема Вашей реализации в том, например, что она не учитывает side channel атаки. «Прозрачные» реализации полезны только для понимания работы (хотя и обычных формул для этого достаточно), на практике же их использовать нельзя — об этом стоит писать, а не о «don't implement your own crypto»
0
>Например, tweetNaCl, написанная тем же Берштейном
Я в процессе работы смотрел и ее. Да, она более понятна чем ref10, но там тоже много неясностей. Например, почему для извлечения корня там используется 2^252-3, а не 2^252-2? Что такое D2? Зачем нужно возводить d^2+1 в седьмую степень? Конечно, на все эти вопросы существуют ответы, но опять же это требует дополнительного изучения вопроса.
Я в процессе работы смотрел и ее. Да, она более понятна чем ref10, но там тоже много неясностей. Например, почему для извлечения корня там используется 2^252-3, а не 2^252-2? Что такое D2? Зачем нужно возводить d^2+1 в седьмую степень? Конечно, на все эти вопросы существуют ответы, но опять же это требует дополнительного изучения вопроса.
+1
Ну, D2 — это, очевидно, удвоенное значение D.
Корень нужно извлекать не из скаляра (в таком случае действительно можно было возвести в степерь (p+3)/8), а из дроби u/v — потому что именно в таком виде хранятся координаты точки для ускорения вычислений. Отсюда, скорее всего, растут ноги (p-5)/8 = (p+3)/8-1 и седьмая степень. Все объяснения есть в статьях о Ed255 и Curve255
Разбираться в любом случае нужно, если цель — «для практического использования в I2P». Ваш код тоже, может, кому-то непонятен будет: у всех свой порог вхождения. Я не настоящий сварщик, но с TweetNaCl, думаю, разобраться можно за разумное время
Корень нужно извлекать не из скаляра (в таком случае действительно можно было возвести в степерь (p+3)/8), а из дроби u/v — потому что именно в таком виде хранятся координаты точки для ускорения вычислений. Отсюда, скорее всего, растут ноги (p-5)/8 = (p+3)/8-1 и седьмая степень. Все объяснения есть в статьях о Ed255 и Curve255
Разбираться в любом случае нужно, если цель — «для практического использования в I2P». Ваш код тоже, может, кому-то непонятен будет: у всех свой порог вхождения. Я не настоящий сварщик, но с TweetNaCl, думаю, разобраться можно за разумное время
0
Можете прокомментировать причины форка от основной ветки на гитхабе?
0
Посмотрите историю изменений в любом файле на гитхабе — меня там больше нет. Некие люди воспользовались моими временным отсутствием там, что выглядит крайне некрасиво с их стороны. Когда я вернулся, то решил продолжать работу над проектом в собственном форке, заодно перейдя с crypto++ на openssl.
0
А где там форк? Нигде не нашёл упоминания.
0
Я сделал форк от релиза 0.10.0 с гитхаба на bitbucket. Здесь
bitbucket.org/orignal/i2pd
bitbucket.org/orignal/i2pd
0
del
0
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.
I2P: Прозрачная реализация подписи EdDSA