Motivácia
Ak chceme používať asymetrickú kryptografiu, musíme vedieť verejný kľúč druhej strany (server/človek/organizácia) a musíme mať istotu, že daný kľúč naozaj tej strane patrí. Bez tejto istoty by bol možný man-in-the-middle útok napríklad podvrhnutím verejného kľúča útočníka a my by sme si vymieňali dôveryhodné informácie s niekým iným. Je teda potrebné vytvoriť systém, kde budeme mať možnosť si dôveryhodnosť verejného kľúča neznámeho subjektu overiť.
Hierarchia v PKI a certifikačné autority
Popísaný problém vieme riešiť viacerými spôsobmi. Jeden z nich je, že si necháme náš verejný kľúč u niekoho overiť a on bude potom ostatným vravieť, že môžu nášmu verejnému kľúču dôverovať. Pri overení nám zároveň tento subjekt dá certifikát, kde je napísané, že každý kto nám neverí, že daný kľúč patrí nám, si to môže u neho overiť. Ak bude tomuto overovaciemu subjektu veriť dostatočne veľa z nás, môžeme si s istotou vymieňať verejné kľúče medzi sebou. Takémuto subjektu hovoríme certifikačná autorita (CA).
Aby sme predišli single-point-of-failure a zároveň škálovali výkonnostne a geograficky, je takýchto CA veľmi veľa. Sú usporiadané hierarchicky, teda jedna CA môže vydať certifikát pre inú CA.
Koncovým bodom je tzv. "trust anchor", ktorý nie je overiteľný certifikátom, ale môžeme mu veriť na základe inej skutočnosti (verejne známy verejný kľúć, overiteľný úradmi, fyzicky overiteľný, atď..).
Čo je PKI
Z anglickej wikipédie: A public key infrastructure (PKI) is a set of roles, policies, hardware, software and procedures needed to create, manage, distribute, use, store and revoke digital certificates and manage public-key encryption.
Podstatné vlastnosti:
- používa hierarchiu CA a koncových subjektov
- používa certifikáty formátu X.509
- certifikáty môžu mať rôznu úroveň overenia
- najčastejšie využitie v HTTPS (ktorý používa TLS) protokole
- pri odhalení alebo strate súkromného kľúča môžeme požiadať o zneplatnenie
Certifikát X.509
Štruktúra certifikátu - verzia 3, prevzaté z wikipédie
- Certificate
- Version Number
- Serial Number
- Signature Algorithm ID
- Issuer Name
- Validity period
- Not Before
- Not After
- Subject name
- Subject Public Key Info
- Public Key Algorithm
- Subject Public Key
- Issuer Unique Identifier (optional)
- Subject Unique Identifier (optional)
- Extensions (optional)
- ...
- Certificate Signature Algorithm
- Certificate Signature
PKI a linux
Základný príkaz v linuxe: openssl
Popis príkazu, prevzaté z man page:
- Creation and management of private keys, public keys and parameters
- Public key cryptographic operations
- Creation of X.509 certificates, CSRs and CRLs
- Calculation of Message Digests and Message Authentication Codes
- Encryption and Decryption with Ciphers
- SSL/TLS Client and Server Tests
- Handling of S/MIME signed or encrypted mail
- Timestamp requests, generation and verification
Na fedore si môžeme pridať vlastné certifikáty do priečinku
/etc/pki/ca-trust/source/anchors/nasledované príkazom
update-ca-trustNa debiane je to priečinok
/usr/local/share/ca-certificates/nasledovaný príkazom
update-ca-certificatesPrípadne môžeme použiť univerzálnejší príkaz trust.
Vytvorenie žiadosti
Ak chceme vytvoriť žiadosť o certifikát (certificate signing request = CSR), môžeme použiť príkaz napr.
openssl req -new -key moj_sukromny_klucik.key -out ziadost.csrTen sa nás môže spýtať na potrebné informácie, ktoré sú uvedené v tabuľke (prevzaté z wikipédie)
DN | Information | Description | Sample |
---|---|---|---|
CN
|
Common Name | This is fully qualified domain name that you wish to secure | *.wikipedia.org |
O
|
Organization Name | Usually the legal name of a company or entity and should include any suffixes such as Ltd., Inc., or Corp. | Wikimedia Foundation, Inc. |
OU
|
Organizational Unit | Internal organization department/division name | IT |
L
|
Locality | Town, city, village, etc. name | San Francisco |
ST
|
State | Province, region, county or state. This should not be abbreviated (e.g. West Sussex, Normandy, New Jersey). | California |
C
|
Country | The two-letter ISO code for the country where your organization is located | US |
EMAIL
|
Email Address | The organization contact, usually of the certificate administrator or IT department |
Tento príkaz navyše predpokladá už vytvorený súkromný kľúč, ktorý môžeme predom vytvoriť napríklad príkazom
openssl genpkey -algorithm ED25519 -out moj_sukromny_klucik.key
Alternatívy k PKI
Podobný hierarchický systém v Internete využíva aj DNS. Keďže rozšírenie DNSSEC zaisťuje integritu a pravdivosť poslanej odpovede, môžeme toto s výhodou využiť a verejný kľúč (ktorý je určený pre nasledovnú komunikáciu so serverom na danej doméne) pribaliť do DNS odpovede, napríklad ako TLSA record. Takéto riešenie sa nazýva DNS-based Authentication of Named Entities (DANE)
Inou alternatívou k certifikačným autoritám je napríklad Web of trust.