Pull to refresh

«Выглядит похоже». Как работает перцептивный хэш

Reading time 6 min
Views 116K
Image processing *
Translation
За последние несколько месяцев несколько человек спросили меня, как работает TinEye и как в принципе работает поиск похожих картинок.

По правде говоря, я не знаю, как работает поисковик TinEye. Он не раскрывает деталей используемого алгоритма(-ов). Но глядя на поисковую выдачу, я могу сделать вывод о работе какой-то формы перцептивного хэш-алгоритма.
Читать дальше →
Total votes 149: ↑145 and ↓4 +141
Comments 46

Жизненный цикл криптографических хэш-алгоритмов

Reading time 2 min
Views 3.3K
Cryptography *


У каждой технологии есть свой жизненный цикл, не исключением являются и хэш-функции. Программист и писатель Валери Аврора (в прошлом она работала ведущим программистом в Red Hat, сейчас — директор The Ada Initiative и журналист-фрилансер) составила небольшую табличку. Судя по всему, у владельцев веб-сервисов не остаётся другого выхода, кроме как менять хэш-алгоритм каждые пару лет в поисках оптимального соотношения производительности и защищённости (в смысле, защищённости хотя бы на несколько лет вперёд).
Читать дальше →
Total votes 89: ↑85 and ↓4 +81
Comments 50

Хранение паролей без их сохранения (развитие темы)

Reading time 2 min
Views 4.5K
Information Security *
Сегодня залез в песочницу и наткнулся на статью о хранении паролей без их сохранения (больше нету, сохранённая копия здесь). Не знаю, как вам, но мне идея показалась интересной.

Мне часто приходится придумывать, запоминать и хранить множество паролей…
Но, увы, для меня использование консольной утилиты для «нахождения» нужного пароля не всегда удобно.

Для себя я сделал онлайн-аналог утилиты автора статьи. Даже сохранил с ней обратную совместимость (используется такой же алгоритм хэширования и «алфавит»).
Читать дальше →
Total votes 35: ↑30 and ↓5 +25
Comments 58

Хранение паролей без их сохранения

Reading time 4 min
Views 10K
Information Security *Cryptography *Programming *
Sandbox
Здравствуйте. Примерно два года назад на Хабрахабре я из некого комментария познакомился с интересным способом хранения паролей без их сохранения. Фраза выглядит странно, но более точно описать род этой программы мне не получилось. Способ заключается в том, что для получения пароля к конкретной учетной записи на конкретном сайте необходимо загнать в хэш-функцию строку, «склеенную» из мастер-пароля, адреса сайта, и логина на сайте.
keyword+sitename+login
В данной строке keyword – это мастер-пароль, используемый для «хранения» паролей ко всем сайтам. Далее идет адрес сайта, затем логин. Загнав в хэш-функцию данную строку, мы получим на выходе строку символов, которую полностью или частично можно использовать в качестве пароля к данной учетной записи на данном сайте. Ключевое слово в начале строки обеспечивает невозможность узнать пароль, если известны адрес сайта и логин. Длина результата хэш-функции более чем предостаточна для пароля. Но надежность пароля все равно оставляет желать лучшего. Каждый символ такого пароля может принимать только одно 16-ти значений, так как результатом хэш-функции является строка чисел в шестнадцатеричном представлении.
Я попытался исправить этот недостаток. Далее расскажу как.
Читать дальше →
Total votes 50: ↑18 and ↓32 -14
Comments 74

Немного о хэшах и безопасном хранении паролей

Reading time 4 min
Views 67K
Information Security *PHP *
Sandbox
Upd. Если вы знаете, что такое BCrypt, можете дальше не читать. Если вы используете PHP 5.5+ то можете прочитать эту статью. Ниже же я изобрел свой велосипед, рабочий, но с двумя рулями, задний запасной. Молод был, горяч.

