можно оснастить оборудованием для автоматической проверки подлинности документов (паспорта/удостоверения личности), денег и прочей такой фигни. а вот на счёт рамок... хм... пока не знаю, ноесли это реально по делу, то в личку пиши, разберемся.
лады. просто неожиданно подвернулись озадаченные железнодорожники, но с ними контактов не имею, но спрошу, если еще не отвалились. Ссыкатно правда, могут ведь и посадить.
И правда... http://en.wikipedia.org/wiki/MD5 MD5 processes a variable-length message into a fixed-length output of 128 bits. The input message is broken up into chunks of 512-bit blocks (sixteen 32-bit little endian integers); the message is padded so that its length is divisible by 512.
вернемся к тролингу. где хранить соль? если вместе с паролем (разная соль) то... если рядом с паролем (разная соль) допустим от логина или от личных данных, то это сложнее вычленить, но все равно утешение слабое. Если в скрипте, то она будет всем одинаковая... замкнутый круг. Я не понимаю. Это как пытаться защитить цифровые носители от копирования - изначально абсурдная задача.
ТОГДА блин СМЫСЛА В НЕЙ НОЛЬ, ИБО ОНА СЛИВАЕТСЯ ВМЕСТЕ С БАЗОЙ а если рега открытая, то еще и вопросов нет ее вычленить, как ни прячь! я худею, дорогая редакция.
igordata соль не секретна. Задачи спрятать соль не стоит, ибо это невыполнимо, да и задача у нее другая.
MiksIr какая? какая задача? какая блин задача у соли если она не секретна? успокоить нервы сисадмина? чем задача поиска пароля 6 символов сложнее задачи поиска пароля с ИЗВЕСТНОЙ СОЛЬЮ. Вариантов ВСЕ РАВНО СТОЛЬКО ЖЕ =) пипец я идиот, убейте меня. кто может мне разжевать всю суть засола? я не втыкаю.
В десятый раз повторю. Задача соли - защитить брутфорс всех хешей по радужным таблицам. Построение радужной таблицы - очень ресурсоемкий процесс. Поиск по ним - легкий и быстрый процесс. Если у каждого пароля будет своя соль - на каждый пароль придется строить свой набор таблиц, а это очень и очень долго.
фух. родили. теперь можно и солить. из чего следует вывод: солить надо тогда, когда нужно защититься от взлома очень большого числа аккаунтов. Ибо если по радуге действительно быстрый поиск, то сто акков заковырять проблемы не составит. при этом в моей ситуации текущего проекта это бессмысленно, ибо акков будет от силы 30, а ценность предствляет именно содержимое БД. едем дальше. Часть вторая марлезонского балета. если зоумышлятель получил доступ к бд, получил раз - получит и двас, что мешает ему подобрав ОДИН пароль повысить себе привилеги через этот же доступ к бд и слить все и вся и навертеть дел не морочась другими паролями вобще?
ветка в сторону: быстро по радуге это сколько в часах? Трехядерный феном можно собрать за 200 долларов. Сколько у такого компа займет времени вскрыть один акк? Пусть месяц. За $1000 получаем скорость в 5 акков в месяц. Прямо скажем если игра по взлому стоит свеч, то затрата на это дело даже ста тысяч долларов - не великая трата. Что дает нам взлом 500 акков в месяц. Взламывать вконтакт опять же НИКТО НЕ БУДЕТ =) ибо ко всем данным можно получить доступ через парсер и покупку семи сиксилиардов IP для бота за копейки (а то и одним можно обойтись). получать доступ к аккам имеет смысл для получения инсайдерской инфы РИАЛТАЙМ. Допустим то же ФСБ. Допустим надо получить доступ к инсайдерской инфе реалтайм по каким-то важным штукам. При этом БД значит не самоцель. Соотв, нет свободной реги. При этом ставка должна быть достаточно высока. При этом нужно, чтобы было много акков которые необходимо вскрыть. Я не вижу такой ситуации, когда количество вскрываемых акков столь велико, что покупка на радугу сотни компов - оправдана. Обычно достаточно вскрыть несколько акков, чтобы получить доступ к нужной инфе. Ибо достаточно вскрыть акк начальника, чтобы быть в курсе всего отдела. Вывод - соль не сдалась... =) замкнутый круг. Я пытаюсь. Честно пытаюсь нарисовать ситуацию, когда соль нужна. Пока - fail. Моей фантазии не хватает.
igordata, не... вот тут ты уже не прав) если мы используем соль для защиты от РТ, то можно соль хранить открытой. это правда. если же соль используется для прочих методов усиления (защита от атак по словарям, к примеру), тогда нужно солить безопасно и никому ничего не показывать. Причём соль как защита от РТ срабатывает моментально - в силу своего наличия. Если ты еще и заныкаешь её, то на этом выйграешь еще достаточно времени на вскрытии твоего скарба. Может даже пару порядков. MiksIr, на счет времени, согласен, я только что мерял самыми разными способами, сравнивал кучу разных хэшей. Некоторые непригодны (сильно растет время при солении), но большинство до 64 символов стоят на той же скорости, как и с нулевым потоком. Некоторые в пхп не оптимизированы (не знаю почему, но скорость на других библиотеках на tiger'е в 4! раза больше, чем на том же хэше в php при той же длине выходного блока). = Вердикт = солить md5 нужно, потому что проблем по времени это не создаст (для меня это был супер камень преткновения), и если это открытый хэш, то дает защиту от РТ. Стойкости по словарям можно добиться только если соль у всех разная. Для этого можно либо проиграть по памяти, либо проиграть по процессору. 1. Проигрыш по памяти: Рандом соль. Хотя бы на разные группы, если невозможно хранить на разных пользователей. Плюсы: При защите от ТР при открытой соли даёт защиту. При закрытой соли - дает много защиты =) Минус: это нужно хранить 2. Проигрыш по процессорному времени: $dinamic_salt = hash($pass.$static_salt) $result = hash($pass.$dinamic_salt); Плюсы: Даёт защиту от РТ, как если бы это была закрытая соль. Не нужно хранить ни вместе, ни отдельно. Первичную соль можно держать открытой, в том числе и в скрипте. Минусы: При каждом обращении вычисляется не 1 хэш, а 2. Т.е. по времени в 2 раза дороже. 3. Производные алгоритмы: Снапы (соленые и несоленые), усеченные хэши (с непроверенной криптографической стойкостью), мутанты и т.д. Плюсы: При правильном использовании дает защиту от РТ, то, что алгоритм шифрования неизвестен дает дополнительную криптографическую стойкость (если не считать, что по времени хэши сворачиваются все по-разному и если есть доступ к скрипту, то можно узнать, какие хэши лежат в основе вашего алгоритма исходя из времени его выполнения). Минусы: Почти наверняка медленно. В сравнении с 1 и 2 имеют стойкость всего на пару-тройку порядков выше, а при неправильном использовании - ниже, чем оригиналы. ps: ну что? мир, дружба, жвачка? или есть еще соображения, как друг друга обосрать?
дрочим правой, дрочим левой (с) песенка давайте пофантазируем макароны с педивикиии: Ох! Это дествительно много! А можно ли распаралелить? Т.е. сто компов - решают. Возросла только цена вопроса. потыкав дальше по ссылочкам из педивикии можно набрести на страничку http://www.password-crackers.ru/category_178/ что на ней? а ничо. Тесты! с третьим пентаком определились - обещаного три года ждут. Но может современные компы по-шустрее будут? современных в тесте не оказалось, но есть четвертый пень. Да фик с ним. Пусть четвертый тоже ищет три года. возмем за срок. оттолкнемся от него... что это? что это там? Кор два дуо! Скорость почти в два раза выше. Ну тогда прикинем, что этот безымянный кор два дуо в два раза пентака третьего шустрее. Вывод. Указанному кор два дуо потребуется полтора года чтобы перебрать все это дело. Хорошо. Но если посмотреть на первую программу - (зе фастест!) она ебенит эти хэши ДЕСЯТКАМИ миллионов. Она шустрее нижней проги в десять с лишним раз. Т.е. мы не можем определить реальную скорость работы гипотетического пентака из педивикии. От алгоритма все оч разнится. Но вот еще какое дело - видеокарта с CUDA ядрами. Она еще в два раза сокращает время! Т.е. в любом случае мы получаем срок три года, деленный на два из-за роста процессорных мощностей за те же деньги, плюс деленный на двое при участии видеокарты. Т.е. в реалиях 2011 года три года сроку ужались КАК МИНИМУМ до 9 месяцев. Что ж это действительно не то что я там писал сначала. И срок действительно серьезный. Согласен. Теперь в деньгах. Исходим из того, что мы используем видеокарту за 6000 рублей, комп за 9000 рублей, приходим к цене $500 баксов и 9 месяцев на 75% вероятности вскрытия. Но в один комп мы можем "втыкнуть" 4 видяхи. Т.е. 9000 + 4х6000 = $1111 дают один пароль ну скажем за три месяца. А то и меньше. Т.е. за те сто тыщ что я поминул в начале своих бредней (педивикия - не лучшее основание для расчетов) мы имеем 33 паролей в месяц. т.е. в принципе за год этот человек может позволить себе вскрыть 75% от 400 паролей. 300 паролей в год чистыми. и при этом мы все еще находимся в ситуации когда доступ к аккаунту важнее содержимого базы. А такую ситуацию я пока себе еще не нарисовал. выводы? я правда очень подозреваю, что пентиум три против видюхи за двести баксов, что комар против слона...
Так писать не православно. Надо говорить "видео-карта с gpu, поддерживающим cuda". Сокращает время пропорционально количеству процессоров на gpu =) Задачи такого рода _идеально_ параллелятся. Если раньше это было в 2 раза, купил видюху в которой не 1024 ядра, а 2048 ядер и уже в 4 раза быстрее стало. И ты можешь теперь не только пожарить на компе яичницу, но сварить суровый админо-криптографический борщ.
нужно, если доступ к бд не является целью злоумышлятелей. А является целью как раз доступ к акку. Тут мы опять таки скатываемся к тому, а к какому акку? =) ибо если к акку вышестоящего удастся (а за $1111 это удастся за три месяца по самым скромным прикидкам) то остальные акки - поветру, никто их ломать не будет. из чего опять вытекает следующее: если доступ к бд не ридонли все же удался злоумышлятелям, то вскрыв один акк они повысят "допуск"/уровень/привилегии и права - и капец. Засол ваш пошел раком. Как отследить повышение прав, если они хранятся в вашей же бд, к которой получен доступ на запись - никак. Следы заметут. Но надо попробовать, вдруг забудут. Как бороться со случаем ЕДИНИЧНОГО взлома акка начальника, чтобы получить доступ к инсайдерству РТ (случай взлома БД ридонли) - никак. Соль не поможет. Ну случится это на три месяца позже (а за стотыщ позже всего на ОДИН ДЕНЬ), чем слили бд. Все равно это не выловить заранее. Я вижу так: если мы храним привилегии отдельно от взломанной БД (в локалке без доступа в инет), то засолив пароли И если злоумышлятели НЕ ЗНАЮТ который среди слитых - акк более высокого доступа, то мы несомнено нехило так дадим им прикурить. Если знают - управятся быстро. Если не храним отдельно доступ - управятся быстро и наведут шороху. Из чего опять таки следует вывод (для меня лично! я свое мнение не навязываю): Защить БД или умереть! * * * * * * * * * Тогда я вижу так идельную защиту на текущем моем уровне понимания: 1. сервер для людей. Там всякое в бд. 2. сервер отдельный в локалке без выхода в инет. На нем лежат И уровнь доступа, И пароли, И логины =) и авторизация происходит строго через сервер 1, отправляющий запрос на сервер 2. 3. общение сервера 1 с сервером 2 происходит без видимых результатов, поэтому инжект и прочая хрень не дадут ожидаемого эффекта. 4. пароли можно хранить открыто ибо добраться до них может только админ, а если удалось подкупить/разозлить админа - то капец. можете не париться ни с солью, ни с хэшами - унесет на флешке и без всяких паролей. ЗЫ: вспоминаю уровень серьезности монетного двора и всяких там алмазоперерабатвающих компаний - пришел на работу - РАЗДЕЛСЯ ДО ГОЛА, БЫЛ ОСМОТРЕН, проходи дальше и одевай в другую местную одежду и работай, пожалуйста. На выходе - то же самое.
Надеюсь, что если тич дослужится до серьезных постов и данная наша беседа и некислое такое исследование, которое мы все тут провели, еще останутся у него в голове, то пиндосские шпийоны таки обломают себе зубья и снимут шляпу заочно. правда, если быть реалистами, то даже серьезный засол просто напросто переводит поле битвы в реальный мир подкупа и вербовки обиженных секретарш (а они всегда обиженные - работа у них такая). Так что вывод окончательный: засолил - жди гостей! Кстати если серьезно, то я так понимаю, что в реалиях 2011 года при серьезных проектах и задачах, при условии что доступ к сервису для преступника важнее информации в бд - при все при этом можно смело утверждать, что md5 дышит на ладан. И по-хорошему я бы озаботился более крутым алгоритмом хэша. Даже если он круче хотя бы в десять раз что дает нам цену входа на серьезные взломы от миллиона долларов - уже было бы круче. Ибо тогда можно было бы спокойно сосредоточиться (конечно в условиях засола и если преступники опять же НЕ ЗНАЮТ какой акк ломать или ИМ НАДО МНОГО их сломать) - сосредоточиться на обороне, которая гарантированно переезжает в сферу реальной жизни и живых людей. Ибо за миллион долларов кто-то из сотрудников может и сломаться...
Да один фиг. Если собираешь хэш (в частности md5), то соли открытой солью прямо из скрипта. По времени один фиг (100к итераций 0,35-0,38с, а солёная 0,36-0,39с), т.е. ты _вообще_ ничего не теряешь (я за это процессорное время идеологически сражался и потерпел поражение =)). Про то как можно получить все ништяки и не хранить соли я уже писал выше.
MiksIr Спасибо, брат, за то что помог довести мысли до конца. Хотя как обычно это еще не конец. titch спасибо, что держал себя в руках и не свел топик к "мой пень твой труба шатал" видите как можно интересно поболтать, если не орать на оппонента при малейшем непонимании.
я все же пока пришел к выводу, что надо держать в физически разделенных сетках серве авторизации и сервер интерфейса. Задел на будущее: какой у нас алго круче md5 и есть в пхп?