|
Bog BOS: OpenSSL: установка и измерение производительности |
Последние изменения: |
Последнее изменение файла: 2023.06.01
Скопировано с www.bog.pp.ru: 2024.12.03
Перед прочтением рекомендуется ознакомиться с основными криптографическими понятиями в статье о безопасности.
OpenSSL представляет собой реализацию протокола SSL (Secure Socket Layer v2/v3) и Transport Layer Security (TLS v1), доступную для бесплатного использования (и клиент и сервер). Включает криптографическую библиотеку: шифрование (des в разных режимах, des3, RC2, RC4, IDEA, Blowfish, AES-128, AES-256, cast, cast5); контрольные суммы (MD2, MD4, MD5, SHA, SHA-1, MDC2, RMD160); публичные ключи без ограничения длины (RSA, DSA, Diffie-Hellman); X.509v3 сертификаты (ASN1, PEM) (подписи cast, hmac, rc5), которую можно использовать как для SSL/TLS так и для других целей (шифрование файлов - openssl(1), OpenSSH, MySQL). Основана на библиотеке SSLeay. Ответственность за нарушение патентов лежит на пользователе (особенно IDEA, RC5, MDC2 - не скомпилированы в Red Hat Linux).
Поставляется две версии: normal (для обычного использования) и engine (поддержка аппаратного шифрования). В версии 0.9.7 поддержка аппаратного шифрования слита в основную версию.
Файл настройки (обычно /usr/share/ssl/openssl.cnf или /usr/lib/ssl/openssl.cnf или /etc/openssl.cnf или /etc/pki/tls/openssl.cnf) делится на секции, разделяемые заголовками секций (строки до первого заголовка относятся к секции с именем default):
[ имя-секции ]
Комментарии начинаются с символа '#'. Секция состоит из строк вида: имя=значение (обычное использование кавычек и '\'). Имя может состоять из букв, цифр и символов ".,;_". Могут использоваться макроподстановки: $имя или ${имя} или $имя-секции::имя или ${имя-секции::имя}. Специальная секция ENV содержит значения переменных окружения. Значения сначала ищутся в указанной именованной секции (используется последнее найденное), а в отсутствии - в секции default.
Имя конфигурационного файла задаётся при компиляции или берётся из переменной окружения OPENSSL_CONF (SSLEAY_CONF) или задаётся ключом -config.
Задание парольной фразы (пароля) для основной утилиты openssl производится с помощью ключей -passin (расшифровка) или -passout (шифровка). Параметр ключа описывает источник парольной фразы (по умолчанию, она запрашивается с терминала):
Создание частного ключа RSA производится командой openssl genrsa со следующими опциональными ключами:
Создание файла параметров для DSA и манипуляция с ним производится командой openssl dsaparam с ключами:
Создание частного ключа DSA производится командой openssl gendsa со следующими опциональными ключами:
Создание зашифрованного ключа своего корневого CA (предварительно создаётся БД CA):
cd /usr/share/ssl # в FC4 перенесена в /etc/pki mkdir CA echo "01" > CA/serial touch CA/index.txt mkdir CA/newcerts chmod 700 CA/newcerts mkdir CA/private chmod 700 CA/private openssl genrsa -des3 -out CA/private/ca.key 2048 chmod 400 CA/private/ca.key
Параноики могут спрятать ca.key в сейф и доставать только для подписи сертификатов.
Создание зашифрованных ключей серверов и почтовых клиентов:
cd /usr/share/ssl mkdir private chmod 700 private openssl genrsa -des3 -out private/www.company.ru.key 2048 openssl genrsa -des3 -out private/test@company.ru.sign.key 2048 openssl genrsa -des3 -out private/test@company.ru.crypt.key 2048 chmod 400 private/www.company.ru.key private/test@company.ru.*.key
Снятие пароля:
openssl rsa -outform PEM -in www.company.ru.key -out www.company.ru.open.key
P.S. Это ж сколько спама начнёт приходить на test@company.ru!
Преобразование ключей из внутреннего формата PEM (или DER) в PKCS #8 и обратно производится командой "openssl pkcs8" с параметрами:
Параметры для команды запроса и создания сертификата (openssl req) хранятся в секции req конфигурационного файла:
Формат секций, задаваемых distinguished_name и attributes, зависит от значения параметра prompt. Если "no", то секция просто содержит имена и значения полей. Если же содержимое секции используется как шаблон для запроса, то для каждого поля определяются 4 параметра:
Имя поля может предваряться префиксом и точкой, которые удаляются при обработке, для того, чтобы можно было задавать несколько значений одного поля. В качестве имени поля можно использовать короткое или полное имя идентификатора объекта. Встроенные имена: commonName, countryName, localityName, organizationName, organizationUnitName, stateOrProvinceName, emailAddress, name, surname, givenName, dnQualifier. Дополнительные идентификаторы объектов задаются параметрами oid_file и oid_section.
Ключи команды запроса и создания сертификата (openssl req) в формате PKCS#10 или создания самоподписанного сертификата для самодельного корневого CA:
Для создания самоподписанного сертификата для самодельного корневого CA редактируем конфигурационный файл:
[ CA_default ] ... # потребуется для subjectAltName copy_extensions = copy [ req ] default_md = sha1 default_bits = 2048 default_keyfile = privkey.pem string_mask = nombstr distinguished_name = req_distinguished_name attributes = req_attributes req_extensions = v3_req x509_extensions = v3_ca [ req_distinguished_name ] countryName = Country Name (2 letter code) countryName_default = RU countryName_min = 2 countryName_max = 2 stateOrProvinceName = State or Province Name (full name) stateOrProvinceName_default = Moscow localityName = Locality Name (eg, city) localityName_default = Moscow 0.organizationName = Organization Name (eg, company) 0.organizationName_default = My Company Ltd organizationalUnitName = Organizational Unit Name (eg, section) organizationalUnitName_default = My department commonName = Common Name (eg, your name or your server\'s hostname) commonName_max = 64 emailAddress = Email Address emailAddress_max = 64 [ req_attributes ] # пароль на отзыв сертификата challengePassword = A challenge password challengePassword_min = 4 challengePassword_max = 20 unstructuredName = An optional company name [ v3_req_self ] nsCertType = objsign,email,server [ v3_req_server ] nsCertType = server basicConstraints = critical,CA:FALSE extendedKeyUsage = serverAuth,nsSGC,msSGC # ругается если переменная не определена #subjectAltName = "DNS:"${ENV::commonName} [ v3_req_email ] basicConstraints = critical,CA:FALSE nsCertType = client,email extendedKeyUsage = clientAuth,emailProtection keyUsage = digitalSignature,keyEncipherment,nonRepudiation,dataEncipherment [ v3_req_email_sign ] basicConstraints = critical,CA:FALSE nsCertType = client,email extendedKeyUsage = clientAuth,emailProtection keyUsage = digitalSignature,nonRepudiation [ v3_req_email_crypt ] basicConstraints = critical,CA:FALSE nsCertType = client,email extendedKeyUsage = clientAuth,emailProtection keyUsage = keyEncipherment,dataEncipherment [ v3_req ] basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment [ v3_ca_self ] basicConstraints = critical,CA:true subjectKeyIdentifier = hash nsCertType = objsign,sslCA,emailCA keyUsage = digitalSignature,nonRepudiation,keyCertSign,cRLSign [ v3_ca ] authorityKeyIdentifier=keyid:always,issuer:always basicConstraints = [critical,]CA:true # не для самоподписанных сертификатов # keyUsage = cRLSign, keyCertSign # nsCertType = sslCA, emailCA # subjectAltName=email:copy # issuerAltName=issuer:copy
Создаём самоподписанный корневой сертификат (в CN указать что-то вида: "имя компании root Certificate"):
openssl req -new -x509 -extensions v3_ca_self -days 3650 -key CA/private/ca.key -out CA/ca.crt # при обновлении #openssl req -set_serial 0 -new -x509 -extensions v3_ca_self -days 3650 -key CA/private/ca.key -out CA/ca.crt chmod 444 CA/ca.crt
Посмотреть на результат
openssl x509 -in CA/ca.crt -text
Выложить сертификат на HTTP сервер или распространить другими способами.
Импорт сертификата корневого CA в Firefox: Edit -> Preferences -> Advanced -> Certificates -> Manage Certificates -> Authorities -> Import.
Импорт сертификата корневого CA в Thunderbird: Tools -> Options -> Advanced -> Certificates -> Manage Certificates -> Authorities -> Import.
Импорт сертификата корневого CA в Mozilla: Edit -> Preferences -> Privacy & Security -> Certificates -> Manage Certificates -> Authorities -> Import.
Импорт сертификата корневого CA в IE: указать в обозревателе на содержащий сертификат файл и нажать правую кнопку, выбрать из меню "Установить сертификат" (Control Panel -> Users).
Создание запроса на сертификат сервера (CN должен быть равен имени хоста, которое будет указано в настройках клиентских программ; некоторые клиентские программы - Thunderbird - воспринимают записи типа *.company.ru):
mkdir certs openssl req -new -reqexts v3_req_server -key private/www.company.ru.key -out certs/www.company.ru.csr
Создание запроса на сертификат почтового клиента:
openssl req -new -reqexts v3_req_email -key private/test@company.ru.key -out certs/test@company.ru.csr
или создание отдельных запросов на сертификаты для подписи и шифрования почтовых сообщений (CN - д.б. разный):
openssl req -new -reqexts v3_req_email_sign -key private/test@company.ru.sign.key -out certs/test@company.ru.sign.csr openssl req -new -reqexts v3_req_email_crypt -key private/test@company.ru.crypt.key -out certs/test@company.ru.crypt.csr
При работе с сертификатами и CRL используется текстовая БД, которая хранится в отдельной директории (CA) и содержит файлы: сертификат CA (ca.crt), частный ключ CA (private/ca.key), серийный номер следующего сертификата (serial), индекс БД (index.txt). Нельзя запускать параллельно, так как никаких блокировок записи в файл не предусмотрено. Нельзя подписать 2 сертификата с одинаковым DN (TXT_DB error number 2). Первая колонка индекса БД содержит пометку:
Параметры для команды подписи сертификата (openssl ca) хранятся в секции, имя которой задаётся параметром default_ca в секции ca конфигурационного файла или ключом -name в командной строке:
Секция с описанием политики содержит переменные, имена которых совпадают с именами поле DN (поля запроса, имена которых отсутствуют в описании политики, молча удаляются, если не указан ключ -preserveDN), а значения могут быть следующими:
Параметры для команды подписи сертификата (openssl ca):
Параметры для работы с CRL (Certificate Revocation List):
Для подписи сертификатов самодельным корневым CA редактируем конфигурационный файл:
[ ca ] default_ca = CA_default [ CA_default ] dir = ./CA # Where everything is kept certs = $dir/certs # Where the issued certs are kept crl_dir = $dir/crl # Where the issued crl are kept database = $dir/index.txt # database index file. new_certs_dir = $dir/newcerts # default place for new certs. certificate = $dir/ca.crt # The CA certificate serial = $dir/serial # The current serial number crl = $dir/crl.pem # The current CRL private_key = $dir/private/ca.key # The private key RANDFILE = $dir/private/.rand # private random number file x509_extensions = usr_cert # The extentions to add to the cert # Comment out the following two lines for the "traditional" # (and highly broken) format. name_opt = ca_default # Subject Name options cert_opt = ca_default # Certificate field options default_days = 365 # how long to certify for default_crl_days= 30 # how long before next CRL default_md = sha1 # which md to use. preserve = no # keep passed DN ordering policy = policy_match # политики для подписи сертификатов CA [ policy_match ] countryName = match stateOrProvinceName = match localityName = match organizationName = match organizationalUnitName = optional commonName = supplied emailAddress = optional # "расслабленные" политики [ policy_anything ] countryName = optional stateOrProvinceName = optional localityName = optional organizationName = optional organizationalUnitName = optional commonName = supplied emailAddress = optional [ usr_cert ] basicConstraints = CA:FALSE # по умолчанию, сертификат можно использовать для всего, кроме сертифицирования # nsCertType = server # nsCertType = objsign # nsCertType = client, email # nsCertType = client, email, objsign # This is typical in keyUsage for a client certificate. # keyUsage = nonRepudiation, digitalSignature, keyEncipherment nsComment = "OpenSSL Generated Certificate" subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer:always [ usr_cert_email ] basicConstraints = critical,CA:FALSE nsCertType = client,email nsComment = "OpenSSL Generated Certificate" subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer:always extendedkeyUsage = clientAuth,emailProtection keyUsage = digitalSignature,keyEncipherment,nonRepudiation,dataEncipherment subjectAltName = email:copy [ usr_cert_email_sign ] basicConstraints = critical,CA:FALSE subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer:always subjectAltName = email:copy extendedKeyUsage = clientAuth,emailProtection keyUsage = digitalSignature,nonRepudiation nsCertType = client,email nsComment = "OpenSSL Generated Certificate" [ usr_cert_email_crypt ] basicConstraints = critical,CA:FALSE subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer:always subjectAltName = email:copy extendedKeyUsage = clientAuth,emailProtection keyUsage = keyEncipherment,dataEncipherment nsCertType = client,email nsComment = "OpenSSL Generated Certificate"
Подпись запроса на сертификат сервера от имени собственного корневого CA:
openssl ca -in certs/www.company.ru.csr -out certs/www.company.ru.crt openssl verify -CAfile CA/ca.crt certs/www.company.ru.crt
Подпись запросов на сертификаты почтового клиента от имени собственного корневого CA:
openssl ca -in certs/test@company.ru.csr -out certs/test@company.ru.crt -extensions usr_cert_email или openssl ca -in certs/test@company.ru.sign.csr -out certs/test@company.ru.sign.crt -extensions usr_cert_email_sign openssl ca -in certs/test@company.ru.crypt.csr -out certs/test@company.ru.crypt.crt -extensions usr_cert_email_crypt # проверка openssl verify -CAfile CA/ca.crt certs/test@company.ru.sign.crt openssl verify -CAfile CA/ca.crt certs/test@company.ru.crypt.crt openssl x509 -in certs/test@company.ru.sign.crt -noout -text openssl x509 -in certs/test@company.ru.crypt.crt -noout -text
Отзыв сертификата и создание CRL:
openssl ca -revoke certs/test@company.ru.crt openssl ca -gencrl [ -crl_reason keyCompromise] -out company.ru.crl
Экспорт клиентских почтовых сертификатов в формате PKCS#12 (PFX) |
Файлы в формате PKCS#12 (Personal Information Exchange Syntax Standard) содержат сертификат и частный ключ, предназначены для передачи подписанного сертификата клиента от CA клиенту.
Команда разбора файлов в формате PKCS#12 (openssl pkcs12) имеет следующие ключи:
Команда экспорта сертификатов в формате PKCS#12 (openssl pkcs12 -export) имеет следующие ключи:
Экспорт почтовых сертификатов клиента (запрашивается пароль для расшифровки ключа и пароль для шифрования на время передачи, т.к. включает приватный ключ!):
openssl pkcs12 -export -in certs/test@company.ru.sign.crt -inkey private/test@company.ru.sign.key -out private/test@company.ru.sign.p12 -descert -name 'mailbox имя-пользователя sign certificate' -caname 'название CA' openssl pkcs12 -export -in certs/test@company.ru.crypt.crt -inkey private/test@company.ru.sign.key -out private/test@company.ru.sign.p12 -descert -name 'mailbox имя-пользователя crypt certificate' -caname 'название CA'
Импорт сертификатов и приватных ключей в формате PKCS #12 в Mozilla: Edit -> Preferences -> Privacy & Security -> Certificates -> Manage Certificates -> Your Certificates -> Import.
Ручной выбор сертификата в Mozilla: Edit -> Preferences -> Privacy & Security -> Certificates -> Ask Every Time.
Импорт сертификатов и приватных ключей в формате PKCS #12 в Thunderbird: Tools -> Options -> Advanced -> Manage Certificates -> Your Certificates -> Import.
Импорт сертификатов и приватных ключей в формате PKCS #12 в MS Outlook: Tools, Options and Security, import/export.
Настройка использования полученных сертификатов в Mozilla и Thunderbird: Edit -> Mail & Newsgroups Account Setting -> Security (в требуемой учётной записи); выбрать сертификат, содержащий ключи для подписи, и сертификат с ключами для шифрования.
Настройка использования полученных сертификатов в Thunderbird: Tools -> Mail & Newsgroups Account Setting -> Security (в требуемой учётной записи); выбрать сертификат, содержащий ключи для подписи, и сертификат с ключами для шифрования.
Для шифрования сообщения необходимо иметь сертификат получателя с его публичным ключом. Проще всего получить его из подписанного контрагентом сообщения (Netscape, Thunderbird и MS Outlook Express извлекают все публичные ключи из подписанных писем и складывают их в архив самостоятельно - на всякий случай).
openssl enc -aes256 -in исходный-файл -out зашифрованный-файл \ -pass file:файл-с-парольной-фразой -md sha1
OpenSSL 0.9.7a-40 (заплатки безопасности наложены, но почему не OpenSSL 0.9.7e?) устанавливается вместе с FC3: пакеты openssl и openssl-devel (pyOpenSSL-0.6-1.p23, perl-Crypt-SSLeay-0.51-5, pyOpenSSL-0.6-1.p23). IDEA, MD2C и RC5 отсутствуют, чтобы избежать проблем с патентами.
OpenSSL 0.9.6 устанавливается вместе с RH 7.1: пакеты openssl и openssl-devel (а также пакет openssl095a-0.9.5a-1 для совместимости). Причем пакет openssl неудаляем (libcrypto.so.1 и libssl.so.1 требуются для python, который нужен огромному числу других пакетов). IDEA и RC5 отсутствуют, чтобы избежать проблем с патентами. Стал значительно медленее (на некоторых тестах в 2.5 раза!) по сравнению с 0.9.5a, потому что скомпилирован с меньшим уровнем оптимизации (самостоятельно собранная под Solaris библиотека 0.9.6b чуть быстрее, чем 0.9.5a).
OpenSSL 0.9.5a устанавливается вместе с RH 7.0: пакеты openssl и openssl-devel. Причем пакет openssl неудаляем (libcrypto.so.0 и libssl.so.0 требуются для python, который нужен огромному числу других пакетов).
OpenSSL 0.9.7a Feb 19 2003 built on: Tue Oct 5 08:55:24 EDT 2004 options:bn(64,32) md2(int) rc4(idx,int) des(ptr,risc1,16,long) aes(partial) blowfish(idx) compiler: gcc -fPIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DKRB5_MIT -DOPENSSL_NO_IDEA -DOPENSSL_NO_MDC2 -DOPENSSL_NO_RC5 -DOPENSSL_NO_EC -I/usr/kerberos/include -DL_ENDIAN -DTERMIO -Wall -O2 -g -pipe -m32 -march=i686 -mtune=pentium4 -Wa,--noexecstack -DSHA1_ASM -DMD5_ASM -DRMD160_ASM available timing options: TIMES TIMEB HZ=100 [sysconf value] timing function used: times The 'numbers' are in 1000s of bytes per second processed. type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes md2 1807.78k 3852.46k 5419.26k 6071.98k 6288.73k mdc2 0.00 0.00 0.00 0.00 0.00 md4 15241.31k 53824.77k 162998.61k 332831.06k 475570.18k md5 13566.99k 51908.42k 161850.45k 340513.45k 498231.98k hmac(md5) 7610.91k 29370.86k 102779.90k 259210.92k 470575.79k sha1 13558.06k 43256.38k 120299.01k 209566.04k 269473.11k rmd160 12819.31k 39786.52k 83672.27k 145334.95k 171963.73k rc4 89555.22k 106739.88k 111524.27k 113503.23k 114543.27k des cbc 56835.86k 59083.95k 59410.26k 59732.99k 59514.88k des ede3 21191.84k 21500.86k 21656.92k 21633.02k 21493.08k idea cbc 0.00 0.00 0.00 0.00 0.00 rc2 cbc 21842.01k 23500.78k 23735.98k 23686.49k 23587.50k rc5-32/12 cbc 0.00 0.00 0.00 0.00 0.00 blowfish cbc 93026.94k 99430.44k 101743.62k 102699.69k 102252.54k cast cbc 41901.01k 49243.52k 51145.22k 52097.71k 52224.00k aes-128 cbc 58268.97k 58232.90k 59630.85k 59912.19k 59790.71k aes-192 cbc 51133.59k 51053.57k 51906.73k 52268.03k 52461.57k aes-256 cbc 45866.35k 45743.57k 46160.47k 46371.50k 46456.83k sign verify sign/s verify/s rsa 512 bits 0.0009s 0.0001s 1125.0 12622.2 rsa 1024 bits 0.0044s 0.0002s 225.7 4322.7 rsa 2048 bits 0.0267s 0.0008s 37.5 1305.2 rsa 4096 bits 0.1772s 0.0027s 5.6 366.2 sign verify sign/s verify/s dsa 512 bits 0.0007s 0.0009s 1369.9 1148.7 dsa 1024 bits 0.0022s 0.0027s 458.5 376.5 dsa 2048 bits 0.0073s 0.0090s 136.9 110.9
OpenSSL 0.9.6 24 Sep 2000 / Linux Red Hat 7.1 built on: Wed Mar 14 11:58:32 EST 2001 options:bn(64,32) md2(int) rc4(idx,int) des(ptr,risc1,16,long) blowfish(idx) compiler: gcc -fPIC -DTHREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DNO_ASM -DNO_IDEA -DNO_MDC2 -DNO_RC5 -DL_ENDIAN -DTERMIO -O2 -march=i386 -mcpu=i686 -Wall The 'numbers' are in 1000s of bytes per second processed. type 8 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes md2 774.87k 2163.93k 2940.49k 3224.23k 3320.49k mdc2 0.00 0.00 0.00 0.00 0.00 md4 9791.78k 54026.43k 109757.27k 146940.25k 163700.74k md5 7194.21k 35212.20k 65486.93k 82989.40k 90292.22k hmac(md5) 2861.76k 18317.65k 45815.64k 73081.17k 88738.47k sha1 4400.32k 17984.73k 30425.77k 36694.36k 39081.30k rmd160 3258.86k 14370.13k 24432.73k 29585.75k 31582.89k rc4 45260.47k 61084.67k 63948.71k 64347.82k 64989.87k des cbc 7060.09k 7639.62k 7718.23k 7733.59k 7735.98k des ede3 2786.02k 2877.03k 2882.30k 2893.48k 2894.51k idea cbc 0.00 0.00 0.00 0.00 0.00 rc2 cbc 7103.06k 7617.51k 7691.09k 7701.50k 7708.67k rc5-32/12 cbc 0.00 0.00 0.00 0.00 0.00 blowfish cbc 21176.39k 26349.74k 27114.75k 27418.62k 27402.24k cast cbc 8678.57k 9606.19k 9718.02k 9743.02k 9753.94k sign verify sign/s verify/s rsa 512 bits 0.0029s 0.0003s 344.1 3251.0 rsa 1024 bits 0.0182s 0.0011s 54.9 938.5 rsa 2048 bits 0.1213s 0.0036s 8.2 275.4 rsa 4096 bits 0.8450s 0.0131s 1.2 76.3 sign verify sign/s verify/s dsa 512 bits 0.0032s 0.0039s 313.9 253.8 dsa 1024 bits 0.0103s 0.0125s 96.7 80.3 dsa 2048 bits 0.0357s 0.0435s 28.0 23.0
OpenSSL 0.9.5a 1 Apr 2000 / Linux Red Hat 6.2 built on: Птн Сен 22 03:44:31 MSD 2000 options:bn(64,32) md2(int) rc4(idx,int) des(ptr,risc1,16,long) idea(int) blowfish(idx) compiler: gcc -DTHREADS -D_REENTRANT -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -m486 -Wall -DSHA1_ASM -DMD5_ASM -DRMD160_ASM The 'numbers' are in 1000s of bytes per second processed. type 8 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes md2 557.48k 1538.76k 2072.57k 2260.73k 2336.24k mdc2 1983.99k 2051.47k 2058.43k 2061.10k 2060.41k md5 10728.29k 57713.91k 105182.90k 137775.24k 151135.50k hmac(md5) 3883.95k 25801.63k 68444.49k 116343.98k 142473.70k sha1 6691.30k 30785.61k 54171.73k 66339.88k 71954.45k rmd160 5487.01k 24718.34k 42169.30k 51317.41k 54692.54k rc4 66635.32k 95527.91k 101365.23k 102609.63k 102703.41k des cbc 18856.93k 20994.52k 21267.86k 21279.14k 21334.56k des ede3 7169.83k 7364.71k 7475.48k 7531.05k 7530.02k idea cbc 9725.22k 10510.84k 10666.52k 10668.41k 10688.09k rc2 cbc 7736.04k 8306.01k 8281.95k 8411.94k 8406.42k rc5-32/12 cbc 46514.77k 60379.66k 62773.41k 63105.13k 64324.27k blowfish cbc 27262.56k 31648.43k 32247.04k 32087.75k 32208.08k cast cbc 27350.20k 31417.17k 31966.64k 32172.91k 32141.88k sign verify sign/s verify/s rsa 512 bits 0.0014s 0.0001s 740.1 7194.5 rsa 1024 bits 0.0073s 0.0004s 136.1 2424.6 rsa 2048 bits 0.0449s 0.0014s 22.3 725.2 rsa 4096 bits 0.3055s 0.0048s 3.3 208.2 sign verify sign/s verify/s dsa 512 bits 0.0014s 0.0017s 731.1 596.9 dsa 1024 bits 0.0039s 0.0047s 257.3 213.3 dsa 2048 bits 0.0129s 0.0158s 77.7 63.3
OpenSSL 0.9.6b 9 Jul 2001 built on: Tue Jul 10 20:36:02 MSD 2001 options:bn(64,32) md2(int) rc4(ptr,char) des(idx,cisc,16,long) idea(int) blowfish(ptr) compiler: gcc -fPIC -DTHREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -mv8 -O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W The 'numbers' are in 1000s of bytes per second processed. type 8 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes md2 68.67k 193.09k 262.31k 286.99k 295.03k mdc2 171.64k 182.61k 183.98k 183.91k 180.83k md4 880.28k 4091.41k 7156.48k 8785.51k 9433.13k md5 680.21k 2730.01k 5061.27k 6458.37k 7015.08k hmac(md5) 269.29k 1556.50k 3742.72k 5799.69k 6941.21k sha1 384.08k 1731.93k 2980.05k 3642.37k 3893.93k rmd160 308.99k 1214.02k 2094.93k 2537.09k 2703.36k rc4 4831.43k 6341.70k 6545.12k 6613.33k 6632.79k des cbc 1001.18k 1124.48k 1136.90k 1145.30k 1138.26k des ede3 401.63k 422.53k 425.10k 424.62k 425.82k idea cbc 801.69k 871.30k 878.53k 881.32k 882.01k rc2 cbc 859.26k 944.19k 954.67k 954.82k 955.73k rc5-32/12 cbc 2416.53k 3211.03k 3326.20k 3356.33k 3369.64k blowfish cbc 1143.84k 1936.72k 2084.35k 2126.02k 2140.84k cast cbc 1483.71k 1776.73k 1810.15k 1820.67k 1824.09k sign verify sign/s verify/s rsa 512 bits 0.0238s 0.0022s 42.1 457.4 rsa 1024 bits 0.1291s 0.0070s 7.7 142.5 rsa 2048 bits 0.8254s 0.0247s 1.2 40.5 rsa 4096 bits 5.7200s 0.0907s 0.2 11.0 sign verify sign/s verify/s dsa 512 bits 0.0220s 0.0266s 45.4 37.5 dsa 1024 bits 0.0688s 0.0858s 14.5 11.7 dsa 2048 bits 0.2408s 0.2974s 4.2 3.4
OpenSSL 0.9.6b 9 Jul 2001 built on: Tue Jul 10 20:58:12 MSD 2001 options:bn(64,32) md2(int) rc4(ptr,char) des(idx,cisc,16,long) idea(int) blowfish(ptr) compiler: gcc -fPIC -DTHREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -mv8 -O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W The 'numbers' are in 1000s of bytes per second processed. type 8 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes md2 48.86k 138.71k 188.16k 207.53k 215.01k mdc2 121.24k 137.45k 139.43k 140.29k 139.38k md4 459.37k 2655.83k 5060.27k 6590.12k 7222.11k md5 425.45k 1976.43k 3770.48k 4949.91k 5395.80k hmac(md5) 188.01k 1043.22k 2637.31k 4191.57k 5259.26k sha1 254.74k 1216.64k 2179.50k 2723.50k 2920.63k rmd160 185.76k 517.99k 1195.09k 1776.98k 2061.65k rc4 1905.84k 2609.39k 2704.04k 2737.83k 2727.94k des cbc 622.21k 795.72k 822.37k 829.44k 808.65k des ede3 274.83k 316.74k 321.02k 322.90k 319.49k idea cbc 404.06k 470.71k 480.45k 478.67k 481.07k rc2 cbc 573.00k 718.21k 737.11k 743.42k 737.28k rc5-32/12 cbc 1157.04k 1971.43k 2118.74k 2169.86k 2160.71k blowfish cbc 932.59k 1384.15k 1464.06k 1491.29k 1411.75k cast cbc 711.37k 1209.13k 1305.43k 1338.71k 1275.22k sign verify sign/s verify/s rsa 512 bits 0.0421s 0.0039s 23.8 256.9 rsa 1024 bits 0.2240s 0.0122s 4.5 81.8 rsa 2048 bits 1.4314s 0.0431s 0.7 23.2 rsa 4096 bits 9.9750s 0.1589s 0.1 6.3 sign verify sign/s verify/s dsa 512 bits 0.0383s 0.0459s 26.1 21.8 dsa 1024 bits 0.1192s 0.1476s 8.4 6.8 dsa 2048 bits 0.4221s 0.5155s 2.4 1.9
OpenSSL 0.9.5a 1 Apr 2000 built on: Fri Sep 22 05:01:55 MSD 2000 options:bn(64,32) md2(int) rc4(ptr,char) des(idx,cisc,16,long) idea(int) blowfish(ptr) compiler: gcc -DTHREADS -D_REENTRANT -mv8 -O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W The 'numbers' are in 1000s of bytes per second processed. type 8 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes md2 48.97k 139.26k 190.63k 209.58k 215.72k mdc2 120.11k 128.96k 129.62k 129.71k 129.77k md5 457.10k 2118.44k 3937.28k 4982.44k 5401.26k hmac(md5) 186.18k 1131.79k 2805.59k 4419.93k 5278.38k sha1 247.06k 1195.80k 2175.57k 2721.45k 2935.47k rmd160 193.59k 524.50k 1206.27k 1778.47k 2061.65k rc4 2485.27k 2714.56k 2745.17k 2741.25k 2730.67k des cbc 664.97k 797.91k 815.53k 817.15k 794.54k des ede3 287.57k 310.76k 316.02k 316.76k 312.98k idea cbc 384.97k 467.39k 479.06k 481.28k 479.00k rc2 cbc 621.84k 731.64k 745.90k 749.79k 740.27k rc5-32/12 cbc 1383.39k 2060.78k 2180.10k 2196.14k 2187.26k blowfish cbc 952.07k 1299.95k 1342.58k 1351.75k 1422.68k cast cbc 1004.95k 1303.23k 1346.56k 1355.78k 1288.87k sign verify sign/s verify/s rsa 512 bits 0.0374s 0.0042s 26.7 235.4 rsa 1024 bits 0.2238s 0.0134s 4.5 74.9 rsa 2048 bits 1.4600s 0.0468s 0.7 21.4 rsa 4096 bits 10.3500s 0.1719s 0.1 5.8 sign verify sign/s verify/s dsa 512 bits 0.0400s 0.0485s 25.0 20.6 dsa 1024 bits 0.1243s 0.1543s 8.0 6.5 dsa 2048 bits 0.4361s 0.5395s 2.3 1.9
Изменения в 0.9.7b (2003.04.10) по сравнению с 0.9.7: возможность сборки без драйверов аппаратных устройств шифрования; защита от некоторых видов нетривиальных атак.
Изменения в 0.9.7 по сравнению с 0.9.6i: поддержка алгоритма Rijndael (AES); слита ветка engine (бинарной совместимости нет) и добавлены новые типы оборудования; утилита, проверяющая наличие аппаратных устройств шифрации и их возможности; ключ "-noverify" для "openssl passwd"; новая субкоманда "openssl ca -status"; новая субкоманда "openssl ca -updatedb"; новая субкоманда "openssl ca -extfile"; OCSP (Online Certificate Status Protocol) и улилиты работы с ним ("openssl ocsp"); опция -set_serial для команд req и x509; опция -subj для команд req и ca позволяет задавать или подменять информацию о субъекте при запросе; опции -verbose и -batch для команды "openssl req"; ключ "-HTTP" в программе s_server; опции nameopt и certopt в файле конфигурации ca; опция copy_extensions для команды "openssl ca"; поддержка CRL V2 (и ключи для "openssl verify", smime, s_client, s_server); поддержка Kerberos 5; сжатие (zlib) для TLS; опция utf8 для "openssl req"; поддержка Subject Information Access extension; изменен формат конфигурационного файла; правила выбора алгоритма шифрования COMPLEMENTOFALL и COMPLEMENTOFDEFAULT.
Изменения в 0.9.6i по сравнению с 0.9.6b: поддержка большого количества оборудования аппаратной шифрации, исправлены критические ошибки.
Изменения в 0.9.6b по сравнению с 0.9.6: исправлены ошибки и заделаны дырки в защите, ключ "-rand" для s_client и s_server.
Изменения в 0.9.6 по сравнению с 0.9.5a: MD4, SSL опции (в которых я не разбираюсь), поддержка разделяемых библиотек (хотя в RH 7.0 разделяемые библиотеки есть и для 0.9.5a), пароли в стиле MD5.
|
Bog BOS: OpenSSL: установка и измерение производительности |
Последние изменения: |