Обертка на драйвер SATA для прозрачной роскриптовки секторов

Тема в разделе "WASM.UNIX", создана пользователем rudik, 19 июн 2009.

  1. rudik

    rudik Руденко Артём

    Публикаций:
    0
    Регистрация:
    6 дек 2006
    Сообщения:
    302
    Адрес:
    г. Харьков
    Короче говоря нужно написать драйвер(модуль ядра) для прозрачной расшифровки для линукса секторов винта, то есть нужно чтобы вызовы с юзерспейса приходили в мой драйвер и пере направлялись в драйвер саты, откуда читался бы сектор и вертался ко мне, я его расшифровывал и отправлял в юзерспейс. Устройство будет регистрироваться отдельно и не будет никаким образом мешать жизни основного драйвера. С написанием драйверов под линух знаком довольно сильно, но как решить эту проблему идей пока нет. Всем заранее спасибо за помощь!
     
  2. r90

    r90 New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2005
    Сообщения:
    898
    crypto loop тебе в помощь. ничего писать не надо.
     
  3. rudik

    rudik Руденко Артём

    Публикаций:
    0
    Регистрация:
    6 дек 2006
    Сообщения:
    302
    Адрес:
    г. Харьков
    Не совсем подходит, точнее вообще не подходит. dmcrypt реализация тоже не подходит, открыть устройство через sys_open() не подходит в рамках GPL. Есть LibATA, но в ней черт ногу сломает.
     
  4. r90

    r90 New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2005
    Сообщения:
    898
    Эта фраза мне непонятна. GPL запрещает тебе использовать sys_open? Это как? Да и мне непонятно, при чём тут sys_open? Юзерспейс, в общем-то, ничего про sys_open знать не будет. Он будет вызывать open из libc, и работать с /dev/loop0, даже не подозревая, сколько драйверов устройств задействовано в чтении сектора.

    Я не понимаю зачем городить криптор не надстройкой над блочным устройством диска, а на более низком уровне. Тебе ж придётся писать не только функционал crypto-loop, но и функционал драйвера сата диска. Не забывая при этом про кеширование и прочую лабуду. А если, вдруг, надо будет сменить sata на usb или ещё что-нибудь? Писать ещё один драйвер?

    Я бы понял, если бы ты пытался встроить криптор в более высокий уровень -- в драйвер фс. Для надёжности хранения данных полезно криптовать не диск целиком, а отдельные файлы. Но пихать его ниже, по-моему, не совсем умно.

    Короче, объясни проблему подробно. Мне кажется, ты ищешь себе геморрой, там где его быть не должно.
     
  5. rudik

    rudik Руденко Артём

    Публикаций:
    0
    Регистрация:
    6 дек 2006
    Сообщения:
    302
    Адрес:
    г. Харьков
    ГПЛ не дает импортировать все функции в не открытые драйвера. Дается только основное апи, типа io_remap_pfn_range(), и модуль sys туда никаким образом не вписывается.
    Вкратце проблема выглядит следующим образом: есть винчестер, закриптованый злоалгоритмом, который мне не интересен и не нужен, на котором лежит файловая система с нужным софтом и тд. Линукс должен примонтировать етот раздел как корневой без изменения основных утилит типа mount прозрачно для себя. Для этого решено оставить устройство /dev/sda как есть и зарегистрировать сверху него /dev/sdacr, который будет по сути повторять sda, только выдавать операции чтения с уже росскриптоваными данными.
     
  6. r90

    r90 New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2005
    Сообщения:
    898
    Через юзерспейс? пишется опенсурс драйвер блочного устройства, который выполняя свой read будет обращатся за данными к демону в юзерспейсе. Что там будет делать демон, этот драйвер даже не будет подозревать. А демон на самом деле будет выполнять read на /dev/sda и раскриптовывать. Уж из юзерспейса-то можно не нарушая гпл использовать open/read/write/lseek/close?