МАТЕРИАЛИ

Една статия в ProPublica спаси от прекратяване проекта за надеждно шифроване GnuPG


Софтуерът Gnu Privacy Guard (GnuPG), представляващ свободна имплементация на стандарта OpenPGP, стартира своето развитие през през 1997 г. благодарение на немския програмист Вернер Кох (Werner Koch), който поддържа и осъвременява софтуера през годините от дома си с помощта на доброволни и платени сътрудници. GnuPG представлява инструмент от командния ред, който може да бъде интегриран лесно в други приложения и представлява един от най-мощните инструменти за криптиране и цифрово подписване на съдържание, достъпни за свободно използване от потребителите.

Във времето проектът е подкрепян основно от дарения, които обаче започват малко по малко да намаляват и накрая спират напълно. Липсата на финансиране принуждава Кох да се замисли през лятото на 2013 г. за прекратяване поддръжката на проекта, но тъкмо тогава общественото пространство бива взривено от разкритията на Едуард Сноудън – бивш сътрудник на американската Агенция за национална сигурност (АНС) – относно осъществяваното от американските тайни служби повсеместно следене. Между другото става ясно, че Сноудън е шифровал комуникацията си със своите сътрудници във връзка с изнасянето и огласяването на информацията именно чрез софтуера GnuPG, като е подпомогнал многобройни журналисти и дисиденти по света да започнат да използват GnuPG от командния ред в GNU/Linux чрез кратко потребителско упътване.

„Осъзнах, че не е сега времето за отказ от проекта.“ – споделя Кох на официалната страница на GnuPG и прави още един опит да финансира GnuPG чрез кампания за набиране на дарения. Кампанията стартира в началото на 2014 г., но до края на месец ноември постъпват едва €7'000 от необходимите €120'000. Това принуждава Кох да вземе решение за прекратяване на поддръжката за GnuPG. По този въпрос един от бившите вече сътрудници на проекта публикува статия в електронното издание ProPublica. Благодарение на тази статия се надига внезапна вълна от дарения, които само за един ден надхвърлят необходимите €120'000. Това спасява GnuPG и му позволява да продължи своето развитие.

Обстоятелството, че GnuPG се разпространява под свободен лиценз и работи директно от командния ред на GNU/Linux операционните системи, прави шифровъчния софтуер изключително надежден и лесен за имплементиране в разнообразни приложения за сигурност на информацията – като например популярната електронна поща GPGTools, Enigmail, GPG4Win и други. „Ако има един кошмар, от който ние се страхуваме – заявява Nicolai Josuttis, разработчик на Enigmail, – това е опасността Вернер Кох вече да не е на наше разположение. (...) Срамота е, че той е сам и е в такова лошо финансово състояние!“

Сериозното криптиране на съдържание в електронна среда стана достъпно за обикновените потребители през 1991 г., когато Филип Цимерман (Philip Zimmermann) пусна в internet първата достъпна за обикновени потребители програма за надеждно шифроване – Pretty Good Privacy (PGP). До тогава подобни технологии са привилегия само на правителствени и големи корпоративни служби, разполагащи с мощни компютри и сложно софтуерно осиуряване. Цимерман е привлечен заради дързостта си към наказателна отговорност – за която цел разпространената от него шифровъчна програма е приравнена на оръжие и следователно – на нарушение по американското законодателство за контрол върху оръжието и стоките с военно приложение.

Кох се заема със своя проект, вдъхновен от лекция на идеолога на свободния софтуер Ричард Столман от 1997 г. в Германия, където Столман насърчава присъстващите да напишат своя собствена версия на забранената като оръжие PGP и се обръща към Цимерман с думите: „Ние не можем да изнесем тази програма [от САЩ], но ако напишете такава с еквивалентни функции, ние ще можем да я внасяме свободно [в САЩ].“ Тогава Кох решава да се заеме със задачата и създава GnuPG (игра на думи от наименованието на програмата на Цимерман PGP и от наименованието на стартирания от Столман проект GNU), която – тъй като е създадена в Европа – не може да бъде обхваната от американското законодателство за неразпространение на „военни“ технологии и започва да се споделя по целия свят.

 
В командния ред GnuPG може да се стартира за създаването на нов криптоключ с тази команда:
 
user@computer:~$ gpg --gen-key

В приложения пример приемаме, че работим от акаунт 'user' на компютър с наименованието 'computer' без да сме изискали административни примилегии (видно от символа '$').

