НФТИНИ

Национална федерация Техническа индустрия, Наука, Информатика
твоят синдикален инструмент

Цифрово шифроване и подписване

GnuPG (GPG) е Свободен софтуер за цифрово шифроване, разшифроване, подписване и проверка на цифровите подписи. Последното позволява да се удостовери автентичността (произход от когото очакваш) и интегритетът (липса на последващи промени) на подписаните файлове. Ако дори само един символ не съвпада, ще бъде изведен отрицателен криптографски отговор и за теб ще бъде ясно, че файловете са били променени (умишлено или случайно, например поради грешка при копирането); или не са подписани от когото очакваш.

Всичко тръгва от т.нар. „Асиметрично шифроване“ (Asymmetric Encryption), което разчита на двойка иманентно свързани шифровъчни ключове – „публичен“ и „частен“. Първият от тези ключове е публично известен, а вторият се пази от притежателя му в дълбока тайна. „Публичният“ ключ може да шифрова съдържание, но не може да го разшифрова. „Частният“ ключ обратно – може да разшифрова съдържание, което е шифровано с „публичния“ ключ, но може още нещо – да подпише определено съдържание. Автентичността и интегритетът на положения цифров подпис след това може да се проверява от всеки, който притежава копе от „публичния“ ключ, иманентно свързан с използвания за подписването „частен“ ключ.

Самият цифров подпис представялва поредица от изглеждащи като „безразборни“ символи, които се явяват сложна криптографска производна от символите в „частния“ ключ и символите в подписания файл. С помощта на „публичния“ ключ може да бъде осъществена криптографска проверка за това дали символите в цифровия подпис са наистина производна от „частния“ ключ и от символите в проверявания файл. Ако всичко съвпадне, ще бъде изведен положителен криптографски отговор и за теб ще бъде ясно, че файлът е точно подписаният от притежателя на „частния“ ключ, иманентно свързан с използвания за проверката „публичен“ ключ.

Възниква въпросът – Как да се удостовери, че „публичният“ ключ и иманентно свързаният с него „частен“ ключ принадлежат именно на този, на когото се доверяваш?

Частично решение представляват т.нар. Доставчици на удостоверителни услуги, които съгласно действащата нормативна уредба поддържат удостоверяващи списъци с „публични“ ключове и надеждно установените идентификационни данни на техните притежатели. Недостатък в тази система е, че Доставчикът задължително създава двойката иманентно свързани шифровъчни ключове при себе си; нямаш технологична гаранция, че твоят „частен“ ключ е бил заличен необратимо от базите с данни на Доставчика, след като е бил инсталиран на твоето средство за цифрово подписване. Ето защо ние предпочитаме да създаваме нашите шифровъчни ключове сами.

Още преди да съществуват нормативно регулирани Доставчици на удостоверителни услуги, привържениците на цифровата криптография са създали и поддържат т.нар. „Мрежа на доверието“ (Web of Trust). Това е система от публично достъпни бази с данни, откъдето можеш да свалиш копие от интересуващ те „публичен“ ключ; и механизъм на взаимно потвърждаване, при който можеш да провериш дали за интересуващия те „публичен“ ключ е потвърдено (от източници, на които вярваш), че действително принадлежи на този, на когото искаш да се довериш.

За да може да се разграничи един „публичен“ ключ от друг (което не е удобно да се направи „с просто око“, тъй като всичките си приличат – представляват файлове с понякога хиляди изглеждащи като „безразборни“ символи), се използва т.нар. „Идентификатор“ (Fingerprint). „Идентификаторът“ представлява сложна криптографска производна (в случая от интересуващия те „публичен“ ключ), по която можеш да провериш дали сваленият от публично достъпните бази с данни (или откъдето и да било другаде) „публичен“ ключ е точно този, който те интересува.

„Идентификаторът“ на един „публичен“ ключ е напълно различен от този на който и да било друг „публичен“ ключ; и дори само един символ от „публичния“ ключ да бъде променен, ще бъде извлечен напълно различен „идентификатор“. Въпреки последното обаче, трябва щателно да проверяваш всичките 40 символи в „идентификатора“ – защото съществуват (макар и много редки) случаи на частично съвпадащи „идентификатори“.

„Идентификаторът“ на нашия „публичен“ ключ е този:

AE06191DE7B72F74ACE2BB257B62D2A7D14C089B

Най-проститят начин да се убедиш, че тъкмо този „идентификатор“ съответства на нашия „публичен“ ключ, е като се свържеш с нас по независим канал и получиш потвърждение за неговата автентичност и интегритет. Друг начин е да потърсиш в „Мрежата на доверието“ потвърждения от източници, на които вярваш. За тази цел трябва да познаваш достатъчно голям брой потребители, които се занимават с криптография и потвърждават автентичността и интегритета на интересуващите те „публични“ ключове.

Нашата двойка „асиметрични“ ключове за (раз)шифроване и цифрово подписване е създадена със споменатия по-горе софтуер GnuPG, който позволява и криптографска проверка на автентичността и интегритета на подписаните файлове. Това е Свободен софтуер, който можеш да свалиш, да инсталираш на своя компютър и да ползваш за своите нужди, без да искаш разрешение от някого и без да дължиш каквото и да било.

Държим толкова много на Свободния софтуер, защото само той позволява да проучваш начина му на функциониране и да го променяш, ако не отговаря на нуждите ти; или да възложиш на твой доверен специалист да направи това за теб. Следователно само Свободният софтуер предоставя действителни технологични гаранции за това, че работи точно така, както се твърди – защото всеки може да провери (или да възложи да бъде проверено) дали в него няма вградени някакви „Задни врати“ (Backdoors); и само Свободният софтуер предоставя действителни технологични гаранции за това, че потребителят няма да бъде поставен в зависимост от конкретна разработваща компания, която единствена има право да знае как функционира софтуерът и единствена има право да го променя – защото всеки програмист (включително ти или твоят доверен програмист) има право да преработи софтуера така, както желаеш.

Ето защо – за да разчиташ на действителни технологични гаранции за начина на функциониране на софтуера, трябва да ползваш Свободния софтуер. Продукти като Windows, MacOS, iOS и дори Android не са свободни – програмният код при тях е скрит (изцяло или отчасти), не може да бъде подложен на независима проверка и не може да бъде променян съгласно нашите нужди (освен ако разработващата компания не реши да го направи). Така Несвободният софтуер прави потребителите зависими от разработващата компания и ги оставя да се надяват, че дадените обещания за начина на функциониране на софтуера ще бъдат спазени – като ги лишава от всякакви технологични гаранции за това.

Описаният проблем ни кара да предпочитаме да се доверяваме на Свободния софтуер – както за нашите операционни системи, така и за потребителските софтуерни модули (включително тези, с които подписваме цифрово и проверяваме положените цифрови подписи). Сред предпочитаните от нас Свободни операционни системи (в които са вградени всичките необходими приложения за повечето потребители) можем да посочим Trisquel, Parabola, Dragora, gNewSense. Всички те по нищо не отстъпват на своите несвободни алтернативи, дори напротив!

Съществуват много несвободни софтуерни приложения, които можеш да закупиш и използваш за криптографска проверка на автентичността и интегритета на интересуващите те цифрово подписани файлове. Ние обаче не можем да гарантираме достоверността на такава проверка – единствено можеш да разчиташ на дадените обещания от разработващата компания. Ако въпреки това решеш да ползваш Несвободен софтуер и се нуждаеш от помощ, следвай инструкциите на твоя системен администратор.

Ако работиш със Свободен софтуер (или решиш да пробваш такъв софтуер от „жив“ носител (CD, DVD, Flash-памет или SD-карта), без да го инсталираш), можеш да последваш дадените по-долу указания, като отвориш Терминала (Terminal) на избраната от теб Свободна операционна система и въвеждаш дадените прости текстови команди.

  • Свали цифрово подписания файл и свързания с него цифров подпис в избрана от теб директория.

  • Свали от „Мрежата на доверието“ нашия „публичен“ шифровъчен ключ – с тази команда:

    gpg --recv-keys AE06191DE7B72F74ACE2BB257B62D2A7D14C089B

    (копирай внимателно, постави в Терминала и натисни [Enter])

  • Извърши самата проверка – с тази команда:

    gpg --verify /адрес/директория/файл

    (ако Терминалът се намира в директорията, където си поставил/а проверявания файл и цифровия подпис, не е необходимо да посочваш адрес и директория; въведи само 'файл')

    Ще бъде изведено предупреждение, че няма доказателства използваният за подписването „частен“ ключ да принадлежи наистина на този, на когото се доверяваш. В допълнение към това при положителен криптографски отговор ще бъде изведено съобщение Good signature (Добър подпис); или при отрицателен криптографски отговор – съобщение Bad signature (Лош подпис). И в двата случая ще бъдат изведени данните, които притежателят на двойката „асиметрични“ ключове е въвел при тяхното създаване. В нашия случай тези данни изглеждат така:

    "www.Advocati.org (адвокатска тайна) <advocati@gmx.com>"

    Тези данни обаче не са надеждни – всеки може да създаде двойка „асиметрични“ ключове и да впише същите данни (за разлика от данните при Доставчиците на удостоверителни услуги, които се извличат надеждно). Поради това не следва да се доверяваш на такива данни – вместо това е добре да извлечеш „идентификатора“ на интересуващия те „публичен“ ключ и да потърсиш начин той да бъде потвърден от притежателя му.

  • Можеш да извлечеш „идентификатора“ на инсталиран в твоята система „публичен“ ключ с тази команда:

    gpg --fingerprint данни

    (където под 'данни' разбираме каквато и да е разпознаваема част от данните, записани за интересуващия те „публичен“ ключ)

Независимо, че работата с текстови команди към компютъра на пръв поглед изглежда трудна и предназначена само за програмисти, в действителност това е най-прекият и най-лесният начин да накараш системата да направи това, което желаеш. Ако опиташ, няма да съжаляваш!

(обратно към файловете за сваляне)

Партньори на НФТИНИ: