Цифрово шифроване и подписване
Digital encryption and signing
GnuPG (GPG) представлява Свободен софтуер за цифрово шифроване, разшифроване, подписване и проверка на цифровите подписи. Последното позволява да се удостовери автентичността (произход от когото очакваш) и интегритетът (липса на последващи промени) на подписаните файлове. Ако дори само един символ не съвпада, ще бъде изведен отрицателен криптографски отговор и за теб ще бъде ясно, че файловете са били променени (умишлено или случайно, например поради грешка при копирането); или не са подписани от когото очакваш.
Всичко тръгва от т.нар. „Асиметрична криптография“ (Asymmetric Cryptography), която разчита на двойка иманентно свързани шифровъчни ключове – 'публичен' и 'частен'. Първият от тези ключове е публично известен, а вторият се пази от притежателя му в дълбока тайна. 'Публичният' ключ може да шифрова съдържание, но не може да го разшифрова. 'Частният' ключ обратно – може да разшифрова съдържание, което е шифровано с 'публичния' ключ, но може още нещо – да подпише определено съдържание. Автентичността и интегритетът на положения цифров подпис след това може да се проверява от всеки, който притежава копе от 'публичния' ключ, иманентно свързан с използвания за подписването 'частен' ключ.
Самият цифров подпис представялва поредица от изглеждащи като „безразборни“ символи, които се явяват сложна криптографска производна от символите в 'частния' ключ и символите в подписания файл. С помощта на 'публичния' ключ може да бъде осъществена криптографска проверка за това дали символите в цифровия подпис са наистина производна от 'частния' ключ и от символите в проверявания файл. Ако всичко съвпадне, ще бъде изведен положителен криптографски отговор и за теб ще бъде ясно, че файлът е точно този и е подписан от притежателя на 'частния' ключ, иманентно свързан с използвания за проверката 'публичен' ключ.
Възниква въпросът – Как да се удостовери, че 'публичният' ключ (и следователно иманентно свързаният с него 'частен' ключ) принадлежи именно на този, на когото се доверяваш?
Частично решение представляват т.нар. Доставчици на удостоверителни услуги, които съгласно действащата нормативна уредба поддържат удостоверяващи списъци с 'публични' ключове и надеждно установените идентификационни данни на техните притежатели. Недостатък в тази система е, че Доставчикът задължително създава двойката иманентно свързани шифровъчни ключове при себе си; нямаш техническа гаранция, че твоят 'частен' ключ е наистина заличен необратимо от базите с данни на Доставчика, след като е бил инсталиран на твоето средство за цифрово подписване. Ето защо ние предпочитаме да създаваме нашите шифровъчни ключове сами.
Още преди да съществуват нормативно регулирани Доставчици на удостоверителни услуги, привържениците на цифровата криптография са създали и поддържат т.нар. „Мрежа на доверието“ (Web of Trust). Това е система от публично достъпни бази с данни, откъдето можеш да свалиш копие от интересуващ те 'публичен' ключ; и механизъм на взаимно потвърждаване, при който можеш да провериш дали за интересуващия те 'публичен' ключ е потвърдено (от източници, на които вярваш), че действително принадлежи на този, на когото искаш да се довериш.
За да може да се разграничи един 'публичен' ключ от друг (което не е удобно да се направи „с просто око“, тъй като всичките си приличат – представляват файлове с понякога хиляди изглеждащи като „безразборни“ символи), се използва т.нар. 'Идентификатор' (Fingerprint). 'Идентификаторът' представлява сложна криптографска производна (в случая от интересуващия те 'публичен' ключ), по която можеш да провериш дали сваленият от публично достъпните бази с данни (или откъдето и да било другаде) 'публичен' ключ е точно този, който те интересува.
'Идентификаторът' на един 'публичен' ключ е напълно различен от този на който и да било друг 'публичен' ключ; и дори само един символ от 'публичния' ключ да бъде променен, ще бъде извлечен напълно различен 'идентификатор'. Въпреки последното обаче, трябва щателно да проверяваш всичките 40 символи в 'идентификатора' – защото съществуват (макар и много редки) случаи на частично съвпадащи 'идентификатори'.
Най-проститят начин да се убедиш, че един 'идентификатор' наистина съответства на 'публичните' ключове на този, на когото се доверяваш, е като се свържеш с него по независим канал и получиш потвърждение за тяхната автентичност и интегритет. Друг начин е да потърсиш в „Мрежата на доверието“ потвърждения от източници, на които вярваш. За тази цел трябва да познаваш достатъчно голям брой потребители, които се занимават с криптография и потвърждават автентичността и интегритета на интересуващите те 'публични' ключове.
Нашите „асиметрични“ ключове за (раз)шифроване и цифрово подписване са създадени със споменатия по-горе софтуер GnuPG, който позволява и криптографска проверка на автентичността и интегритета на подписаните файлове. Това е Свободен софтуер, който можеш да свалиш, да инсталираш на своя компютър и да ползваш за своите нужди, без да искаш разрешение от някого и без да дължиш каквото и да било.
Държим толкова много на Свободния софтуер, защото само той позволява да проучваш начина му на функциониране и да го променяш, ако не отговаря на нуждите ти; или да възложиш на твой доверен специалист да направи това за теб. Следователно само Свободният софтуер предоставя действителни технически гаранции за това, че работи точно така, както се твърди – всеки може да провери (или да възложи да бъде проверено) дали в него няма вградени някакви „Задни врати“ (Backdoors); и само Свободният софтуер позволява всеки програмист (включително ти или твоят доверен програмист) да преработи софтуера така, както желаеш.
Съществуват много несвободни софтуерни приложения, които можеш да закупиш и използваш за криптографска проверка на автентичността и интегритета на интересуващото те цифрово подписано съдържание. Ние обаче не можем да гарантираме достоверността на такава проверка – единствено можеш да разчиташ на дадените обещания от разработващата компания, която „по търговски съображения“ укрива изходния код от потребителите и ги оставя да се надяват, че дадените обещания за начина на функциониране на софтуера ще бъдат спазени. Ако въпреки това решеш да ползваш Несвободен софтуер и се нуждаеш от помощ, следвай инструкциите на твоя системен администратор.
Ако работиш със Свободен софтуер (или решиш да пробваш такъв софтуер от „жив“ носител (CD, DVD, Flash-памет или SD-карта), без да го инсталираш), можеш да последваш дадените по-долу указания, като отвориш Терминала (Terminal) на избраната от теб Свободна операционна система и въвеждаш дадените прости текстови команди.
Свали цифрово подписаното съдържание (във вид на прост текст или обособено като отделен файл) и свързания с това съдържание цифров подпис в избрана от теб директория.
Свали от „Мрежата на доверието“ 'публичния' шифровъчен ключ, с чийто съответстващ 'частен' ключ се твърди да е подписано съдържанието – с тази команда:
(копирай внимателно, постави в Терминала и натисни
[Enter]
)gpg --recv-keys Идентификатор
(където под '
Идентификатор
' разбираме 40-символното обозначение на интересуващия те шифровъчен ключ).< /p>Извърши самата проверка – с тази команда:
gpg --verify /адрес/директория/файл
(ако Терминалът е отворен в директорията, където си поставил/а проверявания файл и цифровия подпис, не е необходимо да посочваш адрес и директория; въведи само '
файл
')Ще бъде изведено предупреждение, че няма доказателства използваният за подписването 'частен' ключ да принадлежи наистина на този, на когото се доверяваш. В допълнение към това при положителен криптографски отговор ще бъде изведено съобщение
Good signature
(Добър подпис); или при отрицателен криптографски отговор – съобщениеBad signature
(Лош подпис). И в двата случая ще бъдат изведени данните, които притежателят на двойката „асиметрични“ ключове е въвел при тяхното създаване.Тези данни обаче не са надеждни – всеки може да създаде двойка „асиметрични“ ключове и да впише същите данни (за разлика от данните при Доставчиците на удостоверителни услуги, които се извличат надеждно). Поради това не следва да се доверяваш на такива данни – вместо това е добре да извлечеш 'идентификатора' на интересуващия те 'публичен' ключ и да потърсиш начин той да бъде потвърден от притежателя му.
Можеш да извлечеш 'идентификатора' на инсталиран в твоята система 'публичен' ключ с тази команда:
gpg --fingerprint данни
(където под '
данни
' разбираме каквато и да е разпознаваема част от данните, записани за интересуващия те 'публичен' ключ).
Независимо, че работата с текстови команди към компютъра на пръв поглед изглежда трудна и предназначена само за програмисти, в действителност това е най-прекият и най-лесният начин да накараш системата да направи това, което желаеш. Ако опиташ, няма да съжаляваш!