Охраняем свои секреты, или GPG на службе email

Аватар пользователя VSL

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

Современные криптографические алгоритмы прежде всего открыты. Многие из них свободны в распространении и при этом, как на первый взгляд это не странно звучит, их стойкость и доверие к ним очень высоки. Ранее требовалось держать в секрете сам метод сокрытия информации, в результате чего было необходимо иметь столько разных алгоритмом, сколько было пользователей шифрования, сегодняшние методы позволяют иметь лишь несколько качественно выполненных и хорошо проверенных шифров и пользоваться ими всем желающим, секретом в данном случае является не конструкция шифра, а ключ. Достаточно сказать, что для симметричного шифра с длиной ключа 128 бит размер ключевого поля (количество возможных вариантов ключей) будет равен 2 в 128 степени. Может ли человеческий мозг представить себе такое число? Скорее всего, что только путем сравнительных оценок. К примеру с помощью ЭВМ нужно полным перебором (нахождение нужного шифровального ключа проверками всех возможных и вероятных ключей из ключевого пространства) найти нужный ключ. Если наша ЭВМ на проверку одного ключа будет тратить минимальную в физике величину энергии (переход электрона с одной орбиты атома на другую), то для перебора всех ключей потребуется истратить столько энергии, сколько будет достаточно для растопления всех льдов Арктики. Если взять длину ключа симметричного алгоритма в 256 бит, то задача усложняется в 2 в 128 степени или в 340282366920938463463374607431768211456 раз! Существуют и аналогичные временные оценки. Не вдаваясь в подробности можно сказать, что для человеческого мозга временные промежутки, за которые полным перебором можно найти тот же 128 битный ключ, не представимы.

Зачем шифровать почту?

Очень часто я встречаю людей, которые говорят: – «Мне скрывать нечего!» Тогда я готов их спросить – пусть Вы не преступник, не вор, не шпион или иная нехорошая личность, а вполне добропорядочный и законопослушный гражданин. Но разве Вы всегда все говорите громко и вслух, когда возникает необходимость кому-либо что то сказать без посторонних. Разве у вас никогда не было секретов или просто информации, которая не предназначена для широкого распространения? Разве Вы не прячете обычные бумажные письма в конверт? Разве Вы готовы передать через совершенно постороннего, неизвестного вам курьера важную информацию, скажем реквизиты платежного чека, пароль или сведения о результатах деловых переговоров?

Сейчас на многих предприятиях существуют положения о коммерческой тайне, в то время как многие документы, на которые вполне можно ставить гриф «конфиденциально» отправляются по почте деловым партнерам или в головной офис организации в совершенно открытом виде. Я думаю причина этого в инерционности мышления человеческого мозга, от чего и мы с вами не избавлены. Люди почему то наивно и ошибочно считают, что если письмо электронное, то его никто кроме вас и адресата не может увидеть. К тому же многие люди считают, что объем современной интернет переписки настолько велик, что никто не обратит внимания на ваши письма. Но ведь на часть писем внимание все-таки падает, можете ли Вы быть уверены, что это будут не ваши письма, или что вашу переписку никто не отслеживает намеренно?

В своих лекциях А.В. Беляев писал:

***********

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



  1. Раскрытие коммерческой информации может привести к серьезным прямым убыткам на рынке


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


  3. Фирмы-конкуренты могут воспользоваться кражей информации, если та осталась незамеченной, для того чтобы полностью разорить фирму, навязывая ей фиктивные либо заведомо убыточные сделки


  4. Подмена информации как на этапе передачи, так и на этапе хранения в фирме может привести к огромным убыткам


  5. Многократные успешные атаки на фирму, предоставляющую какой-либо вид информационных услуг, снижают доверие к фирме у клиентов, что сказывается на объеме доходов

Естественно, компьютерные атаки могут принести и огромный моральный ущерб. Понятие конфиденциального общения давно уже стало "притчей во языцех". Само собой разумеется, что никакому пользователю компьютерной сети не хочется, чтобы его письма кроме адресата получали еще 5-10 человек...
************

Из своего опыта могу сказать, что конечно же масса писем, которые я получаю и отправляю представляют собой обычный никого не интересующий «интернет-фон», например это уведомления о сообщениях в форумах, письма с техническими вопросами о настройке оборудования или ПО, общение с коллегами «ни о чем» и т.д. и т.п. Но вместе с тем достаточно часто возникают ситуации, когда мне нужно послать информацию личного характера, например семейные фотографии своим родственникам или данные паспорта, нежное письмо обожаемой подруге или тот же самый документ из офиса домой, если я не успел закончить его создание в рабочее время. При этом мне спокойнее закрыть письмо и не думать о том, что к его содержимому могут получить доступ посторонние люди. Представьте себе ситуацию, что Вы приходите домой, а там совершенно неизвестный и посторонний для вас человек из-далека, проездом остановивший по старой памяти у вашего совместно проживающего родственника, рассматривает ваш семейный альбом или в качестве экскурсии рассматривает вашу комнату, где могут быть ваши личные вещи! В конечном счете ведь это совершенно необременительно – шифровать содержимое ваших сообщений! Для этого всего лишь нужно создать ключ GPG и, при необходимости (главным образом это касается Windows систем) установить нужное, бесплатное и свободно распространяемое на совершенно законных основаниях ПО. В результате Вы получите стойкую защиту и сможете не беспокоится о том, что будете делить вашу информацию с совершенно посторонними людьми. Я думаю, что в конечном счете шифрование почты может стать просто хорошей привычкой и правилом хорошего тона в общении с вашими собеседниками и деловыми партнерами. Кроме того, шифрование поможет защитить ваши письма не только в пути, но и на вашем рабочем месте.

Два слова о криптографии.

Какие задачи решает криптография?

1. Конфиденциальность– гарантия того, что конкретная информация доступна только тому кругу лиц, для кого она предназначена; нарушение этой категории называется хищением либо раскрытием информации

2. Целостность – гарантия того, что информация сейчас существует в ее исходном виде, то есть при ее хранении или передаче не было произведено несанкционированных изменений; нарушение этой категории называется фальсификацией сообщения

3. Аутентичность – гарантия того, что источником информации является именно то лицо, которое заявлено как ее автор; нарушение этой категории также называется фальсификацией, но уже автора сообщения

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

Какие основные направления криптографии существуют сегодня?



  1. Симметричные системы шифрования.


  2. Асимметричные системы шифрования.


  3. Системы создания электронной цифровой подписи.


  4. Системы управления ключами.

Симметричные криптосистемы:

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

Асимметричные криптосистемы:

Что такое ключ в асимметричной системе шифрования? Это ключ который состоит из 2-х частей, одна из частей называется приватной или секретной, другая - открытой. Открытый ключ можно распространять совершенно свободно - посылать по почте, размещать на серверах и сайтах, раздавать на дискетах, даже опубликовать в газете. С помощью этого ключа ваши корреспонденты смогут зашифровывать для вас сообщения и проверить вашу ЭЦП (электронную цифровую подпись) . Закрытый ключ должен надежно храниться у вас «под семью замками», с его помощью Вы можете расшифровывать сообщения зашифрованные для вас с помощью открытого ключа и ставить свою ЭЦП, благодаря которой ваши корреспонденты смогут быть уверены, что отправителем сообщения являетесь именно Вы, а так же в том, что сообщение в пути своего следования не было изменено или подменено. Математически закрытый и открытый ключи одной пары связаны между собой, но вычислить закрытый ключ из открытого чрезвычайно сложно.

Разработки асимметричных схем шифрования достаточно молоды. Первая работа в этом направлении была представлена в 1970 году Британской криптографической службой, второй работой стала представленная Ральфом Мерклом в 1974 году схема, получившая название Головоломок Меркла, однако эта схема оказалась не очень практичной. Первым же настоящим стойким асимметричным шифром стал шифр Уитфилда Диффи и Мартина Хеллмана, представленный в 1975 году. Датой рождения популярного и до сих пор с успехом выдерживающего (как впрочем и алгоритм Деффи и Хелмана) атаки криптоаналитиков алгоритма RSA (по именам создателей Райвест, Шамир и Адлеман) считается 1978 год. Стойкость алгоритма RSA основана на трудной задаче факторизации больших чисел; трудность задачи не доказана и не опровергнута.

Очень часто симметричные и асимметричные системы шифрования пытаются сравнивать. Что же лучше? Это неверная постановка вопроса. Каждая из систем имеет свои плюсы и минусы и имеет определенные области применения. Очень часто эти системы используются совместно.

Симметричные системы очень прочны, они обладают доказанной криптографической стойкостью. Т.е. если шифр идеален – то взломать его можно только полным перебором пространства ключей. В то же время такие шифры требуют секретного канала передачи ключа, что при большой географической удаленности между сторонами обмена информации становится одной из главный проблем. Асимметричные системы избавлены от этого недостатка, но они не обладают доказанной криптографической стойкостью. Никто в мире не доказал, что существует способ получения закрытого ключа из открытого, но никто не доказал и обратного – что такого способа не существует. Асимметричные системы работают много медленнее симметричных, зато позволяют использовать ЭЦП. Еще одним важным преимуществом асимметричных систем является то обстоятельство, что для приватного общения с большим количеством разных корреспондентов вам достаточно иметь всего лишь один единственный ваш секретный ключ, что при применении симметричных систем невозможно.

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
























Длина симметричного ключа, бит (для блочного шифра)

Длина асимметричного ключа RSA, бит

Длина асимметричного ключа на эллиптических кривых, бит

80

1024

160

112

2048

224

128

3072

256

192

7680

384

256

15360

512

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

Системы создания электронной цифровой подписи:

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

Хеш-функцией называется такой алгоритм, который обрабатывает сообщение (данные) любой длины, в результате чего выдает блок данных определенной длины, причем значение этого блока всецело зависит от входных данных и только от них (хеш-функции не используют ключей).

Хеш-функции обладают следующими свойствами:



  1. Хеш-функция имеет бесконечную область определения,


  2. Хеш-функция имеет конечную область значений,


  3. Хеш-функция необратима (невозможно из ее результата получить исходные данные)


  4. Изменение входного потока информации на один бит меняет около половины всех бит выходного потока, то есть результата хеш-функции.


Можно еще сказать, что хеш-функции представляют собой определенный шифр, используемый специальным образом. Выходным значением хеш функции в электронных системах является определенный блок нулей и единиц (например 160 бит для SHA-1 или 256 бит для SHA-256), не зависящий в своем размере от количества хешируемых данных, но непредсказуемо изменяющий свое значение даже при изменении одного единственного бита в исходных хешируемых данных.

