Kodiranje - Univerza v Ljubljani

Univerza v Ljubljani
Fakulteta za elektrotehniko
Komunikacije v avtomatiki
Kodiranje
Stanislav Kovačič
http://vision.fe.uni-lj.si
2013/14
Iz vsebine
• Preprečevanje napak – zanesljivost prenosa (“kodiranje kanala”)
• Odkrivanje napak
• Popravljanje napak
• Odpravljanje odvečnosti (“kodiranje vira”)
• Zgoščevanje podatkov
• Brezizgubo kodiranje
• Izgubno kodiranje
• Zaščita podatkov - šifriranje
• Zagotavljanje tajnosti
• Zagotavljaje verodostojnosti
• Zagotavljanje istovetnosti - certificiranje
Odkrivanje napak
Začetek
•
•
•
•
•
Vsebina okvirja
Kontrolna
vsota
Konec
Oddajnik vsebini okvirja po določenem pravilu doda “kontrolno vsoto”
Okvir pošlje v komunikacijski kanal
Med prenosom lahko pride do napake na okvirju
Sprejemnik preveri, če kontrolna vsota ustreza danemu pravilu
V primeru, da kontrolna vsota ne ustreza pravilu,
javi napako, zahteva ponovitev istega okvirja, zavrže okvir
Kontrolna vsota:
• Največkrat t.i. vzdolžno preverjanje parnosti
(LRC – Longitudinal Redundancy ckeck)
• Ciklično preverjanje
(CRC – Cyclic Redundancy Check)
Vzdolžno preverjanje parnosti
Začetek
Vsebina okvirja
LRC
Konec
•
•
•
•
Imamo vsebino okvirja – niz bajtov: B0, B1, B2, .... , Bk, .... BK
Oddajnik izračuna kontrolno vsoto
B0 + B1 + B2 + .... + Bk + .... + BK = LRC
(seštevanje po modulu 2)
B0 + B1 + B2 + .... + Bk + .... + BK + LRC = 0 (seštevanje po modulu 2)
LRC je potemtakem dodatni bajt (tipično eden ali dva bajta)
•
Sprejemnik preveri pogoj “parnosti”
0: ni napake (ali ni odkrita)
•
B0 + B1 + B2 + .... + Bk + .... BK + LRC =
≠0: odkrita napaka
Dejanske izvedbe se sicer razlikujejo v majhnih, a pomembnih podrobnostih
(soda ali liha kontrola; 8/16 bitni podatki; „pravo“ seštevanje;)
Primer: Internet - UDP
št. izvornih vrat
št. ponornih vrat
dolžina
Kontrolna vsota
UDP paket
Koristna vsebina
•
•
•
•
•
•
Pri izračunu se upošteva celotna vsebina paketa (glava in vsebina)
V izračun se doda še „psevdo glava“ IP paketa (naslednja stran);
• oba IP naslova, tip protokola (UDP = 0x11) in dolžina paketa
Seštevajo se 16-bitne enote
Sešteva se „eniško“ – z upoštevanje „prenosa“ – „ADDC seštevanje“
Kontrolna vsota je eniški komplement dobljenega seštevka
Sprejemnik računa na enak način, upoštevaje tudi kontrolno vsoto.
• če je dobljeni rezultat 0xFFFF, pomeni, da ni napake.
Primer: UDP paket + psevdo glava
IP naslov ponora
IP naslov izvora
Protokol
Psevdo glava
dolžina
št. izvornih vrat
št. ponornih vrat
dolžina
Kontrolna vsota
UDP paket
Koristna vsebina
•
•
Kontrolna vsota za TCP segment + psevdo glava se računa praktično
na enak način
Kontrolna vsota IP glave se računa praktično na enak način
Ciklično preverjanje - CRC
Začetek
•
•
•
•
•
•
Vsebina okvirja
CRC
Konec
Imamo vsebino okvirja – niz podatkov: B0, B1, B2, .... , Bk, .... BK
Oddajnik deli niz podatkov z delilnim zaporedjem – “generatorjem” G
(B0 B1 B2 .... Bk .... BK ) : G = Rezultat deljenja Q + Ostanek R
Ostanek “pripnemo” deljencu in pošljemo:
B0 B1 B2 .... Bk .... BK R
Sprejemnik preveri pogoj “deljivosti”
B0 B1 B2 .... Bk .... BK R : G = Rezultat deljenja Q’+ Ostanek R’
0: ni napake (ali ni odkrita)
R’ =
≠0: odkrita napaka
Ciklično preverjanje oz. kodiranje
Začetek 101110010101010101010101011111001010
00........0
Konec
Ciklično preverjanje oz. kodiranje
Deljivo
brez
ostanka
To pošljemo
CRC, primer
1/2
CRC, primer
Začetek
1 1 0 1 0 1 1 0 1 1
2/2
1110
Konec
Preverjanje deljivosti
Začetek 101110010101010101010101011111001010
101.....01
Konec
CRC, nekateri “dobri” polinomi
Ethernet_32 = x32 + x26 + x23 + x22 + x16 + x12 + x11
+ x10 + x8 + x7 + x5 + x4 + x2 + x + 1
Izvedbena vprašanja: kateri je „prvi“ bit, „prvi“ bajt
CRC, načelna izvedba v hardveru
CRC s tabelo ostankov 1/5
Z B0 B1 B2 .... .... .... .... B
K
Del vsebine okvirja: P(x)
P’(x) = P(x) .
x8 +
B(x)
B(x)
Zamisel:
Dodajamo bajt za bajtom in delimo, vsakič dobimo rezultat deljenja in ostanek
Vprašanje:
Ko dodamo naslednji bajt, ali se da zgolj iz dodanega bajta in tekočega ostanka
izračunati nov ostanek?
R’(x) = T( R(x), B(x) )
CRC s tabelo ostankov 2/5
CRC s tabelo 3/5
R
CRC s tabelo 4/5
CRC s tabelo
Tabela ostankov
RH
RL
+
B
V
V
T(V)
TH
+
TL
TH
TL
RH
RL
CRC tabela (5/5)
Vzdolžno in prečno preverjanje
• Zakodirajmo 111010100 -> 111, 010, 100
• Pošljemo 1111010110010011 -> 1111, 0101, 1001, 0011
Vzdolžno in prečno preverjanje
• Sprejmemo na primer: 1111000110010011
• V drugi vrstici in drugem stolpcu je odkrita in popravljena napaka
Hammingov kod
Hammingov kod
Primer za eno izmed šestnajstih kodnih besed
b1=1; b2=0; b4=0; -> 1000011
Hammingov kod
napaka
V današnjem času se v glavnem uporabljajo „konvolucijski kodi“ in
„mrežno kodiranje“ - trellis
Iz vsebine
• Osnovno o zgoščevanju podatkov
• Entropijsko kodiranje, Huffmanov kod
• Kodiranje nizov, algoritem LZW
Zgoščevanje podatkov – osnovni cilj
• Čimkrajše zapisati dano informacijsko vsebino
• zmanjšamo potrebni pomnilniški prostor
• povečamo informacijski pretok
• Osnovna pristopa:
• brezizgubno kodiranje:
• vsa informacijska vsebina ostane popolnoma neokrnjena
• izgubno kodiranje:
• nekaj informacije se izgubi, bistvena pa ostane
Količina informacije
• Kolikšna je informacijska vsebina sporočila ?
• Na primer sporočila: a b a b a b a a c a a c a b d d ?
• Množica simbolov
S = {s1 , s2 , s3 ,...., si ,...., s N }
• Verjetnosti simbolov (pogostost pojavljanja):
P = { p1 , p2 , p3 ,...., pi ,...., p N }
• Entropija – merilo nedoločenosti in količine informacije (C. E.Shannon)
N
H ( S ) = −∑ pi log pi
i =1
Primer 1/3
• Za prejšnji primer, vseh simbolov v nizu: 16
• a –– 8,
pa = 8/16 = 0.5
• b –– 4,
pb = 4/16 = 0.25
• c –– 2,
pc = 2/16 = 0.125
• d –– 2,
pd = 2/16 = 0.125
(to je seveda ocena verjetnosti)
• Entropija (dvojiški logaritem):
• H = - (0.5 x log 0.5 + 0.25 x log 0.25 + 0.125 x log 0.125 + 0.125 x log 0.125)
• H = 1.75 bitov/simbol
• Razlaga:
Če želimo z binarnimi simboli (biti) zakodirati osnovne simbole a, b, c, d,
rabimo v povprečju vsaj 1.75 binarnih simbolov (bitov) na osnovni simbol.
Z manj biti se tega ne da narediti.
Primer 2/3
• Vprašanje: kako ?
•a
wa = 00
•b
wb = 01
•c
wc = 10
•d
wd = 11
a b a b a b a a c a a c a b d d -> 00010001000100001000001000011111
• (Povprečno) število bitov na simbol, n = 2
• To je več, kot bi bilo nujno potrebno
• Nekaj binarnih simbolov je torej odveč
• Delež odvečnih simbolov imenujemo odvečnost ali redundanca:
H(S)
1.75
R = 1= 1−
= 0.125
n
2
Primer 3/3
• Naslednja možnost – različno število bitov na simbol:
•a
wa = 0
•b
wb = 10
•c
wc = 110
•d
wd = 111
a b a b a b a a c a a c a b d d -> 0100100100011000110010111111
• (Povprečno) število bitov na simbol:
n = 1 x 0.5 + 2 x 0.25 + 3 x 0.125 + 3 x 0.125 = 1.75
• Redundanca:
R = 1-
H(S)
1.75
= 1−
=0
n
1.75
• Boljše se s kodiranjem posameznih osnovnih simbolov ne da zakodirati
Kodiranje - splošno
• Imamo:
S = {s1 , s2 , s3 ,...., si ,...., s N }
P = { p1 , p2 , p3 ,...., pi ,...., p N }
• Kod je pravilo za prirejanje kodnih besed osnovnim simbolom:
si → wi
• Iščemo kod - kodne besede:
W = {w1 , w2 , w3 ,...., wi ,...., wN }
• Želimo, da bi bila redundanca čim manjša:
Povprečna dolžina kodnih besed čim manjša
Kodiranje - splošno
• Velja (!):
H(S) ≤ n
• Ampak (brez prevelikega truda lahko pokažemo, da velja tudi:)
H(S) ≤ n < H(S) + 1
• Pri tem je:
N
H(S) = −∑ pi log pi
i =1
N
n = ∑ pi n i ,
i =1
n i =| wi |
Kodiranje - splošno
log(1 / pi ) ≤ ni < log(1 / pi ) + 1
/ pi
(množimo)
pi log(1 / pi ) ≤ pi ni < pi log(1 / pi ) + pi 1 / ∑
i
∑ p log(1 / p ) ≤ ∑ p n < ∑ p log(1 / p ) + ∑ p
i
i
i
i i
i
i
i
H (S ) ≤ n < H (S ) + 1
i
i
i
(seštejemo)
Huffmanov kod
• Bolj pogostim (bolj verjetnim) simbolom priredimo krajše kodne besede
pi > p j → n i ≤ n j
• Simbol z najmanjšo verjetnostjo ima najdaljšo kodno besedo
• Simbola z najmanjšima verjetnostima imata enako dolgi kodni besedi
(razlikujeta se na zadnjem kodnem – binarnem simbolu)
• Pomembno:
• Zakodirano sporočilo se da ‘sproti’ odkodirati
Huffmanov kod - postopek
• Simbole uredimo po padajočih verjetnostih
• Združimo simbola z najmanjšo verjetnostjo v nov simbol z
verjetnostjo, ki je enaka vsoti verjetnosti posameznih simbolov
• Ponavljamo zgornja koraka, dokler se da – imamo samo dva simbola
• Dobljena simbola zakodiramo, priredimo enemu 0 in drugemu 1
• Razdružimo združeni simbol
• Pripišemo prejšnjemu binarnemu simbolu enkrat 0 in drugič 1
• Ponavljamo zgornja dva koraka, dokler se da.
Huffmanov kod - primer
S1,45
Huffmanov kod - primer
Huffmanov kod – primer 1
0
0
0
Huffmanov kod – primer 2
0,57
0,32
0,57
0,17
0,32
Huffmanov kod – primer 3
H(S) = H(0.9, 0.1) = 0.469
n =1
Huffmanov kod – primer 3
H(S2) = H(0.81, 0.09, 0.09, 0.01) = 0.938
H (S2) = 2 H(S)
Huffmanov kod – primer 3
H(S2) = H(0.81, 0.09, 0.09, 0.01) = 0.938
H (S2) = 2 H(S)
Huffmanov kod – primer 3
H(S2) = H(0.81, 0.09, 0.09, 0.01) = 0.938
H(S2) = 2 H(S)
Na en simbol torej 1.29/2 = 0.645
Na ta način se spodnji meji lahko poljubno približamo
LZW (Lempel, Ziv, Welch)
Daljše in različno dolge nize vhodnih simbolov nadomestimo s
krajšimi in enako dolgimi nizi izhodnih simbolov.
Algoritem se sproti prilagaja statističnim zakonitostim vhodnega niza
Sprva kodni slovar sestavljajo osnovni simboli, s kodiranjem se slovar
dopolnjuje tako, da se vhodnim nizom prireja nove simbole.
Kodni slovar, ki je potreben za dekodiranje, se da pridobiti iz
sprejetega zakodiranega niza.
Kodnega slovarja torej ni potrebno poznati (prenašati).
LZW (Lempel, Ziv, Welch)
LZW (Lempel, Ziv, Welch)
Slovar
a
1
b
2
c
3
d
4
a b a b a b a a c a b a a c a b a d d
ab
5
1 2
ba
6
aba
7
abaa
8
ac
9
ca
10
abaac
11
cab
12
bad
13
dd
14
a b a b a b a a c a b a a c a b a d d
5
7
1 3
8
10
6
4
Iz vsebine
• Šifrirni algoritmi
• Simetrični, nesimetrični algoritmi
• Overovitev, digitalni podpis, potrdila
• Protokoli
Zaščita podatkov - izhodišča
• varnost / tajnost / zasebnost / zaupnost
• preprečevanje zlorabe podatkov, dostopa do občutljivih podatkov
• (angl. Security, secrecy, privacy, confidentiality)
• itegriteta – celovitost (neokrnjenost) podatkov
• preprečevanje ponarejanja
• (angl. Integrity)
• avtentičnost, verodostojnost
• pristnost udeležencev v komuniciranju, preverjanje ustreznosti.
• (angl. Authentication)
• zanikanje, utaja
• preprečevanje zanikanja avtorstva oz. utaje poslanega
• (angl. Non-repudiation)
Zaščita podatkov
• Šifriranje/dešifriranje (prikrivanje podatkov)
algoritmi za zagotavljanje tajnosti, varnosti
• Protokoli
postopki varovanja, izmenjave podatkov, ki skupaj s šifrirnimi
algoritmi zagotavljajo primerno varnost
• Področja
komunikacijski sistemi
operacijski sistemi
informacijski sistemi
na različnih področjih uporabe
Zaščita podatkov
7
6
5
4
3
2
1
7
6
5
4
3
2
1
7
6
5
4
3
2
1
• Ni omejena na en sam sloj
• Lahko prisotna praktično na vsakem sloju
• Na splošno čim bližje končnemu uporabniku
7
6
5
4
3
2
1
Šifriranje / prikrivanje podatkov
• Kriptografija (področje šifriranja izdelave kriptogramov)
• Kriptoanaliza (področje napadov na šifrirni sistem)
• Kriptologija (kriptografija, kriptoanaliza)
Šifriranje / prikrivanje podatkov
• P: Odprto besedilo (angl. Plaintext)
• E: Šifrirni postopek (algoritem), parametriran s šifrirnim ključem
KE (Angl. Encryption, encryption key)
• C = E( P, KE ): kriptogram
• D: Dešifrirni postopek (algoritem), parametriran z dešifrirnim ključem
KD (Angl. Decryption, decryption key)
• Vsiljivec (pasivni, aktivni) prisluškuje in ponareja kriptograme.
• Pomembno:
Oba ključa morata biti tajna, postoka E in D pa sta lahko (tipično tudi
sta) znana oziroma “javna”. Oba ključa sta (tipično) kar enaka.
Šifriranje - pristopi
• Klasični pristopi šifriranja uporabljajo dve operaciji:
• substitucija, zamenjava oz. nadomeščanje simbolov
• transpozicija, permutacija oz. premeščanje simbolov
• poljubna kombinacija obeh.
• Sicer pa sta prvi pravili šifriranja
• redundanca, t.j. odvečnost v kriptogramu, čim večja je, tem bolje.
• aktualnost kriptograma, omejeno trajanje kriptograma
Nadomeščanje
• Osnovne simbole nadomestimo z novimi simboli
Preprost primer: si
r i, r i = s (i+k ) mod N
Preprost napad
• Možen napad:
upoštevamo statistične zakonitosti odprtih besedil
Nadomeščanje
• Uporabimo več (različnih) abeced in
• abecede izbiramo s “ključem”
Nadomeščanje, več abeced
Premeščanje
To so
zaporedne
številke črk
ključa
Premeščanje / nadomeščanje
Ključ
Premeščanje, P-blok
Kombinacija obeh
Ključ
Nadomeščanje S-blok
“Zmnožek“
DES (Data Encryption Standard)
• DES, razvoj IBM – 1977, izveden iz sistema Lucifer (128 bitni ključ)
• Množično uporabljan
• Za vse današnje potrebe/razmere ne zagotavlja zadostne varnosti,
je pa še uporaben.
• V spremenjeni – izpopolnjeni obliki in v kombinaciji z drugimi
postopki še vedno množično prisoten.
DES je kompleksna kombinacija transpozicij in substitucij,
t.i. (angl. Block cipher) “bločni” način (šifriranje po blokih) in
(angl. Product cipher) “množilni” način šifriranja (transp., subst.).
DES (Data Encryption Standard)
DES
• 56 bitni ključ, dejanski problem je premajhna dolžina ključa
• 19 stopenj, 16 iteracij
•
vsa kompleksnost algoritma je v funkciji F
• v vsaki iteraciji se uporabi modificiran ključ
• DES je simetričen, isti ključ za šifriranje/dešifriranje
• dešifrirni postopek je enak šifrirnemu v obratnem vrstnem redu.
DES
P
izboljšave – trojni DES
K1
K2
K1
E
D
E
• dva 56-bitna ključa
• K1 = K2
enojni DES
C
C
K1
K2
K1
D
E
D
P
AES - Advanced Ecryption standard
• NIST (National Institute of Standards and Technology)
• 1997: razpis za prijavo novega algoritma
• Simetričen, bločni
• Zasnova in izvedba algoritma morata biti javni
• Dolžina ključa: 128, (192, 256)
• Možnost izvedbe s strojno ali programsko opremo
• Algoritem mora biti v javni lastni ali licenciran na
nediskriminatoren način
AES - Advanced Ecryption standard
• 1998: NIST izbere pet finalistov
• 2000: NIST na osnovi glasovanja izbere algoritem
RIJNDAEL (Rijmen, Daemen)
• Nekaj podatkov:
• Dolžina ključa 128 do 256 s korakom 32 (v praksi 128, ali 256)
• Dolžina bloka 128
• Sicer pa je izvedbeno gledano algoritem zelo podoben DES,
bistven pa je daljši ključ.
Nekateri bolj pogosti algoritmi
• Blowfish
• DES, 56 bitni ključ
• IDEA, 128 bitni ključ
• RC4, 1- 2048 bitni ključ
• RC5, 128-256 bitni ključ
• AES128-256 bitni ključ (prva izbira)
• Trojni DES, 168 bitni ključ (druga najboljša izbira)
Sistemi z javnim ključem
• PKS (Angl. Public Key Systems)
• Simetrični sistemi (klasični sistemi) uporabljajo enak ključ za
šifriranje in dešifriranje
• Oba ključa (pravzaprav je en sam) morata biti TAJNA
• Problem: distribucija ključev
• V sistemih z javnim ključem je ŠIFRIRNI ključ JAVEN, objavljen
oz. znan vsem zainteresiranim uporabnikom.
• Razumljivo, (vsaj) dešifrirni ključ MORA biti TAJEN
• Ključa sta torej različna
• BISTVO sistema: na osnovi javnega šifrirnega ključa se ne da ali
vsaj ne v doglednem času odkriti tajnega dešifrirnega ključa.
Sistemi z javnim ključem
RSA
• Bistveno vprašanje: kako generirati (E,D) pare ključev?
• RSA: Rivest, Shamir, Adleman
• RSA temelji na dejstvu, da je velika števila težko faktorizirati.
• RSA algoritem danes velja za nezlomljivega ali zelo trdnega
• Slabost je zelo velika dolžina ključa in računska zahtevnost
• Zato se največ uporablja za “distribucijo” ključev v kombinaciji
z računsko učinkovitejšimi simetričnimi algoritmi.
RSA - osnove
• Generiranje ključev:
• izberi dve veliki praštevili, p in q (tipično v obsegu 1024 bitov)
• izračunaj n = p x q, in z = (p-1) x (q-1)
• izberi z-ju tuje število, naj bo to število d
• izberi e tako, da velja e x d = 1 (mod z)
• Sedaj imamo par ključev, e in d
• Šifriranje:
• deli besedilo na enako dolge bloke P, tako da je P < n
• šifriraj, C = Pe (mod n)
• Dešifriraj:
• P = Cd (mod n)
RSA – primer
• izberemo p in q
• naj bosta p = 3 in q = 11
• Izračunamo n in z,
• izačunamo n = p x q = 3 x 11 = 33
• izračunamo z = (p-1) x (q-1) = 2 x 10 = 20
• Izberemo d
• d = 7 (d in z nimata skupnega delitelja, no seveda, 7 je praštevilo)
• Izberemo e
• e x 7 = 1 (mod 20), na primer (3 x 7 = 21 (mod 20) = 1)
• Imamo oba ključa
• šifriramo z (e, n) = (3, 33), dešifriramo z (d, n) = (7, 33)
• (e, n) “objavimo”
RSA – primer
• Šifriramo, C = P3 (mod 33)
• Dešifriramo, P = C7 (mod 33)
• Na primer, odprto besedilo je SDV, šifriramo posamezne črke.
PKS – digitalni (elektronski) podpis
• Problem:
• možnost ponarejanja, vsak se lahko predstavi pod lažnim imenom
• možnost utaje, vsak lahko kasneje zanika pošiljanje
• Rešitev: digitalni podpis
PKS – digitalni (elektronski) podpis
• Vsaka postaja (uporabnik) ima svoj par ključev, javnega in tajnega
• Z javnim šifrira tisti, kdor pošilja
• Postaja A se najprej podpiše, “(de)šifrira” s svojim tajnim ključem
• Postaja A skrije besedilo, šifrira z javnim ključem postaje B
• Postaja A pošlje kriptogram postaji B
• Postaja B dešifrira kriptogram s svojim tajnim ključem
• Postaja B “šifrira” besedilo, dobi odprto besedilo
• Ker je vsaka postaja edina, ki pozna svoj tajni ključ, je to dokazilo,
da kriptogram pošilja ona – njen podpis.
• Če postaja B obdrži podpis besedila, je tudi utaja nemogoča.
Digitalni podpis s simetričnim ključem
• Uporabniki izberejo zaupnega posrednika Z, ki mu vsi zaupajo.
• Vsak uporabnik po zaupnem kanalu sporoči svoj ključ
zaupnemu posredniku: KA, KB, ....,
• Uporabnik A pošilja besedilo P uporabniku B
• Zato kreira KA( B, RA, t, P) in pošlje Z-ju: A, KA( B, RA, t, P)
• RA je naključno število, t je čas, A je njegova identiteta
• Zaupni posrednik ugotovi, da mu A pošilja kriptogram in ga
dešifrira z njegovim ključem.
• Zaupni posrednik Z pošlje B-ju kriptogram: B, KB(A,RA,t,P, KZ(A,t,P))
• KZ(A,t,P) je besedilo A-ja, ki ga je podpisal zaupni posrednik
• S pomočjo zaupnega posrednika oz. njegovega podpisa lahko B dokaže,
da je P poslal A
Overovitev
• Digitalni podpis ali tajnost nista vedno potrebna, zadostuje overovitev
• Enosmerne funkcije – “odtis” besedila (angl. Message digest – MD)
• za dano odprto besedilo P je enostavno izračunati MD(P)
• za dani MD(P) je težko, vsaj v doglednem času določiti P
• za dani P je nemogoče najti Q, da bo MD(P) = MD(Q)
• majhna sprememba P-ja povzroči veliko spremembo MD(P)
A
P, DA(MD(P))
B
• Overovitev v sistemu z javnim ključem
• Če tretji ponaredi P, B lahko preveri verodostojnost preko MD(P)
• Znane enosmerne funkcije v uporabi MD5, SHA-1
Potrdila
• V sistemih z javnim ključem je rešen problem distribucije ključev,
ne pa tudi problem zaupanja v dejansko identiteto pošiljatelja.
• Potreben je zaupnik, ki izdaja potrdila (jamstva) za istovetnost javnih ključev.
• Skratka, bistvena naloga zaupnika je jamstvo, da dotični javni ključ pripada
dani (pravi) osebi.
• Vzemimo, da želi B zaupno komunicirati z A-jem in drugimi uporabniki.
• B zato predloži svoj javni ključ KB zaupniku v potrditev
• Zaupnik izda potrdilo (certifikat), s katerim jamči, da javni ključ KB pripada
B-ju, identiteto B-ja (npr. Njegovo ime), in odtis potrdila, podpisanega z
zaupnikovim tajnim ključem.
• Če A komunicira z B-jem, lahko preko preverjanja potrdila ugotovi
istovetnost B-ja. Odtisa potrdila se ne da podtakniti.