Админская паранойя в быту или страшная криптографическая сказка для самых маленьких параноиков.

Презентация:



Advertisements
Похожие презентации
Масштаб 1 : Приложение 1 к решению Совета депутатов города Новосибирска от
Advertisements

Масштаб 1 : Приложение 1 к решению Совета депутатов города Новосибирска от _____________ ______.
Урок 2 М-5 Повторение. Устно: Выполни действия = = = = = 42 ?
Приложение 1 к решению Совета депутатов города Новосибирска от Масштаб 1 : 5000.
Приложение 1 к решению Совета депутатов города Новосибирска от _____________ ______ Масштаб 1 : 5000.
ЦИФРЫ ОДИН 11 ДВА 2 ТРИ 3 ЧЕТЫРЕ 4 ПЯТЬ 5 ШЕСТЬ 6.
Рейтинг территорий с преимущественно городским населением по уровню преступности в 2008 году 1ЗАТО «Звездный»33,10 2Гремячинский230,00 3г. Кунгур242,00.
О РЕЗУЛЬТАТАХ ПРОВЕДЕНИЯ НЕЗАВИСИМОЙ ОЦЕНКИ КАЧЕСТВА ОБУЧЕНИЯ В РАМКАХ ОЦП «Р АЗВИТИЕ ИНФОРМАЦИОННОГО ОБЩЕСТВА, ИСПОЛЬЗОВАНИЕ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ,
27 апреля группадисциплина% ДЕ 1МП-12Английский язык57 2МП-34Экономика92 3МП-39Психология и педагогика55 4МП-39Электротехника и электроника82 5П-21Информатика.
Число зарегистрированных преступлений. Уровень преступности.
Динамика результатов учебной деятельности I триместр 2012 – 2013 учебного года.
Таблица умножения на 8. Разработан: Бычкуновой О.В. г.Красноярск год.
Тренажёр Сложение и вычитание чисел в пределах 100.
Управление по работе с муниципальными учреждениями образования администрации города Владивостока.
Д. Дуброво д. Бортниково с. Никульское д. Подлужье д. Бакунино пос. Радужный - Песчаный карьер ООО ССП «Черкизово» - Граница сельского поселения - Граница.
Работа учащегося 7Б класса Толгского Андрея. Каждое натуральное число, больше единицы, делится, по крайней мере, на два числа: на 1 и на само себя. Если.
Курсы повышения квалификации (общие показатели в %)
Ул.Школьная Схема с. Вознесенка Ярославского городского поселения п.Ярославский 10 2 Ул.Флюоритовая
Применение генетических алгоритмов для генерации числовых последовательностей, описывающих движение, на примере шага вперед человекоподобного робота Ю.К.
Результаты сбора и обработки баз данных неработающего населения муниципальных общеобразовательных учреждений города Краснодара за период с 02 по 10 февраля.
Транксрипт:

Админская паранойя в быту или страшная криптографическая сказка для самых маленьких параноиков

Disclaimer "...Мопед не мой..." Если вы все это знаете или думаете что это бред сумасшедшего параноика - well...

Как мы храним пароли? Back to Happy 90s ! Никто не заморачивается и хранит пароли в plain text :)

Scary 00's Все плохо :(

Пример: perlmonks & ZFO "There is a really simple reason we owned PerlMonks: we couldn't resist more than 50,000 unencrypted programmer passwords."--- ZFO 979 Volma379 Tim Vroom adv59416 Nigel Sandever archforc ELB p3rlm0n Randal L. Schwartz 5348 a5q!po9 Max Maischein pineappl Curtis Poe kieran Rob Kinyon ij7dIcmy Tye McQueen rtkJhiG2 Ben Tilly bZ9jFSgN Tom Leete 1382 p3rlm0 chromatic william Peter Jaquiery MonkEBiz david landgren EahejY7f Abigail davesmit Dave Smith

Что же делать? Hash functions to the rescue! MD5, SHA1, SHA256,.... X = MD5(PW) -> храним X Радужные таблицы? Х = MD5(salt + PW) -> храним X и salt Все хорошо? Не совсем.

Improvements 1. Использовать случайную "соль" размером как и результат бит для MD5 "Bytes Are Cheap Now" --- Bruce Schneier 2. Вместо HASH(PW+Salt) нужно использовать HASH(HASH(PW)+Salt)) X = MD5(MD5(PW)+Salt)) -> храним X и Salt Все теперь хорошо?

GPU Bruteforce 2008г. - Nvidia 8600GT - 64 млн MD5 / сек 2010г. - IGHASHGPU - Fastest SHA1/MD5 hash cracker on ATI and NVIDIA GPUs (с) golubev.com - HD5770+HD GT = млн MD5 / сек (в пересчете на карточку - ускорение в 10 раз за 2 года!) Много это или мало? 8-ми символьные буквенно-цифровые пароли = 368= / = 20 минут (!) (добавление спецсимволов не спасает - 528= ~ 6 часов !)

Что делать? Увеличивать вычислительную трудность пароля! Вместо X=MD5(MD5(Pw)+Salt) используем X1 = 0 Xi = MD5(Xi-1+Pw+Salt) i = 1...2M Умные люди советуют M=20 (20 бит энтропии к паролю) Но что делать на Perl? Цикл на раз будет считаться довольно долго... Сколько?

Проверим use Digest::MD5 qw(md5 md5_hex); use Benchmark; use String::Random qw(random_string); my $pass = random_string('.'x20); my $salt = random_string('.'x20); timethis(100, ' my $data = 0; foreach ( *1024) { $data = md5($data.$pass.$salt); } $data = md5_hex($data.$pass.$salt); ');

Результаты Для 2^20 итераций - timethis 100: 98 wallclock secs (97.45 usr sys = /s (n=100) Для 2^10 итераций чуть лучше - timethis : 93 wallclock secs (92.79 usr sys = /s (n=100000) Более менее-оптимально - при 2^13 итераций - timethis 10000: 76 wallclock secs (75.32 usr sys = /s (n=10000) Достаточно быстро? в принципе да, но не для параноиков :)...

Bcrypt to the rescue! - Используется в OpenBSD c 1999г. - Пароли по умолчанию в OwlLinux и AltLinux, поддерживается в OpenSuSE и ASPLinux - PHP Suhoshin Patch, PostgreSQL etc.

Features - Основан на шифре Blowfish by Bruce Schneier - Настраиваемый параметр вычислительной сложности M = 5 - вычисляется за 100 мс M = 8 - вычисляется за 5 сек Реализация - Crypt::Eksblowfish::Bcrypt на CPAN

Сравним Bcrypt, MD5 и SHA512 M=8 Benchmark: timing 1000 iterations of bcrypt... bcrypt: 25 wallclock secs (24.91 usr sys = /s (n=1000)... M=13 Benchmark: timing 1000 iterations of md5, sha md5: 8 wallclock secs ( 7.31 usr sys = /s (n=1000) sha512: 18 wallclock secs (18.22 usr sys = /s (n=1000)

Спорить сюда -