OpenPGP als PKI voor bedrijven

Samenvatting

Nog steeds worden de mogelijkheden van het OpenPGP Trust Model door veel mensen onderschat. Dit paper toont aan dat het OpenPGP Trust Model en het X.509 concept vrijwel identiek zijn.

Inhoud

 

Introductie

OpenPGP en zijn Web of Trust certificering is een concept dat niet voor elk bedrijf geschikt is. Er bestaan echter mogelijkheden om het klassieke Web of Trust te veranderen in een superset van het X.509 systeem. Dit paper bediscussieert het OpenPGP vertrouwensmodel. Er wordt vanuit gegaan dat de lezer bekend is met de X.509 infrastructuur en haar concepten.

Dit paper is opgesteld in samenwerking met Christian Kirsch en Felix Storm van Biodata GmbH. Biodata is producent van o.a. de Biodata PKI server waarmee gecentraliseerd management van OpenPGP en X.509 certificaten mogelijk is.

Feiten

OpenPGP Web of Trust

Om het hierna volgende concept volledig te begrijpen, is enig inzicht nodig in het OpenPGP Web of Trust model. OpenPGP is initieel ontwikkeld voor de Internet gemeenschap, terwijl X.509 is ontworpen voor een hiërarchische structuur. Het X.509 concept stelt als eis dat er een certification authority (CA) bestaat die door de gebruiker vertrouwd kan worden. OpenPGP ziet elke gebruiker als een CA. Oftewel, met X.509 start de vertrouwensrelatie met een CA (top down), terwijl in OpenPGP de vertrouwensrelatie begint bij de gebruiker (bottom-up).

Het Web of Trust model is gebaseerd op de theorie dat ieder persoon ter wereld via een beperkt aantal mensen is te koppelen aan een willekeurig ander persoon. In OpenPGP wordt op deze manier de vertrouwensrelatie opgebouwd. 

Een eenvoudig voorbeeld: Alice en Bob hebben beiden een OpenPGP sleutel. Alice tekent Bob's publieke sleutel. Hierdoor wordt Bob's sleutel gevalideerd door en voor Alice. Dit is de eenvoudigste wijze van opbouwen van vertrouwen in openPGP [figuur 1/Voorbeeld 1].

Als Alice de sleutel van Bob tekent kan ze aangeven of ze automatisch sleutels die door Bob zijn getekend en dus Bob's handtekening bevatten wil vertrouwen. In dit geval wordt Bob's sleutel getekend met de "Trusted-Introducer" specificatie. Als Bob vervolgens de sleutel van Charlie tekent dan wordt deze sleutel automatisch ook gevalideerd voor Alice. Dit noemt men overdraagbaar vertrouwen (transitive trust) [figuur 1/Voorbeeld 2].

In een Web of Trust kunnen ook complexere vertrouwensrelaties worden gemaakt: indien Alice de sleutel van Bob tekent met als specificatie "Meta- Introducer" dan kan Bob op zijn beurt voor Alice de sleutels van anderen tekenen als "Trusted-Introducer" [figuur 1/Voorbeeld 3]. 

figuur 1.

Deze voorbeelden laten de lineaire vertrouwensrelatie zien. Vertrouwen en validiteit worden echter niet vanuit één gebruiker verdeeld, maar vanuit elke gebruiker. Hierdoor ontstaat een driedimensionaal stervormig vertrouwensnetwerk; het Web of Trust. 

Ondanks het academische karakter van dit model blijkt het verassend goed bij het menselijke begrip en gevoel van vertrouwen te passen. Het is echter ook te begrijpen waarom bedrijven de voorkeur geven aan een meer hiërarchische structuur. In de volgende paragraaf wordt duidelijk gemaakt dat het Web of Trust eigenlijk een superset is van een normale hiërarchische structuur.

Hiërarchie

Laten we nog eens kijken naar het tweede voorbeeld waarin een vertrouwensrelatie in twee stappen wordt aangemaakt. Alice tekent de sleutel van Bob als "Trusted-Introducer". Bob tekent de sleutel van Charlie met een normale handtekening. Op dat moment wordt de sleutel van Charlie gevalideerd voor Alice.

figuur 2.

