Кіріспе

OpenPGP және S/MIME стандарттарының толыққанды іске асырылуы

GNU Privacy Guard (GnuPG немесе GPG) – Symantec компаниясының PGP криптографиялық бағдарламалық кешеніне қолданылатын тегін бағдарламалық қамтамасыз етудің орны. Бұл бағдарламалық қамтамасыз ету RFC 4880 стандартына сәйкес келеді, ол IETF стандарттарының OpenPGP-нің сипаттамасын қамтиды. PGP-нің заманауи нұсқалары GnuPG және басқа OpenPGP стандартына сәйкес келетін жүйелермен үйлесімді. Дегенмен, 2024 жылдың сәуір айынан бастап GnuPG OpenPGP-нің жаңа редакциясына және осылайша оған сәйкес болатын басқа да іске асыруларға сәйкес болмай қалуы күтілуде. GnuPG GNU жобасының бөлігі болып табылады және 1999 жылы Германия үкіметінен маңызды қаржылық қолдау алды.

Шолу

GnuPG – гибридті шифрлау бағдарламалық жасақтамасы, себебі ол жылдамдық үшін дәстүрлі симметриялық кілт криптографиясының және кілт алмасуды жеңілдету үшін ашық кілт криптографиясының үйлесімін пайдаланады, әдетте, қабылдаушының ашық кілтін қолданып, бір рет қана қолданылатын сессия кілтін шифрлайды. Бұл жұмыс режимі OpenPGP стандартының бөлігі болып табылады және PGP-нің бастапқы нұсқасынан бері қолданылып келеді. GnuPG 1.x сериясы біріктірілген криптографиялық кітапхананы пайдаланады, ал GnuPG 2.x сериясы оны Libgcrypt-пен алмастырады. GnuPG GnuPG пайдаланушылары жеке-жеке жасайтын асимметриялық кілттер жұбын қолданып хабарламаларды шифрлайды. Нәтижесінде алынған ашық кілттерді басқа пайдаланушылармен түрлі жолдармен алмасуға болады, мысалы, интернет кілт серверлері арқылы. Оларды әрқашан сақтықпен алмасу керек, себебі зақымдалған ашық кілттің «иесі» туралы сәйкестік ақпаратын бұрмалау арқылы жеке басын ұрлауға болады. Хабарламаға криптографиялық цифрлық қолтаңба қоюға да болады, сонда егер белгілі бір сәйкестікке сенім артылған болса, хабарламаның толықтығы мен жіберушісін тексеруге болады. GnuPG симметриялық шифрлау алгоритмдерін де қолдайды. 2.1 нұсқасынан бастап GnuPG әдепкі бойынша AES симметриялық алгоритмін пайдаланады, ал бұрынғы нұсқаларда CAST5 қолданылған. GnuPG патенттелген немесе қандай да бір жолмен шектелген бағдарламалық жасақтаманы немесе алгоритмдерді қолданбайды. Оның орнына GnuPG патенттелмеген басқа да алгоритмдерді пайдаланады. Ұзақ уақыт бойы ол PGP-де қолданылатын IDEA шифрлау алгоритмін қолдамады. Бірақ, IDEA-ны GnuPG-де плагин арқылы пайдалануға болады, алайда IDEA патенттелген елдерде кейбір жағдайларда лицензия талап етілуі мүмкін. 1.4.13 және 2.0.20 нұсқаларынан бастап GnuPG IDEA-ны қолдайды, себебі IDEA-ның соңғы патенты 2012 жылы тоқталды. IDEA қолдауының мақсаты – «ескі деректерді шифрлауға тырысатын немесе кілттерді PGP-ден GnuPG-ге көшіру туралы сұрақтардан арылу», сондықтан оны тұрақты пайдалану ұсынылмайды. GnuPG 2.x-тің жаңа нұсқалары («заманауи» және қазір ескірген «тұрақты» сериялары) Libgcrypt (оның криптографиялық кітапханасы) ұсынатын көптеген криптографиялық функциялар мен алгоритмдерді, соның ішінде эллипстік қисық криптографиясын (ECDH, ECDSA және EdDSA) қолдайды. Бірінші өндірістік нұсқасы, 1.0.0 нұсқасы 1999 жылдың 7 қыркүйегінде, алғашқы GnuPG нұсқасынан (0.0.0 нұсқасы) шамамен екі жыл өткен соң шығарылды. 2014 жылдың 7 ақпанында GnuPG-нің жаппай қаржыландыру шарасы аяқталды, нәтижесінде жаңа веб-сайт пен инфрақұрылымды жақсарту үшін 36 732 евро жиналды.

Филиалдар

2021 жылдың қазан айында 2.3.3 нұсқасынан бастап тұрақты GnuPG 2.3 шығарылғаннан бері GnuPG-дің үш тұрақты тармағы белсенді түрде қолдау көрсетіледі: «тұрақты тармақ», ол қазіргі уақытта (2021 жылға қарай) 2.3 тармағы. «Ұзақ мерзімді қолдау (LTS) тармағы», ол қазіргі уақытта (2021 жылға қарай) 2.2 тармағы (бұрынғы 2.0 тармағымен салыстырғанда «заманауи тармақ» деп аталатын). Ескі «мұра тармақ» (бұрын «классикалық тармақ» деп аталатын), ол 1.4 тармағы болып қала береді. GnuPG 2.3 нұсқасынан бұрын GnuPG-дің екі тұрақты тармағы белсенді түрде қолдау көрсетілді: «Заманауи» (2.2), эллиптикалық қисық криптографиясы сияқты көптеген жаңа мүмкіндіктері бар, бұрынғы «тұрақты» (2.0) тармағымен салыстырғанда, ол 2017 жылдың 28 тамызында GnuPG 2.2.0 нұсқасының шығуымен алмастырылды. Ол 2014 жылдың 6 қарашасында жарық көрді. «Классикалық» (1.4), өте ескі, бірақ әлі де қолдау көрсетілетін дербес нұсқа, ескірген немесе кіріктірілген платформалар үшін ең қолайлы. Бастапқыда 2004 жылдың 16 желтоқсанында шығарылды. Бір уақытта GnuPG 2.x нұсқаларын (мысалы, 2.2 және 2.0 тармақтарынан) орнату мүмкін емес. Дегенмен, кез келген GnuPG 2.x нұсқасымен бірге «классикалық» GnuPG нұсқасын (яғни 1.4 тармағынан) орнатуға болады. Бұл тармақтың қолдау көрсету мерзімі 2017 жылдың 31 желтоқсанында аяқталды; оның соңғы нұсқасы 2017 жылдың 29 желтоқсанында шығарылған 2.0.31. GnuPG 2.0 нұсқасынан бұрын барлық тұрақты шығарылымдар бір тармақтан шығарылды; яғни 2006 жылдың 13 қарашасына дейін бірнеше шығарылым тармақтары параллель түрде қолдау көрсетілмеді. Бұрынғы, реттілікпен (1.4-ке дейін) шыққан тармақтар: 1.2 тармағы, бастапқыда 2002 жылдың 22 қыркүйегінде шығарылды, соңғы нұсқасы 1.2.6 2004 жылдың 26 қазанында шығарылды. 1.0 тармағы, бастапқыда 1999 жылдың 7 қыркүйегінде шығарылды. (GnuPG 2.3.0 нұсқасынан бұрын, жұп емес кіші нұсқа нөмірі бар тармақтар (мысалы, 2.1, 1.9, 1.3) «+0.1» жоғары нұсқа нөмірі бар тұрақты шығарылым тармағына (мысалы, 2.2, 2.0, 1.4) әкелетін даму тармақтары болды; сондықтан 2.2 және 2.1 тармақтары «заманауи» сериясына, 2.0 және 1.9 «тұрақты» сериясына, ал 1.4 және 1.3 тармақтары «классикалық» сериясына жатады. GnuPG 2.3.0 нұсқасының шығуымен бұл номенклатура «заманауи» сериясынан «тұрақты» және «LTS» тармақтарынан, сондай-ақ 1.4 соңғы қолдау көрсетілетін «классикалық» тармағынан тұратын болып өзгертілді. Сондай-ақ, жұп немесе тақ кіші нұсқа нөмірлері енді тұрақты немесе даму шығарылым тармағын көрсетпейді.)

Платформалар

Негізгі GnuPG бағдарламасы командалық желі интерфейсімен жұмыс істейді, бірақ оны графикалық пайдаланушы интерфейсімен қамтамасыз ететін әртүрлі қосымша бағдарламалар бар. Мысалы, GnuPG шифрлауы KMail және Evolution графикалық электрондық пошта клиенттеріне интеграцияланған, олар KDE және GNOME-дың ең танымал Linux десктоптарында қолданылады. Сондай-ақ, GNOME үшін Seahorse, KDE үшін KGPG және Kleopatra сияқты графикалық GnuPG интерфейстері де бар. GPGTools шифрлау және кілтті басқаруды операциялық жүйеге интеграциялауға, сондай-ақ macOS үшін орнату пакеттері арқылы GnuPG орнатуға арналған бірнеше қосымша бағдарламаларды ұсынады. GPG Suite барлық қатысты OpenPGP қолданбаларын (GPG Keychain), плагиндерді (GPG Mail) және тәуелділіктерді (MacGPG) GPG қызметтерімен (macOS Services мәзіріне интеграциялау) бірге орнатады, бұл GnuPG негізіндегі шифрлауды пайдалануға мүмкіндік береді. GnuPG орнатылған және конфигурацияланған кезде Psi және Fire сияқты дереу хабар алмасу бағдарламалары хабарларды автоматты түрде қорғай алады. Horde сияқты веб-бағдарламалар да оны пайдаланады. Enigmail кросс-платформалық кеңейтуі Mozilla Thunderbird және SeaMonkey үшін GnuPG қолдауын қамтамасыз етеді. Сол сияқты, Enigform Mozilla Firefox үшін GnuPG қолдауын ұсынады. FireGPG 2010 жылдың 7 маусымында қолданудан тоқтатылды. 2005 жылы g10 Code GmbH және Intevation GmbH Gpg4win бағдарламалық жиынтығын шығарды, ол Windows үшін GnuPG, GNU Privacy Assistant және Windows Explorer және Outlook үшін GnuPG плагиндерін қамтиды. Бұл құралдар стандартты Windows орнатушысына жиналған, бұл GnuPG-ді Windows жүйелерінде орнатуды және пайдалануды жеңілдетеді.

Қауіпті жерлер

OpenPGP стандарты хабарларды цифрлық қолтаңбалаудың бірнеше әдістерін анықтайды. 2003 жылы GnuPG-ге енгізілген өзгерістердің бірінде осы әдістердің бірін тиімдірек ету мақсатында жасалған қатеден кейін қауіпсіздіктің осал тұсы пайда болды. Ол GnuPG (1.0.2-ден 1.2.3-ге дейін) кейбір нұсқаларында ғана хабарламаларды цифрлық қолтаңбалаудың бір әдісіне әсер етті, ал кілт серверлерінде осындай кілттер 1000-нан аз болды. Көптеген адамдар бұл әдісті қолданған жоқ және кез-келген жағдайда оны пайдаланудан аулақ болды, сондықтан келтірілген зиян (болған жағдайда, себебі бұл туралы хабарлама түспеген) минималды болды. Бұл әдіске қолдау осы ашылудан кейін шығарылған GnuPG нұсқаларынан (1.2.4 және одан кейінгі) алынып тасталды. 2006 жылдың басында тағы екі осалдық анықталды: біріншісі, GnuPG-ні қолтаңбаны тексеру үшін скрипт ретінде пайдалану жалған оң нәтижелерге әкелуі мүмкін, екіншісі, MIME емес хабарламалар цифрлық қолтаңбамен қамтылмаған деректердің енгізілуіне осал болды, бірақ бұл деректер қолтаңбаланған хабарламаның бөлігі ретінде көрсетілуі мүмкін. Екі жағдайда да GnuPG-нің жаңартылған нұсқалары жарияланғанда қолжетімді болды. 2017 жылдың маусым айында Бернштейн, Брейтнер және басқалар Libgcrypt-те (CVE 2017 7526) осалдықты тапты: GnuPG қолданатын кітапхана, ол RSA 1024 кілттерін толық қалпына келтіруге және RSA 2048 кілттерінің 1/8-нен астамын қалпына келтіруге мүмкіндік берді. Бұл қосалқы арна арқылы жасалған шабуыл Libgcrypt-тің экспоненциациялау үшін жылжымалы терезелер әдісін пайдаланғандығынан туындады, бұл экспоненталық биттердің ағып кетуіне және кілттің толық қалпына келтіруіне әкелді. Тағы да, GnuPG-нің жаңартылған нұсқасы жарияланғанда қолжетімді болды. 2017 жылдың қазан айында YubiKey 4 токендерімен жасалған RSA кілттеріне әсер ететін ROCA осалдығы жарияланды, олар көбінесе PGP/GPG-мен бірге қолданылады. Көптеген жарияланған PGP кілттерінің осал екені анықталды. 2018 жылдың маусым айында SigSpoof шабуылдары жарияланды. Бұл шабуылшыға цифрлық қолтаңбаларды сенімді түрде жалғандауға мүмкіндік берді. 2021 жылдың қаңтар айында Libgcrypt 1.9.0 шығарылды, онда пайдалану оңай болатын ауыр қате табылды. 10 күннен кейін Libgcrypt 1.9.1 нұсқасында түзету шығарылды.