Криптография очень сильно зависит от качества случайных чисел. Они используются при генерации криптографических ключей SSL, SSH, GPG, соли /etc/shadow, в последовательностях чисел TCP, в создании UUID, ключах dm-crypt и eCryptfs. Компьютеры сами по своей сущности - детерминированные устройства! А новые технологии в виде виртуализации и облачных платформ не способствуют улучшению доступности меры хаотичности - энтропии!
Ведь у виртуальных серверов в отличии от физических нет клавиатуры с мышкой, IRQ аппаратуры эмулируется, блочные устройства сплошь виртуализированы и кэшированы гипервизором.
Canonical предлагает выход и зовётся он Pollen. Это не что иное как Entropy-as-a-Service, то есть энтропия как сервис. Нас ждёт кластер серверов энтропии entropy.ubuntu.com, который доступен по HTTP и HTTPS. У кластера энтропии в распоряжении есть различные аппаратные источники энтропии, что позволяет выдавать на запрос клиента 512 бит случайности.
Pollen написан на языке Go и лицензирован под AGPL. Вы можете установить свой сервер pollen, если обладаете хорошими аппаратными источниками энтропии и/или не доверяете никому.
Что доступно Canonical при обращении к его кластеру энтропии?
Запросы и ответы, а так же сгенерированный seed НИКОГДА НЕ журналируются!
В новых облачных образах Ubuntu 14.04 LTS есть pollinate, который является свободным ПО под лицензией GPLv3. Pollinate (клиент Entropy-as-a-Service), по сути своей, обёртка над curl. В Upstart есть job для Pollinate и поэтому разбавление /dev/urandom происходит автоматически до генерации каких-либо ключей.
Если вы не доверяете Canonical, то можете в /etc/default/pollinate изменить $POOL и указать свой источник типа random.org или даже news.google.com.
Задача Pollinate улучшить качество случайных чисел. Чтобы устранить компрометацию SSL или атаки CA Man-in-the-Middle, pollinate идёт с публичным сертификатом entropy.ubuntu.com, который находится в /etc/pollinate/entropy.ubuntu.com.pem и curl использует данный сертификат. Так же можно добавить свои неизвестные никому URL в переменную $POOL в /etc/default/pollinate
Кто-то проводил аудит нового решения от Canonical?
Исходники сервера pollen и клиента pollinate доступны. Ubuntu Security проверила и одобрила реализацию. Трое экспертов по безопасности, не работающие в и на Canonical проверяли дизайн и реализацию. Но любой, дополнительный, сторонний аудит только приветствуется!
Дополнительные материалы:
Контейнеры LXC могут использовать Pollinate.
Ubuntu в числах.
Intel считает, что Canonical является лидером безопасных облачных решений.
Безопасность Ubuntu.