Криптографічне підписування розповсюджуваних застосунків парами відкритих і закритих ключів — одна з засад безпеки F-Droid. Ключі підпису потрібні, щоб робити власні випуски за допомогою засобів F-Droid. Ретельно стежте за розміщенням і безпекою файлів своїх ключів, як і за їхнім резервним копіюванням. Ключі слід надійно захищати протягом усього існування репозиторію F-Droid, тож зберігайте їх безпечно й надійно, й регулярно створюйте резервні копії! Також зауважте, що інструкції Google з убезпечення закритих ключів описують лише частину процесу їхнього захисту.
При супроводі репозиторію використовуються два види підпису:
- підпис самого індексу репозиторію
- стандартний Android-процес підпису APK
Підпис індексу репозиторію
Один із перших кроків створення репозиторію — генерація ключа підпису для індексу репозиторію. Це також створює сховище ключів, тобто файл, у якому збережено ключі підпису.
fdroid init створює ключ підпису для репозиторію F-Droid автоматично. Цей
ключ можливо створити вручну, як і ключі підпису
Android:
keytool -genkey -v -keystore моє.keystore -alias назва \
-keyalg RSA -keysize 2048 -validity 10000
Замість моє.keystore угорі введіть назву файлу сховища ключів, яке ви бажаєте створити, а замість «назва» — ту назву, що ідентифікуватиме індекс репозиторію. Ви отримаєте прохання вказати пароль до сховища ключів, А ТАКОЖ пароль до ключа. Паролі мусять відрізнятися. Також вам буде треба вказати додаткові ідентифікаційні дані, що стануть частиною сертифікату.
Обидва введені паролі опиняться в config.yml як keystorepass і keypass
відповідно. Шлях до файлу сховища ключів запишеться в keystore, а обрана
вами назва ключа потрапить у файл repo_keyalias.
Підпис APK
Засоби F-Droid можуть автоматично генерувати ключі підпису APK для кожного супроводжуваного застосунку й дають змогу керувати ними. Після налаштування підпису індексу репозиторію, залишається тільки вказати в config.yml поле keydname із тими ж ідентифікаційними даними, які ви ввели раніше. З цими деталями буде згенеровано нові ключі для кожного збираного застосунку. Якщо для певного застосунку потрібен конкретний ключ, використайте замість усталеної системи параметр keyaliases у файлі конфігурації.
Щоб налаштувати fdroid publish, виконайте наступні кроки на тому
комп’ютері, куди ви копіюєте APK й на якому запускаєте fdroid
update. Спершу вкажіть keydname у config.yml:
keydname = "CN=example.com, O=ТОВ Зразок, C=UA"
Створіть каталог unsigned/ поруч із каталогами metadata/ й repo/ — й запустіть такі команди, щоб розмістити APK з новою назвою, складеною з applicationId та versionCode:
$ cd /шлях/до/репозиторію
$ touch metadata/com.example.app.yml
$ mkdir unsigned
$ cp /шлях/до/app-release-unsigned.apk unsigned/com.example.app_1234.apk
$ fdroid publish --verbose
$ fdroid update --verbose
$ fdroid deploy --verbose
Підпис пакунків
Усі пакунки, що збираються чи поширюються засобами F-Droid, можна також
підписувати за допомогою PGP, використовуючи
GnuPG. Підписано буде все: від APK-файлів до
медіафайлів. Процес запускається командою fdroid gpgsign. Щоб її
налаштувати, додайте gpghome та gpgkey до свого config.yml. Докладніше
про це — в examples/config.yml.
Апаратні модулі захисту
Апаратні модулі захисту (hardware security modules, HSM) — це апаратне забезпечення, спеціально розроблене для безпечного зберігання й використання криптографічних ключів. Вони працюють лише на запис, тобто закритий ключ можна лише записати на HSM, але зчитати його звідти буде неможливо. fdroidserver підтримує використання HSM для ключів підпису репозиторію.
Докладніше налаштування репозиторію F-Droid для використання HSM описано в
розділах «smartcard» файлу examples/config.yml, зокрема keystore та
smartcardoptions. Швидше за все, вам знадобиться встановити
OpenSC як провайдер PKCS11 для
Java. hsmwiz — простіший спосіб
роботи з HSM смарткартками, такими як Nitrokey HSM. У Debian доступні як
OpenSC, так і hsmwiz.
Докладніше:
- Приклад файлу конфігурації fdroidserver: examples/config.yml
- Публікування репозиторію F-Droid з використанням апаратного модуля безпеки
- Безпека у флешці: обіцянки та проблеми апаратних модулів безпеки, якусь!!
