Кіріспе

Шифрлау желісі протоколы

Secure Shell Protocol (SSH) – қауіпсіз емес желіде желілік қызметтерді қауіпсіз түрде пайдалануға арналған шифрлау желісі протоколы. SSH алғаш рет 1995 жылы фин компьютер ғалымы Тату Йлонен жасаған (Telnet желілік протоколын алмастыру мақсатында). Протокол жиынтығының кейінгі дамуы бірнеше әзірлеуші топтарда жүргізіліп, бірнеше түрлі нұсқалар құрылды. Протокол спецификациясында екі негізгі нұсқа қарастырылған: SSH 1 және SSH 2. Ең көп қолданылатын бағдарламалық кешен – OpenSSH, ол 1999 жылы OpenBSD әзірлеушілері ашық кодты бағдарлама ретінде жариялады. Көпте қолданылатын операциялық жүйелердің барлық түрлері үшін, соның ішінде кіріктірілген жүйелер үшін де нұсқалар бар. SSH қолданбалары клиент-сервер архитектурасы негізінде жұмыс істейді, SSH клиентін SSH серверімен байланыстырады. SSH үш негізгі иерархиялық компоненттен тұратын қабатты протокол жиынтығы болып табылады: тасымалдау қабаты серверді аутентификациялауды, құпиялылықты және деректердің бүтіндігін қамтамасыз етеді; пайдаланушы аутентификациялау протоколы пайдаланушыны серверде тексеріп растайды; ал қосылым протоколы шифрланған туннельді бірнеше логикалық байланыс арналарына бөліп жібереді.

Анықтама

SSH қашықтағы компьютерді аутентификациялау үшін және қажет болған жағдайда пайдаланушыны аутентификациялауға мүмкіндік беру үшін ашық кілтті криптографияны пайдаланады. Бұл файл SSH үшін тек иесі мен root пайдаланушысынан басқа ешкім жаза алмайтын болса ғана қолданылады. Егер қашықтағы жақта ашық кілт болса және жергілікті жақта сәйкес жеке кілт болса, пароль енгізу қажет болмайды. Дегенмен, қосымша қауіпсіздік үшін жеке кілттің өзі құпия сөзбен қорғалуы мүмкін. Жеке кілтті стандарттық жерлерде іздеуге болады, сондай-ақ оның толық жолын командалық жол опциясы ретінде көрсетуге болады (ssh үшін -i опциясы). ssh keygen құралы ашық және жеке кілттерді әрқашан жұптап шығарады.

Қолдану

SSH әдетте қашықтағы компьютердің қабығына немесе командалық желі интерфейсіне (CLI) кіру үшін және қашықтағы серверде командаларды орындау үшін қолданылады. Ол сондай-ақ туннельдеу, TCP порттарын және X11 қосылымдарын жіберу тетіктерін қолдайды және оны SSH файлдарды беру протоколы (SFTP) немесе Secure Copy Protocol (SCP) арқылы файлдарды беру үшін пайдалануға болады. Windows 10 нұсқасы 1709-да OpenSSH-тың ресми Win32 порты енді қолжетімді. UNIX сияқты жүйелердегі файл менеджерлері (мысалы, Konqueror) FISH протоколын қолданып, сүйреп тастау мүмкіндігімен бөлінген панельді GUI-ды қамтамасыз ете алады. Ашық кодты Windows бағдарламасы WinSCP, PuTTY-ді артқы бағдар ретінде пайдалана отырып, файлдарды басқаруға ұқсас мүмкіндіктерді (синхрондау, көшіру, қашықтан жою) ұсынады. WinSCP және PuTTY екеуі де клиенттік машинаға орнатуды қажет етпей, USB-дискіден тікелей іске қосылуға дайын келеді. Chrome шолғышының қауіпсіз қабықша кеңейтімі бағдарламалық жасақтаманы орнатпастан SSH қосылыстарын жасауға және тіпті Chromebook компьютерінен SSH-ты пайдалануға мүмкіндік береді. Windows-та SSH серверін орнату әдетте Параметрлер қосымшасындағы функцияны қосуды қамтиды. SSH бұлтты есептеуде байланыс мәселелерін шешу үшін маңызды, бұлттағы виртуалды машинаны тікелей интернетке шығарудың қауіпсіздік проблемаларын болдырмауға көмектеседі. SSH туннелі интернет арқылы, өрт қабырғасынан өтіп, виртуалды машинаға қауіпсіз жол аша алады. IANA осы протокол үшін TCP 22, UDP 22 және SCTP 22 порттарын тағайындады. IANA 2001 жылы SSH серверлері үшін стандартты TCP 22 портын жақсы танымал порттардың бірі деп тізімдеген. SSH сондай-ақ TCP емес, SCTP арқылы қосылымға бағытталған тасымалдау қабаты протоколы ретінде де жұмыс істей алады.

