Как настроить сервер для подписи приложений

Модель подписания APK в Android предполагает, что ключ подписи будет неизменным в течение всего срока службы приложения. Это видно из рекомендуемого срока службы ключа подписи Android: 20+ лет. Кроме того, трудно перенести приложение на новый ключ. Поскольку ключ подписи является важной частью предотвращения выдачи APK за другой, ключи подписи Android должны храниться в безопасности в течение всего срока службы приложения.

Ключи подписи репозитория F-Droid следуют очень похожей модели: ключ подписи является основным способом безопасной идентификации репозитория F-Droid. Поэтому к ключам подписи репозитория F-Droid применимы те же соображения, что и к ключам подписи APK. Это также дает некоторые действительно полезные преимущества. Поскольку целостность индексного файла репозитория и APK гарантируется подписью репозитория, файлы могут быть доставлены любым удобным способом, и их целостность будет автоматически проверена клиентским приложением F-Droid, процессом развертывания f-droid.org и Repomaker.

Это означает, что бремя безопасности переносится с публичного веб-сервера в Интернете на частную машину для подписи. Простое укрытие этой машины от посторонних глаз значительно повышает безопасность. Существует ряд дополнительных мер, которые можно предпринять для дальнейшего повышения безопасности процесса подписания. Вот несколько подходов, начиная с самого простого и наименее безопасного, и переходя к более безопасным установкам, которые требуют больше работы по настройке и запуску. Подписание не является ресурсоемким процессом, поэтому подойдет любая машина, даже базовый ноутбук 10-летней давности. Мы рекомендуем использовать минимальную установку Debian и восстанавливать машину с нуля.

Сервер автоматической подписи с HSM

Для полностью автоматизированной установки подписания необходимо, чтобы машина, выполняющая подписание, работала в режиме онлайн. В идеале эта машина не должна иметь удаленного доступа, по крайней мере, удаленный доступ должен очень тщательно контролироваться и отслеживаться. С ноутбуком легко работать даже при отключенном удаленном доступе, поскольку он имеет встроенную клавиатуру и монитор. Если удаленный доступ необходим, то любой базовый ПК будет работать отлично. Использование аппаратного модуля безопасности (HSM) для хранения ключей предотвращает их кражу в случае взлома сервера. Злоумышленник может запустить процесс подписания только на этом сервере.

В идеале эта машина была бы доступна только через Tor. Это скрывает физическое местоположение сервера и скрывает трафик от сети. Это значительно усложняет злоумышленникам поиск реальной машины для атаки.

Для HSM мы рекомендуем использовать аппаратное обеспечение Nitrokey, поскольку это свободное программное обеспечение/аппаратное обеспечение, предоставляющее широкий спектр возможностей. Для размещения ключей подписи на HSM используйте отдельную машину. Хороший HSM будет вести журнал аудита количества сделанных подписей, поэтому эту информацию можно использовать для создания автоматического процесса аудита, который будет поднимать тревогу, если было сделано слишком много подписей. Это может означать, что данный сервер был взломан и использовался для подписи несанкционированных пакетов.

Другая возможность - использовать установку, подобную Fedora от Sigul, в которой задействованы три машины.

Базовый ноутбук, предназначенный для подписи

Начните с ноутбука, который можно очистить и восстановить с нуля. Самое главное, чтобы на нем было установлено только необходимое программное обеспечение, и ничего больше. Например, не устанавливайте никаких браузеров, поскольку это самый распространенный вектор атаки. Не должны быть установлены или настроены никакие средства удаленного доступа (например, SSH или VNC). Чтобы подписать приложения и репозитории, кто-то возьмет этот ноутбук, подключит его к сети и запустит процесс подписания. Затем подписанные результаты могут быть опубликованы через сетевое соединение. После завершения процесса подписания машину можно выключить, отсоединить от сети и хранить в безопасном месте.

Это можно сделать автоматически с помощью некоторых пользовательских скриптов. Человеку, запускающему процесс, нужно будет только вынуть машину, подключить ее, включить, дождаться завершения процесса, а затем снова все это убрать.

Полностью автономный ноутбук для подписи с флэш-накопителями USB

Этот процесс основан на том же базовом, урезанном ноутбуке, что и предыдущий пример. Но на этот раз сетевые подключения должны быть полностью отключены перед процессом установки. Например, во многих ноутбуках легко физически извлечь карту WiFi. Поэтому имеет смысл использовать ноутбук, в котором нет разъема ethernet, который обычно невозможно извлечь. В противном случае, достаточно внести в черный список все модули ядра, связанные с neworking. Поскольку эта машина полностью автономна, дополнительная работа по использованию HSM не так важна, но включить его не помешает.

Загрузите полный образ “CD” или “DVD” Debian для запуска установки. Обязательно проверьте подписи GPG и хэши SHA-256. Для обновления автономной машины требуется установка “apt offline”.

Чтобы быть особенно осторожным, следует проверить все используемое программное обеспечение. Chromebooks - это хорошие дешевые ноутбуки, которые работают под управлением Linux. Они также используют Coreboot для BIOS.

  • Купите компьютер с полки за наличные, избегайте его пересылки, особенно за границу
  • Купите Chromebook с поддержкой Debian, со съемным оборудованием WiFi, не требующим двоичных файлов
  • Установите воспроизводимый бинарный файл Coreboot
  • Установка из воспроизводимого образа Debian, полностью удаляя Chrome OS

Физическая среда

Последнее, что необходимо учитывать, - это физическое место, где происходит подписание, и где хранится необходимое оборудование. Среда подписания должна быть физически безопасной. В противном случае невозможно предотвратить потерю ноутбуков или HSM или их использование для подписи несоответствующего содержимого. Для автономных машин хорошим началом будет хранение их в запертой комнате. Для онлайн-машины принудительная передача всего сетевого трафика и удаленного доступа через Tor скрывает физическое местоположение машины от сетевых наблюдателей.

Для ключей подписи с высоким риском важно использовать несколько уровней защиты:

  • Ограниченный физический доступ к HSM или смарт-картам
  • Камеры наблюдения
  • Защита на сайте
  • Регистрация посетителей
  • Устойчивый к инструментам серверный сейф для онлайн-серверов подписания кодов

Сервер подписи должен быть физически отделен от остальной инфраструктуры. Журналы, машина и сеть должны периодически подвергаться аудиту.

Трудные решения

В идеале все эти методы должны быть внедрены, но за каждую из этих мер безопасности приходится платить трудностями, расходами и сложностями. Они также могут задерживать процесс выпуска регулярных обновлений. Поэтому существуют риски внедрения слишком строгих политик безопасности, так же как и риски недостаточного внедрения.