По умолчанию в Fedora и CentOS пакет OpenSSL собран без поддержки криптографии по эллиптическим кривым (ECC, Elliptic Curve Crytography), так как реализация
потенциально [[https://lists.fedoraproject.org/pipermail/legal/2011-June/00... нарушает]] ряд [[http://en.wikipedia.org/wiki/ECC_patents патентов]]. В Debian и Ubuntu пакет openssl собран с поддержкой ECC.На конференции Black Hat USA 2013 группа экспертов по криптографии представила результаты исследования, в результате которого был сделан [[https://threatpost.com/crypto-gains-ramp-up-calls-to-get-ahe... вывод]], что время алгоритма RSA сочтено и пока не поздно вендорам следует перейти на использовании криптографии по эллиптическим кривым. С учётом развития методов ускорения векторных вычислений, уже через пять лет RSA нельзя будет считать безопасным.
++ Пересборка OpenSSL и strongSwan (IPSec) в Fedora.
Удаляем пакет openssl-devel и устанавливаем пакеты, необходимые для сборки:
rpm -e openssl-devel
yum install rpm-build krb5-devel zlib-devel gcc \
gmp-devel libcurl-devel openldap-devel \
NetworkManager-devel NetworkManager-glib-devel sqlite-devel
Подготавливаем сборочное окружение rpmbuild:
[ ! -e ~/.rpmmacros ] && \
echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros
[ ! -d rpmbuild ] && mkdir rpmbuild
cd ~/rpmbuild
mkdir -p BUILD BUILDROOT RPMS/i386 RPMS/x86_64 SOURCES SPECS SRPMS
Загружаем src-пакет, заменяем изменённые исходные тексты на оригинальный openssl и применяем патч для включения сборки с ECC:
cd ~/rpmbuild/SRPMS
wget http://dl.fedoraproject.org/pub/fedora/linux/releases/19/Eve...
rpm -i openssl-1.0.1e-4.fc19.src.rpm
cd ../SOURCES
wget http://www.openssl.org/source/openssl-1.0.1e.tar.gz
cd ../SPECS
wget http://zxvdr.fedorapeople.org/openssl.spec.ec_patch
patch -p0 < openssl.spec.ec_patch
sed -i -e 's/-usa.tar.xz/.tar.gz/' openssl.spec
rpmbuild -bb openssl.spec
Устанавливаем собранный OpenSSL:
cd ~/rpmbuild/RPMS/$(uname -i)
rpm -Uvh --force \
openssl-1.0.1e*rpm \
openssl-devel-1.0.1e*rpm \
openssl-libs-1.0.1e*rpm
Проверяем поддержку ECC:
openssl ec -help
Пересобриваем strongSwan, при наличии поддержки ECC в OpenSSL при пересборке strongSwan автоматически определит наличие ECC:
wget http://dl.fedoraproject.org/pub/fedora/linux/releases/19/Eve...
rpm -i strongswan-5.0.2-2.fc19.src.rpm
cd ~/rpmbuild/SPECS
rpmbuild -bb strongswan.spec
Устанавливаем strongSwan:
cd ~/rpmbuild/RPMS/$(uname -i)
rpm -Uvh --force \
strongswan-5*rpm \
strongswan-tnc-imcvs*rpm
Проверяем strongSwan, пытаясь создать ECDSA-ключ:
cd /tmp
strongswan pki -g --type ecdsa --size 384 > myKey.der
strongswan pki -a --type ecdsa-priv --in myKey.der
private key with:
pubkey: ECDSA 384 bits
++ Инструкция для CentOS 6.4
Формируем сборочное окружение
yum -y update
yum -y groupinstall 'Development tools'
Подключаем репозиторий EPEL
yum -y localinstall --nogpgcheck http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6...
Устанавливаем и настраиваем сборочный инструментарий mock из EPEL:
yum -y install fedora-packager
userdel -rf abcd
useradd -G mock abcd
su abcd
Загружаем src-пакет и оригинал openssl
cd ~
curl -O http://vault.centos.org/6.4/os/Source/SPackages/openssl-1.0....
/usr/bin/mock ~/openssl-1.0.0-27.el6.src.rpm
rm -rf /home/abcd/build
mv /var/lib/mock/epel-6-x86_64/root/builddir/build/ /home/abcd
cd /home/abcd/build/SOURCES
curl -O http://www.openssl.org/source/openssl-1.0.0.tar.gz
Загружаем патч, устраняющий вывод ошибки при выполнении тестов
curl -o patch300.patch http://cvs.openssl.org/patchset?cn=19998
Правим spec-файл, включаем режим enable-ec, отключаем скрипт hobble и добавляем патч:
cd ../SPECS
sed -i -e "s/no-ec/enable-ec/; s/no-ecdh/enable-ecdh/; s/no-ecdsa/enable-ecdsa/" openssl.spec
sed -i -e "s/^Source1: hobble-openssl/#&/; s/^%.SOURCE1. /#&/" openssl.spec
sed -i -e "s/^Release.*dist\}/&.EC.1/" openssl.spec
sed -i -e "s/-usa.tar.bz2/.tar.gz/" openssl.spec
sed -i -e "s/^Patch78.*/&\nPatch300: patch300.patch\n/" openssl.spec
sed -i -e "s/^%patch78.*/&\n%patch300 -p1 \n/" openssl.spec
Пересобираем пакет:
/usr/bin/mock --buildsrpm --spec ~/build/SPECS/openssl.spec --sources ~/build/SOURCES
cp /var/lib/mock/epel-6-x86_64/root/builddir/build/SRPMS/openssl-1.0.0-27.el6.EC.1.src.rpm /home/abcd
cd ~
/usr/bin/mock --rebuild openssl-1.0.0-27.el6.EC.1.src.rpm
URL: http://danielpocock.com/ussing-ecc-ecdsa-in-openssl-and-stro... http://unix.stackexchange.com/questions/81081/openssl-packag...
Обсуждается: http://www.opennet.dev/tips/info/2797.shtml