Що насправді робить SSH
Splync використовує HTTPS для захисту маршруту між вашим смартфоном і нашим сервером, проте ми також повинні захищати сам сервер, щоб забезпечити безпеку даних користувача. Розробникам додатків і системним адміністраторам потрібен спосіб входу на цей сервер для обслуговування і розгортання оновлень — безпечно. Ось тут на допомогу приходить SSH (Secure Shell). Це протокол, який дозволяє авторизованим користувачам безпечно входити на віддалені комп'ютери, навіть через ненадійні мережі. SSH замінює старі, небезпечні методи, такі як Telnet, який відправляв імена користувачів і паролі у відкритому тексті.
Ідея “ключів”
SSH не покладається на звичайний пароль. Натомість він використовує криптографічні ключі — пару, що складається з публічного та приватного ключа. Уявіть їх як замок і ключ, які підходять лише одне до одного. Публічний ключ розміщується на сервері, а приватний залишається з користувачем. Коли ви підключаєтеся, сервер викликає вас довести, що у вас є приватний ключ, не розкриваючи його. Це робить майже неможливим для сторонніх осіб вдавати з себе вас. Звичайні паролі можуть бути вгадані, зламані або повторно використані, а ключі SSH — це довгі, випадкові криптографічні рядки, які практично неможливо вгадати. Навіть якщо хтось перехопить підключення, все, що він побачить, це зашифрований шум. І оскільки ключі SSH ніколи не передаються мережею, в транзиті немає нічого, що можна було б вкрасти.
Як виглядає ключ SSH
Якщо ви ніколи не бачили ключ SSH, це може звучати абстрактно — але насправді це просто довгий блок закодованого тексту. Публічний ключ зазвичай має кількасот символів, тоді як приватний може досягати понад тисячу. Обидва зберігаються як текстові файли, але їхній вміст виглядає як випадковий шум — суміш літер, цифр і символів. Публічний ключ безпечно ділитися; це як покласти свій замок на сервер. Приватний ключ, навпаки, є вашою унікальною цифровою ідентичністю і ніколи не повинен бути розголошений. Він зберігається локально на вашому комп'ютері і використовується лише для підтвердження вашої особи — без розкриття самого ключа.
Публічний ключ і приватний ключ
Публічний ключ — це як замок, який ви прикріплюєте до свого будинку. Його можуть бачити всі, як і замок на вхідних дверях. Але дивлячись на замок, ніхто не дізнається, як його відкрити. Іншими словами, його можуть бачити всі, але відкрити може лише правильний ключ. Приватний ключ, навпаки, — це ключ, який відкриває замок і залишається у вас. Якщо хтось інший отримає ваш приватний ключ, він може зайти у ваш будинок, як ніби це ви. Ось чому його завжди потрібно тримати в секреті.
Механізм SSH
Кожен публічний і приватний ключ утворюють унікальну пару один до одного. Вони генеруються разом математичним процесом, так що тільки цей конкретний приватний ключ може відповідати своєму публічному ключу. Ви можете уявити їх як замок і ключ, виготовлені на замовлення — виготовлені разом, і жоден інший ключ у світі не підійде до цього замка. Навіть якщо ви згенеруєте іншу пару, використовуючи той самий алгоритм (наприклад, RSA або Ed25519), числа всередині будуть зовсім іншими. Математика, що пов'язує їх, одностороння: ви можете легко отримати публічний ключ з приватного, але практично неможливо повернути процес і знайти приватний ключ з публічного. Ось чому кожна пара ключів SSH унікальна і безпечна.
Як SSH підтверджує вашу особу
Коли ви входите на сервер за допомогою SSH, ваш приватний ключ ніколи не залишає ваш комп'ютер. Натомість сервер надсилає випадкове завдання — як одноразову головоломку — яку може вирішити лише ваш приватний ключ. Ваш комп'ютер математично підписує це завдання, створюючи коротку відповідь, яку сервер може перевірити, використовуючи ваш публічний ключ. Якщо відповідь підходить, сервер знає, що у вас правильний приватний ключ — не бачивши його. Це чарівність сучасної криптографії: ви можете підтвердити свою особу, не розкриваючи свій секрет. Аутентифікація SSH працює, тому що ваш приватний ключ містить всю інформацію для виведення публічного ключа, але зворотний процес практично неможливий.
Як розробники використовують SSH на практиці
Щоразу, коли розробники розгортають код, оновлюють базу даних або перезапускають службу, вони часто підключаються до своїх віддалених серверів через SSH. Після аутентифікації вони отримують безпечне з'єднання з командним рядком на сервері. Звідти вони можуть керувати файлами, перезапускати служби або перевіряти журнали — все зашифроване від початку до кінця. У випадку Splync, SSH — це спосіб, яким ми безпечно керуємо нашим хмарним сервером. Кожна адміністративна дія — розгортання оновлень, перевірка журналів, резервне копіювання даних — виконується через з'єднання SSH, захищене криптографічними ключами. Ніхто не може отримати доступ до сервера без правильного приватного ключа. Навіть якщо хтось знав нашу IP-адресу, без цього ключа двері просто не відчиняться.
Що далі: шифрування всередині сервера
SSH захищає вхід на сервер, а HTTPS захищає дані під час передачі. Але коли дані потрапляють у базу даних, як ми їх захищаємо? Тут вступають в дію хешування і шифрування — останній шар захисту.