[devel] [sisyphus] Не переключается в графический режим

Leonid Krivoshein klark.devel на gmail.com
Пн Ноя 5 19:42:39 MSK 2018


05.11.2018 11:23, Alexey V. Vissarionov пишет:
>   > В любом случае получается некое подобие псевдослучайности
>   > /dev/urandom, что по идее может быть менее секьюрно, чем
>   > /dev/random.
>
> /dev/urandom намного лучше любого усерспейсного угробища.

Вот поэтому...

>   > А хотелось бы решить проблему так, чтобы:
>   > 1) не ухудшать безопасность -- на большинстве машин проблема
>   > никак не проявляется, чтение из /dev/random не приводит к
>   > подвисаниям на раннем старте;
>
> Одно только это требование полностью исключает любые костыли в
> усерспейсе.

...и поэтому вопрос перенесён в devel@ для общего так сказать обсуждения.


>   > 3) в идеале со временем найти и заменить все
>   > места с чтением из /dev/random на вызов getrandom(2).
>
> Это влияет только на переносимость кода, но не на безопасность:
>
> By default, getrandom() draws entropy from the urandom source
> (i.e., the same source as the /dev/urandom device).
>
> Угадаешь, откуда цитата? :-)

Там же написано, что зависит от флагов. Да, по умолчанию из того же 
неблокирующего пула, это регулируется флагами. Один нюанс: данный вызов 
сам умеет учитывать факт раннего старта, размер имеющейся и запрошенной 
энтропии, этим он лучше простого чтения из /dev/urandom, но есть и 
минус: требуется ядро 3.17+.


>   > Исходя из этого нужно:
>   > 1) определить значение длины минимально необходимой энтропии;
>   > 2) сделать тест длины энтропии и добавить его в systemd-unit
>   > для haveged;
>   > 3) включить haveged во все дистрибутивы.
>
> А можно просто использовать специально для этого предназначенный
> источник - /dev/urandom; когда энтропии достаточно, он работает
> точно так же, как /dev/random, а когда не хватает - ну, хотя бы
> что-то более-менее приемлемое выдаст.

А есть мнение, что простое чтение из /dev/urandom не настолько безопасно 
на раннем старте. И стоит почитать про haveged -- это не просто 
юзерспейсный костыль. Кстати, на данный момент на некоторых железках без 
существенного погружения в код ничего лучше haveged проблему не решает.

When read during early boot time, //dev/urandom/ may return data prior 
to the entropy pool being initialized. If this is of concern in your 
application, use getrandom(2) 
<http://man7.org/linux/man-pages/man2/getrandom.2.html> or //dev/random/ 
instead.


-- 
Best regards,
Leonid Krivoshein.



Подробная информация о списке рассылки Devel