Зачем нужен Elligator?


Намедни реализовал Elligator[link1] на c# и задумался о его необходимости вообще. Это ведь обычное биективное преобразование точки кривой во что-то "выглядящее как случайный набор байт" и обратно, чем может являться хоть xor с заранее выбранной псевдослучайной последовательностью. Чем хуже, например, шифрование быстрым алгоритмом с заранее известным ключом?
Не очень понимаю, зачем городить все эти преобразования, если можно работать с битовыми строками напрямую

Комментарии
— unknown (11/05/2015 18:00, исправлен 11/05/2015 18:29)   

Здесь многие некоторые мечтают о т.н. бессигнатурном шифрование. Вот это оно, для ECC public crypto.



Кто-то живёт в регионе, где все шифрованные протоколы связи блокируются, хотя бы на время каких-то событий. Приходиться пользоваться обфускацией. Но если использовать «XOR с известной строкой», то она станет известной слишком многим. Да и как её секретно передать/согласовать, не привлекая внимания цензоров? А в аллигаторе этого не надо, идёт обмен непрофилируемым псевдорэндомом и всё.

Гость (11/05/2015 18:30)   
На другой стороне всё равно должны знать, что этот Elligator используется. Это ничем не лучше знания того же общего ключа обфускации, который тоже может меняться со временем по определенному закону ( да хоть хэш от даты utc ). Все равно не вижу причины городить огород. На это Elligator так же можно проверять весь трафик, это лишь немногим сложнее проверки на xor с известной последовательностью
— unknown (11/05/2015 18:37, исправлен 11/05/2015 18:39)   

Я читал о нём давно, могу ошибаться, но цель была именно в том, что противник знает, что используется аллигатор, знает все константы и параметры протокола, но при этом не может отличить обмен сторон протокола от рэндома.


Если это так, то это много где м.б. полезно, не только для обхода цензуры. Да и в обходе цензуры масса интересных вариантов приходит в голову.

Гость (11/05/2015 19:23)   
Чтобы "отличить от рендома", надо просто попробовать обратить аллигатор и посмотреть как обычно, является ли полученное значение точкой кривой. Я так и не понимаю, что тут такого.
Гость (11/05/2015 19:25)   
Всё, я понял, в чем фокус. Цитата с хабра:

Elligator *любой* шум превратит в точку. В итоге мы при каждом дешифровании получим точки (валидные публичные DH ключи). Мы не знаем какой конкретно DH ключ (точка) используется на деле. Без Elligator мы получим при дешифровании: либо то что не является точкой, либо точку. Здесь мы везде получаем то что Elligator сможет преобразовать в точки, то есть получаем точки всегда.
— cypherpunks (16/09/2016 04:56)   
Че-та у них на сайте нет и намека про практическое использование(

Ссылки
[link1] http://elligator.cr.yp.to/