Привет, хабр! Сегодня, в процессе разработки системы аутентификации для своего проекта передо мной встал выбор — в каком виде хранить пароли пользователей в базе данных? В голову приходит множество вариантов. Самые очевидные:

  • Хранить пароли в БД в открытом виде.
  • Использовать обычные хэши crc32, md5, sha1
  • Использовать функцию crypt()
  • Использовать статическую «соль», конструкции вида md5(md5($pass))
  • Использовать уникальную «соль» для каждого пользователя.

Читать дальше →
Total votes 71: ↑57 and ↓14 +43
Comments 100

NIST принял решение: SHA-3 будет использовать алгоритм Keccak

Reading time 1 min
Views 11K
Information Security *Cryptography *Algorithms *
Национальный институт стандартов и технологий США (NIST) выбрал победителя в конкурсе криптографических хэш-алгоритмов для стандарта SHA-3. В нём участвовало 64 претендента. Пять финалистов конкурса определились почти два года назад. Победителем стал алгоритм Keccak (читается «кэтчэк» или «кетчак» — устоявшегося варианта русского написания и произношения пока нет), созданный командой криптологов из Италии и Бельгии.
Читать дальше →
Total votes 27: ↑24 and ↓3 +21
Comments 40

Сортировка вставкой в хэш-таблицу

Reading time 5 min
Views 14K
Algorithms *
Sandbox
Предлагаю вашему вниманию новый (как я думаю) алгоритм сортировки. Пытался искать похожее, но аналогов не увидел. Дайте знать, если видели что-то подобное.
Суть сортировки в том, что хэш-функция и разрешение коллизий построены таким образом, что в хэш-таблице данные оказываются уже в отсортированном виде. Остаётся только пробежаться по массиву хэш-таблицы и собрать непустые отсортированные данные.

Кому интересно – прошу под кат.

Читать дальше →
Total votes 20: ↑11 and ↓9 +2
Comments 19

Поиск кропнутых дубликатов изображений с помощью перцептуальных хешей

Reading time 6 min
Views 69K
Image processing *
В этой статье пойдет речь о том, как решалась небольшая задачка поиска дубликатов по фрагменту или кропу картинки.



Читать дальше →
Total votes 129: ↑118 and ↓11 +107
Comments 39

Криптоанализ хэш-функции ГОСТ Р 34.11-2012

Reading time 19 min
Views 55K
Information Security *Cryptography *
Translation
В конце 2013 г. Технический комитет по стандартизации «Криптографическая защита информации» (ТК 26), Академия криптографии Российской Федерации и ОАО «ИнфоТеКС» объявили о проведении конкурса по криптоанализу отечественного стандарта хэширования ГОСТ Р 34.11-2012. Подробное описание условий конкурса опубликовано на сайте www.streebog.info. Таким образом, можно считать, что существующие работы по анализу данного криптостандарта стали предметом повышенного интереса криптоаналитиков, поскольку они являются отправной точкой для дальнейших исследований алгоритма ГОСТ Р 34.11-2012.
На текущий момент известно несколько работ, посвященных криптоанализу ГОСТ Р 34.11-2012. Но именно в работе Zongyue Wang, Hongbo Yu и Xiaoyun Wang «Cryptanalysis of GOST R Hash Function» предложены наиболее эффективные атаки на данный алгоритм. Поэтому, на мой взгляд, именно эта работа представляет наибольший интерес среди работ по данной теме; ее перевод я и предлагаю вашему вниманию.
В переводе сохранены авторские названия стандартов хэширования: под названием «ГОСТ» имеется в виду стандарт 1994 года ГОСТ Р 34.11-94, а «ГОСТ Р» обозначает исследуемый в работе алгоритм ГОСТ Р 34.11-2012.
Работа переведена и публикуется на русском языке с разрешения ее авторов.

Перевод здесь
Total votes 83: ↑79 and ↓4 +75
Comments 29

Как надо хешировать пароли и как не надо

Reading time 4 min
Views 250K
Information Security *
image

