Proces podpisywania

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