Π’ OpenSSH Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄Π²ΡƒΡ…Ρ„Π°ΠΊΡ‚ΠΎΡ€Π½ΠΎΠΉ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ

Π’ ΠΊΠΎΠ΄ΠΎΠ²ΡƒΡŽ Π±Π°Π·Ρƒ OpenSSH Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π΄Π²ΡƒΡ…Ρ„Π°ΠΊΡ‚ΠΎΡ€Π½ΠΎΠΉ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ с использованиСм устройств, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» U2F, Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ альянсом FIDO. U2F позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π΅Π΄ΠΎΡ€ΠΎΠ³ΠΈΠ΅ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Π΅ Ρ‚ΠΎΠΊΠ΅Π½Ρ‹ для подтвСрТдСния физичСского присутствия ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, взаимодСйствиС с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ производится Ρ‡Π΅Ρ€Π΅Π· USB, Bluetooth ΠΈΠ»ΠΈ NFC. ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ устройства ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ³Π°ΡŽΡ‚ΡΡ Π² качСствС срСдства для Π΄Π²ΡƒΡ…Ρ„Π°ΠΊΡ‚ΠΎΡ€Π½ΠΎΠΉ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π° сайтах, ΡƒΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ основными Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°ΠΌΠΈ ΠΈ Π²Ρ‹ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ производитСлями, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Yubico, Feitian, Thetis ΠΈ Kensington.

Для взаимодСйствия с устройствами, ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°ΡŽΡ‰ΠΈΠΌΠΈ присутствиС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π² OpenSSH Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ «[email protected]» («ecdsa-sk»), Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ подписи ECDSA (Elliptic Curve Digital Signature Algorithm) с эллиптичСской ΠΊΡ€ΠΈΠ²ΠΎΠΉ NIST P-256 ΠΈ Ρ…ΡΡˆΠ΅ΠΌ SHA-256. ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ взаимодСйствия с Ρ‚ΠΎΠΊΠ΅Π½Π°ΠΌΠΈ вынСсСны Π² ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, которая загруТаСтся ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ PKCS#11 ΠΈ являСтся обвязкой Π½Π°Π΄ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ libfido2, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ срСдства для ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΈ с Ρ‚ΠΎΠΊΠ΅Π½Π°ΠΌΠΈ ΠΏΠΎΠ²Π΅Ρ€Ρ… USB (поддСрТиваСтся ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ FIDO U2F/CTAP 1 ΠΈ FIDO 2.0/CTAP 2). ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Π°Ρ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ OpenSSH промСТуточная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° libsk-libfido2 Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π² основной состав libfido2, ΠΊΠ°ΠΊ ΠΈ HID-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ для OpenBSD.

Для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ U2F ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ свСТий срСз ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ‹ ΠΈΠ· рСпозитория OpenSSH ΠΈ HEAD-Π²Π΅Ρ‚ΠΊΡƒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ libfido2, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΡƒΠΆΠ΅ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ нСобходимая для OpenSSH прослойка.
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

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