соль, хеши.. мой алгоритм круче чем в IPB > 2.0 :D

Discussion in 'PHP' started by Дикс, 5 Jun 2006.

  1. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    скачал сейчас оффлайн-сборник статей античата (респект Nova ;) ) и прочитал статью Гаврилы про хеши и соль в IPB > 2.0
    Из этого сделал вывод что алгоритм хеширования, придуманный мной ещё круче и непоколебимее чем в IPB! :)

    В чём основное отличие моего метода:
    соль в данном случае это первые четыре символа от пароля. таким образом её не надо сохранять в базу и следовательно эту соль нельзя украсть.
    алгоритм брута в такой ситуации я совершенно не могу представить. ломать по словарям тоже не проканает, потому что если даже какая-нить Анюта поставит пароль beautiful, он будет зашифрован как
    md5(beaubeautiful) а это уже не есть слово.

    вот так :)
     
    1 person likes this.
  2. GreenBear

    GreenBear наркоман с медалью

    Joined:
    7 May 2005
    Messages:
    2,547
    Likes Received:
    1,398
    Reputations:
    612
    имхо

    реал пасс: abcdefghi -> подбор: abcdabcdefghi
    реал пасс: bcdefghij -> подбор: bcdebcdefghij
    то, что не виделенно - программа берет из первых 4 символов строки, которую она сравнивает с оригиналом.
    Вот тебе и подбор паролей =)

    Что мешает создать программу, которая будет на таком же алгоритме расшифровывать? Брать те же первые 4 символа и вставлять их в начале слова...

    Имхо, даже логически хеши в ipb будет труднее рисшифровать, чем в твоем варианте.
     
  3. Trinux

    Trinux Members of Antichat

    Joined:
    26 Nov 2004
    Messages:
    1,403
    Likes Received:
    296
    Reputations:
    364
    юзайте crypt() с рандомной солью и не зайте проблем =))) на разных серваках хеши не сойдутся =)
     
    _________________________
  4. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    а теперь представь эксклюзивный движок, сорцы которого нельзя достать.
    в качестве соли он берёт первый, третий, пятый символы пароля, меняет их местами...

    напиши мне алгоритм расшифровки?
     
  5. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    ЗЫЫЫ Я не имел ввиду местных Анют!! %) :d
     
  6. GreenBear

    GreenBear наркоман с медалью

    Joined:
    7 May 2005
    Messages:
    2,547
    Likes Received:
    1,398
    Reputations:
    612
    Эта другая тема асболютно. Постановка твоего метода была направлено на то, что метод шифровки был известен.
     
    #6 GreenBear, 5 Jun 2006
    Last edited: 5 Jun 2006
  7. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    но согласитесь, можно и в Cms и в опен-сорс форуме
    к примеру в админке сделать выбор между тремя методами составления соли.
    этого хватит на сотни лет перебора брутом.
     
  8. drmist

    drmist Member

    Joined:
    8 Oct 2005
    Messages:
    307
    Likes Received:
    94
    Reputations:
    80
    Дикс
    Ты сильно заблуждаешься.
    Попробуй лучше такой метод.
    Массив salts = {соль1, соль2, соль3, соль4, .... , сольn}
    hash(pass, current_salt)
    {
    a = md5(current_salt.pass);
    for(i=0;i<count(salts);i++)
    a = md5(salts.a);
    return a;
    }

    В данном случае фактически используется альтернативный алгоритм хеширования, чтобы брутить его, как минимум нужно иметь доступ к диску (чтобы получить массив salts) и к sql-базе данных (там хеши и current_salt для каждого из них).
    Но даже если эти условия выполняются, перебор будет производится значительно медленней.


    Я хочу сказать следующее: не пытайся придумать "невзламываемую" систему, насколько мне известно, за последние 6000 лет этого никому не удавалось.
     
  9. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    сегодня полдня думал над усложением системы.
    в итоге придумал такую хрень:

    1. юзер регается. вводит пароль forest
    после регистрации ему выводится сообщение:
    "ваш новый пароль: Xforest" где X - рандомное число от 1 до 6 (если у вас стоит проверка на то что пароль должен быть не менее семи символов)

    а вот как он хешируется:
    if (первый символ пароля == 1)
    // способ первый
    беруца 2,4,6 символы и вставляются после первого
    >1frsforest
    затем хешируется

    if (первый символ пароля == 2)
    // способ второй
    беруца 2,4,6, затем инвертируются и вставляются после второго символа пароля
    >2fsrforest
    хешируется

    ...

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

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

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

    как вам такая система?
     
  10. coyl

    coyl Elder - Старейшина

    Joined:
    14 Jan 2005
    Messages:
    125
    Likes Received:
    3
    Reputations:
    2
    Если на это рассчитывать (непреступность кода) - то достаточно и просто любой символ (один) подставлять и хэшировать. Все равно код никто не увидит и не поймёт, как хэшируется пароль. ихихи.

    А вот про шесть алгоритмов - это стоящая идея. Хотя накладные расходы при большой посещаемости (например, большого портала) достаточно приличные будут.
     
  11. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    а вариант получения фтп-доступа к скриптам?

    можно и нужно оптимизировать.
    либо как можно большую часть перенести в функции mysql.
     
  12. KSURi

    KSURi tnega AOLPS

    Joined:
    6 Jun 2006
    Messages:
    458
    Likes Received:
    219
    Reputations:
    357
    Код можно обфусцировать. Правда незнаю как с этим обстоят дела в php, а вот в perl точно можно
     
  13. Algol

    Algol New Member

    Joined:
    29 May 2002
    Messages:
    1,759
    Likes Received:
    4
    Reputations:
    0
    А еще можно почитать книги по крипто-системам, и на первой же странице прочесть, что система должна быть устойчива к раскрытию алогритма шифрования (Принцип Кирхгофа).
    Иными словами хорошую систему нельзя взломать, даже зная алгоритм шифрования.
     
  14. darky

    darky ♠ ♦ ♣ ♥

    Joined:
    18 May 2006
    Messages:
    1,773
    Likes Received:
    825
    Reputations:
    1,418
    берите тогда уж md5(md5(md5())) -)) а авторизацию проводить по двойному мд5.. подтормаживать форум будет.. хотя хз , зависит от посещаемости и сервака/канала )

    двойной мд5 расшифровывать - себя не уважать
     
  15. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    объясните плз что значит "обфусцировать"

    и ещё в прошлогоднем хакере спец прочитал что md5 умер.
    как это понимать??

    если md5 - плохая система, почему в коммерческих движках форумов используют её?
     
  16. darky

    darky ♠ ♦ ♣ ♥

    Joined:
    18 May 2006
    Messages:
    1,773
    Likes Received:
    825
    Reputations:
    1,418
    Обфускатор (англ. obfuscator) — инструментальное программное обеспечение, позволяющее предотвратить или значительно осложнить обратную разработку программы, даже при наличии исходного кода. В процессе обфускации, исходный код преобразуется в запутанный код, намного менее читаемый и понятный для человека.
    (с) вики

    но существует множество способов и технологий антиобфусцирования, по крайней мере в сях, яве. На каждого кодера всегда есть свой крякер -)
     
  17. Algol

    Algol New Member

    Joined:
    29 May 2002
    Messages:
    1,759
    Likes Received:
    4
    Reputations:
    0
    Проблемы с надежностью у md5 действительно есть. Это связано с возможностью нахождения коллизий за приемлемое время.
    Но алогритм поиcка коллизий был найден совсем недавно, поэтому движки не успели еще переделать.
    Нужно так же сказать, что коллизии не во всех случаях позволяют заменить собой пароль. Возможна защита от коллизий, даже если используется md5.
     
  18. coyl

    coyl Elder - Старейшина

    Joined:
    14 Jan 2005
    Messages:
    125
    Likes Received:
    3
    Reputations:
    2
    Да. Мд5 устарел. Он юзается уже с 199-какого-то года. не помню точно (давно было =)))
    Но использование двойного хэширования и солей вполне решают проблему безопасности для малых систем (форумы ит.д.) где теоретически злоумышленник не станет долго мучаться над расшифровкой, так как гораздо более вероятно проникновение через другие "мягкие" места системы. А для более серьёзных проектов и систем (правительственные организации ит.п.) он, конечно, уже мало подходит.