|
|
ru.nethack- RU.NETHACK ------------------------------------------------------------------- From : Eugene Grosbein 2:5006/1 07 Jan 2003 16:37:55 To : 3APA3A Subject : Re: Remote Administrator server -------------------------------------------------------------------------------- 3> Давай ты напишешь алгоритм генерации паролей с использованием rand(), 3> сгенерируешь им пароль на 15 символов, например в FreeBSD, а потом пришлешь 3> мне результаты (crypt()'ованый пароль в DES или MD5). Я постараюсь взломать 3> его с помощью словарной атаки не более чем за несколько часов :) (простой 3> хэш ломается вообще за час, но MD5-crypt, например, специально сделан очень 3> медлительным, даже короткий перебор займет много времени). Hу зачем же сразу rand()? Давай так: static char const chars[] = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ."; int i, l; char pwbuf[32]; u_char rndbuf[sizeof pwbuf]; /* Random password */ l = (arc4random() % 8 + 8); /* 8 - 16 chars */ pw_getrand(rndbuf, l); for (i = 0; i < l; i++) pwbuf[i] = chars[rndbuf[i] % (sizeof(chars)-1)]; pwbuf[i] = '\0'; Вот несколько шифрованных сгенерированных паролей: $1$5Q$lQMVpS5el.FjYbgaumJPO0 $1$wK$gIy72viM2/6Oi7a1VFfj31 $1$ak$6MNUe5W9Y1PyfaiV0N9TV/ $1$N4$QA2MtVy9nnqDPRYIkmtdA0 $1$5R$fkkGbEX58m0BaVSUo.ixI1 $1$SQ$SLMVpgnvR9XHoPJR8feFZ1 $1$K6$ScyE4r1Hz1x8AdE8.5u34/ $1$CV$ejUczj1bHIHpH7MnC0gBT1 $1$mr$.o//VS6jBpv2cjJr4d8AX1 $1$Ec$uvWtaYdHeu6e8PvGZVsd/1 $1$hh$QZaBYhDqAPWTw4hYZe8h2/ $1$fk$JMmkYUMkHmS/eOcSd3eau. $1$pO$lMmm5b2Mal2zTBzSv2Qpf0 $1$3T$T2z72fHt/w97WUN4ivvP71 $1$V/$IX6gfyytw0zP9bevaK7b2/ $1$nH$1ZKBKRNTP4p6LznImgUJ4. $1$Kc$Axy/fDnvLnQttWXNhAXw00 $1$7U$rwxeTWfKW6Q82dWS75uVy/ AA>>> Пpи этом, если srand() инициализиpyется стандаpтной паpой time/pid AA>>> ни о какой кpиптостойкости pечи вообще не идет. Пpавда надо yгадать AA>>> алгоpитм). Шифровались так: #!/usr/bin/perl -w use strict; srand; while(<>) { chomp; my $str64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; my $salt = substr($str64,int(rand(64)),1) . substr($str64,int(rand(64)),1); print crypt($_, $salt), "\n"; } AM>> Гм... и как тогда создавать кpиптостойкие паpоли? 3> А это одна из проблем криптографии. При генерации ключей, например, обычно 3> просят пользователя ввести случайную фразу и измеряют какие-нибудь 3> слабокореллирующие величины, например промежутки между нажатиями клавиш. Или 3> используется специальный демон (egd) собирающий всякую "шумную" информацию 3> либо используется аппаратный ГСЧ на шумовых диодах. Hо даже для таких 3> генераторов есть методы статистического анализа, так что реальная 3> криптостойкость подобного пароля или ключа все равно будет несоклько меньше 3> его длины. У меня такие "аппаратные" шумы: #!/bin/sh case "$1" in start) echo -n " rndcontrol" rndcontrol -q -s 1 -s 4 -s 5 -s 6 -s 7 -s 9 -s 14 -s 15 ;; stop) ;; *) echo "" echo "Usage: `basename $0` { start | stop }" echo "" exit 1 ;; esac # vmstat -i interrupt total rate fxp0 irq9 101111471 38 ata0 irq14 13857572 5 ata1 irq15 8276815 3 fdc0 irq6 2 0 atkbd0 irq1 1395588 0 sio0 irq4 6884167 2 ppc0 irq7 122 0 clk irq0 259861668 99 rtc irq8 332651656 128 Total 724039061 278 Поломаешь? :-) Eugene -- "Люди забыли эту истину," - сказал Лис, - "но ты не забывай" --- slrn/0.9.7.4 (FreeBSD) * Origin: Svyaz Service JSC (2:5006/1@fidonet) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.nethack/260938d447271.html, оценка из 5, голосов 10
|