РАБОТА С АЛГОРИТМАМИ AES И RSA В OPENSSL
|
Примеры работы с алгоритмами AES и RSA в системе OpenSSL.
|
Приведены примеры работы с алгоритмами используемыми для обмена конфиденциальной информации в НСКСФ России. Для работы используется консоль системы OpenSSL. В качестве симметричного алгоритма в НСКСФ используется алгоритм Rijndael (AES, Advanced Encryption Standard) с длиной ключа 256 бит в режиме гаммирования с обратной связью (CFB, Cipher Feedback Mode). В качестве ассиметричного алгоритма используется алгоритм RSA (Rivest-Shamir-Adleman) с секретными ключами длиной 4096 и 8192 бита.
Генерирование случайного файла
openssl rand -out Random_File -rand Any_File 1024
После выполнения этой команды в файл "Random_File" будут записаны 1024 случайных байта. Хэш от файла "Any_File" используется для установки генератора псевдо-случайных байт.
Шифрование файла симметричным алгоритмом AES
openssl enc -aes-256-cfb -e -in info.dat -out info.crypt
После выполнения этой команды информация из файла "info.dat" будет записана в зашифрованном виде (при этом будет запрошен пароль и его подтверждение) в файл "info.crypt".
Дешифрование файла симметричным алгоритмом AES
openssl enc -aes-256-cfb -d -in info.crypt -out info.dat
После выполнения этой команды зашифрованная информация из файла "info.crypt" дешифруется (при этом будет запрошен пароль и его подтверждение) и записывается в файл "info.crypt".
Создание секретного ключа RSA
openssl genrsa -out SecretKey.pem -aes256 -rand Random_File 4096
Создается секретный ключ RSA длиной 4096 бит, шифруется по алгоритму AES (при этом будет запрошен пароль и его подтверждение) и записывается в зашифрованном виде в файл "SecretKey.pem" в формате PEM.
В качестве файла "Random_File" опции -random необходимо указать любой файл, используемый для работы генератора псевдо-случайных чисел. Сам файл может быть произвольного размера, так как используется только вычисленный для этого файла хэш фиксированной длины.
В случае необходимости по настоящему случайный файл можно создать зашифровав некоторый объем информации по произвольному паролю. Так же случайную информацию содержат сжатые и зашифрованные архивы.
Создание публичного ключа RSA
openssl rsa -in SecretKey.pem -out PublicKey.pem -pubout
Создается публичный ключ RSA на основе секретного ключа "SecretKey.pem" (при этом будет запрошен пароль на зашифрованный секретный ключ) и записывается в файл "PublicKey.pem" в формате PEM.
Шифрование файла алгоритмом RSA
openssl rsautl -in Info -out Crypt -inkey PublicKey.pem -pubin -encrypt
Файл "Info" зашифровывается с использованием публичного ключа "PublicKey.pem" и записывается в зашифрованном виде в файл "Crypt". За один раз можно зашифровать объем данных по размеру не превышающий длину ключа (т.е. 512 байт для 4096-битного ключа и 1024 байт для 8192-битного ключа).
Дешифрование файла алгоритмом RSA
openssl rsautl -in Crypt -out Info -inkey SecretKey.pem -decrypt
Файл "Crypt" дешифруется с использованием секретного ключа "SecretKey.pem" (при этом будет запрошен пароль на зашифрованный секретный ключ) и записывается в файл "Info".
|