В очередной раз, когда мы заканчивали проводить аудит информационной безопасности веб-проекта, моя личная бочка с гневом переполнилась негодованием так, что оно перелилось через край в этот пост.

Постараюсь очень лаконично и быстро обрисовать ситуацию с хэшами.

Сразу определю какую задачу применения хешей буду рассматривать — аутентификация пользователей. Не токены восстановления паролей, не аутентификация запросов, не что-то еще. Это также не статья про защиту канала передачи данных, так что комментарии по challenge-response и SSL неуместны!

Читать дальше →
Total votes 135: ↑117 and ↓18 +99
Comments 331

Как бороться с репостами или пара слов о перцептивных хешах

Reading time 11 min
Views 29K
Programming *Image processing *
Sandbox
В этой публикации речь пойдет о подходах к построению перцептивный хешей изображения и возможностях их использования (например, поиск дубликатов).

перцептивный хэш-алгоритмы описывают класс функций для генерации сравнимых хэшей. Они используют различные свойства изображения для построения индивидуального «отпечатка». В дальнейшем эти «отпечатки» можно сравнивать друг с другом.

Если хэши отличаются, значит, данные разные. Если хэши совпадают, то данные, скорее всего, одинаковые (поскольку существует вероятность коллизий, то одинаковые хэши не гарантируют совпадения данных). В этой статье речь пойдет о нескольких популярных методах построения перцептивный хешей изображения, а также о простом способе борьбы с коллизиями. Всем кому интересно, прошу под кат.
Читать дальше →
Total votes 55: ↑54 and ↓1 +53
Comments 26

Как написать фильтр Блума в C ++

Reading time 3 min
Views 20K
ua-hosting.company corporate blog Programming *C++ *
Фильтр Блума представляет собой структуру данных, которая может эффективно определить является ли элемент возможным элементом набора или определенно не относится к нему. Эта статья продемонстрирует простую реализацию фильтра Блума в C++.

Читать полный перевод
Total votes 23: ↑22 and ↓1 +21
Comments 31

CTCrypt 2016 — криптография на любой вкус

Reading time 2 min
Views 4.8K
Research and forecasts in IT *
Через неделю, с 06 по 08 июня, в г. Ярославле пройдет V международный симпозиум «Современные тенденции в криптографии» (Current Trends in Cryptology – CTCrypt 2016). Симпозиум организован Техническим комитетом по стандартизации ТК 26 «Криптографическая защита информации», Академией криптографии Российской Федерации и Математическим институтом им. В.А. Стеклова РАН.
Читать дальше →
Total votes 10: ↑9 and ↓1 +8
Comments 0

Свободный менеджер паролей LessPass работает на чистой функции

Reading time 5 min
Views 27K
Software


Хранение уникальных паролей для всех сайтов и приложений — целое искусство. Невозможно запомнить сотню длинных паролей с высокой энтропией. Может быть, в мире есть десяток высокоразвитых аутистов, способных на такое, не больше. Остальным людям приходится использовать технические трюки. Самый распространённый вариант — записать все пароли в один файл, который защищён мастер-паролем. По такому принципу работает большинство парольных менеджеров.

У этого способа много преимуществ, но есть два главных недостатка: 1) трудно синхронизировать пароли между устройствами; 2) нужно всегда иметь в распоряжении сам файл с паролями. То есть потерял файл с паролями — и до свидания.
Читать дальше →
Total votes 38: ↑34 and ↓4 +30
Comments 38

Что связывает парадокс дней рождения и уязвимости электронных подписей?

Reading time 7 min
Views 13K
Cryptography *Mathematics *
Translation

Введение


Допустим, я спрошу вас, сколько человек должно быть в комнате, чтобы у двух из них день рождения с вероятностью 50% приходился на один день. Каким будет ответ? Именно это и называется парадоксом дней рождения.

Парадокс гласит:

Если в комнате есть 23 человека, то с вероятностью 50% двое из них родились в один день.

В некоторых версиях парадокса делаются ещё более сильные заявления:

