Записи по тегу: криптография

Цифровая подпись

18 комментариев

Я надеюсь вы читали одну из моих предыдущих статей Ассимитричное шифрование. Как это работает?. Если да, то давайте продолжим погружаться в тему криптографии (если нет… прочитайте).

Прошлая статья подвела нас к тому, что основа ассиметричного шифрования — это публичный и приватный ключи, которыми осуществляется шифрование и дешифрование сообщений. Алгоритм в двух словах выглядит вот так:

  1. мы берем публичный ключ того кому хотим отправить сообщение;
  2. шифруем сообщение с помощью ключа;
  3. передаем сообщение по открытому каналу;
  4. адресат расшифровывает сообщение своим приватным ключом.

Представим что Боб получил зашифрованное сообщение от Алисы. Но от Алисы ли? Да, в конце письма может быть написано «С любовью, Алиса», но откуда нам знать, что это не подлая Ева представляется чужим именем? Читать далее →

Почему TOR безопасен?

78 комментариев

tor_013Нет, я не работаю в органах и в отделах «К» =)

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

Не знаю с чего, но большинство людей считают TOR чем-то бессмысленно-бесполезным в плане использования его для обеспечения анонимности. Но… Так для затравки… До сих пор нет еще ни одной новости о поимке хакера, использующего TOR. Прецедентов нет. Это может говорить о том что это либо невозможно, либо возможно, но не афишировалось. На данный момент я склоняюсь к варианту почти невозможно. И в этой статье я попытаюсь вас убедить согласиться со мной.

Самые наблюдательные из вас заметят, что даже в википедии описан способ с помощью которого можно вычислить пользователя… Но есть еще одно НО. Это единственная описанная возможная атака, которая работает лишь в лабораторных условиях. Но об этом дальше.
Читать далее →

Асимметричное шифрование. Как это работает?

182 комментария

cryptoМало кто знает как именно работает асимметричное шифрование. К примеру есть люди которые не считают протокол https какой-либо адекватной защитой передаваемых данных. И как правило на попытку убедить в обратном, они отвечают что-то в духе «если мы передаем зашифрованные данные, то мы должны сказать как их расшифровывать, а эту информацию можно перехватить и, следовательно, расшифровать данные». А на аргументы, что это не так и в основу положено асимметричное шифрование, поступает ответ «Ну и что?».

Ладно, я понимаю, знать все тонкости реализации асимметричного шифрования нужно далеко не всем. Но общий принцип работы, я считаю, должен знать каждый, кто как-либо связан с компьютерами.

Хочу вынести суть данного поста в эту аннотацию: Запомните, асимметричное шифрование безопасно, естественно при выполнении всех условий. И чтобы доказать это я попробую описать алгоритм понятным языком, чтобы каждый смог понять, что он безопасен. Встречайте Алису, Боба и Еву и передачу их секретного сообщения под катом.
Читать далее →

Коллизии хеш функций? Ассиметричное шифрование решает!

23 комментария

Надеюсь вы помните, я обещал в прошлой статье «Хранение паролей пользователей» предложить вариант того как можно гарантированно избавится от коллизий.

На самом деле, избавится от коллизий в хеш функциях невозможно по одной простой причине: полученная хеш-сумма должна иметь фиксированную длину. Т.е. если логически подумать то перебрав 2n комбинаций (где n — длина хеша в битах), мы стопроцентно найдем коллизию. Ну а если вы слышали про парадокс дней рождения, то для вас будет очевидным что достаточно будет перебрать «всего лишь» 2n/2 чтобы с достаточной вероятностью найти коллизию.

Конечно эти числа для хешей длинной более чем 100бит будут огромны. Например для md5 длинной 128 бит, полный перебор это всего лишь ~30 000 000 000 000 000 000 000 000 000 000 комбинаций, учитывая парадокс дней рождения надо будет перебрать совсем чуть-чуть, где-то ~18 000 000 000 000 000 000 комбинаций. На моем ноуте это «всего лишь» около 500 тысяч лет беспрерывного перебора.

Вродебы вот решение — используйте хеш функции с большой длинной выходной хеш-суммы. Но, как я говорил раньше, никто ни застрахован от того что ваш хеш от вашего пароля длинной минимум в 30 символов, не будет иметь коллизию длиной всего лишь в 1 байт. Пусть конечно эта вероятность фактически стремится к нулю, но она есть!

Стопроцентная защита от коллизий есть! Читайте под катом.
Читать далее →

Хранение паролей пользователей

8 комментариев

Любой разработчик рано или поздно сталкивался с проблемой, которая заключалась в том, как ему правильно организовать хранение паролей зарегистрированных пользователей в БД.

Я конечно не буду отрицать что статей в интернете на эту тему достаточно, но ни одна на мой взгляд не освещает всех тонкостей казалось бы такого простого процесса. Для понимания этих тонкостей разработчику необходимо наличие умения оценивать систему со стороны взломщика, а для этого необходим хотя бы небольшой опыт в этой сфере (по принципу «кто предупрежден, тот вооружен»). К сожалению, у большинства разработчиков такого опыта нет, и безопасность своих приложений они строят на основе скудной информации найденной в интернете.

В этой статье я попытаюсь рассмотреть минусы хранения открытых паролей в БД. Попытаюсь убедить в необходимости хешировать каждый пароль. Также попытаюсь объяснить зачем нужна «соль» и какой она бывает. Ну и вкратце расскажу про разные алгоритмы хеширования.
Читать далее →

Реализация шифра ГОСТ 28147-89 на PHP

52 комментария

Вообщем на днях в универе задали курсовик. Нужно было реализовать на любом языке программу шифрующую по алогритму ГОСТ 28147-89.

ГОСТ 28147-89 — блочный шифр с 256-битным ключом и 32 циклами преобразования, оперирующий 64-битными блоками. Основа алгоритма шифра — Сеть Фейстеля. Базовым режимом шифрования по ГОСТ 28147-89 является режим простой замены.(определены также более сложные режимы гаммирование, гаммирование с обратной связью и режим имитовставки).
Читать далее →