1-ші нұсқа

1995 жылы Финляндиядағы Хельсинки технологиялық университетінің зерттеушісі Тату Йлонен университетінің желісінде парольді ұрлауға жасалған шабуылдан кейін протоколдың алғашқы нұсқасын (қазір SSH 1 деп аталады) жасады. SSH-тың мақсаты – бұрынғы rlogin, TELNET, FTP және rsh протоколдарын ауыстыру болды, олар күшті аутентификацияны қамтамасыз етпейтін және құпиялылықты кепілдемейтін. Ол 22-портты таңдады, себебі ол telnet (23-порт) және ftp (21-порт) арасында орналасқан. Йлонен 1995 жылдың шілдесінде өзінің әзірлемесін ақысыз бағдарлама ретінде жариялады, және бұл құрал тез танымал болды. 1995 жылдың соңына қарай SSH пайдаланушылар базасы елу елдегі пайдаланушыларға дейін жетті. 1995 жылдың желтоқсанында Йлонен SSH Communications Security компаниясын SSH-ты сату және дамыту үшін құрды. SSH бағдарламалық қамтамасының бастапқы нұсқасында GNU libgmp сияқты әртүрлі ақысыз бағдарламалық қамтамалар қолданылды, бірақ SSH Communications Security шығарған кейінгі нұсқалары көбірек коммерциялық бағдарламалық қамтамаларға айналды. 2000 жылға қарай пайдаланушылар саны 2 миллионға жеткен деп есептелді.

2-ші нұсқасы

2006 жылы "secsh" деп аталатын жұмыс тобында талқыланғаннан кейін SSH протоколының жаңартылған нұсқасы SSH 2 стандарт ретінде қабылданды. Бұл нұсқа жақсартылған қауіпсіздік пен жаңа мүмкіндіктер ұсынады, бірақ SSH 1-мен үйлесімді емес. Мысалы, ол Diffie–Hellman кілт алмасуы сияқты жаңа кілт алмасу механизмдерін енгізеді, сондай-ақ клиент пен сервер арасында келісіле алатын MD5 немесе SHA 1 сияқты хабарламаның аутентификациялық кодтары арқылы деректердің тұтастығын тексеруді жақсартады. SSH 2 сонымен қатар AES сияқты күшті шифрлау әдістерін қосады, бұл бұрынғы стандарттағы 3DES сияқты нашар және бұзылған шифрларды ығыстырды. SSH 2-нің жаңа мүмкіндіктеріне бір SSH қосылымы арқылы кез келген мөлшердегі қабық сеанстарын іске қосу қабілеті кіреді. SSH 2-нің SSH 1-ден артықшылығы мен танымалдылығына байланысты, libssh (v0.8.0+), Lsh және Dropbear сияқты кейбір жүзеге асырулар тек SSH 2 протоколын қолдауға көшті.

1.99 нұсқасы

2006 жылдың қаңтарында 2.1 нұсқасы қалыптасқаннан соң, 2.0 және одан бұрынғы нұсқаларды қолдайтын SSH сервері өзінің протокол нұсқасын 1.99 ретінде көрсетуі тиіс болды. Бұл нұсқа нөмірі тарихи бағдарламалық қамтамасының өзгеруін емес, кері үйлесімділікті анықтау тәсілін білдіреді.

OpenSSH және OSSH

