Шифрование при работе с приложением.

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by cardons, 10 Jan 2012.

  1. cardons

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

    Joined:
    19 Jul 2005
    Messages:
    778
    Likes Received:
    324
    Reputations:
    83
    В общем пишу программу на Delphi в связке с php.
    Задача чтобы 1 программу мог использовать только один человек.
    Как реализовать то что я хочу?

    На данный момент имееться!
    1) Запрос идет на ip адрес а не домен(чтобы не было возможности подменить в hosts)
    2) Используется для передачи данных протокол https
    3) На каждую программу выдается логин и пароль которые используется для авторизации на моем сервере тип авторизации на сервере Basic Auth, а так же в каждую программу встраивается определенный auth_id. И у каждого пользователя он свой.
    4) Если подключаемся первый раз то в базу данных вноситься HardId,WindowsID,серийный номер материнской карты,ип адрес в интернете из которого вычисляем город и страну и тоже добавляем в базу. Все это дело передается в MD5 формате. А так же 1 поле вносятся сумма этих данных в MD5 плюс добаляются некоторые данные.
    5) Далее берем запрос из базы все эти данные и сравниваем и если хоть одно из них не идентично то аккаунт банится.

    Что можно еще добавить или что изменить чтобы получить лучше защиту моего приложения?
    В данный момент думаю auth_id сделать как второй пароль. Который будет требоваться на сайте после чего будет получаться сессия на 10 минут. И если сессия существует то можно работать с программой. И через каждые 10 минут повторно проводить эту проверку и получать новую сессию.
     
    1 person likes this.
  2. Админ

    Админ New Member

    Joined:
    30 Dec 2011
    Messages:
    23
    Likes Received:
    3
    Reputations:
    5
    А если IP динамический?
    А если нужно юзать софт утром на работе, а днём дома?
    Выполнения функций будт производится на сервере?
    Т.е. серверу передаём параметры, а он возвращает результат. Сам результат показываем в программе.
     
  3. cardons

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

    Joined:
    19 Jul 2005
    Messages:
    778
    Likes Received:
    324
    Reputations:
    83
    IP используется только для вычисления Города и Страны и сравнения их. Само сравнение ип не происходит.
    Задача разрешить использовать только на 1 компе. То есть регистрация на 1 комп и все.
    Да отправляются данные на сервер там происходит запрос к бд. И выдается ответ программе.Далее программа сверяет эти данные и исходя из них выполняет какое действие.
    Чтобы не было возможности подменить запрос использую протокол HTTPS.
     
  4. Админ

    Админ New Member

    Joined:
    30 Dec 2011
    Messages:
    23
    Likes Received:
    3
    Reputations:
    5
    cardons, я имел ввиду выполнение функций программы, а не функций защиты.
    Ну ты понял ;)
    P.S.: А что за софт пишешь, если можно в лс :)
     
  5. cardons

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

    Joined:
    19 Jul 2005
    Messages:
    778
    Likes Received:
    324
    Reputations:
    83
    Да функции все выполняются на сервере.
    Софт пишу для одной игры.

    А я о чем выше пишу? :) Вы хоть умнее бы советы давали.
     
  6. Админ

    Админ New Member

    Joined:
    30 Dec 2011
    Messages:
    23
    Likes Received:
    3
    Reputations:
    5
    cardons, какой алгоритм шифрования будешь использовать? ;)
     
  7. cardons

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

    Joined:
    19 Jul 2005
    Messages:
    778
    Likes Received:
    324
    Reputations:
    83
    Плохо читали... Юзал и не раз )
    Выше цитата
    Мне кажется это вы плохо знакомы с привязкой к железу. Привязка к железу как раз и создается из данных которые не меняются на компе а именно серийный номер мат.платы и т.д. и на ее основе и создается код для которого требуется потом код авторизации.
    А если использовать эту же защиту в связке с авторизацией на сервере и где нету возможности подменить данные которые передаются на сервер потому что подмена в hosts в случае работы с ip невозможна то придется писать эмулятор Web сервера и то это возможно в том случае если вам удастся прочесть запросы и ответы которые отправляются на сервер. А если учитывать то что это все дело передается по протоколу HTTPS и используется при этом шифрование к примеру RSA то это практически не возможно.
     
  8. cardons

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

    Joined:
    19 Jul 2005
    Messages:
    778
    Likes Received:
    324
    Reputations:
    83
    На данный момент интересуют подсказки.
    1) Сделать защиту от использования программы через прокси
    2) Сделать защиту от открытия программы в дебаггера типа Olly Debugger. Если такая попытка была моментально бан.
    Как реализовать?
     
  9. alexey-m

    alexey-m Elder - Старейшина

    Joined:
    15 Jul 2009
    Messages:
    518
    Likes Received:
    100
    Reputations:
    37
    на счет проверки на отладку под олькой, тут сложно что придумать, так как для нее есть плагины, которые хорошо это дело прячут, а так для ольки 1.10 можно багу заюзать такого вида:
    Code:
    procedure OllyBugCall;
    asm
      DB $EB,$13,$E2,$07,$C9,$53,$C2,$00,$00,$82,$6D,$F1, $77,$FE,$C5,$6B,$E3,$70,$F6,$00,$00
    end;
    сам код ничего не делает, но олька виснет наглухо при анализе бинарника
     
    #9 alexey-m, 11 Jan 2012
    Last edited: 11 Jan 2012
  10. DooD

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

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    Если надо реализовать обнаружения отладчиков в ring 3 то тут так:
    Установить seh , вызвать DebugBreak и проверить под отладкой или нет.Это конечно только капля в море,но без бряков дебажить прогу будет труднее.Еще делается защита от трассировки и т.п.
    Что касается softice, тут придется открывать '\\.\NTICE'.если подступаться из ring 3. если там всякие защиты обнаружения стоят,то только драйвер писать.
     
    #10 DooD, 11 Jan 2012
    Last edited: 11 Jan 2012
  11. cardons

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

    Joined:
    19 Jul 2005
    Messages:
    778
    Likes Received:
    324
    Reputations:
    83
    Спасибо за ответы. Подскажите каким протектором поверх программы пройти? Подойдет любой. Даже платный.
     
  12. DooD

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

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    asprotect , obsidium.