Varnostna kopija zasebne CA: šifriran arhiv proti varnostni kopiji ključa HSM
Šifriran arhiv ali s HSM zaviti ključ: kako se obnovi vsak model varnostne kopije CA VPN, kaj mora vsebovati in katero okvaro lahko res preživite.
Vprašanje, ki odloči večino tega, ni, kako šifrirate arhiv. Je, ali vaš zasebni ključ CA sploh lahko zapusti svoj vsebnik. Če je ključ datoteka, lahko celotno mapo CA kopirate v en šifriran blob in končate v nekaj minutah. Če živi v HSM ali v žetonu, ki ključ označi kot neizvozljiv, ta kopija ne obstaja, in vaš načrt postane načrt o postopku zavijanja in obnavljanja pri dobavitelju. Oba modela delujeta, spodletita različno, in okvara, ki jo lahko preživite, je tista, zaradi katere se splača načrtovati.
Kje se dva modela varnostne kopije razideta
Model A je kopija mape. CA v slogu OpenSSL je delovna mapa, ne eno potrdilo: ca.key ali cakey.pem, ca.crt, baza izdajanja, števca serial in crlnumber ter openssl.cnf. To mapo zapečatite s simetrično šifro, premaknite rezultat na drug medij, in obnovitev pomeni razpakirati, preveriti, podpisati. Vse, kar izdajatelj potrebuje, potuje skupaj, vključno s tedni zgodovine preklicev, za katero se nihče ne spomni, da jo je napisal.
Model B je zadržanje ključa. Ključ se ustvari znotraj modula PKCS#11 in označi kot neizvozljiv; modul ga lahko zavije za varnostno kopijo, a noben proces nikoli ne bere surovih bajtov. Vaša kopija sta nato dva artefakta, ki ju je treba obnoviti v pravem vrstnem redu: zaviti blob ključa, ki ga lahko odpre samo ta družina modulov, plus običajna kopija baze, konfiguracije in potrdil.
| Attribute | Encrypted archive | HSM key backup |
|---|---|---|
| What you store | one encrypted file | wrapped blob plus CA records |
| Who can restore it | anyone holding the passphrase | holder of the module and the blob, often vendor support |
| If a copy leaks | attacker with the passphrase becomes the CA | blob is inert without the matching module |
| What usually breaks it | forgotten passphrase, one damaged copy | replacement module rejects the blob, contract gap |
Primerjava nikoli ni o tem, kateri model je močnejši v abstraktnem smislu. Je o tem, katerega lahko vaša ekipa obnovi ob 2 zjutraj z ljudmi, ki so res budni. Arhiv, ki ga nihče ne more dešifrirati, in HSM blob, ki ga nihče ni preizkusil, sta enako neuporabna. Razlika je v tem, da se okvara arhiva pokaže v upravitelju gesel, okvara HSM pa se skriva v pogodbi o podpori.
Kaj mora vsaka varnostna kopija CA vsebovati
Oba modela potrebujeta isti nabor zapisov. V CA OpenSSL so te datoteke index.txt z eno vrstico na vsako izdano potrdilo, ki pokriva stanje, potek, serial in subjekt, nato index.txt.attr, serial, ki hrani naslednjo serijsko številko za izdajo, crlnumber, ki hrani naslednjo številko CRL, in openssl.cnf z dir, policy in default_days, s katerimi vaša CA res deluje. Priročnik openssl-ca pojasnjuje, kaj nadzira vsak od teh števcev. easy-rsa hrani iste podatke pod pki/, datoteka vars pa določi polja potrdila.
Ključ in potrdilo sta dela, ki ju ne morete znova zgraditi. Baza je del, ki ga ne morete rekonstruirati iz spomina. Če izpustite index.txt, lahko še vedno podpisujete nova potrdila, in prav to je past: da manjka, ugotovite prvič, ko stranka vpraša, ali je bilo potrdilo preklicano. Zabeležite odtis CA zunaj varnostne kopije, da se obnovitev primerja z vrednostjo, ki ji zaupate, ne pa z datoteko, ki ste jo pravkar obnovili.
openssl x509 -in ca.crt -noout -fingerprint -sha256
tar czf ca-state.tar.gz ca.crt ca.key index.txt* serial* crlnumber* openssl.cnf
openssl enc -aes-256-cbc -pbkdf2 -iter 200000 -salt -in ca-state.tar.gz -out ca-state.tar.gz.enc
openssl ca -config openssl.cnf -gencrl -out crl.pem
Preizkusi obnovitve, ki ne razvejajo izdajatelja
Dve živi CA z istim subjektom in istim ključem sta videti identični vsaki stranki, ki zaupa izvirniku. Dva CRL z isto številko, a različno vsebino, sta način, kako stranke tiho sprejmejo potrdilo, ki ste ga preklicali. Obnovitev zaženite na gostitelju brez poti do vaših strank ali v enkratnem VM in nikoli ne objavite CRL, ki ga preizkus ustvari.
Preizkus, ki dokaže le, da se arhiv odpre, ne dokaže ničesar o izdajanju. Zaporedje, ki šteje: primerjajte odtis obnovljenega ca.crt z zabeleženo vrednostjo, potrdite, da serial ustreza temu, kar nakazuje vaše nazadnje izdano potrdilo, izdajte eno potrdilo za enkratni CN in opazujte, kako index.txt dobi vrstico, nato to potrdilo prekličite in znova ustvarite CRL.
openssl verify -CAfile ca.crt -CRLfile crl.pem -crl_check client.crt
openssl crl -in crl.pem -noout -lastupdate -nextupdate
Z HSM gre isti preizkus skozi modul. Razpakirajte blob v nadomestno napravo, potrdite, da potrdilo CA, ki ga modul poroča, ustreza vašemu zabeleženemu odtisu, in šele nato mu dovolite podpisovati. Če ima modul lastno shrambo objektov, mora zavijanje pokriti objekt ključa in njegovo oznako, ker obnovitev ključa pod drugo oznako zlomi konfiguracijo, ki kaže nanj.
Načini okvare, ki odločijo izbiro
Pet okvar pojasni večino resničnih izgub. Pozabljena gesla arhiva brez neodvisne kopije skrivnosti spremeni arhiv v opeko. Ena sama kopija na enem disku umre s tem diskom, kontrolna vsota pa nikoli ne pove, ali dešifriranje še deluje. Potrdila, preklicana po datumu varnostne kopije, so po obnovitvi videti spet veljavna, zato je interval varnostne kopije tudi vaša slepa pega preklicev. Obnovitev starejšega števca serial znova uporabi serijske številke in zmede predpomnilnike ter iskanja CRL, vezana na serial. Nadomestni HSM, ki zavije blob zavrne, spremeni zamenjavo strojne opreme v popolno ponovno izdajo.
Model A se s prvimi štirimi spopade slabo, a vidno. Model B se z njimi spopade dobro, dokler ne odpove modul ali proces dobavitelja. Če so vaši ključi izvozljivi in je ekipa majhna, je šifriran arhiv poštena izbira, podprta z dvema medijema in pisnim postopkom gesla. Če ključ ni izvozljiv, izbire sploh nimate, in delo se premakne na dokazovanje poti obnovitve pri dobavitelju pred dnem, ko jo boste potrebovali.
Izbira modela in načrtovanje
Trije pogoji razrešijo odločitev. Je ključ mogoče izvoziti brez procesa dobavitelja? Mora obnovitev pristati na strojni opremi, ki je še nimate? Kako dolgo lahko izdajanje stoji, medtem ko se prepirate s podporo? Odgovorite na te tri in model je odločen; vse za tem je načrtovanje.
Naredite varnostno kopijo po vsaki slovesnosti podpisovanja in pred vsako spremembo konfiguracije, ker je konfiguracija del stanja. Hranite dve kopiji na različnih medijih na različnih mestih, eno brez povezave, skrivnost dešifriranja pa hranite v drugi domeni zaupanja kot kopije. Zapišite datum zadnje uspešne obnovitve v zapis varnostne kopije. Varnostna kopija, ki ni bila nikoli obnovljena, je hipoteza, ne kontrola.
Preden zaprete zahtevek, potrdite teh pet točk:
- Odtis ca.crt je zabeležen nekje zunaj varnostne kopije.
- index.txt, serial, crlnumber in openssl.cnf so vsi znotraj arhiva ali nabora blobov.
- Hramba gesla ali zavitega ključa je dokumentirana in jo ima nekdo drug kot lastnik arhiva.
- Obnovitev je bila preizkušena na izoliranem gostitelju z eno izdajo in enim preklicem.
- Vrzel pri preklicu, ki jo nakazuje interval varnostne kopije, je pisno sprejeta ali skrajšana.