Ik begrijp redelijk de wiskunde achter RSA, Elgamal, AES, SHA, maar niet hoe de dingen in de praktijk worden gebruikt. Hoe verschillen subsleutels van de hoofdsleutel? Ik begrijp het doel van verschillende websites, maar hoe wordt het intern geïmplementeerd? Hoe is het gebonden aan de hoofdsleutel? Is het een OpenPGP-terminologie?
Reacties
- Dit heeft me enorm geholpen: wiki.debian .org / Subsleutels
Antwoord
Deze post door gebruiker rjh uit 2008 op het enigmail-forum beantwoordt het goed:
Oorspronkelijk in PGP 2.6, begin jaren 90, je had maar één sleutelpaar en het werd gebruikt voor zowel codering als ondertekening. De mogelijkheid om over extra sleutelparen te beschikken, bracht enkele technische uitdagingen met zich mee. Uiteindelijk werd besloten dat de extra sleutelparen “subsleutels” zouden worden genoemd, ondanks het feit dat er niets aan “sub” is. Evenzo is wat u uw “sleutel” noemt helemaal niet echt een sleutel – de terminologie is een overblijfsel uit de tijd dat een sleutel echt een sleutel was. Tegenwoordig is een sleutel in feite een verzameling sleutels, samen met wat metadata voor gebruikersidentificaties, handtekeningen, enz.
Bijv. Mijn “sleutel” heeft vier sleutelparen: 5B8709EB , D0C6AAE4, 71E177DB en 8DB02BBB3.
Wat GnuPG je “openbare sleutel” noemt, is echt de oudste ondertekeningssleutel in de verzameling. Bijvoorbeeld, aangezien 5B8709EB als eerste werd aangemaakt, noemt GnuPG de volledige set sleutels en metadata de “5B8709EB-sleutel”.
Dus, “is het mogelijk om een sleutel te hebben die wordt gebruikt voor versleuteling en ondertekening zonder enige überhaupt een subsleutel? “Het antwoord is hier nee, omdat alle sleutelparen op een sleutel subsleutels zijn. Zelfs als er” maar één is.
Answer
Subsleutels
Subsleutelpakketten worden gedefinieerd in RFC 4880, OpenPGP, 5.5 Sleutelmateriaalpakket . Ze “worden alleen onderscheiden door een ander pakket-ID en vereisen een bindende handtekening om daadwerkelijk bruikbaar te zijn (zie hieronder).
Een Public-Subkey-pakket (tag 14) heeft exact hetzelfde formaat als een Public-Key-pakket, maar geeft een subsleutel aan.
Subsleutelgebruik
OpenPGP-subsleutels zijn gebruikt voor verschillende doeleinden:
- In staat zijn om de primaire sleutel offline of een veiliger apparaat op te slaan. Als een machine met een subsleutel wordt beschadigd, kunt u de subsleutel eenvoudig intrekken zonder al het gedoe van intrekken je primaire sleutel (een nieuwe sleutel delen, nieuwe handtekeningen krijgen, …).
- Verschillende subsleutels hebben op verschillende machines, bijvoorbeeld een ondertekeningssubsleutel op een build-server. Nogmaals, het intrekken van enkele sleutels is eenvoudig.
- Een grotere primaire sleutel gebruiken voor een lange levensduur, en kortere, maar snellere subsleutels voor dagelijks gebruik.
- Sommige algoritmen ondersteunen niet zowel codering als ondertekening. een primaire DSA-sleutel vereist een andere sleutel voor versleuteling ption, meestal gekoppeld aan ElGamal.
Bindende handtekeningen
Er zijn speciale ondertekeningssubtypen om subsleutels aan primaire sleutels te binden (en vice versa), vermeld in RFC 4880, OpenPGP, 5.2.1 Handtekeningtypen :
0x18: Subkey Binding Signature
Deze handtekening is een verklaring van de ondertekeningssleutel op het hoogste niveau die aangeeft dat hij eigenaar is van de subsleutel. Deze handtekening wordt rechtstreeks op de primaire sleutel en subsleutel berekend, en niet op een gebruikers-ID of andere pakketten. Een handtekening die een ondertekeningssleutel bindt, MOET een ingebedde handtekening-subpakket in deze bindingshandtekening bevatten dat een 0x19-handtekening bevat die is gemaakt door de ondertekeningssubsleutel op de primaire sleutel en subsleutel.
0x19: Primaire sleutelbindinghandtekening
Deze handtekening is een verklaring van een ondertekeningssubsleutel die aangeeft dat deze eigendom is van de primaire sleutel en subsleutel. Deze handtekening wordt op dezelfde manier berekend als een 0x18-handtekening: rechtstreeks op de primaire sleutel en subsleutel, en niet op een gebruikers-ID of andere pakketten.