ФорумПрограммированиеPHP для идиотов → Безопасность данных в бд

Безопасность данных в бд

  • k313

    Сообщения: 2 Репутация: N Группа: Кто попало

    Spritz 23 апреля 2011 г. 9:09, спустя 7 дней 17 часов 54 минуты

    Всё в этом мире, да и не только в этом, относительно…
    http://ekimoff.ru/74/#comment-4576
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 23 апреля 2011 г. 9:20, спустя 11 минут 17 секунд

    бытует и обратнопротивоположное мнение, что md5(md5(pass)) имеет больше коллизий, чем просто md5(pass)
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 23 апреля 2011 г. 9:54, спустя 34 минуты 18 секунд


    Всё в этом мире, да и не только в этом, относительно…
    http://ekimoff.ru/74/#comment-4576
    одна вода и сопли …. может проще всего не давать этот хеш никак получить? тогда и перебирать нихуя не выйдет? ваш КО
    Сапожник без сапог
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 23 апреля 2011 г. 12:38, спустя 2 часа 43 минуты 50 секунд


    бытует и обратнопротивоположное мнение, что md5(md5(pass)) имеет больше коллизий, чем просто md5(pass)

    http://stackoverflow.com/questions/5765392/its-possible-to-break-a-sha1md5password-password
  • k313

    Сообщения: 2 Репутация: N Группа: Кто попало

    Spritz 23 апреля 2011 г. 13:48, спустя 1 час 9 минут 52 секунды

    бытует и обратнопротивоположное мнение, что md5(md5(pass)) имеет больше коллизий, чем просто md5(pass)

    это мнение можно и проверить и самому (при очень-очень большом желании).
    md5(); выдаёт нам строку состоящую из 32-х символов, каждый из которых может принимать 16 значений (0-9 a-f).
    в итоге мы имеем 16 в степени 32, ну примерно 34 c 37-ю нулями, это максимум вариантов для md5();
    Теперь предположим, что алгоритм хеширования в md5 - идеален, т. е. ни один хеш не повториться пока не будут использованы все остальные возможные варианты хешей (ну это конечно фантастика…, а может и нет, это вопрос к математикам).

    Шаг второй: Определяем, максимальную длину хешируемой строки до которой не будет повторений хеша в "идеальном" md5().
    Это примерно что то этокое (функция md5 принимает любые значения байтов (00-FF т. е. 256 значений), к стати crypt() интерпретирует нулевой байт, как окончание строки и следующие за ним символы во внимание не принемает):
    256^1 + 256^2 + 256^3 + ….. остановиться надо будет тогда, когда значение этой суммы достигнет выше подсчитанного значения максимального количества хешей, т.е. 16^32. Ну и конечно мы получим при этом длину хешируемой строки на много меньше, чем 32 символа! (должно равняться 16-и, т. к. хеш в битовом представлении имеет длину 128 бит = 16 байт)
    Из этого видно, что теперь все хешируемые строки которые длинее 16-и символов непременно вызовут коллизию!!!
    А теперь прибавим к нашей хешируемой строке, длиной в 16 символов, у которой ещё не было коллизий (можно сказать "ещё целочка" :)) ещё один символ, который может принимать всего 2 значения: 0 или 1. (ну или можем добавить просто один бит, каму как нравиться). В результате у нашей строки появились НЕ 2-е коллизии! а 256^16 * 2 "штук" коллизий!!!!!!! (т. е. любое изменение в первых 16-и байтах будет приводить к какому-то уже использовавшемуся хешу)
    Какая "не маленькая" цифра и это только из-за одного "лишнего" бита в строке…..

    И вот теперь время ответа на вопрос:
    бытует и обратнопротивоположное мнение, что md5(md5(pass)) имеет больше коллизий, чем просто md5(pass)

    Что мы получаем при первом хешировании??? правильно! строку длиной в 32 байта! а затем мы эту строку хешируем второй раз ожидая, что результат превзойдёт все ожидания. Во как!!! У кого нибудь есть желание подсчитать колличество коллизий для строки в 32 байта???




    Тааак… Куём железо пока горячё! (пока из другого уха всё не вылетело)
    Из выше сказанного напрашивается ВЫВОД:
    нет смысла задавать пароли длинее 16 байт! (это для md5)
    для sha1 - 20 байт. (именно поэтому его применять предпочтительней, т.к. "радужная таблица" возрастает где то в 256^4 раза)
    Так же повторю, что от "простых и коротких паролей" Вас не спасёт ни sha1, ни sha2, ни sha3000 (которая появиться в 3000-ом году…) потому как их (пароли) перебирают в первую очередь, как V.I.P.-пароли. :)
    .
    .
    .
    Какой можно найти выход??? или как обычно задают гуглу: "как лучше зашифровать пароль".
    Ну тут уже надо самому "выкручиваться". Как например "соль" и "извращения" при хешировании пароля. При этом "соль" для каждого узера своя и прятать её не в БД, а вообще как можно дальше.
    .
    .
    .
    А это для тех, кто помешен на безопасности…
    Представляем себе ситуацию:
    вы старались, писали, как вам кажется, просто "Афффффигенный" код, всё как положено, с "солью", с "извращениями", пароль себе придумали такой "i0df+wejtRc!777", что хрен выговаришь и Слава Богу, пошли спать со спокойной душой, будучи уверенным, что ваша "крепость" не приступна…..
    А утром просыпаетесь, БАХ! а ваш аккаунт взломали??????? =O
    "Как же так? как же так???" - А оказалось, что хеш вашего пароля "i0df+wejtRc!777" и хеш пароля "123456" ОДИН И ТОТ ЖЕ! Ха ха…
    Выбирая себе пароль ни когда не знаешь, а кому ещё он окажется "братом родным". А всё благодаря хешированию! Ведь сравнение паролей "123456" и "i0df+wejtRc!777" в "голом" виде ни когда бы не вернуло "true".
    Ну что? будем искать выход и из таких ситуаций??? Мы же (в смысле "помешанные на защите") стремимся создать 100%-ю защиту!!!
    .
    .
    .
    Ну да… мечтать не вредно, говорят.
    А вопрос, "Как же лучше?" остался открытым. Да он и вряд ли когда закроется.
    А в чём слабость md5();? (ну или sha1, не важно) Вроде всё хорошо делает, преобразовывает строку до неузнаваемости, логики обратного преобразования в исходный текст нет, длина хеша вроде уже как и так приличная. А слабость всё же есть. И состоит она в том, что логика хеширования ВСЕМ ИЗВЕСТНА! т. е. любой кто её знает просто повторяет её и получает вполне жизнеспособную таблицу хешей. Какой напрашивается вывод? Да в общем то не такой уж и сложный. Нужно писать свои функции хеширования и это не так уж и сложно! Ведь всё что требуется от этой функции - это то, чтобы исходный текст был изменён до неузнаваемости и метода обратного преобразования чтоб не было.
    И тогда наверняка, вдруг запляшут облака… Теперь если хакер получил ваши хеши, ему просто нечем хешировать для создания таблицы. Потому, что такова метода, каким вы хешировали ваши пароли, больше на всём белом свете нет! И он, хакер, не сможет создать таблицу, пока не получит исходный код вашего скрипта с вашей функцией. А если вы немного постараетесь, и напишете функцию действительно необратимого хеширования, то тогда хакеру действительно придётся делать всё самому (в смысле с нуля создавать "радужную таблицу"), а использовали бы вы md5 - он бы просто отослал ваши хеши на какой нибудь сайт где хранят хеши от md5 и через 0,3 сек. у него был бы ответ… А так ему придётся помучиться, и может даже не один день, а может ещё и бабки потратит на железо… А вы взяли на следующий день да и изменили в вашей функции одну циферку!!! А так как она стояла в функции не самой последненькой, то теперь и хеши стали совсем по другому выглядеть. Хы-ы-ыыы!!! А узерам своим сгенерируете и отошлёте новые пароли (ни чё, потерпят, не каждый день такое случается)

    =)
    =)
    =)
    =)

    Короче говоря, "На других надейся, да и сам не плошай"!
    Удачи!
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 23 апреля 2011 г. 14:39, спустя 51 минуту 19 секунд

    классный тролль, я даже первые 3 строчки прочитал, слюнявый правда, читать стремно, но это видимо проблема возраста, лет 16-17 тебе?
    Сапожник без сапог
  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz 23 апреля 2011 г. 15:33, спустя 53 минуты 41 секунду

    люди в мире мало говорят друг другу: "ты не думай что ты самый умный… понимаешь?…"
    вот блядь какая хуйня…
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 23 апреля 2011 г. 22:32, спустя 6 часов 59 минут 17 секунд

    Мы вскрыли за один час - 3600 узеров "с СОЛЬЮ"!!!!!!!!

    Каков долбоёб
    не всё полезно, что в swap полезло

Пожалуйста, авторизуйтесь, чтобы написать комментарий!