Re[3]: вопрос к Valerio и Сторожу....
От: Storozh Россия  
Дата: 14.12.05 16:38
Оценка: 6 (1)
Здравствуйте, Sergey A. Sokolov, Вы писали:

SAS>Столкнулся с необходимостью использовать криптоалгоритмы в режиме ядра. Поискав, нашел старое сообщение от Valerio.


Оговорюсь сразу, что про FIPS ничего нового не скажу

Однако, если речь идет о российских криптоалгоритмах, то есть опыт подключения Signal-COM CSP и CryptoPro CSP. Оба провайдера имеют сертификаты и реализуют шифрование по ГОСТ (в Signal-COM используются только режимы гаммирования и гаммирования с обратной связью).

Напрямую, сервисы предоставляемые Signal-COM можно использовать только в пользовательском режиме. Поэтому у себя я применил механизм LPC для взаимодействия driver — helper service. Сервис создает криптографический контекст, передает его описатель в драйвер, а тот при необходимости дергает сервис для кодирования данных, передавая в кач-ве параметра нужный кр. контекст. Причем на быстродействии данные манипуляции не сказываются сколько-нибудь заметным образом.


Хорошая новость в том, что CryptoPro CSP 3.0 имеет в своем составе driver-export, предоставляющий сервисы шифрования в режиме ядра. Плохая — в том, что документация редкостное дерьмо, примеры изобилуют неточностями и т.п. Например, sample драйвера — это переделанный вариант ..\src\general\ioctl из DDK, где просто сменили шапку с копирайтами и скрупулезно перевели все оригинальные комментарии (это мжно в юмор ):

    //
    // Опредление, который код I/O контроля был задан.
    //

    switch ( irpSp->Parameters.DeviceIoControl.IoControlCode )
    {
        case IOCTL_CPIOCTL_METHOD_BUFFERED: 

        //
        // В этом методе управляющее устройство I/O устанавливает длину буфера 
        // равной большей из длин пользовательских input buffer и output buffer,
        // присвает адрес Irp->AssociatedIrp.SystemBuffer, и копирует содержимое
        // пользовательского input buffer в SystemBuffer
        //


Помимо этого, этот драйвер продуцирует BSOD на checked build OS при выгрузке.

Вот и все пока. Если интересуют подробности — всегда рад
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.