Как в GnuPG выбрать алгоритм симметричнго шифрования?
По умолчания стоит CAST5, можно ли использовать другой?
Thanks.
Комментарии
— SATtva (14/05/2006 13:50) Для единичной операции в командной строке используйте дополнительный параметр --cipher-algo с идентификатором алгоритма. Например, для симметричного шифрования файла по алгоритму Twofish:
Прописывать этот параметр в настройках GnuPG (gpg.conf) не следует, поскольку это приведёт к обходу совместимости алгоритмов получателя сообщения, указанных в сертификате его ключа. В gpg.conf лучше определять собственные предпочтительные алгоритмы в приоритетном порядке с такой конструкции:
В этом случае, если получатель сообщения поддерживает Twofish, сообщение будет зашифровано им. Если нет, смотрим совместимость по AES-256: если поддерживается, шифруем им, если нет — смотрим дальше.
То же самое касается функций хэширования и алгоритмов сжатия:
Для защиты закрытых ключей есть дополнительные параметры:
Первый определяет алгоритм шифрования закрытых ключей на диске, а второй — функцию хэширования парольной фразы. (Ещё есть параметр s2k-mode, задающий режим вычисления ключа шифрования из парольной фразы, но там по умолчанию уже задан самый надёжный режим итеративного хэширования с привязкой.)
— Serghan (14/05/2006 15:19) SATtva, полагаю что это опечатка:
— Serghan (20/10/2006 05:20) Sattva, в gpg.conf прописал: – "gpg personal-cipher-preferences TWOFISH AES256"
Всё равно по Default GnuPG при симмтричном шифровании использует CAST5.
Как выствить по умолчанию свой алгоритм симметричного шифрования?
— unknown (20/10/2006 09:05) А у Вас случайно не включен режим --openpgp или --pgp6, который блокирует выбор шифра? Его можно заменить параметром --gnupg или в более поздних версиях, --pgp7 или --pgp8
— Serghan (20/10/2006 12:03) unknown, нет, не велючен. Если применяешь для единиченой операции: – "gpg --cipher-algo TwoFish -c d:\sometext.txt" всё нормально, а когда прописываешь в gpg.conf: – "gpg -c somefile.txt --cipher-algo TWOFISH" всё равно шифрует CAST5 :-(
— SATtva (20/10/2006 12:12) Serghan, у Вас команда для конфига указана неправильно, оттого, видимо, и игнорируется. Должно быть:
Без gpg в начале.
— Serghan (20/10/2006 13:13) Строка в gpg.conf: "personal-cipher-preferences TWOFISH AES256"
Ничего не изменила. По умолчанию остался CAST5.
— SATtva (20/10/2006 14:22) Так, а шифруете Вы открытым ключом или симметричным (иными словами, используете свитч -e или -c)? При шифровании открытым ключом приоритет имеют предпочтения, заданные в сертификате ключа. Если же простой парольной фразой, то должен использоваться шифр, указанный первым в списке personal-cipher-preferences.
Кстати, Вы уверены, что GnuPG корректно считывает файл настроек? Прочие указанные в нём параметры применяются верно?
Если даже после исполнения всех этих рекомендаций проблема всё же сохранится, прошу Вас разместить здесь содержимое gpg.conf. Возможно, имеет место конфликт с какой-то иной опцией.
— SATtva (21/10/2006 18:30) Это принудительный выбор шифра. Мне странно, что обычный метод с помощью personal-cipher-preferences не срабатывает.
— Serghan (25/10/2006 12:58, исправлен 25/10/2006 15:19) Так кто нибудь пробовал у себя на машине сделать такое:
У меня не работает. У кого нибудь получилось, или это только у меня глюки?
— SATtva (25/10/2006 15:23) Вот соответствующий кусок из моего конфига (разумеется, всё работает):
— Serghan (25/10/2006 15:33) Создал конфиг из вышеперечисленного, и ничего больше, не работает! :-(
— SATtva (25/10/2006 20:45) Поставьте в конфиг строку cipher-algo TWOFISH, зашифруйте какой-нибудь файл с помощью -c, а затем проверьте шифртекст с помощью --list-packets. Файл будет зашифрован именно Twofish'ем? Мне просто интересно, считывается ли вообще конфиг.
— Serghan (26/10/2006 10:16) Проверил, и провел ешё ряд тестов которые привели меня к выводу что конфиг вообще не обрабатывается!
...не могу ни с чем связать, в чём может быть проблема?
— SATtva (26/10/2006 19:39) Ну, теперь хоть видим логику в поведении. Проверьте, в переменных среды у Вас есть переменная GNUPGHOME, указывающая путь к директории с файлом gpg.conf?
— Serghan (27/10/2006 02:40, исправлен 27/10/2006 02:41) Создал переменную "GNUPGHOME" прописал путь к директории с "gpg.conf", настройки из конфика стали читаться. GnuPG была прописанна в переменной "PATH", я думал этого достаточно.
— SATtva (27/10/2006 09:41) Нет, PATH определяет путь к исполняемому файлу gpg, а GNUPGHOME служит указателем именно на каталог с файлом конфигурации. Это позволяет создавать достаточно гибкие схемы.
Скажем, у меня gpg установлен ниже стандартного каталога приложений Program Files (к которому умолчальный пользователь не должен и не имеет никаких особых прав, кроме чтения), файл настроек находится за пределами этого каталога, причём под учётной записью с очень урезанными правами я могу этот файл править. А ключи вообще размещены чёрти где — на них стоят указатели уже в самом файле настроек.
— Гость (15/07/2007 01:08) Если не затруднит ответить, а как создать эту переменную GNUPGHOME?
Та же проблема.
— SATtva (15/07/2007 10:43) Откройте панель управления Windows > Система > вкладка Дополнительно > Переменные среды (кнопка внизу). В блоке переменных пользователя (сверху) нажмите Создать. В качестве имени переменной введите GNUPGHOME, а значением укажите путь к директории с файлом настроек.
Да, спасибо за ответ я так и делал, но почему-то безрезультатно.
В общем, я делал так:
WindowsXP SP2
1) Установка GnuPG 1.4.7(gnupg-w32cli-1.4.7.exe) в каталог C:\Program Files\GNU\GnuPG
2) Добавление в системную переменную Path пути C:\Program Files\GNU\GnuPG
3) Создание пользовательской переменной GNUPGHOME со значением пути C:\Program Files\GNU\GnuPG
4) Создание и добавление файла реестра вида:
REGEDIT4
В общем проблема в чем: при создании ключей почему то игнорируются установки gpg.conf, ключи всегда шифруются AES, а хэш всегда SHA-1. Но при шифровании из командной строки типа gpg -c somefile.txt – файл как и определено в gpg.conf шифруется TWOFISH, значит gpg.conf все таки читается. Почему же при создании ключей он игнорируется? Не очень хочется пытаться делать это все через командную строку и --edit-key, должен же gpg.conf и в этом случае читаться. Переустанавливал не помогло. Скоро убью сибя ап стену ;) хелп ми сомбади!
— SATtva (15/07/2007 18:05) Пункт 3 не имеет смысла, если конфиг Вы размещаете в программной директории GPG.
ключи всегда шифруются AES, а хэш всегда SHA-1
Ключи или сообщения? Для защиты ключей (процедур String-To-Key и шифрования секретного ключевого материала) используются параметры s2k-cipher-algo и s2k-digest-algo.
Скоро убью сибя ап стену
Лучше gpg.man почитайте.
— Гость (15/07/2007 20:30) SATtva речь именно о ключах. Они упорно генерировались с хэшем SHA-1 и были зашифрованы AES, несмотря на то, что в gpg.conf было прописано:
s2k-cipher-algo TWOFISH
s2k-digest-algo SHA256
Я решил эту проблему прописав в gpg.conf строчку предпочтений:
default-preference-list TWOFISH AES256 AES192 AES CAST5 BLOWFISH 3DES SHA512 SHA256 RIPEMD160 SHA384 SHA1 MD5 ZIP ZLIB BZIP2 Uncompressed
И все стало тип-топ. Ключи генерируются как и указано с TWOFISH и SHA512.
Поэтому спасибо за внимание, проблема вроде решена.
— SATtva (15/07/2007 20:42)
ключи всегда шифруются AES, а хэш всегда SHA-1
default-preference-list определяет не то, чем ключи будут шифроваться (это задача s2k-cipher-algo), а чем они будут шифровать. Будьте точны в формулировках.
попадаем после ввода пароля в меню редактирования своего ключа.
Можем набрать help:
Command> help
Даём комманду:
Command> showpref
Видим что-то типа:
Даём другую комманду:
Command> pref
Это список предпочтений ключа в кодовом виде. (S-номер шифра, H--номер хэша, Z-номер алгоритма компрессии).
Даём комманду setpref с другими предпочтениями:
Набираем showpref, чтобы убедиться, что всё получилось как надо:
Если всё в порядке, то сохраняемся (save), если нет, то прерываем работу (quit или [Ctrl+c])
Command> save
В процессе выполнения комманд будут возникать запросы пароля и возможно требование выбрать текущий идентификатор пользователя (если например на ключ повешено несколько E-mail) – это делается коммандой uid с номером.
Теперь можете экспортивать изменённый ключ на сервер ключеё и посоветовать его обновить всем своим корреспондентам,
Их программа будет выбирать при шифромании сообщения к вам предпочитаемый алгоритм из числа доступных с начала списка,
А Ваша программа также будет использовать предпочитаемый тип хэша для
подписи,
Для единичной операции в командной строке используйте дополнительный параметр --cipher-algo с идентификатором алгоритма. Например, для симметричного шифрования файла по алгоритму Twofish:
Прописывать этот параметр в настройках GnuPG (gpg.conf) не следует, поскольку это приведёт к обходу совместимости алгоритмов получателя сообщения, указанных в сертификате его ключа. В gpg.conf лучше определять собственные предпочтительные алгоритмы в приоритетном порядке с такой конструкции:
В этом случае, если получатель сообщения поддерживает Twofish, сообщение будет зашифровано им. Если нет, смотрим совместимость по AES-256: если поддерживается, шифруем им, если нет — смотрим дальше.
То же самое касается функций хэширования и алгоритмов сжатия:
Для защиты закрытых ключей есть дополнительные параметры:
Первый определяет алгоритм шифрования закрытых ключей на диске, а второй — функцию хэширования парольной фразы. (Ещё есть параметр s2k-mode, задающий режим вычисления ключа шифрования из парольной фразы, но там по умолчанию уже задан самый надёжный режим итеративного хэширования с привязкой.)
SATtva, полагаю что это опечатка:
Sattva, в gpg.conf прописал: – "gpg personal-cipher-preferences TWOFISH AES256"
Всё равно по Default GnuPG при симмтричном шифровании использует CAST5.
Как выствить по умолчанию свой алгоритм симметричного шифрования?
А у Вас случайно не включен режим --openpgp или --pgp6, который блокирует выбор шифра? Его можно заменить параметром --gnupg или в более поздних версиях, --pgp7 или --pgp8
unknown, нет, не велючен. Если применяешь для единиченой операции: – "gpg --cipher-algo TwoFish -c d:\sometext.txt" всё нормально, а когда прописываешь в gpg.conf: – "gpg -c somefile.txt --cipher-algo TWOFISH" всё равно шифрует CAST5 :-(
Serghan, у Вас команда для конфига указана неправильно, оттого, видимо, и игнорируется. Должно быть:
Без gpg в начале.
Строка в gpg.conf: "personal-cipher-preferences TWOFISH AES256"
Ничего не изменила. По умолчанию остался CAST5.
Так, а шифруете Вы открытым ключом или симметричным (иными словами, используете свитч -e или -c)? При шифровании открытым ключом приоритет имеют предпочтения, заданные в сертификате ключа. Если же простой парольной фразой, то должен использоваться шифр, указанный первым в списке personal-cipher-preferences.
Кстати, Вы уверены, что GnuPG корректно считывает файл настроек? Прочие указанные в нём параметры применяются верно?
Если даже после исполнения всех этих рекомендаций проблема всё же сохранится, прошу Вас разместить здесь содержимое gpg.conf. Возможно, имеет место конфликт с какой-то иной опцией.
Шифрую симметричным шифрованием, использую следующую команду: "gpg -c exaple.txt"
Содержимое файла gpg.conf
Очень странно. Версия: gpg (GnuPG) 1.4.5
Вот пример ходил, от unknown кажется:
tar -c -f- secDATA | gpg -c --cipher-algo RIJNDAEL256 > secDATA.tar.gpg
и
gpg --decrypt --cipher-algo RIJNDAEL256 secDATA.tar.gpg
Это принудительный выбор шифра. Мне странно, что обычный метод с помощью personal-cipher-preferences не срабатывает.
Так кто нибудь пробовал у себя на машине сделать такое:
У меня не работает. У кого нибудь получилось, или это только у меня глюки?
Вот соответствующий кусок из моего конфига (разумеется, всё работает):
Создал конфиг из вышеперечисленного, и ничего больше, не работает! :-(
Поставьте в конфиг строку cipher-algo TWOFISH, зашифруйте какой-нибудь файл с помощью -c, а затем проверьте шифртекст с помощью --list-packets. Файл будет зашифрован именно Twofish'ем? Мне просто интересно, считывается ли вообще конфиг.
Проверил, и провел ешё ряд тестов которые привели меня к выводу что конфиг вообще не обрабатывается!
...не могу ни с чем связать, в чём может быть проблема?
Ну, теперь хоть видим логику в поведении. Проверьте, в переменных среды у Вас есть переменная GNUPGHOME, указывающая путь к директории с файлом gpg.conf?
Создал переменную "GNUPGHOME" прописал путь к директории с "gpg.conf", настройки из конфика стали читаться. GnuPG была прописанна в переменной "PATH", я думал этого достаточно.
Нет, PATH определяет путь к исполняемому файлу gpg, а GNUPGHOME служит указателем именно на каталог с файлом конфигурации. Это позволяет создавать достаточно гибкие схемы.
Скажем, у меня gpg установлен ниже стандартного каталога приложений Program Files (к которому умолчальный пользователь не должен и не имеет никаких особых прав, кроме чтения), файл настроек находится за пределами этого каталога, причём под учётной записью с очень урезанными правами я могу этот файл править. А ключи вообще размещены чёрти где — на них стоят указатели уже в самом файле настроек.
Если не затруднит ответить, а как создать эту переменную GNUPGHOME?
Та же проблема.
Откройте панель управления Windows > Система > вкладка Дополнительно > Переменные среды (кнопка внизу). В блоке переменных пользователя (сверху) нажмите Создать. В качестве имени переменной введите GNUPGHOME, а значением укажите путь к директории с файлом настроек.
Да, спасибо за ответ я так и делал, но почему-то безрезультатно.
В общем, я делал так:
WindowsXP SP2
1) Установка GnuPG 1.4.7(gnupg-w32cli-1.4.7.exe) в каталог C:\Program Files\GNU\GnuPG
2) Добавление в системную переменную Path пути C:\Program Files\GNU\GnuPG
3) Создание пользовательской переменной GNUPGHOME со значением пути C:\Program Files\GNU\GnuPG
4) Создание и добавление файла реестра вида:
REGEDIT4
5) Создание файла gpg.conf в директории C:\Program Files\GNU\GnuPG:
personal-cipher-preferences TWOFISH AES256 AES192 AES BLOWFISH CAST5 3DES
personal-digest-preferences SHA512 SHA256 RIPEMD160 SHA384 SHA1 MD5
В общем проблема в чем: при создании ключей почему то игнорируются установки gpg.conf, ключи всегда шифруются AES, а хэш всегда SHA-1. Но при шифровании из командной строки типа gpg -c somefile.txt – файл как и определено в gpg.conf шифруется TWOFISH, значит gpg.conf все таки читается. Почему же при создании ключей он игнорируется? Не очень хочется пытаться делать это все через командную строку и --edit-key, должен же gpg.conf и в этом случае читаться. Переустанавливал не помогло. Скоро убью сибя ап стену ;) хелп ми сомбади!
Пункт 3 не имеет смысла, если конфиг Вы размещаете в программной директории GPG.
Ключи или сообщения? Для защиты ключей (процедур String-To-Key и шифрования секретного ключевого материала) используются параметры s2k-cipher-algo и s2k-digest-algo.
Лучше gpg.man почитайте.
SATtva речь именно о ключах. Они упорно генерировались с хэшем SHA-1 и были зашифрованы AES, несмотря на то, что в gpg.conf было прописано:
s2k-cipher-algo TWOFISH
s2k-digest-algo SHA256
Я решил эту проблему прописав в gpg.conf строчку предпочтений:
default-preference-list TWOFISH AES256 AES192 AES CAST5 BLOWFISH 3DES SHA512 SHA256 RIPEMD160 SHA384 SHA1 MD5 ZIP ZLIB BZIP2 Uncompressed
И все стало тип-топ. Ключи генерируются как и указано с TWOFISH и SHA512.
Поэтому спасибо за внимание, проблема вроде решена.
default-preference-list определяет не то, чем ключи будут шифроваться (это задача s2k-cipher-algo), а чем они будут шифровать. Будьте точны в формулировках.
Запускаем gpg --edit-key [user-ID]
попадаем после ввода пароля в меню редактирования своего ключа.
Можем набрать help:
Command> help
Даём комманду:
Command> showpref
Видим что-то типа:
Даём другую комманду:
Command> pref
Это список предпочтений ключа в кодовом виде. (S-номер шифра, H--номер хэша, Z-номер алгоритма компрессии).
Даём комманду setpref с другими предпочтениями:
Набираем showpref, чтобы убедиться, что всё получилось как надо:
Если всё в порядке, то сохраняемся (save), если нет, то прерываем работу (quit или [Ctrl+c])
Command> save
В процессе выполнения комманд будут возникать запросы пароля и возможно требование выбрать текущий идентификатор пользователя (если например на ключ повешено несколько E-mail) – это делается коммандой uid с номером.
Теперь можете экспортивать изменённый ключ на сервер ключеё и посоветовать его обновить всем своим корреспондентам,
Их программа будет выбирать при шифромании сообщения к вам предпочитаемый алгоритм из числа доступных с начала списка,
А Ваша программа также будет использовать предпочитаемый тип хэша для
подписи,