Π ΠΊΠΎΠ΄ΠΎΠ²ΡΡ Π±Π°Π·Ρ OpenSSH
ΠΠ»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΠΌΠΈ, ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π°ΡΡΠΈΠΌΠΈ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π² OpenSSH Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²ΡΠΉ ΡΠΈΠΏ ΠΊΠ»ΡΡΠ΅ΠΉ «[email protected]» («ecdsa-sk»), Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠΈΡΡΠΎΠ²ΠΎΠΉ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ ECDSA (Elliptic Curve Digital Signature Algorithm) Ρ ΡΠ»Π»ΠΈΠΏΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΊΡΠΈΠ²ΠΎΠΉ NIST P-256 ΠΈ Ρ
ΡΡΠ΅ΠΌ SHA-256. ΠΡΠΎΡΠ΅Π΄ΡΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΡΠΎΠΊΠ΅Π½Π°ΠΌΠΈ Π²ΡΠ½Π΅ΡΠ΅Π½Ρ Π² ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ PKCS#11 ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±Π²ΡΠ·ΠΊΠΎΠΉ Π½Π°Π΄ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ
ΠΠ»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ U2F ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ²Π΅ΠΆΠΈΠΉ ΡΡΠ΅Π· ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ ΠΈΠ·
Libfido2 ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ°Π±ΠΎΡΡ Π² OpenBSD, Linux, macOS ΠΈ Windows.
ΠΠ»Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΊΠ»ΡΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΡΡΠ°Π²ΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ SSH_SK_PROVIDER, ΡΠΊΠ°Π·Π°Π² Π² Π½Π΅ΠΉ ΠΏΡΡΡ ΠΊ libsk-libfido2.so (export SSH_SK_PROVIDER=/path/to/libsk-libfido2.so), ΠΈΠ»ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΡΠ΅ΡΠ΅Π· Π½Π°ΡΡΠΎΠΉΠΊΡ SecurityKeyProvider, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ «ssh-keygen -t ecdsa-sk» ΠΈΠ»ΠΈ, Π΅ΡΠ»ΠΈ ΠΊΠ»ΡΡΠΈ ΡΠΆΠ΅ ΡΠΎΠ·Π΄Π°Π½Ρ ΠΈ Π½Π°ΡΡΡΠΎΠ΅Π½Ρ, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡΡΡ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ «ssh». ΠΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ssh-keygen ΡΠΎΠ·Π΄Π°Π½Π½Π°Ρ ΠΏΠ°ΡΠ° ΠΊΠ»ΡΡΠ΅ΠΉ Π±ΡΠ΄Π΅Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½Π° Π² «~/.ssh/id_ecdsa_sk» ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ Π΄ΡΡΠ³ΠΈΠΌ ΠΊΠ»ΡΡΠ°ΠΌ.
ΠΡΠΊΡΡΡΡΠΉ ΠΊΠ»ΡΡ (id_ecdsa_sk.pub) ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ Π² ΡΠ°ΠΉΠ» authorized_keys. ΠΠ° ΡΡΠΎΡΠΎΠ½Π΅ ΡΠ΅ΡΠ²Π΅ΡΠ° ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ ΡΠΈΡΡΠΎΠ²Π°Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΡ, Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ ΡΠΎΠΊΠ΅Π½Π°ΠΌΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° (Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ libsk-libfido2, Π½ΠΎ ΡΠ΅ΡΠ²Π΅Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠΈΠΏ ΠΊΠ»ΡΡΠ΅ΠΉ «ecdsa-sk»). Π‘Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π·Π°ΠΊΡΡΡΡΠΉ ΠΊΠ»ΡΡ (id_ecdsa_sk) ΠΏΠΎ ΡΡΡΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΎΠΌ ΠΊΠ»ΡΡΠ°, ΠΎΠ±ΡΠ°Π·ΡΡΡΠΈΠΌ ΡΠ΅Π°Π»ΡΠ½ΡΠΉ ΠΊΠ»ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΈ Ρ ΡΠ΅ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ, Ρ ΡΠ°Π½ΠΈΠΌΠΎΠΉ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΡΠΎΠΊΠ΅Π½Π° U2F.
Π ΡΠ»ΡΡΠ°Π΅ ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΡ ΠΊΠ»ΡΡΠ° id_ecdsa_sk Π² ΡΡΠΊΠΈ Π°ΡΠ°ΠΊΡΡΡΠ΅Π³ΠΎ, Π΄Π»Ρ ΠΏΡΠΎΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π΅ΠΌΡ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎΠΌΡ ΡΠΎΠΊΠ΅Π½Ρ, Π±Π΅Π· ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠΎΡ ΡΠ°Π½ΡΠ½Π½ΡΠΉ Π² ΡΠ°ΠΉΠ»Π΅ id_ecdsa_sk Π·Π°ΠΊΡΡΡΡΠΉ ΠΊΠ»ΡΡ Π±Π΅ΡΠΏΠΎΠ»Π΅Π·Π΅Π½. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π»ΡΠ±ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Ρ ΠΊΠ»ΡΡΠ°ΠΌΠΈ (ΠΊΠ°ΠΊ ΠΏΡΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ, ΡΠ°ΠΊ ΠΈ ΠΏΡΠΈ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ) ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ ΠΊΠΎΡΠ½ΡΡΡΡΡ ΡΠ΅Π½ΡΠΎΡΠ° Π½Π° ΡΠΎΠΊΠ΅Π½Π΅, ΡΡΠΎ Π·Π°ΡΡΡΠ΄Π½ΡΠ΅Ρ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠ΄Π°Π»ΡΠ½Π½ΡΡ Π°ΡΠ°ΠΊ Π½Π° ΡΠΈΡΡΠ΅ΠΌΡ Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠΌ ΡΠΎΠΊΠ΅Π½ΠΎΠΌ. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π΅ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΡΠ±Π΅ΠΆΠ° Π·Π°ΡΠΈΡΡ Π½Π° ΡΡΠ°ΠΏΠ΅ Π·Π°ΠΏΡΡΠΊΠ° ssh-keygen ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°Π΄Π°Π½ ΠΏΠ°ΡΠΎΠ»Ρ Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ°ΠΉΠ»Ρ Ρ ΠΊΠ»ΡΡΠΎΠΌ.
ΠΠ»ΡΡ U2F ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π² ssh-agent ΡΠ΅ΡΠ΅Π· «ssh-add ~/.ssh/id_ecdsa_sk», Π½ΠΎ ssh-agent Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠΎΠ±ΡΠ°Π½ Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ ΠΊΠ»ΡΡΠ΅ΠΉ «ecdsa-sk», Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡΠΈΡΡΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΠ»ΠΎΠΉΠΊΠ° libsk-libfido2 ΠΈ Π°Π³Π΅Π½Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ΅, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΡΠΎΠΊΠ΅Π½.
ΠΠΎΠ²ΡΠΉ ΡΠΈΠΏ ΠΊΠ»ΡΡΠ΅ΠΉ «ecdsa-sk» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠΎΡΠΌΠ°Ρ ecdsa-ΠΊΠ»ΡΡΠ΅ΠΉ OpenSSH ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΡΠΎΡΠΌΠ°ΡΠ° U2F Π΄Π»Ρ ΡΠΈΡΡΠΎΠ²ΡΡ
ΠΏΠΎΠ΄ΠΏΠΈΡΠ΅ΠΉ ECDSA Π½Π°Π»ΠΈΡΠΈΠ΅ΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΏΠΎΠ»Π΅ΠΉ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru