Как создать самоподписанный сертификат на эллиптических кривых?
Ссылки
[link1] http://rghost.net/44006688
[link2] http://this.is.thoughtcrime.org.nz/elliptic-curve-ca-guide
[link3] https://www.pgpru.com/comment50261
[link4] https://www.pgpru.com/comment48068
[link5] http://www.mozilla.org/projects/security/certs/policy/MaintenancePolicy.html
[link6] https://developer.mozilla.org/en-US/docs/Security_in_Firefox_2
[link7] https://www.pgpru.com/comment61239
[link8] https://www.pgpru.com/comment61242
[link9] https://www.networkworld.com/news/2013/021313-symantec-266643.html
[link10] https://www.pgpru.com/comment61264
[link11] https://www.pgpru.com/forum/kriptografija/eschjorazoecc
[link12] https://www.pgpru.com/comment50123
Вот, создал[link1] по инструкции[link2], но сервер с ним не работает. Что с ним не так?
есть кто живой?
См. /comment50261[link3] ещё.
Лол, мой же пост годичной давности.
Скажите, что не так с моим сертификатом?
Кто-нибудь, потестите его у себя на сервере.
Лол, а почему бы тогда не продолжить обсуждение в том топике, зачем новый нужно было создавать?Ну, хотя да, там сам топик был изначально не об этом. В любом случае, могли бы и сами дать ссылку на предыдущее обсуждение для полноты картины.Очень информативно, прям как для поста на форуме. Что в дебаге, что пишет, какая ошибка?
Возможно, такие сертификаты не очень популярны, чтобы нарыть толковые инструкции с гугла. Мало кто сам работает с HTTPS-серверами среди местной публики, и ещё меньше тех, кто на сообщения отвечает.
Я только прочитав пост понял, что он мой.
Ничего не пишет. Вообще. Просто не открывается страница. Поэтому я его аплоаднул, может, кто-то поймет, что с ним не так. Где еще его можно было бы потестить?
Виндовый просмотровщих показывает в главе "открытый ключ" какую-то хрень. Что это может значить?
Где хоть спросить можно?
https://en.wikipedia.org/wiki/Stack_Overflow
http://stackoverflow.com
Вроде бы это чуть ли ни единственный сайт для сложных технических вопросов, где не только их задают, но ещё и отвечают (кстати, не только по программированию, но и по другим областям знаний, включая абстрактную математику).
Хер там. Спросил на security.stackexchange.com – закрыли тему. Он не такой хороший, как кажется.
Забыл написать. Засунул его в pyload – не мог зайти на страницу, с RSA сертификатом все работало прекрасно. Сообщений об ошибке 0.
На основании чего? Слишком поверхностный вопрос? Не того уровня, что заслуживает обсуждения?
Может ли быть такой вариант, что браузеры попросту не поддерживают работу с такими сертификатами? Где-то была статистика по используемым алгоритмам в сертификатах, и сертификатов с ECC там было совсем мало, если не единичные случаи.
Браузеры все проверяли?
Хрень какая-то.
Совершенно секретный сервер, не имеющий названия? :)
С отключёнными логгированием? :)
Похоже, закрытый ключ открытому не соответствует:
Написал ниже.
С включенным дефолтовым. Может, он у тебя заработает? :)
У кого денвер стоит – проверьте, может он там заработает или хоть ошибки высрет?
Попробовал в денвере запустить –
Ээ а че надо, чтобы сервер его поддерживал?
Посмотрел еще раз внимательно на ошибку прыщелиса
А curl говорит:
Что с этим делать?
Возможно, что ECC в его нынешнем виде, всё ещё криво поддерживается как серверным, так и клиентским софтом. И везде могут быть внезапные грабли.
Потому будет ещё весело, когда всю симметричную криптографию будут потихоньку переписывать на Keccak (он претендует не только на замену хэшей, но и шифров, и разных криптографических функций, и кусков протоколов).
Вам ECC-сертификат для ознакомительного экспериментирования или реальной работы? Есть где рабочие примеры? А то год назад при сканировании уязвимых urandom действительно на тысячи сертификатов нашли только один ECC.
Ну за год-то можно было научиться говорить без анально-фекальной темы?
Если там оно было сформулировано как здесь с ноль инфы, да ещё с такой лексикой, то неудивительно.
Разве там всё так просто? Универсальная в keccak'е лишь губка, как я понял из поверхностного чтения популярных постов на тему.
Мне желательно бы заставить сабж (pyload) работать с эллиптическимы кривыми, чтобы меньше тормозил.
Рабочие примеры чего?
Пардон, но есть разница – криво поддерживается и вообще ни хрена не работает, нашлось всего 2 скрипта для генерации, один из которых еще и под мак.
Вот интересно, а почему так? Говорят, что дело в каких-то патентах – но они вроде бы скоро закончатся, действуют наверняка только на территории сшашки, да и вообще, я по ссылке педивикии читал, что они покрывают не ЭК, а только некоторые оптимизации (типа не хранить f(x), если есть x и известна f). Да и на территории рашки вроде бы ЭК даже признано госстандартом?
Алсо, на эмбеддеде и тем более еще более убогих девайсах вроде смарткарт альтернативы эллиптическим кривым просто нет.
Хм? Поподробнее можно (желаетльно не здесь)?
Да ИТАКВСЕРАБОТАЕТ. Торопиться пока некуда. Там разница не как между 2 кбит RSA и соответствующей эллиптикой.
Прыщелис 3 см. выше, IE выдает ахрененно информативное сообщение "Internet Explorer не может отобразить эту веб-страницу".
Раз ты такой умный, может подскажешь, как ее собрать?
Всем пофиг.
sentaus, как я уже сказал, на встраиваемых системах альтернативы просто нет. Я видел рутер, где был выставлен 2 кбит RSA ключ. Каждая страница открывалась секунды 3. Так что я сомневаюсь, что все так просто. По сравнению с этим на кеччак действительно всех пофиг.
Например[link4].
Всё бросил и побежал гуглить, экспериментировать, интересоваться в рассылках, и так неделю-две. Раз ты такой борзый, что сам не можешь прогуглить и найти ответ? Слабо разобраться с вопросом самостоятельно и выдать связный ответ в виде поста на форуме?
Ты не охренел? Я тебе ничем не обязан, и вообще-то я задал вопрос, а ты хочешь, чтобы я сам на него ответил и запостил тут ответ? Ты не еврей?
Разница действительно не в скорости, а в том, чтобы убрать кашу из разных громоздких алгоритмов, конструкций и протоколов, пытающихся безопасно связать хэширование, шифрование, аутентификацию, дополнение блоков, ГПСЧ, получение промежуточных ключей и пр. В итоге эта каша будет без конца вылезать дырами в реализации SSL и аналогичных продуктов.
Это надо ждать новых стандартов на основе Keccak, что вполне может растянуться на десятилетия.
Подробности по приведённой постом выше ссылке.
Вам тоже никто не обязан. Можно вежливо и конструктивно спросить, а можно хамить, паясничать, истерить и получать в ответ соответствующую реакцию. Впрочем, её всегда можно получить :)
Я вполне вежливо спросил и дал всю информацию, что смог собрать. Но гостю неймется... Если он умнее – пусть попробует собрать больше.
ЩИТО? Это я?
Так кто нибудь скажет, как сделать и заюзать сабж, или это все-таки за рамками возможного?
Я говорю о том, что прямо щас никто не бросит все и будет переводить все на кеччак, пока и так все работает. Есть проблемы и поважнее, например сабж. Это во всех практических областях кагбэ так – переход должен чем-то оправдываться.
Ап.
Пока гугл, майкрософт и мозилла собирают браузеры без поддержки EC, будет за рамками возможного.
А откуда информация, что браузеры их не поддерживают? И даже curl? Если даже curl не поддерживает, то суши весла.
http://www.mozilla.org/project.....intenancePolicy.html[link5]
https://developer.mozilla.org/.....ecurity_in_Firefox_2[link6] (ага, firefox 2!)
Никто никому не обязан. Как уже давно понятно, вопрос не из стандартных, не самый простой. Чтобы на него ответить, надо основательно гуглить тему. Среди публики сайта все, кто что знал, уже высказались, для дальнейшего надо серьёзно вникать в тему, но это
никомумало кому интересно. Не надо смотреть на здесь постящих как на богов, которые всё знают и всё могут решить одним движением пальца. Раз развёрнутого ответа нет, а он вам нужен, вам придётся докапываться до истины самому. Как докапаетесь и всё поймёте, напишите развёрнутый пост на тему, это будет полезной заметкой как для вас, так и для остальных. Наконец, реагировать на вполне уместные замечания в духеРаз ты такой умный«сам дурак» не нужно, потому что даже тот, кто и мог бы вам помочь, после этого помогать не захочет.Да я тут сгенерил сертификат, развернул его на nginx, и FF, Chrome и IE с ним не заработали, а Konqueror, rekonq и qupzilla заработали. Отсюда я этот вывод и сделал. Хотя, один момент я наверно всё-таки упустил.
Что за момент? Можешь сертификат выложить? Алсо, как посмотреть список поддерживаемых протоколов в браузерах, хотя бы в том же прыщелисе?
Это и называется "сам спросил – сам ответь и другим расскажи". Нет уж, спасибо.
И замечания мне могут делать только те, кто могут сделать лучше.
А собсно, что я парюсь – фитон только год назад стал их поддерживать и то только 3.3, хз как там 2.х http://bugs.python.org/issue13627
sentaus, а энджинкс ЭК поддерживает? Как на нем протестировать сертификат?
Выбор эллиптической кривой.
Ды пожалуйста. Этот даже FF и Chrome распознают.
Сертификат:
Закрытый ключ:
Инициативность наказуема обязательностью исполнения. :)
А на чем и как его можно по-быстренькому потестировать? Это secp521r1? Можешь комадны для генерации тоже выложить?
Уряяяя! Оно заработало!
Главная проблема была в том, что долбаный фитон (по крайней мере, 2.7), судя по всему, до сих пор не умеет работать с ЭК и никогда и не научится, а на тройку переписывать ради ЭК никто ничего не будет. Так что даже если бы сертификат был рабочим и поддерживаемым фаерфоксом, я бы этого все равно не увидел :(
sentaus, колись, как ты сгенерировал сертификаты без CN?
У меня на фаерфоксе почему-то не работает secp256k1, интересно, почему?
[tele]
openssl
[/tele]
И зачем вообще вам питон?
[telepate mode]
Уж очень презрительно-утилитарный подход к своей задаче и инструментам её решения.
Делают наверное какую-нибудь специфическую проприетарную железку по кем-то спущенному техзаданию "лишь бы завелось", но "должно работать в установленный срок" и "заказчики требуют".
А здесь большинству пофиг и неинтересно.
[/telepate mode]
Судя по документам, которые выпускает то НИСТ, то АНБ, то Цертиком, то торговая палата США (они ещё между собой не разобрались и не переделили все патенты, в России хоть единый стандарт) в ECC ещё м.б. куча несовместимых между собой стандартов и реализаций. Поэтому на эти грабли добровольно никто не спешит или делают коммерческую разработку с нуля под заказ и пропихивают свой вариант стандарта в какой-то сфере индустрии (в "умных" электросчётчиках, например).
Не понял, чем не нравится подход?
Про зачем я писал выше – Pyload. Гугл в помощь. Ну и хотелось бы использовать это в других местах, на dd-wrt например, но, боюсь, не заведется.
secp521r1 ведь работает, в документе выше написано, что лис должен и 256 поддерживать (а других кривых на 256 в openssl нет).
Понял :) Необоснованные упрёки снимаются.
Правда, мало кому интересно ECC, а специально проверять его настройку желания нет. Если бы с самого начала подробно указали задачу, где это перспективно, то кто-то бы взял на заметку, может бы тоже заинтересовался. Не все же сталкиваются с Pyload и микрожелезками.
Pyload – всего лишь очередная прога, имеющая в составе веб-интерфейс, а микрожелезки от рутера и меньше я уже[link7] упоминал[link8]. Вопрос я задал потому, что "оно же по идее должно работать – так какого хрена оно не работает?".
Так оно работает, если вы например сами для себя напишете прогу с этой (одинаковой) версией либы и в качестве клиента, и в качестве сервера. И сами будете отслеживать совместимость. Т.е. в каких то частных случаях, где не возникает проблем совместимости со сторонними приложениями это и используется. То, что не работают реализации стандартов и сертификаты общего назначения — другой вопрос.
Тот же гугл, может к примеру настроить свои серверы на ECC-сертификаты, сам выпустить браузер, сам себе выступить центром сертификации. А другим браузерам и приложениям отдавать соединения по сертификатам старого типа.
Первым коммерческим центром по выдаче ECC-сертификатов стал Symantec[link9] в середине февраля 2013 года. Это они ещё только рекламную компанию проводят. И рассчитывают на гибридные решения — откат на старый тип сертификатов при неудаче в соединении.
В реальности редко контролируется клиент и сервер, например, есть веб-сервер, который должен поддерживать все существующие браузеры, или хотя бы некоторые, если сервер в квартирной локалке.
Под "работать" я имел в виду массовую поддержку, экзотикой заниматься не хочу, если делать "падсибя", то можно будет сразу использовать, например, srp.
Продолжаем прямой эфир.
В сервере OpenSSL 0.9.8l 5 Nov 2009 – версия, вкомпиленная в последнюю версию pyopenssl.
Firefox 3 посылает вот что (дамп Wireshark):
Ответ:
Классический пример из реального мира – программа А зависит от библиотеки Б, которая зависит от библиотеки В, которая заброшена 2 года назад, содержит сишный код и для винды есть в бинарниках, сделаных хз кем и хз когда. Новые версии библиотек появляются/начинают использоваться в библиотеках через время x, и так по цепочке. Для железа еще можно сделать поправку на сложность апдейтов и нежелание выбрасывать ее, пока она работает. Сколько лет не обновлялась dd-wrt? И станет ли кто-то перевыпускать прошивку ради апдейта openssl?
Поэтому поддержкой ЭК надо заняться прямо сегодня, чтобы лет через 5 она стала повсеместной и попытка подключить ЭК с "щас сгенерируем и заменим 2 файла" не превращалась в траходром с беганьем по всему интернету.
Так вот же ответ:
А в моем openssl его тупо нет, есть только secp256k1. И всего-то понадобилось заглянуть в дамп Wiresharka, как просто! Интересно, отсохли бы руки у прыщелисовцев, если бы они у себя на странице написали названия кривых, а не только количество бит?
Думаю, об этом надо у них и спросить :) Заодно это же стоит выяснить у MS и гугла. (Интересно, кто на контакт охотнее пойдёт? :))
А ms и гугл у себя что-то писали? Я об этом[link10].
Я не видел такого. Кто б запинал их двигаться в сторону поддержки ECC? :) Чтобы хотя бы как у rekonq – аж 25 кривых умеет.
Гугл у себя на сайте добавил PFF на эллиптических кривых, в свое время это распиарили. Полностью на ЭК не перешли из-за наличия отсутствия соответствующих УЦ.
А так самый простой способ проверить – снифать Wireshark-ом TLS рукопожатие. Хотя по идее где-то должна быть и документация...
Почти угадано :)
Проблема выбора констант[link11], ECC и Tor[link12]. Может, всё из-за констант? :)
Скорее, патенты, но никто не признается.
Короче, решил проблему просто – включил перед сервером nginx, он все умеет и регулярно обновляется.
Напишите, как генерили сертификат. Командой в openssl? Просто интересно.
Ссылка в первом посте. Список кривых на этой странице, меняешь кривую на одну из них.
Сказал спасибо тем, кто помог (sentaus), упомянул тех, кто не помогал, но зудел (Гость (25/02/2013 00:24)) – потерли. Что я такого сказал?