PGP е технология за предаване на криптирани съобщения, като e-mail-и например. Използва се най-вече при Web of trust метода на удостоверяване.
Какъв действа:
- имаме изходното съобщение, което трябва да криптираме и предадем на получателя.
- генерира се рандъм ключ, с който съобщението се криптира.
- отделно, трябва да имаме public ключа на получателя, с който да криптираме и нашият рандъм ключ. Защо да криптираме нашият рандъм ключ? Защото ако го изпратим некриптирарн, някой прехващач просто ще си го вземе и ще ни декриптира съобщението. Все едно да си заключа апартамента и да закача ключа на гвоздей до вратата.
- така, вече имаме две криптирани неща – самото съобщение, криптирано с рандъма,
и рандъма, криптиран с public-a на получателя. - изпращаме на получателя тези две неща като едно съобщение
- получателят като ги получи, декриптира първо рандъма, използвайки неговият private ключ.
- като има декриптиран рандъма, може да декриптира и самото съобщение, криптирано с рандъма.
Добър въпрос би бил, защо ни е този рандъм ключ, не може ли просто да криптираме съобщението с public-а на получателя и после той да си го декриптира с неговия private ключ?
Не знам, най-вероятно за да може всяко съобщение (e-mail например) да е криптирано по уникален начин, с уникален рандом ключ, а не всеки път – по един и същ начин.
Важно е, public ключа, с който криптираш и изпращаш, да е сигурно, че принадлежи наистина на този, на който изпращаш, а не просто, дават ти някакъв public и хайде кодирай и пращай. За това вече идва пак добрият стар Chain of trust.