Компания OpenDNS представила (http://blog.opendns.com/2013/03/06/introducing-sodium-a-new-.../) новую свободную криптографическую библиотеку Sodium (https://github.com/jedisct1/libsodium), совместимую на уровне API с библиотекой NaCl (http://nacl.cr.yp.to/), развиваемой Дэниэлом Бернштейном (Daniel J. Bernstein, автор qmail и djbdns), и предоставляющей функции для организации защищённого сетевого взаимодействия, шифрования и работы с цифровыми подписями.
В отличие от NaCl в Sodium решены проблемы с переносимостью кода на разные программные и аппаратные платформы, обеспечена сборка в виде разделяемой библиотеки, поставляется стандартный набор заголовочных файлов, добавлены средства для установки и интеграции со сторонними проектами. Среди поддерживаемых в Sodium платформ отмечаются Bitrig, OpenBSD, Dragonfly BSD, NetBSD, FreeBSD, SmartOS, Mac OS X, Linux, Windows, iOS и Android. Базовый API сформирован для языка Си, но дополнительно поставляются биндинги для языков Ruby (https://github.com/cryptosphere/rbnacl) и Python (https://github.com/dstufft/pynacl).
По сравнению с OpenSSL, Sodium и NaCl предоставляют существенно более простой API, а также применяет по умолчанию безопасные опции и методы шифрования и хэширования. API OpenSSL слишком усложнён и предоставляет обилие криптографических примитивов, режимов и обработчиков, из которых трудно выбрать действительно безопасный набор. Sodium и NaCl решают проблему выбора и предоставляют из коробки готовый к использованию небольшой и понятный набор функций, содержащий только безопасные методы.API Sodium включает следующие возможности:
- Операции шифрования с использованием аутентифицированных открытых и симметричных (shared-key) ключей, позволяющие гарантировать, что зашифрованное сообщение останется в тайне и не сможет быть изменено атакующим;
- Создание и проверка цифровых подписей по открытым и симметричным ключам. Позволяет получателю проверить, что сообщения отправлено именно тем, от кого его ожидали получить и не было изменено третьим лицом;
- Операции хэширования, позволяющие сформировать слепок от сообщения, имеющий фиксированную длину, дающий возможность проверить соответствие хэшу начального сообщения, но не позволяющий восстановить элементы сообщений из хэша;
- Средства для формирования для хэш таблиц непредсказуемых ключей из коротких сообщений, позволяющие исключить проведение DoS-атак (http://www.opennet.me/opennews/art.shtml?num=35593) через манипуляции с коллизиями хэшей. В качестве функции хэширования используется метод SipHash-2-4 (https://131002.net/siphash/), отличающийся высокой производительностью и непредсказуемым результатом операции;
- Безопасный генератор псевдослучайных чисел, пригодный для использования в криптографических операциях.
URL: http://labs.umbrella.com/2013/03/06/announcing-sodium-a-new-.../
Новость: http://www.opennet.me/opennews/art.shtml?num=36331
"NaCl" ---- "Networking and Cryptography library"кто бы мог подумать! o_0
Ведь был же раньше интернет как интернет. Вдруг враз все стали шифроваться. (с) а-ля Брат ))
Ведь был же раньше интернет как интернет. А потом разные му... стали тырить пароли, вклиниваться в траффик, шпионить, кардерствовать, ддосить и прочая. Ну вот и возник спрос на адекватные ответы наблюдаемым реалиям.
кстате сравнение с OpenSSL не совсем правильное дело.......OpenSSL славится своей говнистостью. GnuTLS -- лучше него, например, по всем парамерам.
а программисты которые испоьзуют OpenSSL -- делают это просто потому что привыкли так делать :) [ну и готовых прослоек полно].
вобщем OpenSSL популярно и уже создало критическую массу вокруг себя. чёрная дыра которая жрёт всё подрят (всё что связанно с крипографией), даже независимо от того что OpenSSL НЕ является свободным софтом (только немного схоже с СПО, но не является СПО).
С какого это перепугу он несвободный?
> С какого это перепугу он несвободный?Лицензия довольно горбатая, многим програмерам приходится изворачиваться, например прописывать exception допускающий линковку с оным явно, etc.
"говнистостью"? Ну-ка расскажите, GnuTLS уже научился ГОСТ, который давно в OpenSSL?Окромя особенности лицензии OpenSSL, которая в большинстве проектов никогда не всплывет, "говнистостей" в ней особых нет. Вот возможности, которых нет в недолибах типа gnutls - есть.
И вы должны знать, что OpenSSL - свободный софт. Зайдите на сайт FSF и черным по белому прочитайте, что OpenSSL лицензия классифицируется как "свободная". Ну да, с GPL не совместима. Ну так большинство свободных лицензий не совместимо с GPL! Включая сверхпопулярные ASL для апача, CPL/EPL (Eclipse), AFL, OSL, лицензия gnuplot (gnu, какой сарказм), LPPL (Latex), лицензия PHP и много, много других. А вы не знали?Да, я прекрасно понимаю, что библиотека под GPL-несовместимой лицензией это не слишком удобно. Но и не конец света, что подтверждает множество проектов, выбирающих openssl. Далеко не по инерции. А проекты под крылом GNU, которые переходят на gnutls с openssl делают это обычно по политическим мотивам. По тем же самым, по которым они переходят с Berkley DB (под вполне GPL-совместимой BSD'шной лицензией) на тру-гнушные gdbm или tokyo cabinet, и по которым OpenBSD'шники пишут BSD-аналоги GPL-программ и стараются переходить на BSD-чистую среду.
> "гoвнистостью"? Ну-ка расскажите, GnuTLS уже научился ГОСТ, который давно в OpenSSL?А какие аргументы есть за гост? Независимым криптографам с мировыми именами доверия как-то больше чем тем кто на государственной службе. Потому как вторые - люди потенциально заинтересованные. И заинтересованы они отнюдь не в секурной передаче сообщений. В общем если кого волнует удобство большого брата в плане прослушки - малопонятно нафига ему вообще шифрование. Чтобы очки клиентам красивее втирать?
> Далеко не по инерции.
А пруф на это утверждение вы конечно же предоставите? Сам по себе OpenSSL довольно жуткая штука. С кучей легаси дребедени и вагоном доисторических алгоритмов, безопасность которых как метко замечено авторами сабжа и Берштейном стремится попросту к нулю. А какую безопасность вы можете получить от 40-битного RC4 или доисторического DES? А поюзать это сдуру можно. О чем и намекнули авторы сабжа. Не говоря о том что у OpenSSL какое-то весьма замороченное апи + это весьма разлапистая хренота. GnuTLS получше, но не сильно. Если уж выбирать из сортов того самого - самым симпатичным пожалуй будет PolarSSL. Маленький и аккуратный. Но в целом авторы сабжа и его предка чертовски правы насчет переусложненности SSL и либ для оного и вытекающих отсюда проблем. Как то - лишь полтора ракетостроителя на всю планету умеют им пользоваться действительно секурно. Остальные ДУМАЮТ что умеют пользоваться секурно.
> на тру-гнушные gdbm или tokyo cabinet,
Если gdbm - это неведомая фигня, смысл в которой мне не очевиден, то вот tokyo cabinet - весьма доставляющая либа для быстрой базы key-value. Если забить на лицензионные разборки, токийский кабинет пожалуй одна из лучших баз key-value которые мне попадались. Например berkeley database от sleepycat (а ныне уже оракла) - куда сложнее и при том заметно тормознее. И да, токийский кабинет не столько замена доисторическим *dbm сколько улучшение и развитие. Очень позитивная либа. Понимаю почему бсдшники исходят черной завистью - аналогов таковой под BSDшными лицензиями со столь же удачным набором параметров я элементарно не вижу. А подход "третий сорт - не брак, зато под BSDL" - очень на любителя, если что.
> стараются переходить на BSD-чистую среду.
Больные люди. Вместо того чтобы решать практические задачи - страдают перфекционизмом ради перфекционизма, даже когда это откровенно в ущерб самим себе.
В одном случае читает АНБ ЦРУ ФБР. В другом ФСБ. Не вижу особенной разницы
Алгоритм опубликован, реализация открыта, и в том, и в другом вволю покопались все, кто хотел, по найденным "нюансам" опубликованы статьи (гуглить самостоятельно). Если не секрет, информация о возможности читать секурный трафик - она у Вас откуда?
Да это же известные криптографы - только вчера с пальмы слезли и увидели журнал хаксор. Только эти крутые кульхацкеры не могут внятно ответить на вопрос зачем делать дырки в гостовом шифровании. Разработан алгоритм в 70х годах прошлого века при живом ещё СССРэ. Был предназначен для правительственных нужд. Наверное всесильное кгб уже тогда знало про развал СССР и специально дырок в алгоритм навставляло. Чтобы в 2013 году палить вот этого анонимуса выше.
А правительственные нужды, думаете, не включали необходимость прочтения зашифрованной корреспонденции? Ну вы даёте. А алгоритм, насколько я знаю, довольно стрёмный, выбранные там константы обоснованы невнятно и их выбор сильно влияет на свойства. Может, и есть за ним какая-то математика, позволяющая расшифровывать или получить парный ключ без особых усилий.Но суть даже не в этом - если есть заведомо приличные алгоритмы, проанализированные кучей криптографов из разных стран - всегда лучше использовать их, чем темные лошадки вроде ГОСТа.
> Но суть даже не в этом - если есть заведомо приличные алгоритмы,
> проанализированные кучей криптографов из разных стран - всегда лучше...использовать два или более стопкой, если вообще говорить о недоверии источнику.
Есть здравое правило: не шифровать зашифрованное.
> ...использовать два или более стопкой, если вообще говорить о недоверии источнику.Достаточно спорное правило. Любимый пример тех кто обожает утрировать:
Берем RC4. Шифруем некий поток с неким ключом. А потом берем и шифруем шифрованное еще раз, тем же ключом. Обана - получаем незашифрованный начальный текст! :). Понятно что утрированный пример, основанный на особенностях работы RC4 (xor с выводом PRNG инициализируемого ключом). А data xor key xor key = data. Но возможные последствия показвыает.
>> ...использовать два или более стопкой, если вообще говорить о недоверии источнику.
> Достаточно спорное правило. Любимый пример тех кто обожает утрировать:Стопкой _разных_ алгоритмов и тем более ключей, а не одним и тем же.
re #68: точно не перепутали с "не сжимать сжатое/зашифрованное"?
> константы обоснованы невнятно и их выбор сильно влияет на свойстваЕМНИП, S-таблицы в самом алгоритме не заданы, в практику вошли таблицы, опубликованные Центробанком. Но я могу путать - давно читал.
> ЕМНИП, S-таблицы в самом алгоритме не заданы, в практику вошли таблицы, опубликованные Центробанком.При том никто и никак не обосновывал именно такой выбор S-боксов. А у криптографов есть мнение что путем должной подгонки можно заметно ослабить шифр. В свете такой ситуации я не вижу ни 1 причины доверять такой реализации, покуда не описано почему S-box именно вот такой и пока куча криптографов в рамках открытых контестов по слому и прочая не проверит что там все честно.
> А правительственные нужды, думаете, не включали необходимость прочтения зашифрованной
> корреспонденции? Ну вы даёте. А алгоритм, насколько я знаю, довольно стрёмный,
> выбранные там константы обоснованы невнятно и их выбор сильно влияет на
> свойства. Может, и есть за ним какая-то математика, позволяющая расшифровывать или
> получить парный ключ без особых усилий.вы криптограф? завидую. мне так, например, название "сеть Фейстеля" ни о чем не говорит, но раз вы говорите - стремно, я не буду в этой сети ничего покупать.
> Но суть даже не в этом - если есть заведомо приличные алгоритмы,
> проанализированные кучей криптографов из разных стран - всегда лучше использовать их,
> чем темные лошадки вроде ГОСТа.ггг то-то эту темную лошадку чуть в ISO не протолкнули. не протолкнули, кстати, ровно потому, что куча криптографов, двадцать лет поанализировав, нашла Фатальный Недостаток(ТМ) - оказалось, что если урезать ключ с 256 битов до 128, и крутить не в 32 раунда, а в 16 - то ломается влегкую. это вам не DJB с его взломом AES в OpenSSL на реальной системе, понимать надо.
PS а и походу выбор S-таблиц для DES ваще не обосновывался ЕВПОЧЯ.
>> "гoвнистостью"? Ну-ка расскажите, GnuTLS уже научился ГОСТ, который давно в OpenSSL?
> А какие аргументы есть за гост?ФСТЭК
> ФСТЭКну почему оно первым делом ассоциируется с «апстену» и «кг/ам»…
>> ФСТЭК
> ну почему оно первым делом ассоциируется с «апстену» и «кг/ам»…зато непробиваемо.
походу слова "Безопасный генератор псевдослучайных чисел, пригодный для использования в криптографических операциях." ни с чем у тебя не ассоциируются? улучшатели, мля.
>>> ФСТЭК
>> ну почему оно первым делом ассоциируется с «апстену» и «кг/ам»…
> зато непробиваемо.что «непробиваемо»? тупорылые идиоты из «службы по контролю»? это да, тараном не прошибёшь.
> походу слова «Безопасный генератор псевдослучайных чисел, пригодный для использования
> в криптографических операциях.» ни с чем у тебя не ассоциируются?ты не поверишь, ассоциируются. с «безопасным генератором псевдослучайных чисел, пригодном для использования в криптографических операциях».
>>>> ФСТЭК
>>> ну почему оно первым делом ассоциируется с «апстену» и «кг/ам»…
>> зато непробиваемо.
> что «непробиваемо»? тупорылые идиоты из «службы по контролю»? это
> да, тараном не прошибёшь."Вот"(ТМ)
хочешь торговать в россии крипто - реализуй или умри. ну и поскоку ГОСТ в россии еще долго никуда не денется, то все криптование в госорганизациях, или защита ПД - везде ОН, хоть ты будь трижды OSS. sad but true.
> ты не поверишь, ассоциируются. с «безопасным генератором псевдослучайных чисел,
> пригодном для использования в криптографических операциях».агаага djb вдохновившись примером сони с дебианом вообще rng реализовывать не стал, исходя из того, что отсутствующую деталь сломать никакая обезьяна не сможет. пользуйтесь /dev/random или найдите нормальную ОС. но вот появились улучшатели, и первое, что они сделали - это да да запилили rng с блэкджеком и шлюхами. хорошая заявка на успех ящетаю.
> агаага djb вдохновившись примером сони с дебианом вообще rng реализовывать не стал,
> исходя из того, что отсутствующую деталь сломать никакая обезьяна не сможет.
> пользуйтесь /dev/random или найдите нормальную ОС. но вот появились улучшатели, и
> первое, что они сделали — это да да запилили rng с
> блэкджеком и шлюхами. хорошая заявка на успех ящетаю.ну, тоже вариант. я-то исходники обсуждаемой библиотеки не смотрел — за её ненадобностью мне пока. но иметь в библиотеке более-менее годную реализацию крипто-prng совсем неплохо. другое дело, что это не так просто — хотя бы потому, что годно её отсидировать уже нехилая проблема.
эти ребята сидер сделали, или «ну его нафиг»?
вы таки будете смеяться
static int
salsa20_random_random_dev_open(void)
{
static const char * const devices[] = {
# ifndef USE_BLOCKING_RANDOM
"/dev/arandom", "/dev/urandom",
# endif
"/dev/random", NULL
};
const char * const *device = devices;do {
if (access(*device, F_OK | R_OK) == 0) {
return open(*device, O_RDONLY);
}
device++;
} while (*device != NULL);return -1;
}ну тоже вариант, чо. и для виндов код добавили - тож дело.
«прэлестно, прэлестно!» (ц)
> хочешь торговать в россии крипто - реализуй или умри.Ну вот и торгует оным в россии в результате полтора каких-то мутных фуфломэйкера.
> что «непробиваемо»? тупорылые идиоты из «службы по контролю»?Там, кстати, не идиоты. Был приятно удивлён на фоне ожиданий.
> это да, тараном не прошибёшь.
Ну и "чем больше в армии дубов, тем крепче наша оборона" не отменяли, с другой стороны.
Не-дубы вон в восьмидесятые-девяностые как страну-то подставили в силу некрепкости и духом, и мозгами...
> Ну и "чем больше в армии дубов, тем крепче наша оборона"По факту - расход дубов выставленных против хорошо обученных волков получается как-то непропорционально большой. Это даже до министра обороны уже доползать стало. Да, даже до шойгу.
> По факту - расход дубов выставленных против хорошо обученных волков получается
> как-то непропорционально большой.В glob2 есть изумительная иллюстрация подхода с наёмниками -- "показывать противнику свои столовки"...
> А какие аргументы есть за гост?Казуальному анонимусу ГОСТ никаих плюсов не несёт. Зато он позволяет бизнесменам от IT окучивать правительственные и прочие афиллированные структуры и получать за это неплохие бабулетики используя бесплатный OpenSSL, а не покупая втридорога платную реализацию у конкуррентов.
Лично я выжигаю калёным железом GnuTLS из системы, если вижу его в зависимостях у каких-то приложений. Как правило, в зависимостях у программы из порта можно выбрать GnuTLS или OpenSSL (instead GnuTLS) — естественно, выбираю OpenSSL и собираю порт.
Зачем?
> Зачем?Это такая болезнь - GPLофобия называется. Как по мне, если выбирать то GnuTLS в целом как-то более приятное впечатление производит. Хотя что GnuTLS, что OpenSSL - это реально два переростка. Переусложненных и по этому поводу весьма грабельных. Использовать их действительно секурно - целая ракетная наука. А имитация секурити - хуже чем отсутствие таковой. Просто потому что возникает ЛОЖНОЕ чувство защищенности.
> Зачем?Сопсна, просто бритва Оккама - зачем держать две криптолибы с одинаковыми функциями?
Сопсна, почему бы не обкорнать дистровотч? На кой 1024 дистра с одинаковыми функциями и нескучными обойчиками?
> Сопсна, почему бы не обкорнать дистровотч?Приступайте.
> На кой 1024 дистра с одинаковыми функциями и нескучными обойчиками?
Такие выдыхаются за полгода-год, а остаются те, которые хоть чем-то да лучше уже существующих по крайней мере для некоторой группы людей. Обычно они на чём-то достаточно универсальном основаны (если с нуля, то заточены под узкую задачу), так что это не так плохо на деле, как может показаться со стороны.
> OpenSSL НЕ является свободным софтом (только немного схоже
> с СПО, но не является СПО).Офигеть, дебианщики то и не знают...
>> OpenSSL НЕ является свободным софтом
> Офигеть, дебианщики то и не знают...И FSF тоже не в курсе, у них лицензия OpenSSL числится в разделе "Несовместимые с GPL лицензии свободных программ".
"[...]свободных программ"
Но некто Xasd из #3 раскроет всем глаза, да.
это те самые перцы, которые типоскваттингом барыжат? желаю им зла и долгой, но плохой жизни. вместе с их враппером для NaCl. DJB я доверяю, а этим - нет.
Кто пробовал, скажите:
1) размер библиотек Sodium меньше, чем OpenSSL (под Win и Lin)?
2) алгоритмы реализованы более скорострельно (RSA, BF, AES)?Если "да" по обоим пунктам, то готов пересесть.
> 2) алгоритмы реализованы более скорострельно (RSA, BF, AES)?Тут уже на опеннете писали, что из-за слишком хорошей скорострельности некоторые реализации пришлось "доработать", иначе перебор получался очень быстрым, сводившим на нет все преимущества шифрования.
> Тут уже на опеннете писали, что из-за слишком хорошей скорострельности некоторые реализации
> пришлось "доработать", иначе перебор получался очень быстрым, сводившим на нет все
> преимущества шифрования.а ссылочку можно?
нет, ссылка на реализацию *хэшей* не подходит.
> а ссылочку можно?Стоит перебрать http://www.opennet.me/~solardiz -- кажется, он не очень давно то ли объяснял, то ли ссылался на pdf доклада.
Подумал было, что в http://www.opennet.me/opennews/art.shtml?num=35003 видел -- бегло просмотрел, вроде нет.
>> а ссылочку можно?
> Стоит перебрать http://www.opennet.me/~solardiz -- кажется, он не очень давно то ли объяснял,
> то ли ссылался на pdf доклада.это вы вот это имели в виду?
http://www.opennet.me/openforum/vsluhforumID3/86742.html#22
так там солар наоборот говорит.
> это вы вот это имели в виду?Нет, другое было.
> так там солар наоборот говорит.
Общий смысл к тому и сводился, что для криптоалгоритма желательна тугозадачиваемость под него специально разработанного железа -- с тем, чтобы не было огромного перевеса у тех, кто может такое себе позволить. Понятное дело, что слишком высокая скорострельность на общедоступном железе также снижает и затраты на атаку, а не только нагрузку на серверы...
> Общий смысл к тому и сводился, что для криптоалгоритма желательна тугозадачиваемость под
> него специально разработанного железа -- с тем, чтобы не было огромного
> перевеса у тех, кто может такое себе позволить. Понятное дело,
> что слишком высокая скорострельность на общедоступном железе также снижает и затраты
> на атаку, а не только нагрузку на серверы...128битный ключ брутфорсится за 2^128 операций. время = 2^128 * n где n - продолжительность одной операции дешифровки. если мы повысим скорость работы в 1024 раза, получим время = 2^128 * (n/2^10)
ну то есть наши потомки успеют прочитать результат, пока солнце окончательно не погасло. вот и весь выигрыш во времени.
> 128битный ключ брутфорсится за 2^128 операций.Осталось всего ничего: убедить юзвергов генерить именно 2^128 вариантов паролей, задействуя все 255 значений. А не всякие там 123, 456, маша, вася, 10.09.1985 и тому подобные шедевры, которые даже 80386-33MHz подберет за разумное время :)
2^127 Предпочтительно считать среднее время, а не worst case.
Все равно квантовые вычисления похоронят традиционную криптографию.
> Все равно квантовые вычисления похоронят традиционную криптографию.дадада. а wayland — иксы.
> это вы вот это имели в виду?
>> это вы вот это имели в виду?
> http://www.opennet.me/openforum/vsluhforumID3/86742.html#66угу. что-то я протупил, вон арису выше сразу оговорился про _хеши_.
>> 2) алгоритмы реализованы более скорострельно (RSA, BF, AES)?
> Тут уже на опеннете писали, что из-за слишком хорошей скорострельности некоторые реализации
> пришлось "доработать", иначе перебор получался очень быстрым, сводившим на нет все
> преимущества шифрования.эээ, а где вы их там нашли? только что глянул поверхностно в исходники этого содиума, там кроме salsa и бернштайновского Curve25519, вообще ничего не наблюдается. у меня что-то с глазами?
> эээ, а где вы их там нашли?Где-то тут на опеннете было. Сейчас недосуг искать...
> исходники этого содиума, там кроме salsa и бернштайновского Curve25519, вообще ничего
> не наблюдается. у меня что-то с глазами?Так для тупых там написано что они не предоставляют реализации всего и вся. Они предоставляют реализацию более-менее секурных алгоритмов. Которыми сложновато стрельнуть себе в пятку. А если дать програмеру выбор из 100500 вариантов - ну оно и выберет какой-нибудь DES или RC4-40bit, которые нынче кто угодно сбрутит за недельку на типовом писюшнике без напряга.
> 2) алгоритмы реализованы более скорострельно (RSA, BF, AES)?не реализованы вообще.
>> (RSA, BF, AES)?
> не реализованы вообще.Точняк. Говорят (http://stackoverflow.com/questions/13663604/questions-about-...) что у них используется: XSalsa20 - симметричное шифрование, Curve25519 - ассимитричное, на эллиптических кривых, более скорострельное чем RSA.
Понял. Всем спасибо. (Останусь пока на OpenSSL, ибо проверенная библиотека).
> Понял. Всем спасибо. (Останусь пока на OpenSSL, ибо проверенная библиотека).Проверенная на что? Ей секурно пользоваться - целая ракетная наука. Большинство программ которые ей шифруют - в случае SSL например вообще кладут на валидность сертификата. По поводу чего смысл от такого шифрования оказывается в районе нуля.
> в случае SSL например вообще кладут на валидность сертификата.и правильно делают. всё равно доверять «корневым центрам» нельзя, а если спросить у юзера, то он ответит: «да, да, всё можно, только отстань и больше не приставай!»
> Проверенная на что?Нет явных багов или замаскированных бэк-доров.
А насчет сертификатов - мне на них нассать, ибо я только функциями шифрования и ЭЦП пользуюсь.
А Potassium случайно нету?