Если в комнате 70 человек, то с вероятностью 99% двое из них родились в один день.

Поначалу это казалось мне удивительным и контринтуитивным. Давайте выясним, почему же это правда. Чтобы упростить задачу, мы сделаем следующие допущения:

  1. Будем считать, что все люди в комнате родились не в високосный год. Мы делаем это допущение, чтобы нам не пришлось анализировать два разных случая.
  2. В комнате нет близнецов. При наличии пары близнецов решение будет тривиальным.
  3. Мы предполагаем, что люди рождаются равномерно и случайно. Что это значит? Люди с равной вероятностью могут рождаться в любой день года. Если немного это формализовать, то вероятность рождения в любой выбранный день равна $\frac{1}{365}$.
  4. Люди рождаются независимо друг от друга. Это значит, что дата рождения любого человека не влияет на дату рождения другого.

Стоит заметить, что эти условия необязательно соблюдаются в реальном мире. В частности, в реальном мире люди не рождаются с равномерной случайностью. По этой ссылке есть статистика по дням, в которые рождаются люди. Хотя наша модель не является точным отражением реального мира, её простота позволяет значительно облегчить анализ задачи.
Читать дальше →
Total votes 16: ↑13 and ↓3 +10
Comments 29

Ханс Петер Лун и рождение алгоритма хеширования

Reading time 10 min
Views 8.6K
CloudMTS corporate blog Algorithms *History of IT Biography of geeks
Translation
Алгоритм хеширования инженера IBM дал компьютерам возможность быстрого поиска документов, ДНК и баз данных


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

В ноябре 1958, во время шестидневной международной конференции, посвященной научной информации, изобретатель Ханс Петер Лун продемонстрировал несколько электромеханических машин. Выглядели они весьма заурядно. Как и все прочие вычислительные устройства того времени, они были угловатыми, практичными и предназначались для приема и сортировки стопок перфокарт в слотах и корзинах.
Читать дальше →
Total votes 21: ↑21 and ↓0 +21
Comments 1

«Привет, мир»: разбираем каждый шаг хэш-алгоритма SHA-256

Reading time 10 min
Views 59K
Selectel corporate blog Cryptography *Algorithms *
Translation

SHA-2 (Secure Hash Algorithm), в семейство которого входит SHA-256, — это один самых известных и часто используемых алгоритмов хэширования. В тексте подробно покажем каждый шаг работы этого алгоритма на реальном примере. SHA-2 отличается безопасностью (его тяжелее взломать, чем SHA-1) и скоростью.
Читать дальше →
Total votes 32: ↑29 and ↓3 +26
Comments 6

CubeHash

Reading time 6 min
Views 2K
Information Security *Cryptography *
Sandbox
Translation

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

В качестве нового стандарта SHA-3 в конкурсе хэш-функций, проводимых Национальным институтом стандартов и технологий(NIST) в 2009 году было предложено семейство хеш-функций CubeHash.

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

Читать далее
Total votes 20: ↑19 and ↓1 +18
Comments 4

Blue (Голубой) Midnight Wish — еще один алгоритм хэширования (для ценителей)

Reading time 6 min
Views 2.4K
Information Security *Cryptography *Algorithms *
Sandbox

Привет всем хабровчанам и просто заглянувшим!

Поддавшись осенне-зимнему тренду на Хабре на (около)криптографические статьи, я решил поддержать оный, потому что чем больше годной информации на русском, тем лучше-ж, да..?

Итак, сегодня я хочу рассказать вам о Blue Midnight Wish (BMW, да-да, может кто-то еще не понял). Сразу хочу предупредить - это моя первая статья, поэтому будьте нежнее, по возможности...

Читать далее
Total votes 23: ↑23 and ↓0 +23
Comments 1

Простейшая реализация HashMap на Go

Reading time 4 min
Views 5K
Algorithms *Go *
Sandbox

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

Читать далее
Total votes 10: ↑5 and ↓5 0
Comments 3
1