Als we de sleutel van Bob hernoemen tot "Root CA" dan ontstaat een hiërarchische vertrouwensrelatie. Als Charlie vervolgens de "Root CA" sleutel tekent met als specificatie "Trusted-introducer" en de "Root CA" heeft Alice's sleutel getekend dan is de vertrouwensrelatie tussen Alice en Charlie rond.

Met deze acties wordt vanuit een Web of Trust model een hiërarchisch model gemaakt. Dit is de eenvoudigste vorm van een OpenPGP PKI. Het X.509 model ziet er exact hetzelfde uit. 

Het is belangrijk om te begrijpen dat dit model volledig compatibel is met de OpenPGP standaard en daarmee dus ondersteund wordt door producten die deze standaard ondersteunen. De specifieke beperkingen van gebruikers in het bedrijf zijn de primaire focus, niet het misbruik van gebruikers van het Web of Trust. 

Het basis concept uitgebouwd 

Een Multi-Level PKI

Een eenvoudige hiërarchie zoals hierboven omschreven is niet flexibel genoeg voor veel scenario's. Het introduceren van een extra niveau waarop vertrouwen en geldigheid kan worden verdeeld is nodig. We introduceren een Sub CA die door de Root CA wordt getekend als Ttrusted-Introducer". Bijvoorbeeld:

Alice tekent het "Root CA" certificaat als "Meta- Introducer". De "Root CA" tekent de "Sub CA" als"Trusted- Introducer". Vervolgens wordt door de laatste het certificaat van David getekend. Hierdoor wordt het certificaat van David gevalideerd voor Alice.

figuur 3.

Meerdere Sub CA's

Ook is het mogelijk om meerdere Sub CA's te integreren in dit model. Hiermee kan een infrastructuur worden ontworpen die rekening houdt met internationale vestigingen en regio's, waarbij elke vestiging danwel regio een eigen Sub CA beheert. 

Cross-Certificatie

Door het kruiselings certificeren van de sleutels van twee organisaties kan een wederzijdse vertrouwensband worden gecreëerd. Omdat de OpenPGP standaard het toestaat om meerdere handtekeningen op een sleutel te plaatsen kan dit eenvoudiger met OpenPGP dan met X.509 worden uitgevoerd.  De vertrouwensrelatie wordt bekrachtigd door de Root CA van beide organisaties elkanders Sub CA's als "trusted-Introducer" te laten tekenen. Op dat moment heeft de publieke sleutel van de Sub CA de handtekeningen van de Root CA's van beide organisaties. Het is mogelijk om aan de geldigheid een bepaalde periode te verbinden van bijvoorbeeld één jaar, waarna de certificering opnieuw moet plaatsvinden.

De medewerkers van een bedrijf zullen de Sub CA's van het andere bedrijf automatisch vertrouwen, net als elke sleutel die door hen is getekend. Indien één van de partijen de vertrouwensband wil of moet verbreken dan is het intrekken van de "Trusted-Introducer" handtekening door de Root CA voldoende.

OpenPGP ondersteunt dus meerdere Root CA's. We introduceren het certificeren van partners en het gebruiken van meerdere Root CA's.

Partners

Als niet een volledige vertrouwensrelatie moet worden aangegaan met een andere organisatie, maar bijvoorbeeld alleen met de juridische afdeling of enkele medewerkers ervan, dan kunnen Partner Sub CA's worden gecreëerd. De Partner Sub CA wordt door de Root CA getekend als "Trusted- Introducer". Van daaruit kan de Sub CA rechtstreeks de medewerkers certificeren.

Exclusiviteit van het eigen Web of Trust

Doordat eindgebruikers alleen andere sleutels kunnen tekenen met een normale handtekening kan worden voorkomen dat vertrouwen onbedoeld wordt overgedragen.

Mocht echter een externe gebruiker het Root CA certificaat of een Sub CA certificaat tekenen van de organisatie, dan wordt alleen het externe Web of Trust beïnvloed, niet de PKI van de eigen organisatie. Dit heeft ook een voordeel, namelijk dat een gebruiker door het tekenen van het Root CA certificaat als "Meta-Introducer" automatisch alle organisatie sleutels kan vertrouwen, zonder dat hiervoor een actie van de Root CA zelf nodig is.

Cross Certficatie: Organisatie Alfa accepteert de gebruikercertificaten van organisatie Beta

