За последние 24 часа нас посетили 12560 программистов и 987 роботов. Сейчас ищут 322 программиста ...

Безопасность sha1 на практике

Тема в разделе "PHP для профи", создана пользователем Познающий php, 23 июл 2017.

  1. Познающий php

    Познающий php Новичок

    С нами с:
    23 мар 2017
    Сообщения:
    381
    Симпатии:
    74
    Сейчас везде говорят что это уже пздц как небезопасно. А вот onpay использует sha1 для проверки платежки. Насколько это реально безопасно? Я так понимаю все эти сервисы для "дешифровки" в реале просто база переборов начиная с самых простых односимвольных и понарастающей? Каждый добавленный символ в длину строки добавляет времени в геометрической прогрессии. В этой подписи довольно большая строка навскидку символов 15. Бояться нечего?
     
  2. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.533
    Симпатии:
    623
    Для чего именно опэй использует ша1?
     
  3. Познающий php

    Познающий php Новичок

    С нами с:
    23 мар 2017
    Сообщения:
    381
    Симпатии:
    74
    onpay - генератор платежек. sha1 для проверки платежки, как защита от фейковых. У всех же платежек вроде одна система. После оплаты клиента у них на сайте, они присылают ответ на твой сервер и хэш строки, чтобы мы могли проверить, что все верно. У них этот хэш в sha1
     
  4. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.533
    Симпатии:
    623
  5. Познающий php

    Познающий php Новичок

    С нами с:
    23 мар 2017
    Сообщения:
    381
    Симпатии:
    74
    Там строка туда входят сумма платежа, баланс, номер платежа, секретный ключ и все это в sha1 присылают для сверки. По сути это контрольная сумма
     
  6. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.533
    Симпатии:
    623
    А авторизация по токену OAuth?
     
  7. t1grok

    t1grok Новичок

    С нами с:
    29 янв 2017
    Сообщения:
    119
    Симпатии:
    32
    Во-первых нужно знать урл ответа.
    Во-вторых у платежных систем имеется еще api, по которому можно перепроверить (не у всех)

    Выставляем задержку на обработку ответа в 1-2 секунду, ставим максимальный срок оплаты платежа и можем спать спокойно.
     
  8. Познающий php

    Познающий php Новичок

    С нами с:
    23 мар 2017
    Сообщения:
    381
    Симпатии:
    74
    мы формируем ссылку на оплату. Пользователь переходит по ней и платит. После того как он оплатил, то нам приходит ответ,с параметрами оплаты. сумма, айди и т.д. и приходит дополнительно контрольная подпись sha1 чтобы например наш клиент не подделал платежнкую ссылку и не заплатил например вместо 100 рублей всего 1. А то и вовсем подделал запрос.

    В вебмани схема такая же. там есть md5 но там прям пишут, что md5 не юзайте, юзайте sha256.

    вообще у меня не те масштабы чтобы боятся фейковых оплат. Если что-то будет не так, я увижу это достаточно быстро. Спрашиваю скорее для общего развития.
     
  9. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.533
    Симпатии:
    623
    @Познающий php если схема ограничена тем, что ты написал, то получается я могу перехватить реальный ответ онпэй на платеж на 100 руб и 100 раз его тупо повторить и твой сайт зачтет платежей на 10к?
     
  10. Познающий php

    Познающий php Новичок

    С нами с:
    23 мар 2017
    Сообщения:
    381
    Симпатии:
    74
    Если ты сможешь подделать подпись sha1, то в теории да.
    --- Добавлено ---
    Вернее не подделать, а расшифровать чтобы узнать секретный ключ. Тогда ты сможешь подделывать платежи.

    В этом и вопрос моей темы, безопасна ли sha1
     
  11. t1grok

    t1grok Новичок

    С нами с:
    29 янв 2017
    Сообщения:
    119
    Симпатии:
    32
    У OnPay есть возможность получения/проверки платежа, пусть разгадывают подпись сколько угодно - это ничего не даст.
     
  12. Познающий php

    Познающий php Новичок

    С нами с:
    23 мар 2017
    Сообщения:
    381
    Симпатии:
    74
    Если это ничего не дает, то зачем тогда вообще нужна подпись sha1? :)
     
  13. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.533
    Симпатии:
    623
    Зачем мне секретный ключ, если у меня есть id, сумма, баланс и подпись и я фигачу одни и те же эти данные сто раз? Сработает это или нет, и почему?
     
  14. Познающий php

    Познающий php Новичок

    С нами с:
    23 мар 2017
    Сообщения:
    381
    Симпатии:
    74
    Ответ на твой вопрос есть в моем посте на который ты отвечаешь.
    Каждый такой запрос я буду сверять с контрольной подписью. Если ты узнаешь секретный ключ, то значит сработает.
    --- Добавлено ---
    Я пожалуй просто буду пользоваться и похyй на sha1, мне надоела эта игра :D
     
  15. t1grok

    t1grok Новичок

    С нами с:
    29 янв 2017
    Сообщения:
    119
    Симпатии:
    32
    Дополнительная проверка. Подобно двух факторной авторизации.

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

    Если вы кроме проверки подписи ничего не делаете - это выглядит следующим образом:
    Вы продаете валенки покупателю по безналу, он говорит что деньги перевел, и вы ничего не проверяя, верите на слово и отдаете валенки. Хотя при нормальном раскладе стоит убедиться в том, что деньги зачислены и в нужном объеме.
     
    #15 t1grok, 23 июл 2017
    Последнее редактирование: 23 июл 2017
  16. Познающий php

    Познающий php Новичок

    С нами с:
    23 мар 2017
    Сообщения:
    381
    Симпатии:
    74
    Ничего страшного, лучше перебдеть, чем недобдеть. Особенно в вопросах денег.

    Просто мне лично кажется странным, что сейчас даже пароли для форумах, которые никому не всрались, даже если поломают, не рекомендуют хешировать этими функциями, а в платежках юзают. Мне интересен теоретический аспект скорее.
     
  17. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.533
    Симпатии:
    623
    @Познающий php из хэша невозможно восстановить исходную стоку, можно найти лишь коллизию. Вот ты не ответил на вопрос, пришлось лезть в доки. Повторять один и тот же запрос бессмысленно, потому что в нём присутствуют уникальные одноразовые id заказа и id платежа.
    Предполагается, что мерчант контролирует, чтобы один и тот же заказ не был оплачен дважды.
    Получается, что заполучив подпись, кулхацкер в лучшем случае вычислит коллизию для получения такой же подписи конкретно для этого запроса. Она будет отличаться от оригинального секретного ключа, поэтому если изменить сумму или номер заказа и захэшить, получится неправильная подпись. Поэтому вычисленную строку не получится использовать даже 1 раз.
    Это отличается от многоразового пароля. В случае с паролем, найденную строку можно использовать снова и снова, пока не изменится пароль (или соль).
     
    Познающий php и mahmuzar нравится это.
  18. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.415
    Симпатии:
    1.767
    я согласен с Василием [vs] и хочу добавить что безопасность вопрос не абсолютный, а относительный.
    взлом хеша занимает время.
    если в этом onpay хеш используется для проверки, то могу предположить, что его действие ограничено небольшим отрезком времени, за который его просто не успеть подобрать.

    одноразовость плюс ограниченность во времени дают вполне высокий уровень защиты.
    вот и всё.
     
    mahmuzar нравится это.