1999 жылы бағдарламашылар ашық бастапқы код лицензиясымен шығарылған бастапқы SSH бағдарламасының соңғы нұсқасы – 1.2.12-ден қайта дамытуды бастады, себебі олар тегін бағдарламалық жасақтама нұсқасын қолжетімді етуді қалады. Бұл Björn Grönvall-дың OSSH бағдарламалық жасақтамасы үшін кодтық база ретінде пайдаланылды. Содан кейін OpenBSD бағдарламашылары Grönvall кодын бұтақтап, OpenBSD 2.6 нұсқасымен бірге шығарылған OpenSSH-ты жасады. Осы нұсқадан бастап OpenSSH-ты басқа операциялық жүйелерге көшіру үшін «портативтілік» тармағы құрылды. 2005 жылға қарай OpenSSH – операциялық жүйелердің көптеген дистрибутивтерінде стандартты нұсқа болып табылатын ең танымал SSH іске асырылымы еді. Ал OSSH қазір ескірген. OpenSSH SSH 2 протоколын қолдауды жалғастыруда және OpenSSH 7.6 нұсқасында кодтан SSH 1 қолдауын толығымен алып тастады.

Алгоритмдер

EdDSA, ECDSA, RSA және DSA ашық кілттің криптографиясы үшін. ECDH және Diffie-Hellman кілт алмасу үшін. AES (және қолданыстан шығарылған RC4, 3DES, DES) симметриялық шифрлеу үшін. AES GCM және ChaCha20 Poly1305 AEAD шифрлеуі үшін. SHA (және қолданыстан шығарылған MD5) кілттің сақ есімдік тегі үшін.

SSH-1

1998 жылы SSH 1.5 протоколында деректердің тұтастығын қорғаудың жеткіліксіздігіне байланысты шифрланған SSH ағынына рұқсатсыз мазмұн енгізуге мүмкіндік беретін осалдық сипатталды. Протоколдың осы нұсқасында қолданылған CRC 32 қорғауының нашарлығы осыған себеп болды. Көптеген іске асыруларда SSH Compensation Attack Detector деп аталатын түзету енгізілді. Алайда, осы жаңартылған іске асырулардың көпшілігінде шабуылшыларға SSH демонының (әдетте root) құқықтарымен кез келген кодты орындауға мүмкіндік беретін жаңа бүтін сан ағыны осалдығы табылды. 2001 жылдың қаңтар айында шабуылшыларға IDEA шифрланған сессияның соңғы блогын өзгертуге мүмкіндік беретін осалдық анықталды. Сол айдың ішінде, қаскөй серверге клиенттің куәлігін басқа серверге жіберуге мүмкіндік беретін тағы бір осалдық табылды. SSH 1 протоколында қауіптілікке алып келетін конструкциялық кемшіліктер болғандықтан, ол қазір ескірген деп есептеледі және SSH 1-ге кері оралу мүмкіндігін толығымен өшіру арқылы одан аулақ болу керек.

CBC-нің жай мәтінін қалпына келтіру

2008 жылдың қарашасында SSH-ның барлық нұсқаларындағы бір құпия мәтін блогынан 32 битке дейін ашық мәтінді қалпына келтіруге мүмкіндік беретін теориялық осалдық анықталды. Бұл құпия мәтін сол кездегі стандартты әдепкі шифрлау режимі CBC арқылы шифрланған болатын. Ең оңай шешім – CBC режимінен гөрі CTR (санағыш) режимін пайдалану, себебі бұл SSH-ды шабуылға қарсы тұруға мүмкіндік береді. Эдвард Сноуден ашқан ақпараттар Ұлттық қауіпсіздік агенттігінің кейбір SSH трафигін шифрдан әрі ашуға қабілетті екенін көрсетеді. Осы процеске қатысты техникалық егжей-тегжейлер жарияланбады. 2017 жылы ЦРУ-дың BothanSpy және Gyrfalcon хакерлік құралдарының талдауы SSH протоколының бұзылмағанын көрсетті.

Террапиндер шабуыл жасады

2023 жылы қазіргі көптеген SSH жүйелеріне қарсы жаңа «ортадағы адам» шабуылы ашылды. Оны ашқандар «Террапин» шабуылы деп атады. Дегенмен, қауіптің деңгейі шынайы SSH сессиясын тоқтатып алу қажеттілігімен төмендеді, сондай-ақ шабуылдың шектеулі ауқымы бар, нәтижесінде көбінесе қосылыс әрекеттері сәтсіз аяқталады. SSH жасаушылары бұл шабуылдың басты салдары – SSH-тың пернетақырым уақытын жасыру мүмкіндіктерін нашарлату екенін мәлімдеді. Бұл осалдық OpenSSH 9.6 нұсқасында жойылды, бірақ түзетудің толыққанды тиімді болуы үшін клиент және сервер екеуі де жаңартылуы керек.