CryptoAPI ядра Linux: применение российской криптографии
CryptoAPI представляет собой
реализацию криптографических алгоритнов
с предоставлением доступа к ним как из самого ядра, так и из прикладного
программного обеспечения. Наиболее яркими представителями этого программного
обеспечения является IPSEC (VPN ) и dm-crypt (шифрованная файловая система).
Специалистами ООО "ЛИССИ-Софт" разработан механизм добавления в ядро ОС Linux
российских криптографических алгоритмов :
- выработку значения хэш-функции в соответствии с требованиями ГОСТ Р 34.11-94 / ГОСТ Р 34.11-2012 "Информационная технология. Криптографическая защита информации. Функция хэширования";
- зашифрование/расшифрование данных и вычисление имитовставки в соответствии с требованиями ГОСТ 28147-89 "Системы обработки информации. Защита криптографическая";
- зашифрование/расшифрование данных алгоритмами шифрования "Кузнечик" (КУЗмин, НЕЧаев И Компания) и "Магма" в соответствии с требованиями "ГОСТ Р 34.12-2015 Информационная технология. Криптографическая защита информации. Блочные шифры" и "ГОСТ Р 34.13-2015 Информационная технология. Криптографическая защита информации. Режимы работы блочных шифров".
Проверить наличие модулей шифрования по ГОСТ в режимах ECB и CBC можно выполнить следующую команду:
bash-4.3$ /usr/local/bin64/cryptsetupbenchmark-cgost-ecb
# Tests are approximate using memory only (no storage IO).
#Algorithm | Key |Encryption |Decryption
gost-ecb256b50,4 MiB/s49,2 MiB/s
bash-4.3$ /usr/local/bin64/cryptsetupbenchmark-ckuznyechik-ecb
# Tests are approximate using memory only (no storage IO).
#Algorithm | Key |Encryption |Decryption
kuznyechik-ecb256b3,4 MiB/s3,2 MiB/s
bash-4.3$# Tests are approximate using memory only (no storage IO).
bash-4.3$
#Algorithm | Key |Encryption |Decryption
aes-ecb256b1361,8 MiB/s1381,5 MiB/s
bash-4.3$
Итак, с модулями мы разобрались. Теперь можно создавать защищенную файловую систему с шифрованием на ГОСТ'ах. Для начала создадим файл test.bin:
# dd if=/dev/zero of=/tmp/test.bin bs=10M count=50
50+0 записей получено
50+0 записей отправлено
скопировано 524288000 байт (524 MB), 0,44706 c, 1,2 GB/c
[root@VOrlov_64 tmp]#
Шифрованную файловую систему будем создавать именно в этом
файле:
[root@VOrlov_64 tmp]# /usr/local/bin64/cryptsetup - kuznyechik-ecb -h stribog256-y luksFormat /tmp/test.bin
WARNING!
========
This will overwrite data on /tmp/test.bin irrevocably.
Are you sure? (Type uppercase yes): YES
Enter passphrase: 01234567
Verify passphrase: 01234567
[root@VOrlov_64 tmp]#
Подключениефайловойсистемы :
#cryptsetup luksOpen <устройство/файл> volume1
И так подключаем нашу защищенную ФС к тому volume1:
[root@VOrlov_64 tmp]# /usr/local/bin64/cryptsetup luksOpen /tmp/test.bin volume1
Enter passphrase for /tmp/test.bin:
[root@VOrlov_64 tmp]#
Далее работаем с устройством /dev/mapper/volume1 как с обычным разделом жесткого диска.
Посмотреть параметры файловой системы :
root@VOrlov_64 tmp]#/usr/local/bin64/cryptsetup status /dev/mapper/volume1
/dev/mapper/volume1 is active.
type:LUKS1
cipher:kuznyechik-ecb
keysize: 256 bits
device:/dev/loop0
loop:/tmp/test.bin
offset:4096 sectors
size:1019904 sectors
mode:read/write
[root@VOrlov_64 tmp]#
После этого достаточно создать файловую систему (ФС) на устройстве /dev/mapper/volume1:
#mkfs.ext4 /dev/mapper/volume1
#
Монтируем ФС и работаем с ней :
#mount /dev/mapper/volume1 /mount/TEST_DM_CRYPT_GOST
#
Все, теперь мы можем создавать шифрованные ФС на ГОСТ 28147-89 (он же
ГОСТ Р 34.12-2015 Магма) и ГОСТ Р 34.12-2015 (Кузнечик) в режимах CBC, ECB. В
качестве алгоритма хэширование могут использоваться ГОСТ Р 34.11-94, stribog256 (ГОСТ Р 34.11-2012 256 бит) и stribog512 (ГОСТ Р 34.11-2012 512бит).
Дополнительные материалы:
CryptoAPI ядра Linux: разработка и применение российской криптографии