💾 Мегабайты и мебибайты
Существует некоторая путаница между мегабайтами (MB) и мебибайтами (MiB), особенно когда речь идёт о скорости передачи данных в интернет-соединениях. На самом деле, всё достаточно просто для понимания, если разобраться в определениях.
Мегабайты (MB)
Мегабайт (MB) — это единица измерения информации, которая равна 1 000 000 байт (10^6 байт).
Мебибайты (MiB)
Мебибайт (MiB) — это единица измерения информации, которая равна 1 048 576 байт (2^20 байт).
То есть 1 MiB приблизительно равен 1.048576 MB.
Обозначения MB и MiB используются для разных целей. MB чаще используется в контексте хранения данных на жёстких дисках, флешках и других устройствах хранения данных. MiB чаще используется в контексте оперативной памяти и некоторых программных приложений.
Так же для скорости передачи данных часто используется мегабиты в секунду (Mbps), где 1 мегабит = 1 000 000 бит.
Существует некоторая путаница между мегабайтами (MB) и мебибайтами (MiB), особенно когда речь идёт о скорости передачи данных в интернет-соединениях. На самом деле, всё достаточно просто для понимания, если разобраться в определениях.
Мегабайты (MB)
Мегабайт (MB) — это единица измерения информации, которая равна 1 000 000 байт (10^6 байт).
Мебибайты (MiB)
Мебибайт (MiB) — это единица измерения информации, которая равна 1 048 576 байт (2^20 байт).
То есть 1 MiB приблизительно равен 1.048576 MB.
Обозначения MB и MiB используются для разных целей. MB чаще используется в контексте хранения данных на жёстких дисках, флешках и других устройствах хранения данных. MiB чаще используется в контексте оперативной памяти и некоторых программных приложений.
Так же для скорости передачи данных часто используется мегабиты в секунду (Mbps), где 1 мегабит = 1 000 000 бит.
🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
🔀 Файловые дескрипторы и перенаправление в Unix
В любом приложении для Unix-подобных ОС всегда существуют 3 файловых дескриптора:
- stdin (0)
- stdout (1)
- stderr (2)
В скобках указаны их номера.
Конвейеры чаще всего используются в shell-скриптах для перенаправления вывода одного приложения на вход другому. Простой пример:
Здесь создастся два параллельных процесса, один выведет содержимое текущей директории в stdout, а второй отфильтрует и выведет строки, полученные через stdin. С помощью символа конвейера
Следует учитывать, что символ конвейера не перенаправляет stderr. Для его перенаправления нужно воспользоваться следующей конструкцией:
Как уже упоминалось, stderr имеет номер 2. Данной конструкцией мы перенаправляем файловый дескриптор с номером 2 (stderr) в файловый дескриптор под номером 1 (stdout). Для перенаправления в файл можно сразу указать его имя:
И наконец, чтобы одновременно перенаправить stdout и stderr:
В любом приложении для Unix-подобных ОС всегда существуют 3 файловых дескриптора:
- stdin (0)
- stdout (1)
- stderr (2)
В скобках указаны их номера.
Конвейеры чаще всего используются в shell-скриптах для перенаправления вывода одного приложения на вход другому. Простой пример:
$ ls -la | grep conf
Здесь создастся два параллельных процесса, один выведет содержимое текущей директории в stdout, а второй отфильтрует и выведет строки, полученные через stdin. С помощью символа конвейера
| происходит перенаправление stdout первого процесса в stdin второго. Таким образом grep на вход получит результат вывода ls.Следует учитывать, что символ конвейера не перенаправляет stderr. Для его перенаправления нужно воспользоваться следующей конструкцией:
$ <команда> 2>&1
Как уже упоминалось, stderr имеет номер 2. Данной конструкцией мы перенаправляем файловый дескриптор с номером 2 (stderr) в файловый дескриптор под номером 1 (stdout). Для перенаправления в файл можно сразу указать его имя:
$ <команда> > <имя файла>
$ <команда> 2> <имя файла>
И наконец, чтобы одновременно перенаправить stdout и stderr:
$ <команда> > <имя файла> 2>&1
❤3
This media is not supported in your browser
VIEW IN TELEGRAM
🔍 ripgrep — быстрый поиск по файлам
ripgrep (команда
ripgrep особенно удобен при работе с большими кодовыми базами — он автоматически пропускает бинарные файлы, скрытые файлы и директории из
Основные преимущества:
- Высокая скорость работы благодаря реализации на Rust, оптимизациям и многопоточности
- Автоматически игнорирует файлы из
- Поддержка регулярных выражений
- Удобный цветной вывод по умолчанию
- Умное определение типов файлов
Примеры использования:
Простой поиск строки в текущей директории и поддиректориях:
Поиск с игнорированием регистра:
Поиск только в определённых типах файлов:
Показать контекст вокруг найденных строк:
Поиск с выводом только имён файлов:
ripgrep (команда
rg) — это современная утилита для рекурсивного поиска текста в файлах, которая работает значительно быстрее традиционного grep, а так же многих других аналогичных инструментов.ripgrep особенно удобен при работе с большими кодовыми базами — он автоматически пропускает бинарные файлы, скрытые файлы и директории из
.gitignore, что делает поиск не только быстрым, но и релевантным.Основные преимущества:
- Высокая скорость работы благодаря реализации на Rust, оптимизациям и многопоточности
- Автоматически игнорирует файлы из
.gitignore- Поддержка регулярных выражений
- Удобный цветной вывод по умолчанию
- Умное определение типов файлов
Примеры использования:
Простой поиск строки в текущей директории и поддиректориях:
$ rg "pattern"
Поиск с игнорированием регистра:
$ rg -i "pattern"
Поиск только в определённых типах файлов:
$ rg -t py "import" # только в Python файлах
$ rg -t js "function" # только в JavaScript файлах
Показать контекст вокруг найденных строк:
$ rg -C 3 "pattern" # 3 строки до и после
Поиск с выводом только имён файлов:
$ rg -l "pattern"
❤3✍2
This media is not supported in your browser
VIEW IN TELEGRAM
🔍 fd — современная альтернатива find
fd — это утилита командной строки для быстрого поиска файлов и директорий. Долгое время я пользовался классической командой
Почему стоит предпочесть fd:
• Простой синтаксис — вместо
• Высокая скорость — параллельное выполнение делает поиск заметно быстрее
• Цветной вывод — результаты подсвечиваются, что улучшает читаемость
• Умный поиск — по умолчанию игнорирует файлы из
• Регулярные выражения — поддержка regex из коробки
Примеры использования:
Интеграция с другими инструментами:
Полезные алиасы:
fd — это утилита командной строки для быстрого поиска файлов и директорий. Долгое время я пользовался классической командой
find, но скорость работы оставляла желать лучшего. Переход на fd, написанную на Rust, значительно упростил мне жизнь.Почему стоит предпочесть fd:
• Простой синтаксис — вместо
find . -name "*.txt" пишем fd "*.txt"• Высокая скорость — параллельное выполнение делает поиск заметно быстрее
• Цветной вывод — результаты подсвечиваются, что улучшает читаемость
• Умный поиск — по умолчанию игнорирует файлы из
.gitignore и скрытые файлы• Регулярные выражения — поддержка regex из коробки
Примеры использования:
# Найти все Python файлы
fd -e py
# Поиск по регулярному выражению
fd '^test_.*\.py$'
# Включить скрытые файлы и директории
fd -H config
# Выполнить команду для каждого найденного файла
fd -e jpg -x convert {} {.}.png # это просто 🔥
# Поиск только в директориях (или только файлов с -t f)
fd -t d cache
Интеграция с другими инструментами:
fd отлично комбинируется с fzf (про него будет в одном из следующих постов) для интерактивного поиска файлов:vim $(fd -e py | fzf)
Полезные алиасы:
alias fdf='fd -t f' # только файлы
alias fdd='fd -t d' # только директории
alias fda='fd -H' # включая скрытые
fd — один из тех инструментов, которые делают работу в терминале приятнее. После перехода на него я уже не возвращаюсь к find.🔥4❤1👍1
This media is not supported in your browser
VIEW IN TELEGRAM
🔄 Порядок байтов: Big-endian и Little-endian
Порядок байтов (byte order) — это то, как компьютер хранит многобайтовые числа в памяти. Различают два основных подхода:
Little-endian (младший байт первым):
Младший значащий байт хранится по меньшему адресу. Например, число
Big-endian (старший байт первым):
Старший значащий байт хранится по меньшему адресу. То же число
Где используется:
• Little-endian: x86, x86-64, ARM (по умолчанию)
• Big-endian: Старые PowerPC, SPARC, сетевые протоколы, PNG, JPEG
Network byte order:
Для сетевого взаимодействия используется стандарт big-endian, называемый network byte order. Это решает проблему совместимости: когда машины с разным порядком байтов обмениваются данными по сети, все используют единый формат.
Почему важно:
При работе с двоичными файлами, сетевыми пакетами или межпроцессным взаимодействием игнорирование порядка байтов приведёт к некорректной интерпретации данных. Всегда важно знать, в каком формате хранятся ваши данные.
Порядок байтов (byte order) — это то, как компьютер хранит многобайтовые числа в памяти. Различают два основных подхода:
Little-endian (младший байт первым):
Младший значащий байт хранится по меньшему адресу. Например, число
0x12345678:Адрес: 0x00 0x01 0x02 0x03
Данные: 0x78 0x56 0x34 0x12
Big-endian (старший байт первым):
Старший значащий байт хранится по меньшему адресу. То же число
0x12345678:Адрес: 0x00 0x01 0x02 0x03
Данные: 0x12 0x34 0x56 0x78
Где используется:
• Little-endian: x86, x86-64, ARM (по умолчанию)
• Big-endian: Старые PowerPC, SPARC, сетевые протоколы, PNG, JPEG
Network byte order:
Для сетевого взаимодействия используется стандарт big-endian, называемый network byte order. Это решает проблему совместимости: когда машины с разным порядком байтов обмениваются данными по сети, все используют единый формат.
Почему важно:
При работе с двоичными файлами, сетевыми пакетами или межпроцессным взаимодействием игнорирование порядка байтов приведёт к некорректной интерпретации данных. Всегда важно знать, в каком формате хранятся ваши данные.
👍3❤1
🔒 TLS — шифрование веб-трафика
TLS (Transport Layer Security) — криптографический протокол, обеспечивающий защищённое соединение между клиентом и сервером и защиту от атак типа Man-in-the-Middle.
Протокол появился в 1999 году как замена устаревшему SSL от Netscape. При этом термин "SSL" по инерции всё ещё используется в обиходе.
Основные задачи протокола:
• Конфиденциальность — данные шифруются и доступны только отправителю и получателю
• Целостность — любое изменение данных при передаче будет обнаружено
• Аутентификация — сервер подтверждает свою подлинность через цифровой сертификат
TLS Handshake
Если вкратце, процедура установки защищённого соединения TLS выглядит следующим образом:
• Клиент отправляет список поддерживаемых алгоритмов шифрования
• Сервер выбирает алгоритм шифрования и отправляет свой сертификат
• Клиент проверяет сертификат через цепочку доверия CA (Certificate Authority)
• Стороны генерируют уникальные ключи для этой сессии
• Весь последующий трафик шифруется этими ключами
Проблема SNI и Encrypted Client Hello
У TLS есть интересная проблема с приватностью. Когда мы подключаемся к HTTPS-сайту, имя домена передаётся незашифрованным через механизм SNI (Server Name Indication). Это значит, что наш провайдер видит, на какие именно сайты мы заходим, даже если весь трафик зашифрован.
Решение — Encrypted Client Hello (ECH), новое расширение TLS, которое шифрует и имя сервера. Поддержка уже добавлена в Firefox и Cloudflare, но массовое внедрение только начинается.
Heartbleed: крупнейшая уязвимость в истории TLS
В 2014 году обнаружили уязвимость в OpenSSL под названием Heartbleed. Баг позволял читать до 64 КБ оперативной памяти сервера при каждом запросе — туда могли попасть пароли, ключи шифрования, личные данные.
Уязвимость затронула 17% всех HTTPS-сайтов в интернете, включая Google, Facebook и Yahoo. Самое страшное — баг существовал в коде 2 года до обнаружения. После этого случая началась массовая ревизия криптографического кода и появились инициативы по финансированию разработки OpenSSL.
Другие интересные моменты
• TLS Fingerprinting — по особенностям handshake можно определить нашу ОС и браузер, даже если мы используем VPN. Каждый браузер отправляет характерный набор алгоритмов и расширений.
• Государственный MITM — в 2019 году Казахстан заставлял граждан устанавливать государственный root-сертификат для перехвата HTTPS-трафика. Браузеры быстро заблокировали эти сертификаты.
• Квантовая угроза — квантовые компьютеры смогут взломать современные алгоритмы шифрования. TLS 1.3 уже готовится к постквантовым алгоритмам, которые NIST стандартизирует прямо сейчас.
TLS (Transport Layer Security) — криптографический протокол, обеспечивающий защищённое соединение между клиентом и сервером и защиту от атак типа Man-in-the-Middle.
Протокол появился в 1999 году как замена устаревшему SSL от Netscape. При этом термин "SSL" по инерции всё ещё используется в обиходе.
Основные задачи протокола:
• Конфиденциальность — данные шифруются и доступны только отправителю и получателю
• Целостность — любое изменение данных при передаче будет обнаружено
• Аутентификация — сервер подтверждает свою подлинность через цифровой сертификат
TLS Handshake
Если вкратце, процедура установки защищённого соединения TLS выглядит следующим образом:
• Клиент отправляет список поддерживаемых алгоритмов шифрования
• Сервер выбирает алгоритм шифрования и отправляет свой сертификат
• Клиент проверяет сертификат через цепочку доверия CA (Certificate Authority)
• Стороны генерируют уникальные ключи для этой сессии
• Весь последующий трафик шифруется этими ключами
Проблема SNI и Encrypted Client Hello
У TLS есть интересная проблема с приватностью. Когда мы подключаемся к HTTPS-сайту, имя домена передаётся незашифрованным через механизм SNI (Server Name Indication). Это значит, что наш провайдер видит, на какие именно сайты мы заходим, даже если весь трафик зашифрован.
Решение — Encrypted Client Hello (ECH), новое расширение TLS, которое шифрует и имя сервера. Поддержка уже добавлена в Firefox и Cloudflare, но массовое внедрение только начинается.
Heartbleed: крупнейшая уязвимость в истории TLS
В 2014 году обнаружили уязвимость в OpenSSL под названием Heartbleed. Баг позволял читать до 64 КБ оперативной памяти сервера при каждом запросе — туда могли попасть пароли, ключи шифрования, личные данные.
Уязвимость затронула 17% всех HTTPS-сайтов в интернете, включая Google, Facebook и Yahoo. Самое страшное — баг существовал в коде 2 года до обнаружения. После этого случая началась массовая ревизия криптографического кода и появились инициативы по финансированию разработки OpenSSL.
Другие интересные моменты
• TLS Fingerprinting — по особенностям handshake можно определить нашу ОС и браузер, даже если мы используем VPN. Каждый браузер отправляет характерный набор алгоритмов и расширений.
• Государственный MITM — в 2019 году Казахстан заставлял граждан устанавливать государственный root-сертификат для перехвата HTTPS-трафика. Браузеры быстро заблокировали эти сертификаты.
• Квантовая угроза — квантовые компьютеры смогут взломать современные алгоритмы шифрования. TLS 1.3 уже готовится к постквантовым алгоритмам, которые NIST стандартизирует прямо сейчас.
👍3
🧟 nohup — процессы, которые не умирают
Подключились к серверу по SSH, запустили долгую задачу, закрыли ноутбук — и процесс умер. Знакомо?
При закрытии терминала система отправляет сигнал
Добавляем
Если вывод не нужен — перенаправляем в
Несколько нюансов:
• После запуска можно безопасно закрыть терминал
• Процесс продолжит работу с PPID=1 (Parent Process ID)
• Для интерактивного управления задачами лучше подойдут
Простая утилита, которая выручает, когда нужно быстро запустить что-то долгоиграющее без лишних настроек.
Подключились к серверу по SSH, запустили долгую задачу, закрыли ноутбук — и процесс умер. Знакомо?
При закрытии терминала система отправляет сигнал
SIGHUP (hangup) всем дочерним процессам, завершая их. Утилита nohup решает эту проблему — она игнорирует этот сигнал.nohup ./long_task.sh &
Добавляем
& в конце, чтобы процесс ушёл в фоновый режим. Вывод по умолчанию записывается в файл nohup.out.Если вывод не нужен — перенаправляем в
/dev/null (подробнее про перенаправления в этом посте):nohup ./script.sh > /dev/null 2>&1 &
Несколько нюансов:
• После запуска можно безопасно закрыть терминал
• Процесс продолжит работу с PPID=1 (Parent Process ID)
• Для интерактивного управления задачами лучше подойдут
screen или tmuxПростая утилита, которая выручает, когда нужно быстро запустить что-то долгоиграющее без лишних настроек.
🔥3
🔐 MFA — многофакторная аутентификация
MFA (Multi-Factor Authentication) — метод аутентификации, при котором личность подтверждается через два или более независимых фактора. Смысл простой: даже если пароль утёк — а это случается регулярно через утечки баз данных — без второго фактора войти в аккаунт не получится.
Часто встречается термин 2FA (Two-Factor Authentication) — это частный случай MFA, где используются ровно два фактора. На практике "2FA" и "MFA" используются как синонимы, поскольку большинство реализаций двухфакторные. Разница лишь в том, что MFA теоретически допускает три фактора и более.
MFA необходим везде, где хранится что-то важное: GitHub и GitLab, облачные консоли AWS/GCP/Azure, корпоративная почта, менеджеры паролей, VPN-доступ к production-серверам.
Три категории факторов
Все факторы делятся на три группы:
• Знание (knowledge) — пароль, PIN-код, секретный вопрос
• Владение (possession) — телефон, аппаратный ключ, смарт-карта
• Биометрия (inherence) — отпечаток пальца, Face ID, сканирование сетчатки
Важный момент: два пароля — это не MFA. Факторы должны быть из разных категорий. Пароль + SMS-код — это MFA. Пароль + секретный вопрос — нет, оба из категории «знание».
Методы второго фактора — от слабых к сильным
• SMS-коды — самый слабый вариант. Уязвимы к SIM swapping (мошеннический перевыпуск SIM-карты) и перехвату через устаревшие уязвимости протокола SS7. Тем не менее лучше, чем ничего.
• TOTP (Time-based One-Time Password) — приложения вроде Google Authenticator или Aegis генерируют одноразовые коды локально. Код не передаётся по сети, перехватить его значительно сложнее. Минимальный стандарт для всех рабочих аккаунтов.
• Push-уведомления — удобны, но подвержены атаке MFA fatigue: злоумышленник спамит запросами на вход, пока жертва случайно не нажмёт «Подтвердить».
• Аппаратные ключи (YubiKey, Titan) — самый надёжный классический метод. Криптографическая аутентификация с физическим подтверждением нажатием кнопки на устройстве. Именно их стоит использовать для привилегированных учётных записей и production-доступа.
Реальный пример: Cloudflare vs Twilio, 2022
В августе 2022 года одна и та же группа атаковала сразу несколько технологических компаний, в том числе Twilio и Cloudflare. Схема одинаковая: сотрудники получали SMS с фишинговой ссылкой на поддельную страницу входа. Страница в реальном времени перехватывала логин, пароль и TOTP-код и передавала их атакующим — те мгновенно использовали данные для входа в настоящий аккаунт.
Twilio взломали. Cloudflare — нет. Разница: у сотрудников Cloudflare были аппаратные FIDO2-ключи (YubiKey). Такой ключ криптографически привязан к домену сайта и физически не может сработать на поддельном адресе. Даже получив логин и пароль, атакующие не смогли пройти второй фактор.
MFA — необходимый минимум для любого важного аккаунта. Но у всех перечисленных методов есть общая проблема: пароль по-прежнему существует, а значит — может утечь. Об этом поговорим в следующем посте.
MFA (Multi-Factor Authentication) — метод аутентификации, при котором личность подтверждается через два или более независимых фактора. Смысл простой: даже если пароль утёк — а это случается регулярно через утечки баз данных — без второго фактора войти в аккаунт не получится.
Часто встречается термин 2FA (Two-Factor Authentication) — это частный случай MFA, где используются ровно два фактора. На практике "2FA" и "MFA" используются как синонимы, поскольку большинство реализаций двухфакторные. Разница лишь в том, что MFA теоретически допускает три фактора и более.
MFA необходим везде, где хранится что-то важное: GitHub и GitLab, облачные консоли AWS/GCP/Azure, корпоративная почта, менеджеры паролей, VPN-доступ к production-серверам.
Три категории факторов
Все факторы делятся на три группы:
• Знание (knowledge) — пароль, PIN-код, секретный вопрос
• Владение (possession) — телефон, аппаратный ключ, смарт-карта
• Биометрия (inherence) — отпечаток пальца, Face ID, сканирование сетчатки
Важный момент: два пароля — это не MFA. Факторы должны быть из разных категорий. Пароль + SMS-код — это MFA. Пароль + секретный вопрос — нет, оба из категории «знание».
Методы второго фактора — от слабых к сильным
• SMS-коды — самый слабый вариант. Уязвимы к SIM swapping (мошеннический перевыпуск SIM-карты) и перехвату через устаревшие уязвимости протокола SS7. Тем не менее лучше, чем ничего.
• TOTP (Time-based One-Time Password) — приложения вроде Google Authenticator или Aegis генерируют одноразовые коды локально. Код не передаётся по сети, перехватить его значительно сложнее. Минимальный стандарт для всех рабочих аккаунтов.
• Push-уведомления — удобны, но подвержены атаке MFA fatigue: злоумышленник спамит запросами на вход, пока жертва случайно не нажмёт «Подтвердить».
• Аппаратные ключи (YubiKey, Titan) — самый надёжный классический метод. Криптографическая аутентификация с физическим подтверждением нажатием кнопки на устройстве. Именно их стоит использовать для привилегированных учётных записей и production-доступа.
Реальный пример: Cloudflare vs Twilio, 2022
В августе 2022 года одна и та же группа атаковала сразу несколько технологических компаний, в том числе Twilio и Cloudflare. Схема одинаковая: сотрудники получали SMS с фишинговой ссылкой на поддельную страницу входа. Страница в реальном времени перехватывала логин, пароль и TOTP-код и передавала их атакующим — те мгновенно использовали данные для входа в настоящий аккаунт.
Twilio взломали. Cloudflare — нет. Разница: у сотрудников Cloudflare были аппаратные FIDO2-ключи (YubiKey). Такой ключ криптографически привязан к домену сайта и физически не может сработать на поддельном адресе. Даже получив логин и пароль, атакующие не смогли пройти второй фактор.
MFA — необходимый минимум для любого важного аккаунта. Но у всех перечисленных методов есть общая проблема: пароль по-прежнему существует, а значит — может утечь. Об этом поговорим в следующем посте.
👍2🔥2❤1
🔑 WebAuthn и Passkeys — аутентификация без паролей
SMS, TOTP, push-уведомления, аппаратные ключи — каждый следующий метод MFA надёжнее предыдущего. Но у всех есть общая слабость: пароль никуда не исчезает. Его можно перехватить, утащить из базы данных или выманить фишингом. WebAuthn решает эту проблему радикально — убирает пароль совсем.
FIDO2 и WebAuthn
FIDO2 — открытый стандарт аутентификации от альянса FIDO и W3C. Состоит из WebAuthn (API для браузеров и приложений) и CTAP (протокол общения с аутентификатором: USB-ключом, телефоном или встроенной биометрией).
WebAuthn заменяет пароли криптографией с открытым ключом:
• При регистрации устройство генерирует пару ключей — приватный и публичный
• Сервер сохраняет только публичный ключ
• При входе сервер отправляет challenge — случайную строку
• Устройство запрашивает подтверждение владельца — отпечаток пальца, скан лица или PIN-код
• После подтверждения устройство подписывает challenge приватным ключом
• Сервер проверяет подпись публичным ключом
Приватный ключ никогда не покидает устройство. Серверу нечего красть — у него только публичный ключ, бесполезный для атакующего.
Passkeys
Passkeys — маркетинговое название WebAuthn-аутентификации. Ключевое отличие от аппаратных ключей: Passkeys синхронизируются через облако — iCloud Keychain, Google Password Manager, Windows Hello. Работают на всех устройствах без физического ключа.
Каждый Passkey жёстко привязан к домену при регистрации. Если ключ создан на
Распространённые заблуждения
• «Passkeys — это биометрия» — нет. Биометрия лишь разблокирует доступ к приватному ключу, но сама ключом не является.
• «Потерял телефон — потерял доступ» — не обязательно. Passkeys синхронизируются через облако, при замене устройства восстанавливаются автоматически.
Ограничения
• Зависимость от облака — компрометация облачного аккаунта ставит под угрозу все синхронизированные ключи
• Привязка к экосистеме — Passkeys из iCloud не переносятся в Google Password Manager и наоборот. Сторонние менеджеры паролей вроде Bitwarden решают эту проблему, храня ключи кроссплатформенно
• Восстановление доступа — при потере всех устройств и облачного аккаунта восстановить ключи невозможно
Passkeys — редкий случай в безопасности, когда более защищённый метод оказывается одновременно и более удобным: не нужно ничего запоминать, вводить или копировать.
SMS, TOTP, push-уведомления, аппаратные ключи — каждый следующий метод MFA надёжнее предыдущего. Но у всех есть общая слабость: пароль никуда не исчезает. Его можно перехватить, утащить из базы данных или выманить фишингом. WebAuthn решает эту проблему радикально — убирает пароль совсем.
FIDO2 и WebAuthn
FIDO2 — открытый стандарт аутентификации от альянса FIDO и W3C. Состоит из WebAuthn (API для браузеров и приложений) и CTAP (протокол общения с аутентификатором: USB-ключом, телефоном или встроенной биометрией).
WebAuthn заменяет пароли криптографией с открытым ключом:
• При регистрации устройство генерирует пару ключей — приватный и публичный
• Сервер сохраняет только публичный ключ
• При входе сервер отправляет challenge — случайную строку
• Устройство запрашивает подтверждение владельца — отпечаток пальца, скан лица или PIN-код
• После подтверждения устройство подписывает challenge приватным ключом
• Сервер проверяет подпись публичным ключом
Приватный ключ никогда не покидает устройство. Серверу нечего красть — у него только публичный ключ, бесполезный для атакующего.
Passkeys
Passkeys — маркетинговое название WebAuthn-аутентификации. Ключевое отличие от аппаратных ключей: Passkeys синхронизируются через облако — iCloud Keychain, Google Password Manager, Windows Hello. Работают на всех устройствах без физического ключа.
Каждый Passkey жёстко привязан к домену при регистрации. Если ключ создан на
example.com, браузер не отдаст его фишинговому examp1e.com — проверка происходит автоматически на уровне протокола.Распространённые заблуждения
• «Passkeys — это биометрия» — нет. Биометрия лишь разблокирует доступ к приватному ключу, но сама ключом не является.
• «Потерял телефон — потерял доступ» — не обязательно. Passkeys синхронизируются через облако, при замене устройства восстанавливаются автоматически.
Ограничения
• Зависимость от облака — компрометация облачного аккаунта ставит под угрозу все синхронизированные ключи
• Привязка к экосистеме — Passkeys из iCloud не переносятся в Google Password Manager и наоборот. Сторонние менеджеры паролей вроде Bitwarden решают эту проблему, храня ключи кроссплатформенно
• Восстановление доступа — при потере всех устройств и облачного аккаунта восстановить ключи невозможно
Passkeys — редкий случай в безопасности, когда более защищённый метод оказывается одновременно и более удобным: не нужно ничего запоминать, вводить или копировать.
👍4
