Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: RSA: какой формат ключа выбрать?  (Прочитано 23111 раз)
0 Пользователей и 1 Гость смотрят эту тему.
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« : 20-02-2007 13:13 » 

Есть такая задача с использованием шифрования по алгоритму RSA.
Задача не моя, я тут в роли консультанта заказчика.

Исполнитель реализовал на PHP программку, работающую с RSA, в том числе и генерирующую ключи. Программа подразумевает работу со сторонним софтом. Такого стороннего софта пока не существует - его буду создавать разработчики других контор, с которыми заказчик будет работать.

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

Я посмотрел какие форматы используются в PHP, SSH-1 и SSH-2.
Интересно, какие форматы используются другими программами и API?
Вопрос стоит такой: какой формат для обмена выбрать?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #1 : 20-02-2007 13:26 » 

я бы выбрал тотже формат, что использует openssl
пример можно получить вот такой комбинацией команд
openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout privkey.pem -out server.pem
openssl rsa -in privkey.pem -out privkey.pem
Записан

Странно всё это....
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 20-02-2007 14:20 » 

LogRus, а ты умеешь openssl пользоваться? Мне ни разу не удалось с ее помощью сгенерить ключ без passphrase и короткой длины (<384). man у нее номинальный.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #3 : 20-02-2007 15:05 » 

RXL, не не умею Улыбаюсь просто приходилось недавно jabber демона настраивать в мануале была описана процедура создания двух файлов ключей и их слияния в один файл через cat privkey.pem >> server.pem
вот статейка возможно тебе будет интересна
http://www.opennet.ru/docs/RUS/use_openssl/
и хауту
http://www.opennet.ru/base/sec/openssl_howto.txt.html

кстати openssl можно использовать из PHP, если верить некоторым источникам Улыбаюсь я не пробовал
просто пробегал рядом
Записан

Странно всё это....
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 20-02-2007 16:21 » 

LogRus, собственно, в PHP и используется openssl, но ключ на имеет такой формат (что мне удалось разглядеть): обычный php-массив на три элемента (в первом сожержится сам ключ в бинарном виде), сериализованный и закодированный base64. Т.е. формат для обмена не удобный.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 20-02-2007 16:43 » 

Спасибо, помогло Улыбаюсь

Действия по генерации:
openssl genrsa -out private.key 256
openssl rsa -pubout -in private.key -out public.key

Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #6 : 20-02-2007 16:52 » 

RXL, рад помочь Улыбаюсь
с PHP я не помошник, я по C++ последние 2 года развиваюсь, PHP забыл, но так и должно быть
поищи в google groups и google codesearch
по С++ сложные вопросы часто помогают решать

о чего нашел в codesearch по запросу lang:php openssl
3: class OpenSSL {
       
          function setFile($file, $pass = '') {
            $this->setDSA(`openssl dsa -in $file 2>/dev/null`);
            $this->setRSA(`openssl rsa -in $file 2>/dev/null`);
            $this->setPEM(`openssl x509 -in $file 2>/dev/null`);
« Последнее редактирование: 15-12-2007 21:14 от Алексей1153++ » Записан

Странно всё это....
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #7 : 20-02-2007 17:17 » 

Если нужна возможность обмениваться с другими программами, то стоит добавить подддержку форматов pkcs12 и pkcs7. Оба реализованы в openssl
см man pkcs12 и pkcs7
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #8 : 20-02-2007 17:34 » 

npak, если я правильно понял, pkcs* - сертификат, содержащий информацию об организации, подписанную приватным ключем, и публичный ключ. Я правильно понимаю?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #9 : 21-02-2007 08:05 » 

Вопрос: чем плох обмен ключами в PEM формате, без сертификатов?

Сертификаты, собственно, сами по себе не нужны. Нужен лишь адресный обмен публичными ключами.
Рассмотрев функционал того же набора ф-ий openssl в PHP, я вижу, что импорт/экспорт публичного ключа там остутствует...
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #10 : 21-02-2007 11:36 » 

Да, я не то тебе посоветовал.  Если не нужны сертификаты, то см. man rsa (это сокращение для openssl rsa).  Команда работы с ключами RSA

DESCRIPTION
       The rsa command processes RSA keys. They can be converted between various
       forms and their components printed out. Note this command uses the tradi-
       tional SSLeay compatible format for private key encryption: newer applica-
       tions should use the more secure PKCS#8 format using the pkcs8 utility.
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #11 : 21-02-2007 12:19 » new

Коль, про openssl я прекрасно понял - и почитал, и поэкспериментировал - с этим понятно. Улыбаюсь
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines