Murat D. Kadirov -> Russian Debian List  @ Sat, 11 Apr 2009 18:06:39 +0600:

 >>  MDK> Как вариант, можно использовать /dev/random, которое, в сущности
 >>  MDK> используется всем остальным ПО для этого. Но как из получаемого 
 >> "мусора"
 >>  MDK> из /dev/random получить 98-ми символьную парольную фразу, которая
 >>  MDK> соответственно будет обладать 128-битной энтропией?
 >> 
 >> На кой хрен 98-то?  В предположении, что /dev/random выдает энтропию по

 MDK> Понятия не имею. Цифры приведены из работы Б.Шнайера "Секреты и ложь.
 MDK> Безопасность данных в цифровом мире" (стр.102). Вот этот абзац:

 MDK> "Многие ключи создаются на основе паролей и ключевых фраз. Система,
 MDK> принимающая пароль из 10 ASCII-символов, предоставляет для него 80 бит,
 MDK> но её энтропия будет значительно меньше 80 бит. Некоторые символы ASCII
 MDK> никогда не появляются, а пароли, которые представляют собой реальные
 MDK> слова (или что-то похожее на слова), гораздо вероятнее, чем произвольные
 MDK> строки символов. Я видел оценки энтропии для английского языка, меньше
 MDK> 1.3 бит на символ; у пароля энтропии меньше, чем 4 бит на символ. Это
 MDK> значит, что пароль из 8 символов будет приблизительно соответствовать
 MDK> 32-битовому ключу, а если вы захотите 128-битовый ключ, вам нужен пароль
 MDK> из 98 символов (на базе английского алфавита)."

 MDK> Он там особо не распространяется в плане цифири, да и вообще работа
 MDK> носит больше публицистический характер. А самому всё это осилить не
 MDK> представляется возможным в силу сильно не технического образования.

 MDK> Я сейчас подумал, что говоря о таких цифрах (98 символов для 128
 MDK> битового ключа) он, возможно, отталкивается от слабой энтропии на
 MDK> символ в пароле, т.е. пароль состоящий, к примеру из единиц и
 MDK> нулей вперемежку или что-то подобное.

Если читать текст внимательно, то видно, что он отталкивался от пароля,
придуманного человеком.  Т.е. имея в виду passWORD (<4bit), а в длинном
случае - passPHRASE (<1.3bit).

 >> 8 бит на байт (а он, по идее, под именно под это заточен - нет, там,
 >> конечно, не факт, что столько, но способа отличить никто не знает, так
 >> что для практических применений можно оценивать так), длина пароля со
 >> 128-битной энтропией будет всего лишь 24 символа (ceil(128/8/3)*4).

 MDK> Можно чуток подробнее пояснить? Для человека не особо отягчённого
 MDK> математическими познаниями. То есть я понимаю, где-что делиться и
 MDK> умножается. Не понимаю логики(почему). Ну а ceil, видимо имеет
 MDK> отношение к программированию.

/dev/random по определению выдает данные, неотличимые от случайных.
Т.е. можно считать, что все биты в его выдаче - случайны.  Выдает он
байтами, в каждом из которых 8 бит.  Поэтому 128 бит мы делим на 8,
чтобы получить байты.  Далее мы это кодируем в base64, который кодирует
блоками по 3 байта, давая на выходе 4 символа на блок.  Т.е. полученные
16 байт надо поделить на блоки по 3.  На целое количество блоков, для
чего, собственно, берется ceil, т.е. ближайшее целое сверху (на гугле
забанили, да? и в википедии тоже?).  Полученное количество блоков
умножаем на 4, чтобы получить количество символов.

P.S. Если придираться, то там, конечно, для начала не 128/8, а
ceil(128/8) - для 129 бит придется запросить 17 байт.  Но в данном
случае оно делится нацело, да и математически однофигственно.

-- 
Рассмотрим этот вопрос под другим гуглом...
 -- http://vitus-wagner.livejournal.com/319313.html


-- 
To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Ответить