April 2032
|
|
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
|
11/13/07 03:02 pm
windows security
Вы все ещё доверяете Windows?
Вкратце и очень упрощённо для тех, кому лень вникать, или кто бусурманских языков не разумеет. Умные израильские исследователи повторили работу генератора псевдослучайных числел в Windows 2000. Это значит, что имея несколько предыдущих псевдослучайных чисел, можно вычислить все последующие.
Таковой генератор, в частности, используется в процессе обмена зашифрованными данными между компьютерами. Экстраполируя Умея предсказывать поведение генератора (псевдо)случайных чисел, можно научиться генерировать ключи (которыми информация шифруется), и внедриться в обмен приватными данными между двумя компьютерами так, что они этого не заметят.
В перспективе это имеет очень серьёзные последствия. Update: в этом месте можно рассказать про то, как американские спецслужбы делают с компьютерами стран - потенциальных противников всё, что хотят...
Авторы исследования рекомендуют компании Microsoft опубликовать исходные коды генератора случайных чисел, а также и остальной код системы безопасности Windows, дабы независимые эксперты по компьютерной безопасности смогли оценить работоспособность и эффективность этого кода.
11/13/07, 08:19 am
Всё ровно в два раза хуже:
and thus compute previous and future encryption keys То есть не только последующие, но и предыдущие.
11/13/07, 08:20 am
Да-да-да, виндоуз - суксь, маздай и вапще :)
П.С.: насколько предсказуем ляликсовый генератор случайных чисел? Или он использует энтропию? А насколько предсказуема энтропия? :)
11/13/07, 08:23 am
Да, он использует энтропию. В качестве её источников берутся прерывания от "устройств, на которые не может повлиять злоумышленник извне". Т.е., например, сетевая карта в этом не участвует. А вот мышь и клавиатура участвуют.
11/13/07, 08:25 am
Мышь и клавиатура не в счет. Хотя стОит, пожалуй, ввести обязанность сисадмина: раз в сутки подергать рандомно мышку у сервера в далекой каморке :)

