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:
- Exemplu de fișier de configurare fdroidserver: 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!