Дополнительно о хеш-функциях можно сказать, что каждая из них имеет определенное множество коллизий (совпадение значений выходного блока данных для определенных наборов входных данных). То есть можно сказать, что есть множество определенных файлов или текстов, для которых хеш-функция будет иметь одинаковое значение. Это неудивительно, так как выходное значение хеш-функции представляет небольшой блок данных, в то время как хешируемые данные могут иметь внушительный объем. Однако для качественно-спроектированных хеш-функций подбор входных данных для получения коллизии является крайне-трудной задачей. Можно сказать, что качественная хеш-функция должна иметь лишь естественные (не специально подобранные) коллизии. При таком раскладе осмысленный подбор входных данных для получения коллизии становится невозможным. Естественная коллизия для качественной хеш-функции должна находится не ранее чем через 2 в степени N/2 проверок тотальным поиском, где N – разрядность выходного блока хеш-функции. Спроектировать качественную хеш-функцию еще сложнее, чем качественный симметричный блочный алгоритм шифрования.

Системы управления ключами.

Системы управления ключами включают достаточно большое количество вопросов.

Генерация ключей, передача и способы защиты ключей, использование и обновление ключей, хранение и резервирование ключей, аннулирование ключей, уничтожение ключей, наконец способы управления открытыми ключами и модели доверия при установлении их подлинности. О некоторых аспектах управления ключей, тех которые нам потребуются при изучении GPG мы поговорим чуть позже. Сейчас же хочется сказать несколько слов о моделях установления подлинности к открытым ключам и о модели доверия, используемой в GPG.

Любые системы с использованием асимметричных ключей уязвимы к атакам, именуемым специалистами как «человек по середине». Суть данной атаки состоит в том, что злоумышленник (пусть это будет человек А) генерирует ключ от имени другого человека (человека Б) и передает этот ключ пользователю (человеку В) для того, что бы человек В шифровал свои сообщения для человека Б. Как Вы понимаете, не удостоверившись в подлинности полученного ключа, человек В будет шифровать свои сообщения для человека Б, хотя на самом деле их будет читать человек А. Для противодействия таким атакам все системы с открытым ключом имеют системы установления подлинности открытых ключей.

Сертификат ключа.

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

Модели доверия.

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

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

Очень успешно все перечисленные задачи криптографии можно решать при использовании GPG.

Использование GPG (GNU Privacy Guard – страж приватности)

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

Утилита шифрования GPG является пакетом, реализующим стандарт OpenPGP, представляет собой консольное приложение, имеет реализации под различные платформы. GPG встроена в каждую версию Linux и активно используется системой в качестве средства аутентификации и защиты данных (в частности в распространенном приложении оболочки KDE KGPG). GPG использует открытые алгоритмы, исходный код программы так же открыт.

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

Как осуществляется шифрование?

Как осуществляется шифрование и подписывание электронной почты? На самом деле при пересылке информация шифруется симметричным алгоритмом. Асимметричный алгоритм используется лишь для шифрования симметричного ключа, который индивидуален в каждом конкретном случае, и пересылается в зашифрованном виде вместе с зашифрованном сообщением. Симметричный ключ вырабатывается для пересылки каждого нового сообщения с помощью алгоритма случайных чисел. Такая схема позволяет решить 2 задачи. Во первых, как уже говорилось, скорость шифрования с помощью асимметричного алгоритма в сотни и тысячи раз меньше, чем скорость шифрования симметричным методом (представим, что мы отправляем сообщение с объемным вложением), во вторых такая схема имеет повышенную надежность поскольку симметричные схемы более стойки к атакам по известному или предполагаемому открытому тексту, предугадать же сеансовый симметричный ключ невозможно.

Если Вы лишь подписываете сообщение, не зашифровывая его содержимое, то при передаче шифруется лишь хеш значение исходного сообщения, получатель письма то же вычисляет хеш-значение полученного сообщения, далее расшифровывает хеш-значение вычисленное отправителем и сравнивает 2 варианта. Если оба хеш-значения идентичны, значит ЭЦП считается верной. Подменить ЭЦП невозможно, поскольку у отправителя хеш значение сообщения зашифровывается его секретным ключом (в данном случае открытый и закрытый ключи меняются ролями). Если при передаче сообщение будет изменено, то получатель сразу же обнаружит подмену. Естественно, что можно послать одновременно зашифрованное и подписанное сообщение.

Заметьте, что при шифровании ваших сообщений или файлов их содержимое автоматически архивируется, поэтому перед пересылкой документов нет необходимости в их предварительном сжатии. Главное же назначение архивации – увеличение криптостойкости. Зачем нужна архивация в криптографии? Дело в том, что в современном криптоанализе, то есть науке о противостоянии криптографии, с очевидностью доказано, что вероятность взлома криптосхемы при наличии корреляции между блоками входной информации значительно выше, чем при отсутствии таковой. А алгоритмы сжатия данных по определению и имеют своей основной задачей устранение избыточности, то есть корреляций между данными во входном тексте.

ЭЦП широко используется не только для подписи пересылаемых сообщений, но и для систем аутентификации в электронных сетях, подписывания любых файлов (например документов) и дистрибутивов различных программ.

Какие алгоритмы использует GPG

Изучать способы работы гораздо эффективнее непосредственно используя консоль и вводя команды. На таком же принципе мы будем в дальнейшем рассматривать работу с GnuPG.

Войдите в консоль и дайте команду gpg --version

В следующей строке Вы увидите версию вашей программы. Далее Вы увидите

Home: ~/.gnupg
Поддерживаются следующие алгоритмы:
С открытым ключом: RSA, RSA-E, RSA-S, ELG-E, DSA
Симметричные шифры: 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH
Хэш-функции: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512
Алгоритмы сжатия: Без сжатия, ZIP, ZLIB, BZIP2

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

Из симметричных алгоритмов можно выделить следующие:

AES - Advanced Encryption Standard. Разработан в Бельгии, оригинальное название Rijndael, шифр, выигравший конкурс на алгоритм шифрования США (гос. стандарт). Шифр использует ключи 128, 192 или 256 бит.

CAST - Дизайн основан на формальной архитектуре DES с доказанной стойкостью. Не имеет слабых и полуслабых ключей. Совершенно устойчив к линейному и дифференциальному криптоанализу. Работает с ключами длиной 128 бит и использует 64 битовые блоки данных (есть более свежие редакции CAST с использованием 128 битовых блоков данных и поддержкой ключей в 128, 192 и 256 бит, но данную редакцию OpenPGP пока не поддерживает).

Twofist - Один из пяти финалистов на звание AES. Группу разработчиков возглавлял Брюс Шнайер. В реализации PGP использует 256-битовый ключ и 128-битовый блок данных.

Blowfish, автором которого также является Брюс Шнайер, представляет собой блочный алгоритм с ключом переменной длины (вплоть до 448 бит), оперирующий на 64-битовых блоках.
3DES – тройной DES. (DES- бывший стандарт США на шифрование данных с длиной ключа 56 бит). Расчетная стойкость алгоритма против атаки грубой силой соответствует шифру с длиной ключа 112 бит.

Из асимметричных алгоритмов мы можем выделить следующие.

RSA-E – ключи шифрования
RSA-S – ключи подписания
ELG-E – ключи шифрования по схеме Элгамаля (в специфике обозначений OpenPGP им соответствуют ключи DH)
DSA – ключи подписания (в специфике обозначений OpenPGP им соответствуют ключи DSS).

Алгоритм RSA основан на трудной задаче факторизации больших чисел. Алгоритм Элгамаля основан на трудной задаче вычисления дискретных логарифмов. Алгоритм DSA, как и алгоритм Эльгамаля, основан на трудной задаче вычисления дискретных логарифмов, используется только для создания ЭЦП с ограничением длины ключа в 1024 бит и использованием хеш-функции SHA-1.
Все представленные алгоритмы имеют открытый дизайн, хорошо проанализированы специалистами мира и свободны в распространении.

Из хеш-функций MD5 представляет собой алгоритм, созданный Р.Ривестом. Алгоритм возвращает 128 битовое хеш-значение. На сегодняшний день такой длины значения хеша мало (как уже говорилось, естественная коллизия должна находиться не ранее чем через 2^N/2 операций поиска, т.е. в данном случае это 64 бита), к тому же после детального криптоанализа в алгоритме были найдены слабые места, которые позволили провести ряд успешных криптоатак. На сегодняшний день алгоритм считается ненадежным и используется лишь для совместимости со старыми версиями программ.
Разработчиком хеш функций семейства SHA (Secure Hash Algorithm) является АНБ и NIST (национальный институт стандартов и технологии)  США, однако это не должно вызывать подозрений в наличии тайной лазейки. Алгоритм SHA-1 опубликован и проанализирован, к тому же АНБ вряд ли заинтересовано в крахе данной хеш-функции, поскольку это означало бы дискредитацию национальной системы цифровой подписи США. Кроме того нельзя сравнивать алгоритмы шифрования и хеш-функций из-за различий стоящих перед ними задач.
Дизайн хеш-функции SHA-1 схож с дизайном MD4, предшественника MD5, функция доработана, возвращает 160 битовое число выхода и является гораздо более стойкой чем MD5. Однако в 2005 году и на эту хеш-функцию был произведен ряд относительно успешных криптоатак, что ослабило ее позиции. Путем детального анализа и последующих экспериментов китайским исследователям удалось получить коллизию через 2^69 степени операций. Данное обстоятельство вызвало беспокойство в кругах криптологов и самое неприятное, что теперь можно ожидать дальнейших успешных атак против стойкости этой функции. На сегодняшний день ее криптостойкость находится на грани максимально возможных вычислительных мощностей и получение коллизии продолжает оставаться чрезвычайно трудоемкой задачей.
Функции семейства SHA-2 (SHA-256, 384, 512) являются продолжением хеш функций семейства SHA. Хеш функция SHA-512 пока не включена в стандарт OpenPGP, однако ее поддержка уже осуществляется. Данные хеш-функции имеют более длинное выходное значение, соответствующее номеру в названии, что поднимает планку криптостойкости, к тому же по видимому разработчики внесли в дизайн данных функций дополнительные средства "усиления" (в данном случае нужно оговориться - документация по ходу проведения работ закрыта, хотя конечный результат - сам алгоритм, открыт для изучения, поэтому говорить точно пока алгоритм основательно не будет изучен трудно). Практически функциями SHA-2 можно пользоваться уже сегодня, однако их не поддерживают версии GPG младше 1.4.1 и это необходимо учитывать при обмене подписанными сообщениями с вашими корреспондентами. В целом однако, поскольку данные хеш-функции имеют примерно одну архитектуру, к 2010 году им планируется подыскать замену. На сегодняшний день уже существует ряд перспективных функций, хотя и совсем небольшой, одна из них WhirlPool, однако она очень медлительна. Будет ли она включена в стандарт покажет время.

Общие сведения о ключах.

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

Ключ GPG можно создать из какой-либо операционной оболочки, которых существует множество, однако все оболочки рассмотреть невозможно, поэтому мы создадим свой ключ из командной строки GnuPG. Такой метод универсален, ключ созданный таким образом будет обнаружен любой оболочкой (это на самом деле не совсем верное утверждение ибо любая оболочка является лишь графическим интерфейсом). Кроме того процесс создания ключа в консоли гораздо более гибок и не ограничен функциональностью той или иной графической среды.

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

Общие сведения о ключе и о выборе ключевой фразы.

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

Что представляет из себя ключ, созданный в рамках стандарта OpenPGP? В современном формате (называемый форматом V4) данный ключ состоит из базового ключа и подключей шифрования. То есть каждый ключ представляет собой не единственную пару открытой и закрытой части ключа, а связку главной ключевой пары, называемой базовым ключом, и дополнительных ключевых пар, которые размещены на базовом ключе. Базовый ключ служит для сбора сертифицирующих ключ подписей и для подписания файлов и сообщений. Подключи предназначены непосредственно для шифрования информации, имено поэтому при генерировании ключа вы встретите меню генерирования ключей подписания и шифрования. По ряду причин такая схема является более безопасной, чем схема, которая применялась в ранних версиях стандарта и представляла собой единственную ключевую пару. В данном случае задача взлома для криптоаналитика становится более сложной, так как если он взломает ключ подписи, то не сможет автоматически расшифровать информацию, для этого ему понадобиться взломать и ключ шифрования. То же самое касается обратной ситуации, в которой взломав ключ шифрования он не сможет подписывать сообщения от вашего имени пока не взломает и базовый ключ подписания. Кроме того в данной схеме ключа вы сможете генерировать подключ с ограниченным сроком действия, а по истечении этого срока или в силу других причин сгенерировать новый подключ. При этом вы не потеряете на своем базовом ключе собранные от ваших корреспондентов экспортируемые подписи, заверяющие ваш ключ для других пользователей. Вы так же сможете сгенерировать несколько подключей сразу, хотя чаще всего особого смысла в наличии нескольких подключей одновременно нет.

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

Пароль позволяет защитить ваш секретный ключ от несанкционированного доступа к нему посторонних лиц, в случае если ваш ключ окажется в их руках, и является последней степенью его защиты, именно поэтому к подбору пароля нужно отнестись очень серьезно. GnuPG с помощью хеш-функции перемалывает пароль в симметричный ключ определенной длины, с помощью которого ваш секретный ключ зашифровывается симметричным алгоритмом и хранится именно в таком виде. Именно поэтому нет никакой разницы какой пароль вы придумаете, короткий или длинный – ключ будет все равно одинаковой длины, однако это с технической точки зрения. С точки же зрения криптостойкости к подбору пароля следует подойти более чем основательно, поскольку короткий пароль будет обладать малой энтропией (случайностью), поэтому будет бессмысленной ситуация шифрования 128 битным ключом, который получен из пароля «123» или «Vasya», - образно говоря можно представить, что в данной ситуации мы устанавливаем на мощнейшую дверь замок, вскрываемый булавкой.

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

Лучшим паролем с точки зрения криптостойкости является длинный набор случайных букв в разном регистре, цифр и других печатаемых символов, однако запомнить такой пароль невозможно. Выход однако есть, и он весьма эффективен – в качестве стойкого и запоминаемого пароля вы можете применить парольную фразу. Именно таким образом я и рекомендую вам поступить. Однако правильный выбор парольной фразы может потребовать от вас раздумий, поэтому не торопитесь с вводом первой придуманной фразы. Причин тому несколько. Во первых, если это будет ваша фраза придуманная налету, то нет никаких гарантий, что уже завтра или послезавтра вы ее не забудете, во вторых, если вы введете какую-либо известную фразу, произнесенную известным политиком или литературным героем, ее энтропия (степень непредсказуемости) окажется много ниже рекомендуемой границы криптостойкости, так как скорее всего фраза окажется так же внесенной в «ломальные» базы данных. Наилучшим решением будет применение фразы, которая будет отражением ваших личных глубоких, трудно угадываемых посторонними людьми постоянных мыслей или воспоминаний из детства, которые проверенно осели в вашей памяти. Будет хорошо, если в данную фразу вы внесете дополнительную энтропию с помощью применения в случайных местах некоторых букв в другом регистре клавиатуры, подмешиванием знаков препинания или других печатаемых символов (например $!# и т.п.).

И последнее - не вводите парольную фразу кириллицей. Для удобства (но не для повышения криптостойкости) вы можете писать ее нажимая на клавиши с русскими буквами, но обязательно в латинской раскладке клавиатуры. И помните, если вы забудете свою парольную фразу – никто не сможет вам помочь в восстановлении ваших данных!


Генерирование ключа

Итак приступаем к главному - созданию нашего ключа:

В данном разделе мы рассмотрим три предлагаемых в начальном меню варианта генерации различных типов ключей, начиная с первого. Я рекомендую вам просмотреть все варианты, однако остановиться на третьем варианте, выбрав алгоритм подписи и шифрования RSA. В разных разделах рассмотрены разные команды, которые могут быть применены при редактировании свойств разных ключей. В данном случае я в определенном смысле исходил из наиболее вероятной потребности применения тех или иных команд при редактировании определенных типов ключей. Так, например в разделе создания ключа DH/DSS описаны операции по удалению и созданию подключей, просмотру отпечатка, подписей и удалению ключа. В разделе «DSA с любым подключом» описана последовательность создания ключа без дополнительного редактирования ключа, в разделе RSA описаны дополнительные команды по добавлению и удалению идентификаторов (e-mail адресов), отзыву идентификаторов пользователя, установке одного из идентификаторов как идентификатора по умолчанию, аннулированию (отзыву) подключа, изменению срока действия ключа (подключа), изменению пароля для доступа к секретному ключу.

DH/DSS

В данном случае вы сгенерируете довольно распространенный ключ формата DH/DSS. При использовании этого ключа подпись будет формироваться по алгоритму DSA, шифрование по алгоритму Элгамаля.

Запускаем консоль (если она еще не запущена) и даем команду
gpg –-gen-key

<SPAN>gpg (GnuPG) 1.4.2; Copyright (C) 2005 Free Software Foundation, Inc.</SPAN>
<SPAN>This program comes with ABSOLUTELY NO WARRANTY.</SPAN>
<SPAN>This is free software, and you are welcome to redistribute it</SPAN>

<SPAN>under certain conditions. See the file COPYING for details.</SPAN>

<SPAN>Выберите тип ключа:</SPAN>
<SPAN>   (1) DSA и ElGamal (по умолчанию)</SPAN>
<SPAN>   (2) DSA (только для подписи)</SPAN>
<SPAN>   (5) RSA (только для подписи)</SPAN>
<SPAN>Ваш выбор (?-подробнее)?</SPAN>

Выбираем 1
В данной ситуации вы сгенерируете базовый ключ и подключ одновременно. Ключ подписания будет ограничен длиной 1024 бит. Вы можете выбрать предлагаемую по умолчанию длину ключа шифрования 2048 бит. В целях большей и главное более долгосрочной надежности (если мы посмотрим приведенную в начале статьи таблицу, то увидим, что асимметричные ключи длиной 3072 бит по криптостойкости примерно соответствуют симметричным ключам 128 бит) я рекомендую вам принять длину ключа в 3072 бит.

Пара ключей DSA будет иметь длину 1024 бит.
ключи ELG-E могут иметь длину от 1024 до 4096 бит.
Какой размер ключа Вам необходим? (2048)

выбираем 3072

Запрашиваемый размер ключа 3072 бит

Выберите срок действия ключа.
         0 = без ограничения срока действительности
      <n>  = срок действительности n дней
      <n>w = срок действительности n недель
      <n>m = срок действительности n месяцев

      <n>y = срок действительности n лет
Ключ действителен до? (0)

В данном случае вам предлагается выбрать срок действия вашего ключа. Чаще всего пользователи генерируют ключ без ограничения срока действия, однако во избежании засорения ключевых серверов в отдаленной перспективе я рекомендую вам выбрать срок действия таким, каким вы можете его предвидеть в реальности. В приведенных ниже примерах я выбирал срок действия 10 лет, однако это лишь пример. Если вы не особенно суеверны, то можете выбрать срок действия своих ключей 20, 30, 40, 50 лет и более или столько сколько сочтете нужным. Конечно вы можете сгенерировать и ключ без срока действия. Следует сказать, что при необходимости вы сможете изменить срок действия ключа (это будет рассмотрено позднее).

выбираем 10y

Ключ действителен до: Сбт 04 Июн 2016 21:56:00 MSD
Все верно? (y/N)

жмем у

Для идентификации Вашего ключа необходим User ID
Программа создаст его из Вашего имени, комментария и адреса e-mail в виде:
    "Baba Yaga (pensioner) <yaga@deepforest.ru>"

Ваше настоящее имя:

Во избежании несовместимости настоятельно рекомендую вам вводить имя в латинской раскладке клавиатуры.

Вводим имя Vasiliy

Email-адрес:

Вводим адрес почты <A href="mailto:vasiliy@vasiliy.com">vasiliy@vasiliy.com</A>

Комментарий:

Ввод комментария не является обязательным, на мой взгляд вполне достаточно в качестве идентификаторов ввести имя и e-mail, вы можете пропустить этот шаг, нажав клавишу Enter
Сменить (N)Имя, (C)Комментарий, (E)email-адрес или (O)Принять/(Q)Выход?
Вам предлагается просмотреть введенную вами информацию. Не торопитесь, проверьте ее на наличие ошибок и неточностей. После проверки жмем O

Введите пароль:  

вводим

Повторите пароль:

вводим

Необходимо сгенерировать много случайных чисел. Желательно, что бы вы
выполняли некоторые другие действия (печать на клавиатуре, движения мыши,

обращения к дискам) в процессе генерации; это даст генератору
случайных чисел возможность получить лучшую энтропию.
.++++++++++.+++++++++++++++++++++++++++++++++++.++++++++++++++++++++.++++
Необходимо сгенерировать много случайных чисел. Желательно, что бы вы
выполняли некоторые другие действия (печать на клавиатуре, движения мыши,
обращения к дискам) в процессе генерации; это даст генератору
случайных чисел возможность получить лучшую энтропию.
...
ждем

gpg: ключ DECE93A4 помечен как абсолютно доверяемый.
открытый и закрытый ключи созданы и подписаны.

gpg: проверка таблицы доверий
gpg: 3 ограниченных необходимо, 1 выполненных необходимо, PGP модель доверия
gpg: глубина: 0  корректных:   2  подписанных:   5  доверия: 0-, 0q, 0n, 0m, 0f, 2u
gpg: глубина: 1  корректных:   5  подписанных:   0  доверия: 3-, 0q, 2n, 0m, 0f, 0u
gpg: срок следующей проверки таблицы доверий 2007-04-22
pub   1024D/DECE93A4 2006-06-07 [годен до: 2016-06-04]

Отпечаток ключа = 361D 6A5A F2D0 D735 2D2C  69A3 B493 0D10 DECE 93A4
uid                  Vasiliy <vasiliy@vasiliy.com>
sub   3072g/4C36DD35 2006-06-07 [годен до: 2016-06-04]

Наш ключ готов.

[user@localhost ~]$
Для того, что бы просмотреть ключ дайте команду
gpg --list-key DECE93A4
получаем

pub   1024D/DECE93A4 2006-06-07 [годен до: 2016-06-04]
uid                  Vasiliy <vasiliy@vasiliy.com>
sub   3072g/4C36DD35 2006-06-07 [годен до: 2016-06-04]

В данном случае мы видим наш базовый ключ 1024D/DECE93A4,

идентификатор пользователя Vasiliy <vasiliy@vasiliy.com>

подключ шифрования sub 3072g/4C36DD35

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

В данном случае нужно сказать, что операцию по удалению подключа мы проводим непосредственно после создания самого ключа, предполагая, что для операций шифрования ключ еще не использовался. То есть это разовая операция, следующая непосредственно за операцией создания ключа (при создании ключа DH/DSS, в выбранном нами варианте пункта меню, нет возможности сразу задать разные сроки действия для базового ключа и подключа). Смысл в данном случае состоит в том, что если вы удалите подключ, который уже использовался для шифрования данных, то не сможете впоследствии расшифровать данные, которые были зашифрованы данным подключом. Поэтому если вы уже пользовались ключом, удалять подключи не рекомендуется. В данном случае вместо удаления вы сможете воспользоваться операцией аннулирования подключа (будет рассмотрено позднее, операцию аннулирования необходимо применять в случае если вы решили по тем или иным причинам сменить подключ или если у вас возникли подозрения в его компрометации), при этом вы сможете получить доступ к данным которые были зашифрованы подключом до его аннулирования, но зашифровать новую информацию с помощью аннулированного ключа будет нельзя.

Следует сказать, что вышеупомянутую разовую операцию по удалению подключа можно просто заменить операцией аннулирования, с точки зрения «работы» ключа не будет никакой разницы, просто ключ будет иметь немного больший размер, поскольку будет содержать аннулированный подключ и вновь созданный подключ.
<B>Редактирование ключа (удаление подключа и создание нового подключа)</B>
Даем команду
gpg --edit-key DECE93A4
получаем

gpg (GnuPG) 1.4.2; Copyright (C) 2005 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.

Секретный ключ доступен.

pub  1024D/DECE93A4  создан: 2006-06-07  годен до: 2016-06-04  применяемость: CS
                     доверие: абсолютное    достоверность: абсолютное

sub  3072g/4C36DD35  создан: 2006-06-07  годен до: 2016-06-04  применяемость: E
[абсолютн] (1). Vasiliy <vasiliy@vasiliy.com>

метим подключ, который нужно удалить, он у нас один.

Key 1

pub  1024D/DECE93A4  создан: 2006-06-07  годен до: 2016-06-04  применяемость: CS
                     доверие: абсолютное    достоверность: абсолютное
sub* 3072g/4C36DD35  создан: 2006-06-07  годен до: 2016-06-04  применяемость: E

[абсолютн] (1). Vasiliy <vasiliy@vasiliy.com>

теперь он помечен звездочкой (помечена красным цветом), даем команду на его удаление

delkey

Вы действительно хотите удалить данный ключ? (y/N)
  
жмем y

pub  1024D/DECE93A4  создан: 2006-06-07  годен до: 2016-06-04  применяемость: CS

                     доверие: абсолютное    достоверность: абсолютное
[абсолютн] (1). Vasiliy <vasiliy@vasiliy.com>

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

addkey

Ключ защищен.

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

"Vasiliy <vasiliy@vasiliy.com>"
1024-бит DSA ключ, ID DECE93A4, создан 2006-06-07
Введите пароль:

вводим пароль

Выберите тип ключа:
   (2) DSA (только для подписи)
   (4) ElGamal (только для шифрования)

   (5) RSA (только для подписи)
   (6) RSA (только для шифрования)
Ваш выбор (?-подробнее)?

Выбираем 4

ключи ELG-E могут иметь длину от 1024 до 4096 бит.
Какой размер ключа Вам необходим? (2048)
     
вводим 3072

Выберите срок действия ключа.
         0 = без ограничения срока действительности
      <n>  = срок действительности n дней
      <n>w = срок действительности n недель
      <n>m = срок действительности n месяцев

      <n>y = срок действительности n лет
Ключ действителен до? (0)

В зависимости от ваших предпочтений и интенсивности использования ключа вы можете создать подключ с любым желаемым сроком действия, например 1...3 или более лет. Рекомендуемый срок действия подключа составляет 1...3 года.

жмем 2y

Ключ действителен до? (0) 2y
Ключ действителен до: Птн 06 Июн 2008 22:47:11 MSD
Все верно? (y/N)


жмем y

Действительно создать? (y/N)  

жмем y

Необходимо сгенерировать много случайных чисел. Желательно, что бы вы
выполняли некоторые другие действия (печать на клавиатуре, движения мыши,
обращения к дискам) в процессе генерации; это даст генератору
случайных чисел возможность получить лучшую энтропию.
+++++.+++++++++++++++...++++++++++..++++++++++.+++++.+++++

pub  1024D/DECE93A4  создан: 2006-06-07  годен до: 2016-06-04  применяемость: CS
                     доверие: абсолютное    достоверность: абсолютное
sub  3072g/B0BCD5F1  создан: 2006-06-07  годен до: 2008-06-06  применяемость: E
[абсолютн] (1). Vasiliy <vasiliy@vasiliy.com>

наш новый подключ создан, теперь нужно сохранить изменения, даем команду save и возвращаемся в командную строку.

Ключ готов. Теперь вы можете выше описанной командой gpg –-list-key вновь просмотреть ваш ключ и убедиться, что он содержит подключ с ограниченным сроком действия.

<B>Просмотрите отпечаток ключа</B>

gpg --fingerprint DECE93A4

получаем

pub   1024D/DECE93A4 2006-06-07 [годен до: 2016-06-04]
Отпечаток ключа = 361D 6A5A F2D0 D735 2D2C  69A3 B493 0D10 DECE 93A4
uid                  Vasiliy <vasiliy@vasiliy.com>

sub   3072g/B0BCD5F1 2006-06-07 [годен до: 2008-06-06]

Обратите внимание на последние 8 символов отпечатка ключа, они представляют собой идентификатор вашего главного (базового) ключа. Отпечаток представляет собой очень важное свойство ключа, это хеш-значение материала ключа. Отпечаток уникален и не может быть подделан. Если вы знаете отпечаток ключа вашего корреспондента из достоверных источников, то такой же командой впоследствии вы сможете просмотреть отпечаток его открытого ключа и произвести сверку на предмет подлинности открытого ключа.
<B>Просмотрите подписи ключа</B>
Пока у вас всего одна подпись ключа, ваша собственная, называемая автоподписью. Впоследствии с помощью это команды вы сможете просматривать подписи ключей ваших корреспондентов, на которых могут быть поставлены экспортируемые подписи других пользователей, на которые вы сможете полагаться при определении подлинности ключа. GnuPG содержит так же встроенные алгоритмы (это будет рассмотрено позднее) для автоматического определения степени доверия к ключам на основе заверяющих подписей других пользователей («сеть доверия» или «WEB of Trust») или специальных опций, определенных вами, однако данная команда позволит вам самостоятельно просмотреть проставленные на ключ подписи, что часто бывает важно при определении степени достоверности ключа. Практически вам придется пользоваться этой командой для идентификации и просмотра свойств ключа очень часто (если вы не будете использовать графические оболочки, предоставляющие нужные сведения).

gpg --list-sigs DECE93A4

pub   1024D/DECE93A4 2006-06-07 [годен до: 2016-06-04]
uid                  Vasiliy <vasiliy@vasiliy.com>
sig 3        DECE93A4 2006-06-07  Vasiliy <vasiliy@vasiliy.com>
sub   3072g/B0BCD5F1 2006-06-07 [годен до: 2008-06-06]
sig          DECE93A4 2006-06-07  Vasiliy <vasiliy@vasiliy.com>

цифра 3 в данном случае означает уровень проверки сертификата (в данном случае он высший, т.к. Рассматриваемый ключ принадлежит вам).
<B>Удаление ключа</B>
Если у вас возникла необходимость удалить ключ воспользуетесь следующими командами. В данном случае рассматривается вариант удаления только что созданного вами собственного ключа. Будьте осторожны! Удаляйте секретный ключ только в том случае, если вы действительно уверены в необходимости этого действия. После удаления секретной части ключа за ненадобностью вам нужно будет удалить и открытый ключ. Имейте в виду, что если ваш ключ был загружен на сервер, то перед удалением ключа его желательно аннулировать и обновить на сервере, что бы корреспонденты не смогли случайно зашифровать послание, которое не удасться прочитать. Полезно будет так же оповестить ваших корреспондентов, у которых ваш ключ есть на связке, об удалении ключа и выслать в их адрес его аннулированную копию.

gpg --delete-secret-key DECE93A4 

gpg (GnuPG) 1.4.2; Copyright (C) 2005 Free Software Foundation, Inc.

This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.


sec  1024D/DECE93A4 2006-06-07 Vasiliy <vasiliy@vasiliy.com>

Удалить данный ключ из таблицы ключей? (y/N)

жмем y

Это секретный ключ! - действительно удалить? (y/N)  

подтверждаем y

смотрим, дав команду gpg –-list-secret-key 

Указанного секретного ключа мы не обнаружим. От прежней связки у нас остался только открытый ключ, удаляем его, т.к. в данном случае без секретного ключа он нам не нужен (с его помощью вы сможете однако проверить ЭЦП, которая была поставлена закрытым ключом данной пары). Точно так же вы сможете удалить любой открытый ключ.

gpg --delete-key DECE93A4

gpg (GnuPG) 1.4.2; Copyright (C) 2005 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.


pub  1024D/DECE93A4 2006-06-07 Vasiliy <vasiliy@vasiliy.com>

Удалить данный ключ из таблицы ключей? (y/N)


подтверждаем y

ключ удален.

DSA с любым подключом

В данном разделе мы можем создать точно такой же ключ, какой мы создали ранее, при выборе в меню цифры 1. Выбор данного пути создания ключа более предпочтителен, чем первый, так как мы имеем возможность отказаться от действий по удалению (или аннулированию) и созданию подключей и сразу же сгенерировать подключ с ограниченным сроком действия. Кроме того мы можем создать различные типы подключей.
gpg --gen-key

gpg (GnuPG) 1.4.2; Copyright (C) 2005 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.

This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.

Выберите тип ключа:
   (1) DSA и ElGamal (по умолчанию)
   (2) DSA (только для подписи)
   (5) RSA (только для подписи)
Ваш выбор (?-подробнее)? 


выбираем 2 

Пара ключей DSA будет иметь длину 1024 бит.
Выберите срок действия ключа.
         0 = без ограничения срока действительности
      <n>  = срок действительности n дней
      <n>w = срок действительности n недель

      <n>m = срок действительности n месяцев
      <n>y = срок действительности n лет
Ключ действителен до? (0)

выбираем 10 лет - жмем 10y

Ключ действителен до: Сбт 04 Июн 2016 23:07:45 MSD

Все верно? (y/N)

подтверждаем, жмем y

Для идентификации Вашего ключа необходим User ID
Программа создаст его из Вашего имени, комментария и адреса e-mail в виде:
    "Baba Yaga (pensioner) <yaga@deepforest.ru>"

Ваше настоящее имя:

вводим Ivanov

Email-адрес:

вводим <A href="mailto:ivanov@ivanov.com">ivanov@ivanov.com</A>

Комментарий:

жмем Enter (пропускаем комментарий)

Вы выбрали следующий User ID:
    "Ivanov <ivanov@ivanov.com>"

Сменить (N)Имя, (C)Комментарий, (E)email-адрес или (O)Принять/(Q)Выход?

принимаем, жмем o

Введите пароль:

вводим и повторяем 

Необходимо сгенерировать много случайных чисел. Желательно, что бы вы

выполняли некоторые другие действия (печать на клавиатуре, движения мыши,
обращения к дискам) в процессе генерации; это даст генератору
случайных чисел возможность получить лучшую энтропию.
.++++++++++.+++++.+++++.++++++++++.+++++++++++++++++++++

gpg: ключ B1995069 помечен как абсолютно доверяемый.
открытый и закрытый ключи созданы и подписаны.

gpg: проверка таблицы доверий
gpg: 3 ограниченных необходимо, 1 выполненных необходимо, PGP модель доверия

gpg: глубина: 0  корректных:   2  подписанных:   5  доверия: 0-, 0q, 0n, 0m, 0f, 2u
gpg: глубина: 1  корректных:   5  подписанных:   0  доверия: 3-, 0q, 2n, 0m, 0f, 0u
gpg: срок следующей проверки таблицы доверий 2007-04-22
pub   1024D/B1995069 2006-06-07 [годен до: 2016-06-04]
Отпечаток ключа = 64BD DA1A FDE6 3C5D F005  E0FB 2365 F292 B199 5069
uid                  Ivanov <ivanov@ivanov.com>

Учтите, что данный ключ не может использоваться для шифрования.  Вы можете
воспользоваться командой "--edit-key" и создать подключ для этих целей.

[user@localhost ~]$

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

Создаем подключ

gpg --edit-key B1995069

получаем 

gpg (GnuPG) 1.4.2; Copyright (C) 2005 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.

This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.

Секретный ключ доступен.

pub  1024D/B1995069  создан: 2006-06-07  годен до: 2016-06-04  применяемость: CS
                     доверие: абсолютное    достоверность: абсолютное
[абсолютн] (1). Ivanov <ivanov@ivanov.com>

Команда>

даем команду addkey

Введите пароль:

вводим 

Выберите тип ключа:
   (2) DSA (только для подписи)

   (4) ElGamal (только для шифрования)
   (5) RSA (только для подписи)
   (6) RSA (только для шифрования)
Ваш выбор (?-подробнее)?

В данном случае вы можете выбрать любой тип ключа. Однако нам нужен подключ шифрования. Мы видим 2 ключа такого типа, RSA и Elgamal. Алгоритмы RSA и Элгамаля обладают примерно равной криптостойкостью. В связке с базовым ключом подписания по схеме DSA принято видеть ключи Эльгамаля, к тому же некоторые криптоаналитики считают, что для выполнения задачи поиска дискретных логарифмов нужно выполнить несколько большее количество операций. Еще одной причиной выбора подключа этого типа является то обстоятельство, что если в качестве подключа использовать RSA подключ, то такой «нестандартный» ключ может оказать несовместимым с со старыми версиями PGP (есть люди, которые до сих пор ими пользуются).

Выбираем создание ключа по схеме Элгамаля,

Выбираем 4,

ключи ELG-E могут иметь длину от 1024 до 4096 бит.
Какой размер ключа Вам необходим? (2048)

набираем 3072

Выберите срок действия ключа.
         0 = без ограничения срока действительности

      <n>  = срок действительности n дней
      <n>w = срок действительности n недель
      <n>m = срок действительности n месяцев
      <n>y = срок действительности n лет

Ключ действителен до? (0)

принимаем 2 года, жмем 2y

Ключ действителен до: Птн 06 Июн 2008 23:16:42 MSD
Все верно? (y/N)   

жмем y

Действительно создать? (y/N)

y

Необходимо сгенерировать много случайных чисел. Желательно, что бы вы

выполняли некоторые другие действия (печать на клавиатуре, движения мыши,
обращения к дискам) в процессе генерации; это даст генератору
случайных чисел возможность получить лучшую энтропию.
+++++++++++++++.+++++.+++++++++++++++...+++++...++++

наблюдаем за увлекательным процессом, двигаем мышкой и нажимаем кнопки клавиатуры (обычно выбирают кнопки alt, shift, ctrl, не печатающие символов, но так же вносящие энтропию, хотя в принципе выбор кнопок может быть разнообразным, разумеется это не должна быть кнопка Power)

pub  1024D/B1995069  создан: 2006-06-07  годен до: 2016-06-04  применяемость: CS
                     доверие: абсолютное    достоверность: абсолютное

sub  3072g/B0A7F791  создан: 2006-06-07  годен до: 2008-06-06  применяемость: E
[абсолютн] (1). Ivanov <<A href="mailto:ivanov@ivanov.com">ivanov@ivanov.com</A>>

даем команду save

Мы сгенерировали наш подключ. Теперь ключ готов к использованию.

RSA

Здесь мы рассмотрим вариант создания ключа RSA (в редакции V4). Из рассматриваемых вариантов я рекомендую вам выбрать для использования именно этот вид ключей. Обратите внимание, ключ DSS не может иметь большую длину, чем 1024 бит. Используя схему RSA вы можете выбрать ключ подписания любого желаемого вами размера. Кроме того, приняв для использования данный тип ключа, для подписания ваших сообщений вы сможете использовать любую из предлагаемых GnuPG хеш-функций. Обратите внимание, что используя ключ подписания DSS вы ограничены не только в длине ключа, но и использованием только хеш-функции SHA-1. Ради справедливости однако нужно сказать, что в экспериментальных целях GPG 1.4.4 уже принимает ключи DSS размером более 1024 бит и может работать с хеш-функциями SHA-2, однако в целях совместимости использовать этот режим не рекомендуется, к тому же такие ключи DSS еще не прошли достаточной проверки на отсутствие багов. Кроме прочего в последнее время криптоаналитики называют еще некоторые причины предпочтительности использования ключей RSA, что правда не связано с криптостойкостью, а Windows программа последней версии PGP 9 предлагает генерирование этих типов ключей по умолчанию. Еще одним преимуществом выбора в пользу именно этих ключей является то обстоятельство, что если вы в дальнейшем захотите перенести свой ключ на смарт-карту OpenPGP, то получите такую возможность. Поддержка смарт-картами OpenPGP ключей других типов не гарантирована.

Создаем ключ.

gpg --gen-key

gpg (GnuPG) 1.4.2; Copyright (C) 2005 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.

This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.

Выберите тип ключа:
   (1) DSA и ElGamal (по умолчанию)
   (2) DSA (только для подписи)
   (5) RSA (только для подписи)
Ваш выбор (?-подробнее)?

Выбираем 5

ключи RSA могут иметь длину от 1024 до 4096 бит.
Какой размер ключа Вам необходим? (2048)

В целях увеличения криптостойкости рекомендуется принять большую длину ключа, по сравнению с длиной, используемой в ключах подписания DSS (напомню, это 1024 бит). Программа предлагает нам использовать ключ длиной 2048 бит, рекомендуется принять длину ключа не меньшую указанной. Используя еще большую длину ключа вы дополнительно усилите криптостойкость вашей подписи (если вы опасаетесь успехов в области факторизации простых чисел и предполагаете использовать ваш ключ в отдаленной перспективе), однако чрезмерно увеличивать длину ключа то же нет смысла, т.к. криптостойкости уже будет достаточно, кроме того использовав чрезмерно большой ключ подписания вы будете создавать при последующем подписании сообщений слишком «длинную» подпись, которая однако будет незаметна, если вы будете использовать режим сообщений MIME (в этом случае подпись будет представлена как маленький, прикрепленный к сообщению файл).

выбираем 2048

Запрашиваемый размер ключа 2048 бит
Выберите срок действия ключа.

         0 = без ограничения срока действительности
      <n>  = срок действительности n дней
      <n>w = срок действительности n недель
      <n>m = срок действительности n месяцев
      <n>y = срок действительности n лет

Ключ действителен до? (0)

выбираем 10лет, жмем 10y

Ключ действителен до: Сбт 04 Июн 2016 23:27:27 MSD
Все верно? (y/N)

подтверждаем - жмем y

Для идентификации Вашего ключа необходим User ID

Программа создаст его из Вашего имени, комментария и адреса e-mail в виде:
    "Baba Yaga (pensioner) <yaga@deepforest.ru>"

Ваше настоящее имя:

вводим alexey

Email-адрес: 

вводим  aleksey@alex.com

Комментарий:

пропускаем  - жмем Enter

Вы выбрали следующий User ID:
    "alexey <aleksey@alex.com>"

Сменить (N)Имя, (C)Комментарий, (E)email-адрес или (O)Принять/(Q)Выход?

принимаем - жмем o

Введите пароль: 

вводим и повторяем пароль

Необходимо сгенерировать много случайных чисел. Желательно, что бы вы

выполняли некоторые другие действия (печать на клавиатуре, движения мыши,
обращения к дискам) в процессе генерации; это даст генератору
случайных чисел возможность получить лучшую энтропию.
+++++
....+++++
gpg: ключ B13AC67C помечен как абсолютно доверяемый.
открытый и закрытый ключи созданы и подписаны.

gpg: проверка таблицы доверий

gpg: 3 ограниченных необходимо, 1 выполненных необходимо, PGP модель доверия
gpg: глубина: 0  корректных:   3  подписанных:   5  доверия: 0-, 0q, 0n, 0m, 0f, 3u
gpg: глубина: 1  корректных:   5  подписанных:   0  доверия: 3-, 0q, 2n, 0m, 0f, 0u
gpg: срок следующей проверки таблицы доверий 2007-04-22
pub   2048R/B13AC67C 2006-06-07 [годен до: 2016-06-04]
Отпечаток ключа = 9E2D FD81 1D8C 1324 B69A  128D 9559 8249 B13A C67C
uid                  alexey <aleksey@alex.com>

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

воспользоваться командой "--edit-key" и создать подключ для этих целей.

даем команду 

gpg --edit-key B13AC67C

получаем

gpg (GnuPG) 1.4.2; Copyright (C) 2005 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.

Секретный ключ доступен.

pub  2048R/B13AC67C  создан: 2006-06-07  годен до: 2016-06-04  применяемость: CS
                     доверие: абсолютное    достоверность: абсолютное
[абсолютн] (1). alexey <aleksey@alex.com>

Команда>                                    

даем команду  addkey

Необходим пароль для доступа к секретному ключу пользователя: 
"alexey <aleksey@alex.com>"

2048-бит RSA ключ, ID B13AC67C, создан 2006-06-07

Введите пароль:

вводим

Выберите тип ключа:
   (2) DSA (только для подписи)
   (4) ElGamal (только для шифрования)

   (5) RSA (только для подписи)
   (6) RSA (только для шифрования)
Ваш выбор (?-подробнее)?        

выбираем 6

ключи RSA могут иметь длину от 1024 до 4096 бит.
Какой размер ключа Вам необходим? (2048)

вводим 3072

Выберите срок действия ключа.

         0 = без ограничения срока действительности
      <n>  = срок действительности n дней
      <n>w = срок действительности n недель
      <n>m = срок действительности n месяцев
      <n>y = срок действительности n лет

Ключ действителен до? (0)

примем 2 года, жмем 2y

Ключ действителен до: Птн 06 Июн 2008 23:36:13 MSD
Все верно? (y/N)

жмем y

Действительно создать? (y/N)

подтверждаем, жмем y

Необходимо сгенерировать много случайных чисел. Желательно, что бы Вы
выполняли некоторые другие действия (печать на клавиатуре, движения мыши,

обращения к дискам) в процессе генерации; это даст генератору
случайных чисел возможность получить лучшую энтропию.
.....+++++

жмем на кнопки и двигаем мышкой

pub  2048R/B13AC67C  создан: 2006-06-07  годен до: 2016-06-04  применяемость: CS
                     доверие: абсолютное    достоверность: абсолютное
sub  3072R/CE203FF5  создан: 2006-06-07  годен до: 2008-06-06  применяемость: E
[абсолютн] (1). alexey <aleksey@alex.com>


сохраняем, даем команду save

Ключ создан.


<B>Если у вас несколько адресов электронной почты.</B>

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

даем команду gpg --edit-key B13AC67C 

gpg (GnuPG) 1.4.2; Copyright (C) 2005 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it

under certain conditions. See the file COPYING for details.

Секретный ключ доступен.

pub  2048R/B13AC67C  создан: 2006-06-07  годен до: 2016-06-04  применяемость: CS
                     доверие: абсолютное    достоверность: абсолютное
sub  3072R/CE203FF5  создан: 2006-06-07  годен до: 2008-06-06  применяемость: E
[абсолютн] (1). alexey <aleksey@alex.com>

Команда> 

даем команду adduid и жмем Enter

На приглашение ввести имя вводим имя

alexey_alexseev

Email-адрес:

вводим alexey_alexseev@alex.com 

Комментарий:

пропускаем (Enter)

Сменить (N)Имя, (C)Комментарий, (E)email-адрес или (O)Принять/(Q)Выход?

принимаем, жмем o


Введите пароль: 

вводим и получаем


pub  2048R/B13AC67C  создан: 2006-06-07  годен до: 2016-06-04  применяемость: CS
                     доверие: абсолютное    достоверность: абсолютное
sub  3072R/CE203FF5  создан: 2006-06-07  годен до: 2008-06-06  применяемость: E
[абсолютн] (1)  alexey <aleksey@alex.com>
[неизвстн] (2). alexey_alexseev <alexey_alexseev@alex.com>

сохраняем

save

смотрим что получилось gpg --list-key B13AC67C 


gpg: проверка таблицы доверий
gpg: 3 ограниченных необходимо, 1 выполненных необходимо, PGP модель доверия
gpg: глубина: 0  корректных:   3  подписанных:   5  доверия: 0-, 0q, 0n, 0m, 0f, 3u
gpg: глубина: 1  корректных:   5  подписанных:   0  доверия: 3-, 0q, 2n, 0m, 0f, 0u
gpg: срок следующей проверки таблицы доверий 2007-04-22
pub   2048R/B13AC67C 2006-06-07 [годен до: 2016-06-04]

uid                  alexey_alexseev <alexey_alexseev@alex.com>
uid                  alexey <aleksey@alex.com>
sub   3072R/CE203FF5 2006-06-07 [годен до: 2008-06-06]


<B>Если вам нужно удалить идентификатор пользователя, например 
alexey_alexseev <alexey_alexseev@alex.com></B>

В случае, если вы перестали пользоваться каким-либо из почтовых ящиков вы можете удалить соответствующую ему запись сертификата ключа.

даем команду gpg --edit-key B13AC67C 

gpg (GnuPG) 1.4.2; Copyright (C) 2005 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.

Секретный ключ доступен.

pub  2048R/B13AC67C  создан: 2006-06-07  годен до: 2016-06-04  применяемость: CS
                     доверие: абсолютное    достоверность: абсолютное

sub  3072R/CE203FF5  создан: 2006-06-07  годен до: 2008-06-06  применяемость: E
[абсолютн] (1). alexey_alexseev <alexey_alexseev@alex.com>
[абсолютн] (2)  alexey <aleksey@alex.com>

метим нужный идентификатор, набираем uid 1

pub  2048R/B13AC67C  создан: 2006-06-07  годен до: 2016-06-04  применяемость: CS
                     доверие: абсолютное    достоверность: абсолютное
sub  3072R/CE203FF5  создан: 2006-06-07  годен до: 2008-06-06  применяемость: E

[абсолютн] (1)* alexey_alexseev <alexey_alexseev@alex.com>
[абсолютн] (2)  alexey <aleksey@alex.com>
Команда>

теперь он помечен звездочкой

даем команду deluid

Вы действительно хотите удалить данный User ID? (y/N)

подтверждаем

pub  2048R/B13AC67C  создан: 2006-06-07  годен до: 2016-06-04  применяемость: CS
                     доверие: абсолютное    достоверность: абсолютное

sub  3072R/CE203FF5  создан: 2006-06-07  годен до: 2008-06-06  применяемость: E
[абсолютн] (1)  alexey <aleksey@alex.com>

сохраняем, жмем save

Готово.

Отзыв идентификатора

Следует сказать, что операция по удалению идентификатора пользователя отредактирует ключ только на вашей ключевой связке. Для того, что бы «отменить» идентификатор вашего ключа на сервере ключей нужно воспользоваться командой отзыва идентификатора. При этом ваши корреспонденты после обновления вашего ключа с сервера будут видеть, что данные идентификатор более не действителен. Логика здесь такова, что ни один сервер ключей никогда не удаляет с ключей идентифицирующую информацию, а может ее лишь добавлять. В нашем случае можно сказать, что мы добавляем сертификат отзыва идентификатора. То же самое касается подписей на ключах.
gpg --edit-key B13AC67C

gpg (GnuPG) 1.4.2; Copyright (C) 2005 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.

Секретный ключ доступен.

pub 2048R/B13AC67C создан: 2006-06-07 годен до: 2021-07-04 применяемость: CS
доверие: абсолютное достоверность: абсолютное
sub 3072R/CE203FF5 создан: 2006-06-07 годен до: 2008-06-06 применяемость: E
Данный ключ был отозван 2006-07-08 - RSA ключом B13AC67C alexey <aleksey@alex.com>
sub 1024g/E185B214 создан: 2006-07-08 отозван: 2006-07-08 применяемость: E
[абсолютн] (1). alexey <aleksey@alex.com>
[абсолютн] (2) alexey_alexseev <alexey_alexseev@alex.com>
[абсолютн] (3) [jpeg image of size 2601]

Команда> 

uid 2

pub 2048R/B13AC67C создан: 2006-06-07 годен до: 2021-07-04 применяемость: CS
доверие: абсолютное достоверность: абсолютное
sub 3072R/CE203FF5 создан: 2006-06-07 годен до: 2008-06-06 применяемость: E
Данный ключ был отозван 2006-07-08 - RSA ключом B13AC67C alexey <aleksey@alex.com>

sub 1024g/E185B214 создан: 2006-07-08 отозван: 2006-07-08 применяемость: E
[абсолютн] (1). alexey <aleksey@alex.com>
[абсолютн] (2)* alexey_alexseev <alexey_alexseev@alex.com>
[абсолютн] (3) [jpeg image of size 2601]

Команда> 

Нужный идентификатор помечен звездочкойДаем команду revuidДействительно отозвать данный User ID? (y/N) соглашаемся y

Укажите причину отзыва:
0 = Без указания причины
4 = User ID больше не действителен
Q = Отмена
(Возможно Вы хотите выбрать здесь 4)
Ваше решение (?-подробнее)? 

Указываем причину, примем 0 и жмем EnterВведите необязательное пояснение; закончите пустой строкой:> Жмем Enter

Причина отзыва: Без указания причины
(Пояснения отсутствуют)
Все правильно? (y/N) 

соглашаемся и жмем y

Необходим пароль для доступа к секретному ключу пользователя: 
"alexey <aleksey@alex.com>"
2048-бит RSA ключ, ID B13AC67C, создан 2006-06-07

Введите пароль:

Вводим пароль

pub 2048R/B13AC67C создан: 2006-06-07 годен до: 2021-07-04 применяемость: CS
доверие: абсолютное достоверность: абсолютное
sub 3072R/CE203FF5 создан: 2006-06-07 годен до: 2008-06-06 применяемость: E
Данный ключ был отозван 2006-07-08 - RSA ключом B13AC67C alexey <aleksey@alex.com>
sub 1024g/E185B214 создан: 2006-07-08 отозван: 2006-07-08 применяемость: E
[абсолютн] (1). alexey <aleksey@alex.com>
[ отозван] (2) alexey_alexseev <alexey_alexseev@alex.com>
[абсолютн] (3) [jpeg image of size 2601]

Команда> 

Теперь мы видим, что идентификатор alexey_alexseev <alexey_alexseev@alex.com> отозван. Если ваш корреспондент попробует отправить сообщение на данный e-mail, то почтовая программа сообщит отправителю о том, что данный e-mail более не действителен (последнее утверждение не будет однако справедливо, если отправитель сначала вручную зашифрует сообщение, вложит его в окно почтовой программы и произведет отправку).

Сохраняем командой save

Готово

Если вы по каким либо причинам решили, что вам нужно отозвать не идентификатор в целом, а вашу подпись с одного из идентификаторов сертификата ключа, то вы можете воспользоваться командой revsig в меню редактирования ключа –edit-key. При этом программа будет вас просить последовательно дать подтверждение на отзыв вашей подписи с каждого идентификатора сертификата ключа.
<B>Если вы хотите сделать один из ваших идентификаторов первичным. </B>
Если у вас несколько записей сертификата ключа, но тот который вы используете чаще всего не установлен у вас как главный (в ситуации, когда главным используется другой идентификатор), вы можете исправить ситуацию, установив его первым. В этом случае в менеджерах ключей распространенных программ (в том случае когда пользователь не занимается просмотром всех записей сертификата ключа) в качестве главной пользователь будет видеть желаемый вами идентификатор.

gpg --edit-key B13AC67C

gpg (GnuPG) 1.4.2; Copyright (C) 2005 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.

Секретный ключ доступен.

pub  2048R/B13AC67C  создан: 2006-06-07  годен до: 2016-06-04  применяемость: CS

                     доверие: абсолютное    достоверность: абсолютное
sub  3072R/CE203FF5  создан: 2006-06-07  годен до: 2008-06-06  применяемость: E
[абсолютн] (1). alexey_alexseev <alexey_alexseev@alex.com>
[абсолютн] (2)  alexey <aleksey@alex.com>

выбираем нужный идентификатор (в нашем случае например 2), 
даем команду uid 2

pub  2048R/B13AC67C  создан: 2006-06-07  годен до: 2016-06-04  применяемость: CS
                     доверие: абсолютное    достоверность: абсолютное

sub  3072R/CE203FF5  создан: 2006-06-07  годен до: 2008-06-06  применяемость: E
[абсолютн] (1). alexey_alexseev <alexey_alexseev@alex.com>
[абсолютн] (2)* alexey <aleksey@alex.com>
 
теперь он помечен звездочкой

даем команду primary

Необходим пароль для доступа к секретному ключу пользователя: 
"alexey_alexseev <alexey_alexseev@alex.com>"
2048-бит RSA ключ, ID B13AC67C, создан 2006-06-07
Введите пароль: 

вводим пароль

сохраняем результат командой save

Готово.

смотрим результат

gpg --list-key B13AC67C

pub   2048R/B13AC67C 2006-06-07 [годен до: 2016-06-04]
uid                  alexey <aleksey@alex.com>
uid                  alexey_alexseev <alexey_alexseev@alex.com>
sub   3072R/CE203FF5 2006-06-07 [годен до: 2008-06-06]

теперь идентификатор alexey <aleksey@alex.com> стоит первым в списке, он же 
будет отображаться первым в свойствах ключа при его использовании.

<B>Изменение срока действия ключа</B>

Описанными ниже командами вы сможете изменить срок действия ключа, если при его 
создании выбрали неудачную дату окончания его действия.

даем команду gpg --edit-key B13AC67C

получаем

gpg (GnuPG) 1.4.2; Copyright (C) 2005 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.

Секретный ключ доступен.

pub  2048R/B13AC67C  создан: 2006-06-07  годен до: 2016-07-05  применяемость: CS
                     доверие: абсолютное    достоверность: абсолютное
sub  3072R/CE203FF5  создан: 2006-06-07  годен до: 2008-06-06  применяемость: E
[абсолютн] (1). alexey <aleksey@alex.com>
[абсолютн] (2)  alexey_alexseev <alexey_alexseev@alex.com>
[абсолютн] (3)  [jpeg image of size 2601]

Команда>   

Вводим команду expire

получаем

Смена срока действия главного ключа
Выберите срок действия ключа.
         0 = без ограничения срока действительности
      <n>  = срок действительности n дней

      <n>w = срок действительности n недель
      <n>m = срок действительности n месяцев
      <n>y = срок действительности n лет
Ключ действителен до? (0)         

Вводим 15y

Ключ действителен до: Вск 04 Июл 2021 21:20:43 MSD

Все верно? (y/N)  

жмем y

Необходим пароль для доступа к секретному ключу пользователя: 
"alexey <aleksey@alex.com>"
2048-бит RSA ключ, ID B13AC67C, создан 2006-06-07

Введите пароль:   

Вводим пароль

получаем 

pub  2048R/B13AC67C  создан: 2006-06-07  годен до: 2021-07-04  применяемость: CS

                     доверие: абсолютное    достоверность: абсолютное
sub  3072R/CE203FF5  создан: 2006-06-07  годен до: 2008-06-06  применяемость: E
[абсолютн] (1). alexey <aleksey@alex.com>
[абсолютн] (2)  alexey_alexseev <alexey_alexseev@alex.com>
[абсолютн] (3)  [jpeg image of size 2601]
Команда>

Сохраняем, вводим команду save

Готово

Нужно сказать, что таким образом можно изменить срок действия не только главного ключа, но и любого из подключей. Для этого непосредственно перед вводом команды expire нужно пометить подключ, срок действия которого вы хотите изменить, командой key n, где n номер подключа в списке (выделение подключа было описано в разделе «редактирование ключа (удаление подключа и создание нового подключа)»
<B>Отзыв (аннулирование) подключа.</B>
Если по каким либо причинам вам нужно отозвать подключ раньше времени его действия, то вы можете сделать это. Однако не забудьте сгенерировать новый подключ вместо отозванного (и разместить его на ключевом сервере и уведомить ваших корреспондентов), если вы не сделали этого ранее, в противном случае ваши корреспонденты не смогут отправлять вам зашифрованные сообщения. В нашем примере мы аннулируем подключ E185B214, созданный (для примера) специально для описания процедуры аннулирования. О том как создать подключ мы знаем из рассмотренных выше разделов.

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

gpg --edit-key B13AC67C      

gpg (GnuPG) 1.4.2; Copyright (C) 2005 Free Software Foundation, Inc.

This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.

Секретный ключ доступен.

pub  2048R/B13AC67C  создан: 2006-06-07  годен до: 2021-07-04  применяемость: CS
                     доверие: абсолютное    достоверность: абсолютное
sub  3072R/CE203FF5  создан: 2006-06-07  годен до: 2008-06-06  применяемость: E

sub  1024g/E185B214  создан: 2006-07-08  годен до: 2007-07-08  применяемость: E
[абсолютн] (1). alexey <aleksey@alex.com>
[абсолютн] (2)  alexey_alexseev <alexey_alexseev@alex.com>
[абсолютн] (3)  [jpeg image of size 2601]

Команда>

метим нужный подключ, вводим команду key 2

pub  2048R/B13AC67C  создан: 2006-06-07  годен до: 2021-07-04  применяемость: CS
                     доверие: абсолютное    достоверность: абсолютное
sub  3072R/CE203FF5  создан: 2006-06-07  годен до: 2008-06-06  применяемость: E
sub* 1024g/E185B214  создан: 2006-07-08  годен до: 2007-07-08  применяемость: E
[абсолютн] (1). alexey <aleksey@alex.com>
[абсолютн] (2)  alexey_alexseev <alexey_alexseev@alex.com>
[абсолютн] (3)  [jpeg image of size 2601]

Команда>    

теперь он помечен звездочкой

даем команду revkey

Вы действительно хотите отозвать данный подключ? (y/N)    

вводим y

Укажите причину отзыва:
  0 = Без указания причины
  1 = Ключ был скомпрометирован
  2 = Ключ заменён другим
  3 = Ключ больше не используется
  Q = Отмена

Ваше решение (?-подробнее)?   
   
вводим причину, например 2 и жмем Enter
Введите необязательное пояснение; закончите пустой строкой:
>

пропускаем и жмем Enter
Причина отзыва: Ключ заменён другим
(Пояснения отсутствуют)
Все правильно? (y/N)    


жмем y
Необходим пароль для доступа к секретному ключу пользователя: 
"alexey <aleksey@alex.com>"
2048-бит RSA ключ, ID B13AC67C, создан 2006-06-07

Введите пароль:

Вводим пароль
pub  2048R/B13AC67C  создан: 2006-06-07  годен до: 2021-07-04  применяемость: CS
                     доверие: абсолютное    достоверность: абсолютное
sub  3072R/CE203FF5  создан: 2006-06-07  годен до: 2008-06-06  применяемость: E
Данный ключ был отозван 2006-07-08 - RSA ключом B13AC67C alexey <aleksey@alex.com>
sub  1024g/E185B214  создан: 2006-07-08  отозван: 2006-07-08  применяемость: E
[абсолютн] (1). alexey <aleksey@alex.com>
[абсолютн] (2)  alexey_alexseev <alexey_alexseev@alex.com>

[абсолютн] (3)  [jpeg image of size 2601]

Команда> 
                             
сохраняем командой save
просмотрим наш ключ gpg --list-key B13AC67C

pub   2048R/B13AC67C 2006-06-07 [годен до: 2021-07-04]
uid                  alexey <aleksey@alex.com>

uid                  alexey_alexseev <alexey_alexseev@alex.com>
uid                  [jpeg image of size 2601]
sub   3072R/CE203FF5 2006-06-07 [годен до: 2008-06-06]

Теперь аннулируемого подключа мы не видим, однако это не значит, что его нет, его можно обнаружить командой gpg --edit-key

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

Не забудьте предупредить ваших корреспондентов об операции аннулирования ключа и обновите ключ на сервере.

<B>Рассмотрим операцию смены пароля (парольной фразы), которым защищен секретный ключ</B>

gpg --edit-key B13AC67C

gpg (GnuPG) 1.4.2; Copyright (C) 2005 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.

Секретный ключ доступен.

pub  2048R/B13AC67C  создан: 2006-06-07  годен до: 2021-07-04  применяемость: CS

                     доверие: абсолютное    достоверность: абсолютное
sub  3072R/CE203FF5  создан: 2006-06-07  годен до: 2008-06-06  применяемость: E
Данный ключ был отозван 2006-07-08 - RSA ключом B13AC67C alexey <aleksey@alex.com>
sub  1024g/E185B214  создан: 2006-07-08  отозван: 2006-07-08  применяемость: E
[абсолютн] (1). alexey <aleksey@alex.com>
[абсолютн] (2)  alexey_alexseev <alexey_alexseev@alex.com>
[абсолютн] (3)  [jpeg image of size 2601]

Команда> 
         
вводим команду passwd
Ключ защищен.

Необходим пароль для доступа к секретному ключу пользователя: 
"alexey <aleksey@alex.com>"
2048-бит RSA ключ, ID B13AC67C, создан 2006-06-07

Введите пароль:  

вводим пароль

Введите новый пароль для данного секретного ключа.

Введите пароль: 

вводим и повторяем
даем команду save
Следует однако сказать, что смена пароля (фразы) может оказать бесполезной, если ваш ключ был похищен ранее того как вы решили сменить пароль к его доступу. Поэтому, если вы надежно оберегаете ваш ключ, нет смысла в частых операциях по смене парольной фразы, кроме того вам придется постоянно запоминать новый пароль. Дело в том, что если ваш ключ окажется похищенным - он будет зашифрован тем паролем, который использовался для его защиты до его смены. Смену ключевой фразы имеет смысл выполнять в том случае, если вы предполагаете, что кто-либо подсмотрел за нажатиями вами клавиш клавиатуры при вводе парольной фразы, но при этом не успел похитить ваш ключ. И последнее – не записываете ваш пароль или фразу на бумаге.

Сохранение ключа
После завершения процесса создания ключа обязательно сделайте его резервную копию! Не пренебрегайте этой операцией, которая займет у вас всего лишь несколько минут! Сделав копию ключа на надежном носителе положите его в надежное место. На мой взгляд для этого лучше всего подходит CD малого формата или смарт-карта, поддерживающая формат OpenPGP, кстати в последнем случае единственным вариантом заполучить ваш ключ будет кража карты, так как снять с нее информацию не удастся. Если вы не сделаете копии и утратите свой ключ, то потеряете доступ к зашифрованной этим ключом информации и никто не сможет вам помочь в ее восстановлении. Вы не сможете проставлять электронные цифровые подписи, что будет особенно критично, если пользователи имеют ваш открытый ключ, который помечен ими как достоверный. Вы можете сменить квартиру, одежду, уехать в другую страну, но вы всегда останетесь самим собой. Точно так же вы можете сменить операционную систему, компьютер, программную оболочку, но ваш ключ останется всегда вашим. С его помощью вы сможете заверять созданные вами файлы и сообщения электронной почты, а так же расшифровывать информацию где бы вы не находились и в какой бы ОС вы не работали. Кроме того - и это очень важно! - при длительном использовании ключа у вас могут скопиться сертифицирующие ваш ключ экспортируемые подписи от ваших корреспондентов, которые будут выступать заверяющими для посторонних или новых ваших корреспондентов. Собрать повторно такие подписи впоследствии будет затруднительно или просто невозможно! Утрата ключа будет неприятной и с другой точки зрения – вам будет необходимо оповестить всех ваших корреспондентов о недействительности ключа и попросить последних выполнить операцию аннулирования сертифицирующих ваш ключ подписей, которыми корреспонденты заверили ваш ключ на своих связках. Забегая немного вперед можно сказать, что если вы не утратили свой ключ, но посчитали его скомпрометированным, то обязательно должны выпустить сертификат аннулирования вашего ключа и обновить ключ на сервере.

Итак дайте команду 

gpg --export-secret-keys -a B13AC67C

параметр -a нужен для того, что бы вывести материал ключа в формате ASCII

Вы получите 

-----BEGIN PGP PRIVATE KEY BLOCK-----
Version: GnuPG v1.4.2 (GNU/Linux)

lQLOBESHKdgBBeC+jOZNhKppv3+GxE+Mc4jBjZBISjHVeR0ODroSD4CYtzv+wyXV
Tz3Mu7VnjSdMBxUNG26gh9ZD9jIwKGQsM7gHpJZOnSLDVtW87raEBMkIDeB6zPPD
o9ovrleO5bS9549IP5S3lVpl/Cqwhf8QihxD/GAs4dLFvFXJA35DxY+VPaKELolx

MrUfOkrwjlgvkHMSn+kjH6L7Ej834xpJvb5KSLwNHQwOSpdGqSAsoUkaE3ngWRgx
...
Bd9yXhKgEBv+IueXayQRBZQmLO1bb4XBv/MKiPNxy+BCyJ+UVJTHAz6U4fjdEr9b
gEj54Vne88xhexQhbILMbum/zW0YvAjKExCa1U9yT8pHGEYCfdfwbZfHLb46yMWN
V6ZJXmFKH3B2B1ZTQbE4/9exyGvEJdywme+J8tK3ElltuHd5xxcLNn5menyPpR4K
+UOIorfEmtOAVsU+8d9ld7l/1dkjxPUryZwdMCvlrgpybVWCgTIx7ohMzOl50Q==
=6T+Z
-----END PGP PRIVATE KEY BLOCK-----

далее дайте команду

gpg --export-keys -a B13AC67C

Вы получите 

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.2 (GNU/Linux)

mMcERIcp2AEF4L6M5k2Eqmm/f4bET4xziMGNkEhKMdV5HQ4OuhIPgJi3O/7DJdVP
Pcy7tWeNJ0wHFQ0bbqCH1kP2MjAoZCwzuAeklk6dIsNW1bzutoQEyQgN4HrM88Oj
2i+uV47ltL3nj0g/lLeVWmX8KrCF/xCKHEP8YCzh0sW8VckDfkPFj5U9ooQuiXEy
tR86SvCOWC+QcxKf6SMfovsSPzfjGkm9vkpIvA0dDA5Kl0apICyhSRoTeeBZGDHc
pdCOGHqZAAYptCphbGV4ZXlfYWxleHNlZXYgPGFsZXhleV9hbGV4c2VldkBhbGV4
...

lVmCSbE6xnxT1AXfcl4SoBAb/iLnl2skEQWUJiztW2+Fwb/zCojzccvgQsiflFSU
xwM+lOH43RK/W4BI+eFZ3vPMYXsUIWyCzG7pv81tGLwIyhMQmtVPck/KRxhGAn3X
8G2Xxy2+OsjFjVemSV5hSh9wdgdWU0GxOP/XschrxCXcsJnvifLStxJZbbh3eccX
CzZ+Znp8j6UeCvlDiKK3xJrTgFbFPvHfZXe5f9XZI8T1K8mcHTAr5a4Kcm1VgoEy
Me6ITMzpedE=
=YiBO
-----END PGP PUBLIC KEY BLOCK-----

Скопируете последовательно содержимое первого и второго блока в текстовый файл и сохраните.
Блоки необходимо копировать включая атрибуты начала и окончания содержимого ключа, 
т.е. вместе с

 
-----BEGIN PGP PRIVATE KEY BLOCK-----
Version: GnuPG v1.4.2 (GNU/Linux)

содержимое
-----END PGP PRIVATE KEY BLOCK-----
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.2 (GNU/Linux)

содержимое
-----END PGP PUBLIC KEY BLOCK-----


Поместите файл на носитель, не забудьте удалить файл с винчестера вашего ПК, последнее лучше сделать с помощью одной из утилит гарантированного уничтожения информации. После сохранения ключа загляните в файл gpg.conf и проверьте значение параметра default-key. Значением этого параметра должен быть идентификатор вашего ключа. Скорее всего так и будет, но если вы проводили эксперименты с разными ключами, неисключено, что значение параметра придется скорректировать. Если этого не сделать, в дальнейшем могут возникнуть сложности при работе по сертификации полученных вами ключей от ваших корреспондентов.
<B>default-key [keyID]</B>
Обратите внимание, что бы перед параметром не стоял знак #, если вы обнаружите этот знак, не торопитесь его удалять, еще раз проглядите текст файла, возможно этот параметр все же приписан в файле без комментатора.

В этом же файле сразу после параметра default-key (в следующей строчке, и опять же если вы не обнаружите этого параметра уже прописанным) пропишите команду ask-cert-level. В дальнейшей работе с GPG данный параметр предоставит вам удобное меню глубины проверки подписываемых ключей.
<B><SPAN lang="en-us">a</SPAN>sk-cert-level</B>
Сохраните файл gpg.conf

Если вы создали несколько ключей, то можете просмотреть все из них, дав команду gpg –list-key без указания конкретного идентификатора ключа.
Дополнительные команды
Добавление фотоудостоверения
Достаточно интересной особенностью является добавление в ключ фотоудостоверения. То есть в вашем ключе вы можете разместить вашу фотографию. Для этого нужно взять снимок в формате jpg с размером не более 240х288 точек и в меню редактирования ключа дать команду нужную команду. Прежде чем добавить фотоудостоверение приготовьте файл фото. Заметьте, что добавление изображения приводит к увеличению размера ключа. Фото-удостоверения не имеют поддержки HTTP серверами-депозитариями ключей (в отличие от LDAP серверов), но главное - на фото-удостоверение нельзя полагаться для определения подлинности полученного от корреспондента ключа. По большому счету фото-удостоверение является определенной красивостью и может использоваться лишь для первичной идентификации ключа.
Итак даем команду gpg --edit-key B13AC67Cполучаем

gpg (GnuPG) 1.4.2; Copyright (C) 2005 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.

Секретный ключ доступен.

pub  2048R/B13AC67C  создан: 2006-06-07  годен до: 2016-06-04  применяемость: CS
                     доверие: абсолютное    достоверность: абсолютное
sub  3072R/CE203FF5  создан: 2006-06-07  годен до: 2008-06-06  применяемость: E
[абсолютн] (1). alexey <aleksey@alex.com>
[абсолютн] (2)  alexey_alexseev <alexey_alexseev@alex.com>

Команда>

даем команду addphoto
получаем 

Выберите изображение для использования в качестве Вашего Фото ID.
Изображение должно быть в формате JPEG. Помните, что оно будет храниться
с Вашим открытым ключом и увеличит его размер, т.е. не следует брать очень
большое изображение. Рекомендуемый размер около 240x288.

Введите имя JPEG файла для Фото ID:
                                         
Вводим путь к приготовленному файлу, содержащему вашу фотографию
Введите имя JPEG файла для Фото ID: /home/user/4.jpg
/bin/bash: xloadimage: command not found
gpg: не могу отобразить Фото ID!
Данное фото правильное (y/N/q)?     


Говорим y

Необходим пароль для доступа к секретному ключу пользователя: 
"alexey <aleksey@alex.com>"
2048-бит RSA ключ, ID B13AC67C, создан 2006-06-07

Введите пароль:     

Вводим пароль и получаем

pub  2048R/B13AC67C  создан: 2006-06-07  годен до: 2016-06-04  применяемость: CS
                     доверие: абсолютное    достоверность: абсолютное

sub  3072R/CE203FF5  создан: 2006-06-07  годен до: 2008-06-06  применяемость: E
[абсолютн] (1). alexey <aleksey@alex.com>
[абсолютн] (2)  alexey_alexseev <alexey_alexseev@alex.com>
[неизвстн] (3)  [jpeg image of size 5208]

Под индексом 3 мы видим добавленный идентификатор фотоудостоверения
Сохраняем, даем команду save
Готово!

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

quit – позволяет произвести выход из меню редактирования свойств ключа без сохранения внесенных изменений.

help – позволяет показать список доступных команд в активном меню.

Смарт-карты

В заключении хочется отметить, что GnuPG может работать со смарт-картами, правда не всеми, а только с теми, которые поддерживают стандарт OpenPGP, например с такими, которые описаны по данному адресу http://g10code.com/p-card.html . Смарт-карта представляет собой портативное устройство и содержит защищенную от взлома микросхему с микропроцессором, позволяющую надёжно хранить некоторый объём данных и производить c ними математические операции. Извлечь секретный криптографический ключ без сложнейшего взлома с такой карты невозможно (можно лишь экспортировать открытый ключ или, зная ПИН-код, очистить содержимое карты). Даже располагая ПИН-кодом вы можете лишь пользоваться картой. Использование такого устройства повысит безопасность ваших данных, поскольку у вас не будет необходимости держать ваш секретный ключ непосредственно в файловой системе компьютера. Ключ на смарт-карте можно сгенерировать сразу, но поскольку резервное копирование секретного ключа со смарт-карты невозможно, при изготовлении ключа лучше предварительно сгенерировать ключ на жестком диске компьютера, сделать его резервную копию на любом надежном сменном носителе, а после перенести ключ на смарт-карту и удалить его из файловой системы.

****************************************
Заключение

Мы рассмотрели основные действия по созданию ключей. В следующих частях руководства будут описаны вопросы работы с применением наиболее часто встречающихся команд GPG, вопросы сертификации и подписания ключей, отправки и поиска ключей на серверах-депозитариях, команды шифрования/расшифрования, рассмотрена работа GPG с почтовыми клиентами.

Your rating: Нет Average: 8.8 (14 votes)

Комментарии

Аватар пользователя Nico1964

Re: Охраняем свои секреты, или GPG ...

Большое спасибо, отличное руководство! Да воздастся Вам за труды в той же мере.

RSS-материал