Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
init_module;
cleanup_module.
Makefile
Для получения загружаемого модуля ядра (драйвера) создадим Makefile следующего содержания:
CC = gcc
module = sys_call_gost.o
CFLAGS = -O2 -Wall
LINUX = /usr/src/linux
MODFLAGS = -D__KERNEL__ -DMODULE -I$(LINUX)/include
sys_call_gost.o: sys_call_gost.c
$(CC) $(CFLAGS) $(MODFLAGS) -c sys_call_gost.c
Модуль генерации ключевых данных
Задача модуля генерации – формирование ключевых данных (долговременного ключа, сеансового ключа и синхропосылки) и запись их на носитель. Размер ключей и синхропосылки фиксирован. Длина сеансового ключа составляет 32 байта, долговременного – 64 байта, длина синхропосылки – 8 байт.
В качестве носителя ключевых данных выберем дискету. На этой дискете (далее ключевая дискета) будут размещаться три файла:
n файл долговременного ключа key_d длиной 64 байта;
n файл сеансового ключа key_s длиной 32 байта;
n файл синхропосылки sp длиной 8 байт.
Доступ к ключевой дискете должен иметь только администратор системы. Для предотвращения компрометации ключевой информации администратору необходимо обеспечить соответствующие условия ее хранения.
Подготовим ключевую дискету к работе:
fdformat /dev/fd0u1440
mkfs -V -t ext2 /dev/fd0
Перед записью ключевых данных в БКИ драйвера необходимо смонтировать ключевую дискету. Создадим точку монтирования:
mkdir /floppy
и смонтируем туда файловую систему, находящуюся на ключевой дискете:
mount -t ext2 /dev/fd0 /floppy
Теперь рассмотрим код генератора ключей. Заголовочные файлы:
#include <stdio.h>
#include <fcntl.h>
Точка монтирования файловой системы ключевого носителя:
#define MOUNT_DIR "/floppy"
int main()
{
int s,d,sp,rnd;
char buf[64];
Для получения случайной последовательности (а точнее, псевдослучайной) воспользуемся файлом /dev/urandom:
rnd=open("/dev/urandom",O_RDONLY);
Формируем ключевые данные. Создаем на ключевом носителе файлы ключей и синхропосылки:
d=open(MOUNT_DIR"/key_d",O_CREAT|O_WRONLY,0600);
s=open(MOUNT_DIR"/key_s",O_CREAT|O_WRONLY,0600);
sp=open(MOUNT_DIR"/sp",O_CREAT|O_WRONLY,0600);
Записываем в созданные файлы случайную последовательность, считанную из /dev/urandom: