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