11/13/07, 08:41 am
jek@jeknote:~/tmp/kernel/linux-2.6.23$ grep -r IRQF_SAMPLE_RANDOM drivers/* drivers/block/lguest_blk.c: irqflags |= IRQF_SAMPLE_RANDOM; drivers/block/xen-blkfront.c: IRQF_SAMPLE_RANDOM, "blkif", info); drivers/i2c/chips/isp1301_omap.c: isp->irq_type |= IRQF_SAMPLE_RANDOM; drivers/i2c/chips/tps65010.c: irqflags = IRQF_SAMPLE_RANDOM; drivers/i2c/busses/i2c-pmcmsp.c: IRQF_SHARED | IRQF_DISABLED | IRQF_SAMPLE_RANDOM, drivers/input/serio/hp_sdc.c: if (request_irq(hp_sdc.irq, &hp_sdc_isr, IRQF_SHARED|IRQF_SAMPLE_RANDOM, drivers/input/keyboard/gpio_keys.c: error = request_irq(irq, gpio_keys_isr, IRQF_SAMPLE_RANDOM, drivers/net/atl1/atl1_main.c: int irq_flags = IRQF_SAMPLE_RANDOM; drivers/net/cris/eth_v10.c: IRQF_SAMPLE_RANDOM, cardname, (void *)dev)) { drivers/net/mv643xx_eth.c: IRQF_SHARED | IRQF_SAMPLE_RANDOM, dev->name, dev); drivers/net/tg3.c: flags = IRQF_SAMPLE_RANDOM; drivers/net/tg3.c: flags = IRQF_SHARED | IRQF_SAMPLE_RANDOM; drivers/net/tg3.c: IRQF_SHARED | IRQF_SAMPLE_RANDOM, dev->name, dev); drivers/net/lguest_net.c: irqf |= IRQF_SAMPLE_RANDOM; drivers/net/xen-netfront.c: IRQF_SAMPLE_RANDOM, netdev->name, drivers/net/macb.c: err = request_irq(dev->irq, macb_interrupt, IRQF_SAMPLE_RANDOM, drivers/net/netxen/netxen_nic_main.c: IRQF_SHARED|IRQF_SAMPLE_RANDOM, netdev->name, drivers/net/ibmlana.c: result = request_irq(priv->realirq, irq_handler, IRQF_SHARED | IRQF_SAMPLE_RANDOM, dev->name, dev); drivers/net/3c523.c: ret = request_irq(dev->irq, &elmc_interrupt, IRQF_SHARED | IRQF_SAMPLE_RANDOM, drivers/net/3c527.c: err = request_irq(dev->irq, &mc32_interrupt, IRQF_SHARED | IRQF_SAMPLE_RANDOM, DRV_NAME, dev); drivers/net/qla3xxx.c: unsigned long irq_flags = IRQF_SAMPLE_RANDOM | IRQF_SHARED; drivers/serial/uartlite.c: IRQF_DISABLED | IRQF_SAMPLE_RANDOM, "uartlite", port); drivers/serial/mpc52xx_uart.c: IRQF_DISABLED | IRQF_SAMPLE_RANDOM, "mpc52xx_psc_uart", port); drivers/usb/gadget/goku_udc.c: if (request_irq(pdev->irq, goku_irq, IRQF_SHARED/*|IRQF_SAMPLE_RANDOM*/, drivers/usb/gadget/omap_udc.c: IRQF_SAMPLE_RANDOM, driver_name, udc); drivers/usb/gadget/omap_udc.c: IRQF_SAMPLE_RANDOM, "omap_udc pio", udc); drivers/usb/gadget/pxa2xx_udc.c: IRQF_DISABLED | IRQF_SAMPLE_RANDOM, drivers/usb/gadget/pxa2xx_udc.c: IRQF_DISABLED | IRQF_SAMPLE_RANDOM, drivers/usb/gadget/pxa2xx_udc.c: IRQF_DISABLED | IRQF_SAMPLE_RANDOM,
Это только в общих драйверах. Ещё в arch попадаются.
Ну и, до кучи, в input_event():
drivers/input/input.c: add_input_randomness(type, code, value);
11/13/07, 08:27 am
man 4 random
насколько я знаю, в качестве источников энтропии он использует прерывания (от клавы, мыши, дисков, сетевой карты) и, быть может, что-то ещё.
11/13/07, 08:30 am
про сетевую карту наврал, хотя, может, оно и конфигурябельно
11/13/07, 08:39 am
Открываем два окошка, в одном говорим cat /dev/random, дергаем мышкой, нажимаем разные кнопочки, при этом наблюдаем, что появление новых данных из /дев/рандом прямо связано с событиями мышки и клавиатуры.
Во втором окошке рекурсивно скачиваем здоровенный фтп-сайт, скорость 100 мегабит. Пополнение рандома происходит раз в одну секунду. Остановка скачивания приводит к обновлению рандома раз в 35 секунд (это до первого обновления, второго лень ждать).
Модифицируем скачивание фтп-сайта: скачиваем в /dev/null. Пополнение рандома опять замедляется, что можно списать редкое на использование доступа к диску другими приложениями, запущенными на машине.
Выводы: на энтропию влияют мышка, клавиатура, диск и не влияет сеть.
11/14/07, 10:30 am
Хм, из вышеприведенного grep'а похоже, что таки некоторые сетевые могут участвовать...
11/13/07, 08:22 am
А в windows генератор истинно случайных чисел отсутствует?
11/13/07, 08:28 am
Таковой можно сделать только аппаратно. В некоторых чипсетах присутствуют.
11/13/07, 08:42 am
спорю на ящик конины, что когда до этого дойдет, через год умные израильские ученые повторят его работу и все равно будет виноват вильям, наш, гейц.
11/13/07, 08:44 am
В i810 он есть. И драйвера под винду есть.
11/13/07, 08:52 am
ну и что? все равно винда - сакс :-))) дайте мне хоть бутылку конины :-))
11/13/07, 08:43 am
Я имею в виду аналог линуксячего /dev/random.
11/13/07, 10:56 am
Авторы исследования рекомендуют компании Microsoft опубликовать исходные коды генератора случайных чисел, а также и остальной код системы безопасности Windows, дабы независимые эксперты по компьютерной безопасности смогли оценить работоспособность и эффективность этого кода. посмешили ;)

11/14/07, 02:09 am
Ну... Я так понял, что они не повторили, они дизассемблировали (We start by discussing the process of analyzing the binary code). Вообще говоря, есть шанс, что это противозаконно ("4. LIMITATIONS ON REVERSE ENGINEERING, DECOMPILATION, AND DISASSEMBLY. You may not reverse engineer, decompile, or disassemble the Software, except and only to the extent that such activity is expressly permitted by applicable law notwithstanding this limitation." - EULA). Я чего-то так думаю, что они свершили ошибку на этом уровне :) Во-вторых, хотелось бы, чтобы кто-нибудь независимый проверил бы результаты. На слово я уже давно не верю, только за наличные :) В-четвертых, я не знаю, где именно в Windows используется этот генератор. Я могу его использовать в своих программах через API - это да. Могу не использовать (все же псевдослучайные числа - это не совсем случайные и в криптоалгоритмах их использовать - моветон). В-пятых, они проверили Windows 2000, но не проверили Windows 2003, XP или Vista. Было бы интересно узнать, что и как там. Они предполагают, что там все так же (assume that XP and Vista use similar random number generators). Насколько мне известно, в Vista именно система безопасности сильно переработана. И, раз уж израильцы проверили 2000, то могли бы глянуть и на Висту. Что мешало-то? А про "опубликовать исходные коды" - этого уже я не понял. Если они сами расшифровали алгоритм, то на кой публиковать исходные коды? Или это они считают, что если на них независимые эксперты посмотрят, то от этого что-то изменится? Эксперты на Линух сколько смотрят? Его дизассемблировать не нужно, коды открытые, а проблема с forward security там аналогичная (http://www.securiteam.com/unixfocus/5RP0E0AIKK.html). И наоборот: в MacOS X аналогичную дыру заткнули оперативно ничего не опубликовывая. В общем, меня не убедило :)
|