Как выбрать алгоритм симметричнго шифрования?


Dоброго Времени Суток!

Как в 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, полагаю что это опечатка:
gpg -c somefile.txt cipher-algo TWOFISH
<!
escaped></blockquote><!escaped-->
Наверное имелось ввиду:
gpg --cipher-algo TwoFish -c d:\sometext.txt

Спасибо.
— 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. Возможно, имеет место конфликт с какой-то иной опцией.
— Serghan (20/10/2006 15:13, исправлен 20/10/2006 19:21)   
Шифрую симметричным шифрованием, использую следующую команду: "gpg -c exaple.txt"
Содержимое файла gpg.conf



Очень странно. Версия: gpg (GnuPG) 1.4.5
— spinore (20/10/2006 20:15)   
Вот пример ходил, от unknown кажется:

tar -c -f- secDATA | gpg -c --cipher-algo RIJNDAEL256 > secDATA.tar.gpg

и

gpg --decrypt --cipher-algo RIJNDAEL256 secDATA.tar.gpg
— 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, а значением укажите путь к директории с файлом настроек.
Гость (15/07/2007 15:33, исправлен 15/07/2007 18:00)   

Да, спасибо за ответ я так и делал, но почему-то безрезультатно.
В общем, я делал так:
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 и в этом случае читаться. Переустанавливал не помогло. Скоро убью сибя ап стену ;) хелп ми сомбади!

— 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), а чем они будут шифровать. Будьте точны в формулировках.
— unknown (28/07/2007 13:16, исправлен 28/07/2007 18:26)   

Запускаем 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 с номером.


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


А Ваша программа также будет использовать предпочитаемый тип хэша для
подписи,