Как это работает? - Алгоритм шифрования PGP

Как это работает? - Алгоритм шифрования PGP

Эксплойт

PGP (Pretty Good Privacy) — это очень надежная криптографическая программа, которая позволяет пользователям анонимно обмениваться информацией в электронном виде. Пользователь PGP создает пару ключей: открытый и закрытый ключи. При генерации ключей задаются данные владельца (имя и email), тип ключа, длина ключа и срок его действия. Открытый ключ используется для шифрования и проверки цифровой подписи. Закрытый ключ — для декодирования и создания цифровой подписи. Программа бесплатна и ее без труда можно найти в Интернете.

Цифровая подпись — это особый реквизит документа, который позволяет установить отсутствие искажения информации в электронном документе с момента формирования цифровой подписи и подтверждению принадлежности цифровой подписи владельцу. В отличии от ручной подписи, цифровую подпись почти невозможно подделать.

Как это работает?

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

PGP имеет 3 типа ключей:

  • RSA
  • RSA Legacy
  • GnuPG

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

После установки программы нам следует создать свою пару ключей:

Код:

gpg --gen-key

В процессе создания ключей нас попросят ввести кодовую фразу, которую вы должны будете запомнить. Далее создаем публичный ключ, где в --output указываем файл в который мы сохраним наш ключ, а в --export почту, на который будет отправлен ключ.

Код:

gpg --output hackerpubkey.gpg --export test@mail.com

Для просмотра доступных ключей используем команды:

Код:

gpg --list-keys
gpg --list-secret-keys
gpg --list-public-keys

Для импорта ключей используйте команды:

Код:

gpg --import pubkey.txt
gpg --allow-secret-key-import --import privkey.txt

Для шифрования файла нам надо указать --encrypt, потом в --recipient получателя и далее сам файл:

Код:

sudo gpg --encrypt --recipient yahowa@hurify1.com file.txt

После выполнения команды появится зашифрованный файл с расширением .gpg. В итоге строка "Hi, Hacker!" превратилась в набор символов:

Чтобы расшифровать файл используйте:

Код:

gpg --decrypt-files file.txt.gpg

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

Код:

gpg --output key.txt --armor --export-secret-key THSamurai

--armor означает, что файл нужно передать в текстовом виде.

Если вам надо подписать ключ другого пользователя:

Код:

$gpg --edit-key Hacker DefWolf
$sign
$gpg --encrypt --output files.gpg --sign --armor --recipient defwolf@mail.com file.txt

--sign означает, что файл подпишется вашим приватным ключом.


Report Page