Создание фильтр драйвера для USB

Тема в разделе "WASM.NT.KERNEL", создана пользователем Sidorma, 9 дек 2010.

  1. Sidorma

    Sidorma New Member

    Публикаций:
    0
    Регистрация:
    9 дек 2010
    Сообщения:
    35
    Здравствуйте, уважаемые форумчане.

    Есть задача: написать программу взаимной аутентификации ПК, съемного носителя (в данном случае - USB флэш) и пользователя.

    Давайте рассмотрим интересующую на данный момент подзадачу: необходимо сделать так, чтобы одна отдельно взятая USB флэшка "подходила" только одному отдельно взятому ПК. Т.е. при подключении съемного носителя (далее СН) к "чужому" ПК, данные на этом СН не должны быть видны ни одному пользователю данного ПК.
    У ПК и СН есть ряд характеристик, которые можно использовать для получения уникальных глобальных идентификаторов. Эти идентификаторы далее хэшируются, и полученное хэш-значение должно сверяться С ЭТАЛОННЫМ.
    У меня есть много вопросов по данной подзадаче. Не могли бы вы помочь натолкнуть на какие-нибудь идеи? Например, если ПК "чужой", как запретить доступ к данным на СН?

    Спасибо заранее.
     
  2. tchunya

    tchunya New Member

    Публикаций:
    0
    Регистрация:
    13 ноя 2008
    Сообщения:
    29
    Шифрование данных?
     
  3. Sidorma

    Sidorma New Member

    Публикаций:
    0
    Регистрация:
    9 дек 2010
    Сообщения:
    35
    1. Может и шифрование, только вот изначально данные должны быть зашифрованы и расшифровываться на "своем" ПК или же зашифровываться, если СН подключается к "чужому" ПК?
    2. Как в этом случае будет проходить процесс зашифрования/расшифрования?
    3. На СН должно быть установлено соотв. ПО? Как его запускать на выполнение?

    Спасибо.
     
  4. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    Sidorma
    На сервере храним базу пользователей.
    По какому-то [ID оборудования на ПК] + [дев. фам. матери] = создаем
    открытый ключ.
    Носитель СН по
    [Чему-то там] + [дев. фам. материи]+ [ID оборудования на ПК] = получает
    закрытый ключ.
    При подключении СН шлем запрос к серваку просим открытый ключ.
    Носитель СН вносит закрытый. Данные на СН расшифровываются.
    Может так?
     
  5. Sidorma

    Sidorma New Member

    Публикаций:
    0
    Регистрация:
    9 дек 2010
    Сообщения:
    35
    _sheva740
    Хорошо, как СН получит закрытый ключ?
    Все-таки данные должны быть зашифрованы изначально?

    Как происходит обмен сообщениями между ПК и СН?
     
  6. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    Ну думаю да.
    Ты дашь его Носителю СН, то есть тому челу,
    который носит флешку :)
    Ну наверное обрабатываешь сообщение

    Код (Text):
    1. WndProc proc hWin:DWORD,uMsg:DWORD,wParam :DWORD,lParam :DWORD
    2.     .if uMsg==WM_CREATE
    3.     .elseif uMsg == WM_QUIT
    4.         xor eax,eax
    5.     .elseif uMsg == WM_DEVICECHANGE
    6.         .if wParam == DBT_DEVICEARRIVAL
    7.             mov ebx, lParam
    8.             assume ebx:ptr DEV_BROADCAST_HDR
    9.             .if [ebx].dbch_devicetype == DBT_DEVTYP_VOLUME
    10.                 mov edx,lParam
    11.                 assume edx:ptr DEV_BROADCAST_VOLUME
    12.                 invoke _GetVolumeName,[edx].dbcv_unitmask
    13.                 push eax
    14.                 invoke wsprintf,offset szPath,CTXT('%c:\'),eax,0
    15.                 pop eax
    16.                 invoke GetDriveType,offset szPath
    17.                 .if eax == DRIVE_REMOVABLE
    18.                     invoke Sleep, 1500
    19.                     ; Тут что-то читаешь
    20.                     ; и что-то делаешь
    21.                     ;
    22.                 .endif
    23.                 assume edx:nothing
    24.             .endif
    25.             assume ebx:ptr nothing
    26.         .elseif wParam == DBT_DEVICEREMOVECOMPLETE
    27.         .endif
    28.     .else
    29.         invoke DefWindowProc,hWin,uMsg,wParam,lParam
    30.     .endif
    31.     ret
    32. WndProc endp
     
  7. Sidorma

    Sidorma New Member

    Публикаций:
    0
    Регистрация:
    9 дек 2010
    Сообщения:
    35
    _sheva740
    Огромное спасибо за ответ.
    Тока вот код не вкуриваю... Это на каком языке? :)

    А как можно еще скрыть данные на флэш-носителе?
     
  8. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    На masm-e вообще то.
    Но тебе же я так понял драйвер нужен был.
    Пока тут все в ring 3.
    Как с сервака получить данные по запросу было тут #8.
    Там хоть и на фасме но простая суть видна.

    Ну для начала, пока все остальное пропишешь попробуй просто
    xor-рить. Потом, когда остальное наладишь,
    применишь что-то посложнее.
     
  9. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    Обнови, там выше исправлено.
     
  10. Sidorma

    Sidorma New Member

    Публикаций:
    0
    Регистрация:
    9 дек 2010
    Сообщения:
    35
    Я думал так.
    1. Написать фильтр драйвер (low , up ?).
    2. Установить этот драйвер на ПК.
    3. При подключении любого флэш-носителя к ПК, хост будет находить именно этот драйвер и, соответственно, данные на СН не будут видны, пока... драйвер не "проверит" СН на родню, если можно так выразиться.
    4. Если все в порядке, то необходимо разрешить доступ, если СН не родной, то запретить.

    Но тут возникли вопросы... Если на другом ПК не установлен этот фильтр драйвер, то данные СН будут видны... Поэтому эта идея показалась мне ошибочной. Теперь я ищу иные способы решения проблемы. Может быть, можно установить какой-нибудь фильтр на СН?

    К сожалению, еще не изучал асм. Но пора бы уже... ))
    Пишу на Сях и плюсах в основном.
     
  11. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    Но если я правильно понял, ты носишь флешку
    от ПК к ПК и на СН у тебя драйвер только чтобы
    скрыть файлы на флешке? А если там все ОК,
    то файл появляется?
    Ну если важно скрывать, то наверное нужен драйвер.
    Но зачем скрывать, если можно показать jpg например.
     
  12. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    Или тут проще.
     
  13. Sidorma

    Sidorma New Member

    Публикаций:
    0
    Регистрация:
    9 дек 2010
    Сообщения:
    35
    Да, все верно.

    Суть в том, чтобы
    Да, нужен. Только как его поставить не на ПК, а на СН?
    Я не представляю, как подобное можно сделать.
     
  14. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    Наверное это задача решается шифром Эль-Гамаля.
    Скачай "Криптографические методы защиты информации Рябко Б.Я."
    там все на пальцах.
    Так а че, если ты пришел на место, получил "админа",
    установил на ПК дров и суешь свою флеху.
     
  15. Sidorma

    Sidorma New Member

    Публикаций:
    0
    Регистрация:
    9 дек 2010
    Сообщения:
    35
    Спасибо за совет. Я подумаю над этим.

    Это да, ну а что, если флэха попадет в руки к злоумышленнику?
    На своем ПК у него никакой проверки не будет, так как дрова я только на свой скинул ))
    В этом-то и соль.
     
  16. Sidorma

    Sidorma New Member

    Публикаций:
    0
    Регистрация:
    9 дек 2010
    Сообщения:
    35
    Люди!
    Пожалуйста, не стесняйтесь.
    Высказывайте даже самые бредовые идеи.
    Поверьте - мне от всего будет польза.
     
  17. tchunya

    tchunya New Member

    Публикаций:
    0
    Регистрация:
    13 ноя 2008
    Сообщения:
    29
    Уточните, пожалуйста, вашу задачу: что конкретно необходимо сделать. Разрешить доступ к данным на СН конкретному пользователю на конкретной машине? Или обеспечить возможность работы целого USB-устройства только на конкретной машине? В случае с данными задачу можно решить с использованием шифрования и даже без драйвера: предоставьте п-лю утилиту, которая будет его аутентифицировать, а далее предоставлять ему доступ к данным на СН в каком-либо удобоваримом виде. Данные в этом случае могут располагаться в зашифрованной области на диске, например, в файле. В случае, если необходимо ограничить доступ к самому девайсу, то без доступа к firmware железки в общем случае это невозможно, т.к. нет гарантии, что кто-нибудь не скрадет девайс и не воткнет его куда-нибудь, где не стоит ваше ПО.
     
  18. Sidorma

    Sidorma New Member

    Публикаций:
    0
    Регистрация:
    9 дек 2010
    Сообщения:
    35
    Не просто на конкретной машине, а еще и с конкретным пользователем.
    1. Подключаем СН к ПК... Как мне сделать так, чтобы при подключении USB накопителя автоматически запускалась программа (расположенная опять же на СН), которая должна считывать характеристики ПК и хэшировать вместе с характеристиками СН для получения уникального идентификатора, а затем предоставить пользователю ввести пароль, который вкупе с id дает добро на работу с данным СН ? Запутанно, но, надеюсь, все понятно :)
    Данные должны быть на СН.
    Да, об этом я говорил выше. При попадании СН в руки к злоумышленнику, он не должен иметь доступ к данным.
     
  19. tchunya

    tchunya New Member

    Публикаций:
    0
    Регистрация:
    13 ноя 2008
    Сообщения:
    29
    Под диском имелось в виду СН
     
  20. tchunya

    tchunya New Member

    Публикаций:
    0
    Регистрация:
    13 ноя 2008
    Сообщения:
    29
    По поводу запуска программы с флешки: autorun.inf