OpenSSH и эллиптическая криптография (ECC)

Криптография с открытым ключом или асимметричное шифрование существует уже давно. Наиболее попялрному алгоритму RSA вот уже почти 40 лет, алгоритм DSA в два раза моложе, но сегодня я хочу погововрить о более молодом алгоритме — ECC (Elliptic Curve Cryptography).

Не буду вдаваться в подробности упомянутых алгоритмов шифрования, однако, не секрет, что разные алгоритмы обеспечивают разную степень защиты при одинаковой длине ключа. Национальный институт стандартов и технологий США (NIST), проанализировав различные алгоритмы шифрования привел рекомендаци по размеру ключей обеспечивающих безопасное шифрование данных до 2030 года (с большой степенью вероятности).

Date Minimum of Strength Symmetric Algorithms Asymmetric
Discrete Logarithm
Key Group
Elliptique Curve Hash (A) Hash (B)
2011 — 2030 112 3TDEA 2048
224 2048
224 SHA-224
SHA-256
SHA-384
SHA-512
SHA-1
SHA-224
SHA-256
SHA-384
SHA-512

Как видно из таблицы, ECC обеспечивает сравнимую с RSA степень защиты данных при размере ключа в 9 раз меньше.

Для использованя эллиптической криптографии необходимы версии OpenSSH 5.7 или старше, а так же OpenSSL 0.9.8g или старше. Настройка не составляет труда:

sshd_config

Protocol 2

HostKey /etc/ssh/ssh_host_ecdsa_key

ssh_config

IdentityFile ~/.ssh/id_ecdsa

Создаем пару ключей для авторизации:

rascal@linux:~$ ssh-keygen -tecdsa -b 521
Generating public/private ecdsa key pair.
Enter file in which to save the key (/home/rascal/.ssh/id_ecdsa): 
Created directory '/home/rascal/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/rascal/.ssh/id_ecdsa.
Your public key has been saved in /home/rascal/.ssh/id_ecdsa.pub.
The key fingerprint is:
05:d2:7b:6b:59:98:da:d1:c7:51:4a:53:74:3c:24:c1 rascal@linux
The key's randomart image is:
+--[ECDSA  521]---+
|      ...   .o=*=|
|       ...   Eo+o|
|         ..+ ....|
|        ..= o o  |
|        S+ = .   |
|        . =      |
|         .       |
|                 |
|                 |
+-----------------+