figuur 4.

Het is belangrijk te voorkomen dat een gebruiker zelf sleutels introduceert. Het introduceren van nieuwe sleutels loopt altijd via een Sub CA die door de gebruiker als "Trusted-Introducer" is aangemerkt. Zouden onbekende sleutels toegelaten worden in het PKI systeem dan verlaagt dit de totale veiligheid van de PKI en kunnen acties als het intrekken van sleutels bemoeilijkt worden.

Centrale sleutelgeneratie

Decentraal genereren van sleutels (de traditionele manier van OpenPGP) is niet voor elke organisatie geschikt. Door het centraal genereren van sleutels kan het aanmaakproces beter gecontroleerd worden. Fouten door de eindgebruiker kunnen op deze manier makkelijker worden voorkomen. Tevens kan het juiste formaat voor de sleutel worden afgedwongen en kan worden verzekerd dat de juiste publieke sleutels worden getekend en beschikbaar worden gesteld in de PKI.

Een back-up van de privé sleutel met gedecentraliseerde sleutelgeneratie is problematischer. Toch is een back-up van de privé sleutel aan te raden voor het geval dat een gebruiker het wachtwoord van of de privé sleutel zelf verliest en de versleutelde gegevens gedecodeerd moeten worden of de sleutel moet worden ingetrokken.

Om een PKI mogelijk te maken die werkt volgens bovenstaand schema moet het sleutel materiaal dat wordt gegenereerd er zo uit zien: De publieke sleutel van de gebruiker moet door de juiste Sub CA worden getekend. Tevens moet de gebruiker de beschikking hebben over de publieke sleutels van de Root CA en de Sub CA('s) zodat de validiteit ervan door de gebruiker gecontroleerd kan worden. Alle Root CA sleutels die de gebruiker in zijn sleutel ring heeft moeten worden getekend als "Meta-Introducers". In een goed ontworpen OpenPGP CA kan dit proces geautomatiseerd verlopen.

Tussen twee haakjes: Door het centraal genereren kan eenzelfde CA/RA structuur worden gecreëerd die ook met X.509 mogelijk is.

X.500 Directory Service en Keyserver

De gebruikers sleutels zullen via de Keyserver beschikbaar moeten worden gesteld. OpenPGP biedt hiervoor twee opties. Ten eerste zijn er HTTP servers. Indien er van diverse besturingssystemen gebruik wordt gemaakt is dit een goede optie. Keyservers managen de sleutels in een platte structuur en zijn niet diep geïntegreerd in de IT-infrastructuur. De keyserver bevat een database die door de organisatie moet worden onderhouden en moet worden gerepliceerd naar de verschillende regio's van de organisatie.

Een elegantere en snellere manier is het gebruiken van een X.500 directory service. Veel organisaties hebben reeds werkende, of zijn bezig met de implementatie van, zo'n directory service. Het is mogelijk om de OpenPGP certificaten in de directory structuur te plaatsen en ze via LDAP te benaderen.

Dit is de meest eenvoudige benadering voor de producten die op dit moment beschikbaar zijn op de markt, zoals Microsoft Active Directory,  Netscape Directory Server of Novell NDS. Het is aan te raden om de reeds aanwezige directory service te gebruiken aangezien dan geen extra acties hoeven worden uitgezet om de keyserver te beheren.

Als het directory schema wordt ontworpen is het belangrijk om rekening te houden met het feit dat per gebruiker meerdere sleutels uitgegeven kunnen worden. Het KeyID veld uit een OpenPGP certificaat moet in een apart veld worden geplaatst en geindexeerd indien hier het meest op gezocht moet worden.

Conclusie

Alhoewel het klassieke Web of Trust model niet geschikt is voor (grote) organisaties kan het gevormd worden tot een hiërarchische infrastructuur met een grotere flexibiliteit in het managen van de vertrouwensrelaties dan bij X.509 het geval is. Voor de meeste organisaties wordt het multi-level CA model aangeraden. Deze flexibiliteit komt zeker bij complexere cross-certificatie tussen de organisatie en externe partners van pas. Het genereren van OpenPGP sleutels kan het beste gecentraliseerd gebeuren. Opslag van OpenPGP sleutels kan het beste gebeuren in een X.500 directory service.