Если предположить, что слова не повторяются, это даст общее количество возможностей:
$N(L) = \sum_{i=1}^L {170000 \выбрать i}$
Нет: это общее количество наборы из $L$ слова, но слова должны быть в порядке, так что значение на самом деле
$N(L) = \sum_{i=1}^L \frac{170000!}{i!}$.
Кроме того, нет причин не повторять слова: это просто немного облегчает угадывание парольной фразы. Таким образом, количество $L$-словные парольные фразы на самом деле $170000^{L}$. Количество паролей $1$ к $L$ слова
$$N(L) = \sum_{i=1}^L 170000^i$$
На самом деле злоумышленник, скорее всего, знает количество слов в парольной фразе, но это не сильно меняет число.
Выполняя расчет, $N(14) < 2^{256} <N(15)$.
Правильно ли тогда предположить, что, если атакуемый знает, что «пароль» действительно является кодовой фразой, состоящей из английских ключей, то парольная фраза должна быть по крайней мере 18 15-word long, чтобы он не был слабым звеном в схеме шифрования AES?
Тем не менее нет, потому что стоимость проверки парольной фразы выше, чем стоимость проверки ключа. Чтобы проверить кодовую фразу, злоумышленник должен сначала получить ключ из парольной фразы, а затем проверить ключ. Получение ключа из фразы-пароля намеренно идет медленно: растяжка ключей функция.
Насколько медленнее растяжение ключа по сравнению с вычислением хэша, зависит от выбора алгоритма растяжения ключа, от того, как он параметризован, и от того, какое оборудование есть у злоумышленника. Для грубой силы такого масштаба стоимость аппаратного проектирования незначительна, и в ней преобладает энергопотребление. Для устаревшей функции растяжения ключа с итеративной операцией, такой как PBKDF2, количество кремния для питания растяжения ключа ненамного выше, чем для AES. Обычно коэффициент медленности выбирают таким образом, что один запуск стоит несколько десятых секунды по сравнению с несколькими миллиардными долями секунды для части AES, что означает соотношение примерно $2^{26}$. С современной функцией растяжения клавиш, которая также требовательна к памяти, соотношение выше, поскольку вам также необходимо использовать оперативную память. я собираюсь использовать $2^{30}$ как соотношение.
Это означает, что для того, чтобы AES был слабее против перебора, чем парольная фраза, нам нужно $N(L) \ge 2^{256}/2^{30} = 2^{226}$, что достигается за $L\ge 13$.
Но… это число не имеет смысла! Нет абсолютно никакой необходимости в том, чтобы взлом парольной фразы был медленнее, чем взлом AES, потому что взлом AES уже практически невозможен. Если взлом парольной фразы невозможен, но «менее невозможен», чем AES, он все равно невозможен.
Сеть Биткойн использует около 0,4% от общего объема производства электроэнергии в мире (источник: ≈ 100 ТВтч/год снаружи чуть более 25000 ТВтч/год) и вычисляет â $2^{93}$ хэшей/год. Предполагая, что вы получите такое же количество элементарных операций на Втч для взлома парольной фразы, с разницей в стоимостном коэффициенте $2^{30}$ Я оценил выше, это означает, что верхняя граница для взлома парольной фразы составляет $2^{63}$ в год.
Поэтому, если вы хотите, чтобы ваш ключ был защищен от злоумышленников уровня АНБ для тысяча лет, тебе нужно $N(L) \ge 1000 \cdot 2^{63} \приблизительно 2^{73}$, что достигается за $L\ge 5$.
На этом уровне силы против грубой силы грубая сила просто не вызывает беспокойства. Или, скорее, «грубая сила», как в суперкомпьютерах, не вызывает беспокойства. Грубая сила, вызывающая озабоченность, применяется тупым инструментом.
Реальная реальная реальность: действительно мотивированный злоумышленник найдет парольную фразу с помощью фишинга или, для В самом деле осторожные пользователи и мощные злоумышленники, установив камеру или установив вредоносное ПО. (Или же их комбинация.)