Podpisy kryptograficzne używające części klucza publicznego/prywatnego są kluczowe dla sposobu [jak F-Droid]](../Security_Model) zapewnia bezpieczną dystrybucję aplikacji. Klucze podpisu są wymagane do tworzenia własnych wydań za pomocą narzędzi F-Droid. Rozważ ostrożnie lokalizację, bezpieczeństwo i stan kopii zapasowych swoich kluczy. Klucze muszą pozostać bezpieczne przez cały okres trwania repozytorium F-Droid lub aplikacji na Androida. Klucz do podpisu jest kluczową tożsamością aplikacji na Androida i repozytorium F-Droid, więc klucze muszą być bezpieczne i mieć dobrą kopię zapasową! Pamiętaj też, że wskazówki Google dotyczące zabezpieczania tych kluczy prywatnych zawierają tylko minimalne kroki, które należy podjąć, aby zabezpieczyć klucze.
W uruchomieniu repozytorium zaangażowane są dwa rodzaje podpisów:
- podpisanie samego indeksu repozytorium
- standardowy proces podpisywania APK Androida
Podpisywanie Indeksu Repo
Podczas konfigurowania repozytorium, jednym z pierwszych kroków powinno być wygenerowanie klucza podpisu dla indeksu repozytorium. Spowoduje to również utworzenie magazynu kluczy, który jest plikiem przechowującym klucze podpisu.
fdroid init automatycznie utworzy nowy klucz podpisujący dla repozytorium
F-Droid. Możliwe jest ręczne tworzenie kluczy, tak jak tworzenie kluczy
podpisujących
Android,
z poleceniem:
keytool -genkey -v -keystore my.keystore -alias repokey \
-keyalg RSA -keysize 2048 -validity 10000
W powyższym przykładzie należy zastąpić my.keystore nazwą pliku kluczy, który ma zostać utworzony, oraz ‘repokey’ z nazwą identyfikującą klucz indeksu repo według. Zostaniesz zapytany o hasło do magazynu kluczy ORAZ hasło do klucza. Nie powinny być takie same. W międzyczasie zostaniesz poproszony o podanie danych identyfikujących, które znajdą się w certyfikacie.
Wprowadzone dwa hasła przechodzą do config.yml, odpowiednio jako
‘keystorepass’ i ‘keypass’. Ścieżka do pliku magazynu kluczy jest ustawiona
w magazynie kluczy, a alias, który wybrałeś dla tego klucza, przechodzi do
pliku o nazwie repo_keyalias.
Podpisywanie APK
Narzędzia F-Droid mogą automatycznie generować klucze do podpisywania APK i zarządzać nimi dla każdej aplikacji, którą utrzymuje. Po skonfigurowaniu podpisu indeksu repo, wszystko, co pozostało do zrobienia, aby podpisywanie pakietów działało, to ustawienie pola keydname field w config.yml tak, aby zawierało te same dane identyfikujące, które wprowadziłeś wcześniej. Nowy klucz zostanie wygenerowany przy użyciu tych szczegółów dla każdej zbudowanej aplikacji. Jeśli określony klucz jest wymagany dla określonej aplikacji, ten system może zostać nadpisany przy użyciu ustawień keyaliases config.
Aby skonfigurować ‘fdroid publish’, wykonaj te czynności na tym samym
komputerze, na którym kopiujesz pliki APK i uruchamiasz fdroid
update. Najpierw ustaw keydname w config.yml, powinno to być coś
takiego:
keydname = "CN=example.com, O=Example Ltd, C=UK"
Utwórz katalog o nazwie unsigned/ obok katalogów metadata/ i repo/ i uruchom te polecenia, aby przenieść pakiet APK na miejsce z nową nazwą opartą na Application ID i Version Code:
$ cd /path/to/repobasedir
$ touch metadata/com.example.app.yml
$ mkdir unsigned
$ cp /path/to/app-release-unsigned.apk unsigned/com.example.app_1234.apk
$ fdroid publish --verbose
$ fdroid update --verbose
$ fdroid deploy --verbose
Podpisywanie pakietów
Wszystkie pakiety zbudowane i/lub rozprowadzane przy użyciu narzędzi F-Droid
mogą być również podpisane przez PGP za pomocą GnuPG,
wszystko od plików APK do plików multimedialnych zostanie podpisane. Ten
proces jest uruchamiany za pomocą fdroid gpgsign. Dodaj gpghome i
gpgkey do twojego config.yml, aby go skonfigurować, więcej informacji
znajdziesz w examples/config.yml.
Moduły zabezpieczeń sprzętowych
Hardware Security Modules (HSM) to specjalnie zaprojektowane elementy sprzętu do bezpiecznego przechowywania i używania kluczy kryptograficznych. Zapewniają pamięć typu ‘tylko do zapisu’, więc klucz prywatny może być zapisywany tylko na HSM i nigdy go nie czytać. fdroidserver ma wsparcie dla używania HSM dla kluczy podpisujących repo.
For information on how to configure an F-Droid repo to use an HSM, see the
“smartcard” sections of examples/config.yml, specifically keystore and
smartcardoptions. Most likely, OpenSC
will need to be set up as a PKCS11 provider for Java.
hsmwiz is a simpler way to work
with smart card HSMs like the Nitrokey HSM. Both OpenSC and hsmwiz are
available in Debian.
Aby zobaczyć więcej dogłębnych informacji, zobacz
- Opcjonalnie edytuj plik config.yml według własnych potrzeb; szczegółowe przykłady znajdują się w examples/config.yml
- Publishing an F-Droid Repo using a Hardware Security Module
- Security in a thumb drive: the promise and pain of hardware security modules, take one!
