Jeg forstår ret godt matematikken bag RSA, Elgamal, AES, SHA, men ikke hvordan tingene bruges i praksis. Hvordan adskiller undernøgler sig fra hovednøglen? Jeg forstår dets formål fra forskellige websteder, men hvordan implementeres det internt? Hvordan er det bundet til masternøglen? Er det en OpenPGP-terminologi?
Kommentarer
- Dette hjalp mig meget: wiki.debian .org / undernøgler
Svar
Dette indlæg af bruger rjh fra 2008 i enigmail forum svarer det godt:
Oprindeligt i PGP 2.6, tilbage i begyndelsen af 90erne, du havde kun et tastatur, og det blev brugt til både kryptering og signering. Evnen til at have yderligere tastaturer gav nogle tekniske udfordringer. I sidste ende blev det besluttet, at de ekstra tastaturer ville blive kaldt “undernøgler”, på trods af at der ikke er noget “under” om dem. Ligeledes er det, du kalder din “nøgle” slet ikke en nøgle – terminologien er en tilbageholdelse fra de dage, hvor en nøgle virkelig var en nøgle. I dag er en nøgle virkelig en samling af nøgler sammen med nogle metadata til brugeridentifikatorer, signaturer osv.
F.eks. Har min “nøgle” fire tastaturer på sig: 5B8709EB , D0C6AAE4, 71E177DB og 8DB02BBB3.
Hvad GnuPG kalder din “offentlige nøgle” er virkelig den ældste signeringsnøgle i samlingen. Da 5B8709EB først blev oprettet, kalder GnuPG hele nøglesættet og metadata “5B8709EB-nøglen”.
Så er det muligt at have en nøgle, der bruges til kryptering og signering uden nogen undernøgle overhovedet? “Svaret her er nej, fordi alle tastaturer på en nøgle er undernøgler. Selvom der kun er en af dem.
Svar
Undernøgler
Undernøglepakker er defineret i RFC 4880, OpenPGP, 5.5 nøglemateriale-pakke . De “adskiller sig kun ved et andet pakke-id og kræver en bindende signatur for at være faktisk nyttig (se nedenfor).
En offentlig undernøglepakke (tag 14) har nøjagtigt det samme format som en Public-Key-pakke, men angiver en undernøgle.
Brug af undernøgle
OpenPGP-undernøgler er bruges til forskellige formål:
- At være i stand til at gemme den primære nøgle offline eller en mere sikker enhed. Hvis en maskine med en undernøgle er skadet, kan du nemt tilbagekalde undernøglen uden alle besværet med at tilbagekalde din primære nøgle (deling af en ny nøgle, hentning af nye signaturer, …).
- At have forskellige undernøgler på forskellige maskiner, for eksempel en underskrivende undernøgle på en build-server. Igen er det nemt at tilbagekalde enkeltnøgler.
- Brug af en større primærnøgle i lang levetid og kortere, men hurtigere undernøgler til daglig brug.
- Nogle algoritmer understøtter ikke både kryptering og signering. F.eks. en DSA-primærnøgle kræver en anden nøgle til encry ption, typisk parret med ElGamal.
Bindende signaturer
Der er specielle signaturundertyper til at binde undernøgler til primære nøgler (og omvendt), der er anført i RFC 4880, OpenPGP, 5.2.1 Underskriftstyper :
0x18: Undernøgle bindende signatur
Denne signatur er en erklæring fra signaturnøglen på øverste niveau, der angiver, at den ejer undernøglen. Denne signatur beregnes direkte på den primære nøgle og undernøgle og ikke på noget bruger-ID eller andre pakker. En signatur, der binder en underskrivende undernøgle SKAL have en indlejret underskrift-underpakke i denne bindingssignatur, der indeholder en 0x19-underskrift lavet af underskrivelsesundernøglen på den primære nøgle og undernøgle.
0x19: Primær nøglebindingssignatur
Denne signatur er en erklæring fra en underskrivende undernøgle, der angiver, at den ejes af den primære nøgle og undernøgle. Denne signatur beregnes på samme måde som en 0x18 signatur: direkte på den primære nøgle og undernøgle og ikke på nogen bruger-ID eller andre pakker.