Формально говоря, это мы утверждаем, что закладки не было и нет — но мы не можем доказать это стороннему наблюдателю в принципе. Даже открытый код сервера был бы бесполезен, поскольку никак не проверить, что на серверах запущен именно он.
Секретные чаты должны быть основаны на том, что сервер даже в принципе не может их расшифровать, и это должно обеспечиваться открытым протоколом и в меньшей степени — открытым исходным кодом клиентов. Все желающие должны обладать всей необходимой информацией для того, чтобы самостоятельно убедиться, что сервер даже в принципе не может расшифровать переписку из секретных чатов — или, как это произошло в данном случае, продемонстрировать возможную атаку со стороны владельца сервера.
Поэтому x7mz поступил абсолютно правильно, как и надо поступать при открытом обсуждении криптографических алгоритмов — справедливо указал на существующий недостаток, что привело к его оперативному устранению. Общество от этого только выигрывает.
Протокол открытый, клиент в принципе может написать кто угодно. Хотелось форсировать подмешивание серверного рандома даже в том случае, если клиент был написан не слишком грамотно в плане генерации псевдослучайных чисел и подмешивания серверных данных. К сожалению, способ был выбран совершенно негодный. Однако несколько человек — включая меня — изучали тот протокол, что получился, и не заметили его фундаментального недостатка. Так что вина теперь не только на том, кто предложил эту схему, но и в том числе на мне. А «x7mz» молодец.
Да, именно это мы и собирались сделать — встроить в клиенты вариант Yarrow, и скармливать в него все источники случайности, и клиентские, и полученные с сервера, не доверяя исключительно одному источнику, даже якобы надёжному вроде /dev/random. Вспоминается недавняя история про /dev/random во FreeBSD, где оказалось, что интеловская инструкция для генерации псевдослучайных чисел может содержать закладку, и они отказались от её использования.
Товарищ прав — похоже, сервер в принципе может с помощью манипуляции с nonce выполнить MiTM на DH между клиентами. Не знаю, кто именно внедрил этот nonce в такой форме, хотя и знаю, какое предъявлялось обоснование — он был нужен для того, чтобы защититься от слабого рандома на клиентах, которых в принципе может писать кто угодно. Очевидно, нужно сделать этот nonce нулём и написать, что клиенты впредь не должны принимать секретные чаты с ненулевым nonce.
Удивительно, что человек, называющий себя «чайником» в криптографии, нашёл действительно серьёзный недостаток протокола, в отличие от многих якобы «профессионалов», постоянно придирающихся не по существу.
Не знаю как насчёт 200k$ — расшифровать трафик это не поможет, а сервер не знает ключа от секретного чата, поскольку на нём нет такой закладки. Но мне очень не нравится, что в будущем такая закладка могла бы быть в принципе кем-нибудь добавлена.
Тем не менее, считаю, за это ценное наблюдение Вам положен ценный приз. Пусть и не такой большой.
Если Вы или кто-либо ещё найдёт какие-либо ещё потенциальные дыры в протоколе — сообщайте, будем награждать.
Статья очень понравилась, спасибо. Правда, "до бесконечности" эта схема не масштабируется, но едва ли во всем мире наберется сотня проектов, для которых ее перестало хватать.
Кстати, не подскажете, эти СПОКи - это вместо акций или вместе с ними? Как-то факультетчики перестали говорить про свои акции, а непонятно, почему. Интересно, сколько стоит немецкий аналог "факультета" - сайт unister.de?
Красивые картинки (я знаю, что тут многие недолюбливают алексу, но достаточно крупные сайты со схожей аудиторией она сравнивает вполне адекватно):
vkontakte.ru vs. fakultet.ru:
http://www.alexa.com/data/details/traffic_details?site0=vkontakte.ru&site1=fakultet.ru&site2=&site3=&site4=&y=r&z=2&h=400&w=700&range=1y&size=Large&url=vkontakte.ru
studivz.net vs. unister.de:
http://www.alexa.com/data/details/traffic_details?site0=studivz.net&site1=unister.de&site2=&site3=&site4=&y=r&z=2&h=400&w=700&range=3y&size=Large&url=studivz.de
Секретные чаты должны быть основаны на том, что сервер даже в принципе не может их расшифровать, и это должно обеспечиваться открытым протоколом и в меньшей степени — открытым исходным кодом клиентов. Все желающие должны обладать всей необходимой информацией для того, чтобы самостоятельно убедиться, что сервер даже в принципе не может расшифровать переписку из секретных чатов — или, как это произошло в данном случае, продемонстрировать возможную атаку со стороны владельца сервера.
Поэтому x7mz поступил абсолютно правильно, как и надо поступать при открытом обсуждении криптографических алгоритмов — справедливо указал на существующий недостаток, что привело к его оперативному устранению. Общество от этого только выигрывает.
Удивительно, что человек, называющий себя «чайником» в криптографии, нашёл действительно серьёзный недостаток протокола, в отличие от многих якобы «профессионалов», постоянно придирающихся не по существу.
Не знаю как насчёт 200k$ — расшифровать трафик это не поможет, а сервер не знает ключа от секретного чата, поскольку на нём нет такой закладки. Но мне очень не нравится, что в будущем такая закладка могла бы быть в принципе кем-нибудь добавлена.
Тем не менее, считаю, за это ценное наблюдение Вам положен ценный приз. Пусть и не такой большой.
Если Вы или кто-либо ещё найдёт какие-либо ещё потенциальные дыры в протоколе — сообщайте, будем награждать.
http://blogs.mail.ru/list/xina/3AA9B2619E71FD5B.html
Красивые картинки (я знаю, что тут многие недолюбливают алексу, но достаточно крупные сайты со схожей аудиторией она сравнивает вполне адекватно):
vkontakte.ru vs. fakultet.ru:
http://www.alexa.com/data/details/traffic_details?site0=vkontakte.ru&site1=fakultet.ru&site2=&site3=&site4=&y=r&z=2&h=400&w=700&range=1y&size=Large&url=vkontakte.ru
studivz.net vs. unister.de:
http://www.alexa.com/data/details/traffic_details?site0=studivz.net&site1=unister.de&site2=&site3=&site4=&y=r&z=2&h=400&w=700&range=3y&size=Large&url=studivz.de