След подаване на командата 'gpg --gen-key' програмата GnuPG стартира диалог, изискващ от потребителя да избере вида на бъдещия криптоключ, неговата дължина (до 4'096 бита), срок на валидност, идентификация (име/наименование на собственика, пояснителна бележка и e-mail за контакт) и парола за разрешаване ключът да бъде използван.

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

След като двойката ключове е създадена, системата я представя с нейната идентификация (ID) от 8 символа (примерно 'EDFD36D3'), с нейния цифров отпечатък (Key fingerprint) от 10 групи по 4 символа (примерно 'AE2C 923F 7B45 1EA2 2462  A593 6C76 793F EDFD 36D3') и въведените от потребителя данни (примерно 'www.SwitchFree.eu (Secured Information) <info@switchfree.eu>'). Въведените от потребителя данни се предават винаги заедно с „публичния“ ключ, за да може всеки от неговите получатели да се ориентира чий е този ключ. Идентификацията и цифровият отпечатък служат за недвусмислено отграничаване на криптоключа от който и да било друг криптоключ.

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

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

 
user@computer:~$ gpg -a --export Ключ

На мястото на израза 'Ключ' трябва да се запише който и да било от идентификаторите на конкретния криптоключ, позволяващ недвусмисленото му отграничаване от всички други криптоключове, записани в системата. В резултат от командата направо в конзолата се зарежда сравнително дълъг и неразбираем текст от следния вид:
 
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.10 (GNU/Linux)

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
Cw8iaXD1re4zm8RrTyDuvXm5jON9u8Hxq/rA
=AnMK
-----END PGP PUBLIC KEY BLOCK-----

Така изглежда един „публичен“ ключ (това конкретно е нашият GPG-ключ за шифрована комуникация с екипа на www.SwitchFree.eu). Много е важно нито един символ да не бъде променян или разместван, за да може ключът да работи правилно! „Публичният“ ключ може да се споделя свободно с трети страни, желаещи да изпращат шифровано съдържание във вид, достъпен само за притежателя на „частния“ ключ – чрез простото му копиране като обикновен текст или оформен като текстови файл с наименование от типа 'Ключ.pub'.

Потребителят може да въвежда в системата получаваните „публични“ ключове от други потребители с тази команда:
 
user@computer:~$ gpg -a --import Ключ.pub

На мястото на израза 'Ключ.pub' трябва да се запише наименованието на получения „публичен“ ключ (с неговото точно местонахождение в компютъра – примерно '/home/user/Desktop/Ключ.pub'). Системата включва посочения „публичен“ ключ в номенклатурата от „публични“ ключове, с които потребителят разполага и му позволява занапред да шифрова с него съдържание, което ще може да бъде разшифровано само от притежателя на „частния“ ключ, съответстващ на този „публичен“ ключ.

Потребителят може да прегледа какви „публични“ ключове има на своя компютър с тази команда:

 
user@computer:~$ gpg -k

Какви „частни“ ключове има на компютъра може да се прегледа с почти същата команда (главно 'K'):
 
user@computer:~$ gpg -K

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

Съдържанието на определен файл може да се шифрова с тази команда:
 
user@computer:~$ gpg -e Файл

На мястото на израза 'Файл' трябва да се запише наименованието на файла, който ще бъде шифрован (с неговото точно местонахождение в компютъра). Системата изисква да бъде въведен идентификатор за „публичния“ ключ, с който ще бъде шифрован файлът. След указване на идентификатора системата създава нов шифрован Файл.gpg в директорията на първоначалния нешифрован файл.

Определено съдържание може да се шифрова и направо като прост текст:

 
user@computer:~$ gpg -ae

Този път, вместо да бъде посочен съществуващ файл, е необходимо да се посочи идентификатор на избрания криптоключ и след това – да се въведе директно в конзолата самото съдържание за шифроване. След като бъде въведен текстът, се подава клавишна команда [ctrl] + [D] – системата този път не създава нов Файл.gpg, а шифрова въведеното съдържание и го изобразява направо в конзолата като прост текст (подобен на цитирания по-горе „публичен“ ключ на www.SwitchFree.eu). Предимство на този метод е, че съдържанието изобщо не бива записвано в нешифрован вид на компютъра – като мярка срещу евентуално компрометиране на системата и установяване какво е било записано в нея. Шифрованото като прост текст съдържание може да се публикува в internet (както сме постъпили по-горе) или да се изпраща с e-mail или по всякакъв друг начин, без прикачени файлове. За да може да се разшифрова съдържанието (както стана дума по-горе), е важно нито един символ да не бъде променян или разместван.

Разшифроването на Файл.gpg е възможно с тази команда:

 
user@computer:~$ gpg Файл.gpg

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

Ако трябва да бъде разшифровано съдържание, което е шифровано като прост текст, е достатъчно да се подаде команда gpg в конзолата и да се копира шифрованото съдържание. След подаване на клавишната команда [ctrl] + [D] и въвеждане на парола за съответния „частен“ ключ системата изобразява съдържанието в разшифрован вид, като пак не е задължително това съдържание да бъде записвано в незащитен вид. В случай, че системата не е компрометирана, това е възможно най-високото ниво на сигурност, постижимо с няколко прости инструкции като горните.

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

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

 
back to top