Поиск по сайту:

Начало работы с инструментами шифрования командной строки в Linux


На этой странице

  1. 1 Введение
  2. 2 Шифрование с помощью GPG
    1. 2.1 Введение в GPG
    2. 2.2 Шифрование с использованием симметричного ключа
    3. 2.3 Шифрование с открытым ключом
    4. 2.4 Почему GPG?

    1. 3.1 Введение в OpenSSL
    2. 3.2 Генерация открытого и закрытого ключей
    3. 3.3 Шифрование данных
    4. 3.4 Расшифровка данных

    1. Введение

    Шифрование — это процесс кодирования сообщений или информации таким образом, чтобы их могли прочитать только авторизованные стороны. Поскольку в нашем цифровом поколении практически отсутствует конфиденциальность, шифрование наших данных является одним из наиболее необходимых инструментов. Большинство приложений, таких как Gmail, шифруют наши данные, но данные в вашей системе все еще не защищены, и есть хакеры или неавторизованные пользователи, ожидающие доступа к ним. Одним из способов минимизировать риск кражи данных является шифрование данных, которые присутствуют даже в нашей локальной системе.

    В этом руководстве демонстрируется несколько методов шифрования данных в системах Linux с помощью инструментов командной строки.

    2 Шифрование с помощью GPG

    2.1 Введение в GPG

    GPG означает GNU Private Guard, утилиту командной строки, которая используется для шифрования и дешифрования файлов или папок данных с использованием симметричного шифрования или шифрования с открытым ключом. GPG — это лицензированная GPL альтернатива пакету криптографических программ PGP. GPG также используется системами, совместимыми с OpenPGP.

    2.2 Шифрование с использованием симметричного ключа

    Здесь у меня есть файл с именем \test.txt\, который я зашифрую, а затем расшифрую с помощью симметричного ключа и распечатаю расшифрованный текст в другой файл с именем \output.txt\ .

    Выполните следующую команду, чтобы зашифровать файл test.txt с помощью симметричного ключа. Опция \-c\ указала GPG на использование симметричных ключей.

    gpg -c test.txt

    Результат этого будет выглядеть как на изображении ниже. При первом запуске GPG создается папка .gnupg. Он содержит файлы, необходимые для процесса шифрования. Затем он попросит вас дважды ввести парольную фразу. Убедитесь, что вы вводите надежную парольную фразу и помните ее, так как она понадобится вам в будущем для расшифровки ваших файлов.

    Таким образом, после правильного ввода парольной фразы создается файл с именем \test.txt.gpg\. Это зашифрованный файл. На следующем изображении показан файл до и после шифрования. Вы можете видеть, что зашифрованный текст имеет нечитаемый формат.

    Используйте следующую команду для расшифровки зашифрованного файла

    gpg -o output.txt test.txt.gpg

    Вам будет предложено ввести парольную фразу, используемую для шифрования. Как только вы введете это правильно, файл output.txt будет создан с тем же содержимым, что и файл test.txt. Результат расшифровки может выглядеть примерно так, как показано на рисунке ниже:

    2.3 Шифрование с открытым ключом

    Здесь мы зашифруем набор файлов, используя механизм шифрования открытого/закрытого ключа GPG. Это включает в себя создание закрытого ключа, который никогда не должен передаваться никому, и открытого ключа, который должен быть передан людям, которые хотят отправить вам зашифрованные данные.

    Сначала нам нужно будет упаковать файлы в сжатую папку. Здесь у меня есть каталог с именем \enctest\ с тремя файлами от test1.txt до test3.txt. Мы сожмем этот каталог в файл tar.gz. Я буду использовать следующую команду для создания сжатого архива tar.gz:

    tar czf files.tar.gz ~/enctest

    Это создает файл \files.tar.gz\. Теперь нам нужно сгенерировать пару открытый/закрытый ключ. Выполните следующую команду, чтобы сгенерировать ключ:

    gpg --gen-key

    Помните, что это нужно сделать только один раз, и этим ключом можно зашифровать любое количество файлов и папок. После того, как вы наберете эту команду, вам будут заданы различные вопросы. Вопросы будут:

    • Какое шифрование использовать? Я выбрал 1, который является RSA и RSA.
    • Каким должен быть размер ключа? Я выбрал 2048, можно выбрать любой размер в диапазоне от 1024 до 4096.
    • Когда истекает срок действия ключа? Я выбрал 0 , что означает, что срок действия ключа не ограничен. Но может указать дни, недели или годы, если вы хотите, чтобы срок действия истекал в определенное время.

    Другие вещи, такие как парольная фраза, будут запрошены, вам будет предложено ввести ее дважды. Убедитесь, что вы используете надежный пароль и помните кодовую фразу. Также будут использованы ваши учетные данные. Учетные данные, которые я использовал здесь (приведены ниже), предназначены только для тестирования. Рекомендуется использовать свои подлинные учетные данные, такие как имя, адрес электронной почты и оставить комментарий.

    В следующем содержании показан мой ответ и то, каким будет результат:

    gpg (GnuPG) 1.4.16; Copyright (C) 2013 Free Software Foundation, Inc.
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.
    
    Please select what kind of key you want:
       (1) RSA and RSA (default)
       (2) DSA and Elgamal
       (3) DSA (sign only)
       (4) RSA (sign only)
    Your selection? 1
    RSA keys may be between 1024 and 4096 bits long.
    What keysize do you want? (2048) 2048
    Requested keysize is 2048 bits
    Please specify how long the key should be valid.
             0 = key does not expire
            = key expires in n days
          w = key expires in n weeks
          m = key expires in n months
          y = key expires in n years
    Key is valid for? (0) 0
    Key does not expire at all
    Is this correct? (y/N) y
    
    You need a user ID to identify your key; the software constructs the user ID
    from the Real Name, Comment and Email Address in this form:
        "Heinrich Heine (Der Dichter) <>"
    
    Real name: John Doe
    Email address: 
    Comment: tis is key generation
    You selected this USER-ID:
        "John Doe (tis is key generation) <>"
    
    Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
    You need a Passphrase to protect your secret key.
        

    Как только вы введете парольную фразу, он начнет генерировать ключ. Он попросит вас выполнить некоторую работу. Рекомендуется перемещать мышь или печатать что-либо или использовать диски для открытия некоторых файлов. Он будет использовать эту работу для генерации случайных битов. Возможно, вам придется сделать это несколько раз. Результат для меня показан ниже:

    We need to generate a lot of random bytes. It is a good idea to perform
    some other action (type on the keyboard, move the mouse, utilize the
    disks) during the prime generation; this gives the random number
    generator a better chance to gain enough entropy.
    
    Not enough random bytes available.  Please do some other work to give
    the OS a chance to collect more entropy! (Need 187 more bytes)
    +++++
    ...+++++
    We need to generate a lot of random bytes. It is a good idea to perform
    some other action (type on the keyboard, move the mouse, utilize the
    disks) during the prime generation; this gives the random number
    generator a better chance to gain enough entropy.
    
    Not enough random bytes available.  Please do some other work to give
    the OS a chance to collect more entropy! (Need 92 more bytes)
    .....+++++
    
    Not enough random bytes available.  Please do some other work to give
    the OS a chance to collect more entropy! (Need 114 more bytes)
    
    +++++
    

    После этого ключ был сгенерирован. Это будет похоже на содержимое ниже:

    gpg: /home/akshay/.gnupg/trustdb.gpg: trustdb created
    gpg: key FA2314B6 marked as ultimately trusted
    public and secret key created and signed.
    
    gpg: checking the trustdb
    gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
    gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
    pub   2048R/FA2314B6 2015-04-02
          Key fingerprint = 5A02 5D77 3E0A 8B69 8086  3032 DE51 6EA5 FA23 14B6
    uid                  John Doe (tis is key generation) <>
    sub   2048R/6F78E642 2015-04-02
    

    Здесь есть две важные вещи: укажите надежную парольную фразу и обязательно запомните ее.

    Теперь, когда ключи сгенерированы, нам нужно будет экспортировать файл открытого ключа, чтобы импортировать его в другие системы или отправить по электронной почте. Чтобы начать экспорт, используйте следующую команду:

    gpg --armor --output file-enc-pubkey.txt --export 'John Doe'

    Замените John Doe именем, которое вы использовали при создании ключа.

    Также рекомендуется сделать резервную копию закрытого ключа. Мы можем использовать gpg для этого. Чтобы сделать резервную копию, используйте следующую команду:

    gpg --armor --output file-enc-privkey.asc --export-secret-keys 'John Doe'

    Здесь файл \file-enc-privkey.asc\ будет безопасно хранить резервную копию закрытого ключа. После завершения экспорта и резервного копирования ключа мы можем зашифровать и расшифровать файл .tar.gz. Используйте следующую команду для шифрования:

    gpg --encrypt --recipient 'John Doe' files.tar.gz

    Не забудьте изменить John Doe в приведенной выше команде на имя, данное вами во время генерации ключа, иначе шифрование не удастся. При успешном выполнении команды будет создан зашифрованный файл с именем \files.tar.gz.gpg\.

    Теперь мы можем расшифровать архив tar.gz с помощью следующей команды. Он будет использовать закрытый ключ вместе с парольной фразой для расшифровки и предоставления расшифрованной папки. Используйте следующую команду для расшифровки:

    gpg --output output.tar.gz --decrypt files.tar.gz.gpg

    Приведенная выше команда запросит парольную фразу, а затем расшифрует зашифрованный файл и создаст сжатый файл с именем \output.tar.gz\, который затем можно будет извлечь в папку с помощью tar, чтобы вернуть файлы. . На следующем изображении показаны выходные данные команд шифрования и дешифрования:

    2.4 Почему GPG?

    GPG поддерживает как шифрование с открытым ключом, так и симметричное шифрование, что обеспечивает хорошую гибкость и может использоваться для широкого круга приложений. Нет необходимости предоставлять какую-либо конфиденциальную информацию, а также gpg может иметь любое количество шифраторов с использованием открытого ключа. Пользователю предоставляется возможность выбрать один из нескольких алгоритмов шифрования. Эти причины делают его очень полезным инструментом безопасности для шифрования файлов и папок или данных.

    3 Шифрование с использованием OpenSSL

    3.1 Введение в OpenSSL

    Проект OpenSSL — это совместная работа по разработке надежного, полнофункционального набора инструментов коммерческого уровня с открытым исходным кодом, реализующего протоколы Secure Sockets Layer (SSL v2/v3) и Transport Layer Security (TLS), а также полноценный общий целевая криптографическая библиотека. OpenSSL доступен для большинства Unix-подобных операционных систем и основан на SSLeay. OpenSSL также поддерживает множество приложений SSH, SFTP и SCP. Здесь мы используем OpenSSL для шифрования данных, используя асимметричное шифрование и шифр AES. Симметричное шифрование можно использовать для шифрования больших файлов или данных.

    3.2 Генерация открытых и закрытых ключей

    Первое, что нам нужно сделать, это сгенерировать открытый и закрытый ключи. Сначала мы сгенерируем закрытый ключ. Для этого используйте следующую команду:

    openssl genrsa -out private_key.pem 1024

    Приведенная выше команда указывает OpenSSL использовать RSA для создания закрытого ключа размером 1024 байта. Затем ключ надежно сохраняется в файле с именем \private_key.pem\. Вывод этой команды будет похож на изображение ниже:

    Как только закрытый (секретный) ключ сгенерирован, мы можем использовать его для создания открытого ключа, чтобы они образовали пару. Используйте следующую команду для создания открытого ключа:

    openssl rsa -in private_key.pem -out public_key.pem -outform PEM -pubout

    Это будет выглядеть как на картинке ниже:

    3.3 Шифрование данных

    Теперь мы можем использовать открытый ключ для шифрования данных. Здесь мы зашифруем файл test.txt и сохраним зашифрованный текст в файле encrypt.dat. Выполните следующую команду:

    openssl rsautl -encrypt -inkey public_key.pem -pubin -in encrypt.txt -out encrypt.dat

    На следующих изображениях показан текстовый файл до и после шифрования:

    3.4 Расшифровка данных

    Здесь мы используем закрытый ключ для расшифровки файла. Выполните следующую команду:

    openssl rsautl -decrypt -inkey private_key.pem -in encrypt.dat -out decrypt.txt

    Файл decrypt.txt будет содержать расшифрованные данные. Выполнение вышеуказанной команды, а также содержимое файла показано на изображении ниже:

    4. Вывод

    Показанные выше методы обладают высокой степенью безопасности при осторожном использовании и позволяют использовать несколько шифров и уровней безопасности для разных уровней безопасности. Таким образом, любой из них может использоваться в различных сценариях для шифрования файлов/папок и необработанных данных.

    5 ссылок

    • Открытый SSL
    • ОпенПГП