Procesul de semnare

Semnăturile criptografice care utilizează părți de chei publice/private sunt esențiale pentru how F-Droidasigură o distribuție sigură a aplicațiilor. Cheile de semnare sunt necesare pentru a face propriile versiuni cu instrumentele F-Droid. Luați în considerare cu atenție locația, securitatea și starea de backup a fișierelor dvs. de chei. Cheile trebuie să rămână securizate pe toată durata de viață a unui repo F-Droid sau a unei aplicații Android. Cheia de semnare este esențială pentru identitatea unei aplicații Android și a unui repo F-Droid, așa că aceste chei trebuie păstrate în siguranță, securizate și bine protejate! De asemenea, rețineți că instrucțiunile Google pentru securing these private keys oferă doar pașii minimi de urmat pentru protejarea cheilor.

Există două tipuri de semnături implicate în gestionarea unui depozit:

  • semnarea indexului repo în sine
  • procesul standard de semnare a APK-ului Android

Semnarea indicelui Repo

La configurarea depozitului, unul dintre primii pași ar trebui să fie generarea unei chei de semnare pentru indexul depozitului. Astfel, se va crea, de asemenea, un keystore, care este fișierul care conține cheile de semnare.

fdroid init va crea automat o nouă cheie de semnare pentru un repo F-Droid. Este posibilă crearea manuală a cheilor, la fel ca și crearea Android signing keys, cu o comandă de genul:

keytool -genkey -v -keystore my.keystore -alias repokey \
   -keyalg RSA -keysize 2048 -validity 10000

În textul de mai sus, înlocuiți my.keystore cu numele fișierului keystore care urmează să fie creat, iar “repokey” cu un nume prin care să identificați cheia de indexare repo. Vi se va cere o parolă pentru keystore, ȘI o parolă pentru cheie. Acestea nu ar trebui să fie identice. Între timp, vi se vor cere câteva detalii de identificare care vor fi incluse în certificat.

Cele două parole introduse se introduc în config.yml, ca keystorepass și, respectiv, keypass. Calea către fișierul keystore este setată în keystore, iar aliasul ales pentru cheie se introduce și el în acel fișier numit repo_keyalias.

Semnătura APK

Instrumentele F-Droid pot genera și gestiona automat chei de semnare APK pentru fiecare aplicație pe care o întreține. Odată configurată semnarea indexului repo, tot ce mai rămâne de făcut pentru ca semnarea pachetelor să funcționeze este să setați câmpul keydname din config.yml pentru a conține aceleași detalii de identificare pe care le-ați introdus anterior. O nouă cheie va fi generată folosind aceste detalii, pentru fiecare aplicație care este construită. În cazul în care este necesară o cheie specifică pentru o anumită aplicație, acest sistem poate fi anulat cu ajutorul setărilor de configurare keyaliases.

Pentru a configura fdroid publish, faceți acești pași pe aceeași mașină pe care ați copiat APK-urile și ați rulat fdroid update. Mai întâi, setați keydname în config.yml, ar trebui să fie ceva de genul acesta:

keydname = "CN=example.com, O=Example Ltd, C=UK"

Creați un director numit unsigned/ lângă directorii metadata/ și repo/ și rulați aceste comenzi pentru a muta APK-ul în locul său cu un nume nou bazat pe 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

Semnarea pachetului

Toate pachetele construite și/sau distribuite cu ajutorul instrumentelor F-Droid pot fi semnate cu PGP folosind GnuPG, orice, de la APK-uri la fișiere media, va fi semnat. Acest proces se execută cu fdroid gpgsign. Adăugați gpghome și gpgkey la config.yml pentru a-l configura, există mai multe informații în examples/config.yml.

Module de securitate hardware

Modulele de securitate hardware (HSM) sunt componente hardware special concepute pentru stocarea și utilizarea în siguranță a cheilor criptografice. Acestea asigură stocarea numai în regim de scriere, astfel încât o cheie privată poate fi scrisă numai în HSM și nu poate fi niciodată citită de pe acesta. fdroidserver are suport pentru utilizarea HSM-urilor pentru cheile de semnare a repo-urilor.

Pentru informații despre cum să configurați un repo F-Droid pentru a utiliza un HSM, consultați secțiunile “smartcard” din examples/config.yml, în special keystore și smartcardoptions. Cel mai probabil, OpenSC va trebui să fie configurat ca furnizor PKCS11 pentru Java. hsmwiz este o modalitate mai simplă de a lucra cu HSM-uri de carduri inteligente precum Nitrokey HSM. Atât OpenSC, cât și hsmwiz sunt disponibile în Debian.

For more in-depth information, see: