-
@ cactus
2023-11-22 22:38:03Read in english: Session removed PFS, we're doomed!!1
Автор: Кот Иван
Опубликовано также в IPFS!•••
PFS (Perfect forward secrecy) — это система, позволяющая в случае взлома одного ключа шифрования выдать лишь часть сообщений, но защитить другие части. Делается это простым образом: ключ шифрования переодически меняется. Из-за того, что Session убрал PFS, в случае взлома одного ключа хакеру станут доступны все ваши переписки. Разработчики Session лаконично возразили на это, что взлом ключа возможен лишь при физическом доступе к девайсу (а в этом случае сообщения можно прочесть и просто так) [0]. Насколько они правы?TL;DR: Они охуенно правы, но им стоит побеспокоиться о квантовых компьютерах.
•••
Давайте разберемся.
Протокол Session генерирует каждой учетной записи долгосрочную пару ключей X25519 (секретный и публичный) [1]. Секретный ключ X25519 состоит из 32 байтов (256 битов), или строку из 64 символов, которые включают в себя только цифры и буквы верхнего регистра [2][3].
Пример приватного ключа:
193FC8C3A73782DA18B238915C941CEF5E985DB388C881BD3C0E9EF496894A19
Предположим, что разработчики Session неправы, и попробуем посчитать, сколько времени займёт процесс взлома фразы, состоящего из 64 букв и цифр.
Количество всех возможных комбинаций любой строки вычисляется так [4]:
(Количество возможных символов)^(Длинна пароля)
В случае, если мы используем 26 букв английского алфавита и десять цифр (включая ноль), получается 36 вариантов символа. Длинна — как мы уже выяснили — 64. Наше уравнение — 36 в степени 64.
36^64 = 4.01199E+99
Следовательно, у ключа шифрования Session есть 4 011 199 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 возможных комбинаций. Цифру ещё можно выразить как 10^99*4, 12.3 Q (кветто) [5] или 4 дуотригинтиллиона. Для сравнения, это больше (примерно на 4 квинтиллиона), чем количество атомов в наблюдаемой вселенной (по оценкам — от 10^79 до 10^81) [6][7].
Для краткости, в будущем я буду обращаться к этому числу как к 12.3 Q, хотя его вполне можно было бы и назвать "число-пиздец". Так вот, теперь нам предстоит выяснить, как быстро компьютер сможет взломать пароль, если количество его комбинаций — 12.3 Q. Сайт Betterbuys [8] провел небольшое расследование этого вопроса и предложил, ссылаясь на источники, следующие схемы:
Эффективные ядра: 1/((1-Эффективность)+(Эффективность/Кол-во ядер)) — (мы предположим, что процессов посвящает 99% операций взлому пароля, поэтому эффективностью будет 0.99)
GFLOPS процессора: Частота процессора * Эффективные ядра
Количество операций в секунду: GFLOPS/Константа шифрования (расчитана на типичный компьютер 2015 года)
Время в секундах: x секунд = Комбинации/(количество операций в секунду)
Каков результат всех этих вычислений? Если заставить один компьютер 2015 года на процессоре Core i5-6600K взламывать ваш секретный ключ, у него займет это 3.5411902245474E+52 секунд — или 4 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 лет.А шанс случайно подобрать ключ — меньше 0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003%.
Но что если компьютер будет не один?
Что если именно тебя атакует владелец ботнета, или хакерская группировка, или правительство со сверхкомпьютером? Ну, даже если мы подключим все существующие в мире компьютеры, включая ваш, ко взлому вашего ключа, на это всё равно уйдет уйма времени. Например, в 2015 году их было 2 миллиарда (2 000 000 000 000 000 000 000 000 000 000 000 000 000 лет взлома); но
даже если к 2023 мы изобрели в тысячу раз больше компьютеров, чем было (тысяча миллиардов), и все они (до музейных экспонатов) приобрели в два раза более сильный процессор, чем i5-6600K , у нас всё ещё остается 1 000 000 000 000 000 000 000 000 000 000 000 000 лет на взлом.Но что насчёт более вовременных методов взлома?
Здесь разработчики не соврали: современные методы взлома отметаются тем, как Session скрывает ваши метаданные. Когда сгенерированный Session ключ не связан с вами — это исключает индивидуальную атаку; когда пароль случаен, это исключает атаку со словарём [10]; когда пароль неизвестен даже вам самим, это исключает фишинговую атаку [10]; когда пароль длиннее 20-30 символов, это исключает атаку радужными базами [10]. Session также устойчиво противостоит MITM [10], Sybil и DRDoS-атакам.
Но что насчёт квантовых компьютеров?
Система шифрования, используемая Session (elliptic-curve cryptography [11]), действительно, уязвима перед квантовым компьютером, использующим алгоритм Шора [12]. Как скоро квантовый компьютер сможет взломать пароль с 12.3 Q комбинаций?
Согласно одним данным, всего за час, но при наличии от 20 [13] до 317 [14] миллионов кубитов (известный нам опубликованный лимит кубитов на сегодня — 433 кубита [15]). Согласно другим — уже с сегодняшним компьютером, но за 67 миллионов лет [16]. Согласно третьим — квантовый компьютер вообще едва ли сможет взламывать пароли: например из-за того, что компьютер должен быть достаточно стабильным для долгого взлома, или он должен иметь доступ к паролю (нужно взломать систему и получить напр. хеш пароля, ибо проверять состояние кубитов через интернет-запросы невозможно).
Тем не менее, из всех поднятых вопросов лишь квантовые компьютеры действительно представляют возможную опасность в будущем.
В конце концов, даже если вам удастся взломать 256-битный ключ, без доступа к девайсу вы сможете восстановить диалоги лишь за последние 14 дней (а также читать дальнейшие диалоги с этого момента), потому что сообщения старше этого срока перманентно удаляются с серверов [17].Выводы
- То, что Session отказался от PFS, никак не компромитирует вашу безопасность*.
- Знатокам кибербезопасности, продолжающим по сей день кричать про PFS как главную уязвимость Session, стоит прежде всего попробовать отгадать или подобрать мою любимую цифру — она где-то в диапазоне между 1 и 4 011 199 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000.
- Тем не менее, Session нужно обратить внимание на потенциальную грядущую опасность квантовых компьютеров.
- В какой-то момент Sesson должен начать переход на новый метод шифрования, устойчивый против квантовых алгоритмов.
*Когда количество нулей в вероятности (0,00..01) выше сотни, вероятность можно округлять до нуля.
•••
Источники:
[0] https://getsession.org/faq#session-pfs
[1] https://getsession.org/blog/session-protocol-technical-information
[2] https://crypto.stackexchange.com/questions/80601/what-is-the-key-length-of-shared-secret-by-curve-25519-ecdh
[3] https://medium.com/asecuritysite-when-bob-met-alice/having-your-crypto-handshaking-cake-and-eating-it-x25519-or-kyber-why-not-have-both-18b90f90dbbd
[4] https://www.betterbuys.com/estimating-password-cracking-times/
[5] https://en.wikipedia.org/wiki/Metric_prefix
[6] https://en.wikipedia.org/wiki/Observable_universe#Matter_content
[7] https://www.universetoday.com/36302/atoms-in-the-universe/
[8] https://www.betterbuys.com/estimating-password-cracking-times/
[9] https://www.worldometers.info/computers/
[10] https://stytch.com/blog/top-10-password-cracking-techniques/
[11] https://en.m.wikipedia.org/wiki/Elliptic-curve_cryptography
[12] https://en.m.wikipedia.org/wiki/Shor%27s_algorithm
[13] https://arxiv.org/pdf/1905.09749.pdf
[14] https://doi.org/10.1116/5.0073075
[15] https://spectrum.ieee.org/ibm-condor
[16] Sumanta Chatterjee (https://qr.ae/pKkcrh) states that the speed of password calculation can be found by the following formula: (number of password combinations)/(number of operations per second) = x seconds, where number of operations per second is calculated as follows: (number of petaFLOPS of a quantum computer)petaFLOPS, where 1 petaFLOSP equals 10^15 or 2^50 (https://en.wikipedia.org/wiki/FLOPS). According to TOP500 (https://top500.org/lists/top500/list/2022/11/), as of January 2023, the most powerful computer had a peak performance of 1685.65 petaFLOPS. So 12.3 Q/(1685.652^50) = 2.11394040995172541e+81 seconds = 66,988,000 years.
[17] https://getsession.org/blog/self-deleting-messages