драўляны зэдлік   С.Б.Е.Ў.К.: чытай, што пішуць
 


Артыкулы
 
level up!

PGP ад Ё да Ы    // 2004-01-30

Ахтунг! Ня гледзячы на тое, што гэты артыкул стаў дыступны толькі зараз, апошнія зьмены былі зробленыя ў студзені 2004 (мяркуючы па датах у атрыбутах файлаў), а таму зьвесткі адносна вэрсіяў праграмаў могуць быць састарэлымі.

Частка 1, тэарытычная

RSA-крыптасыстэма, названая пачатковымі літарамі прозьвішчаў ейных стваральнікаў, зьяўляеца асымэтрычнай сыстэмай шыфраваньня. Гэта значыць, што для шыфраваньня й дэшыфраваньня выкарыстоўваюцца розныя ключы. Закрытым можна толькі расшыфраваць, а адкрытым — толькі зашыфраваць паведамленьне.

Як гэта усё працуе?

Уладальнік крыптасыстэмы генэруе два вялікія простыя лікі. Які лік лічыць вялікім — іншая праблема. Але, напрыклад, у ЗША вялікі лік — ад тысячы знакаў. І крыптасыстэму вытворчасьці ЗША мы й будзем выкарыстоўваць.

Пасьля генэрацыі гэтыя два лікі памнажаюцца адзін на аднаго. Атрымліваецца новы лік, што завецца модулем. Лікі тыя — сакрэтныя, а модуль — не. Справа ў тым, што на сёньняшні дзень не існуе альгарытма, акрамя проста як паспрабаваць усе лікі, раскласьці вялікі лік на простыя дзельнікі. Фішка ў тым, што здабытак двух вялікіх простых лікаў выглядае прыблізна як яшчэ большы просты лік, раскласьці на дзельнікі які за палінаміяльны час немагчыма. Раскласьці лік на дзельнікі — г.зн. фактарызаванць яго. Маем M = p*q, дзе p, q — згенэраваныя простыя лікі, М — іхны здабытак. Зразумела, што ведаючы p, q можна падлічыць, колькі будзе f(M) = (p-1)*(q-1), а ведаючы толькі М зрабіць гэта будзе надзвычай цяжка.

М лічыцца несакрэтным лікам, p, q — сакрэтныя лікі.

Далей выбіраецца выпадковым чынам закрыты ключ d. Адкрыты ключ с выбіраецца так, каб (c*d) (mod f(M)) = 1, дзе mod — апэратар, аналягічны аднайменнаму ў Паскалі.

Паведамленьнем лічыцца лік а, такі, што 0 < a < M. Калі a > M, ён дзеліцца на часткі.

Шыфраваньне адбываецца так:

a -> ac (mod M).

Тое, што атрымалася — ac (mod M) — шыфраванае паведамленьне.

Дэшыфраваць можна такім чынам:

(ac)d (mod M) = a1+k*f(M) (mod M) = a*(af(M))k (mod M).

af(M) па тэарэме Айлера роўна 1, таму a*(af(M))k (mod M) = a (mod M) = a (бо 0 > a > M)

Таксама існуе вялікая колькасаць акалічнасьцяў, але табе, напэўна, яны нецікавыя. Таму я раскажу толькі пра 2, на мой погляд самыя значныя:

• чым большыя простыя лікі, тым больш часу трэба, каб іх знайсьці;

• існуе альгарытм, які дазваляе ведаючы закрыты й адкрыты ключы фактарызаваць модуль. Таму закрыты ключ трэба берагчы й нікому не даваць.

Электронна-лічбавы подпіс на аснове RSA

ЭЛП дазваляе ўпэўніцца ў сапраўднасьці аўтарства таго ці іншага дакумэнта, выкарыстоўваючы адкрыты ключ. У гэтым выпадку, асоба, што стварае паведамленьні пры дапамозе свайго закрытага ключа дадае да паведамленьня a пэўны модуль s — такі, што s = ad (mod М), дзе d — закрыты ключ. Тады пара (a, s) лічыцца падпісанным паведамленьнем.

Праверыць, ці сапраўды паведамленьне было падпісана пэўнай асобай, можна пры дапамозе загадзя распаўсюджанага адкрытага ключа з той самай пары, дзе знаходзіцца закрыты ключ, з выкарыстаньнем якога і быў згенэраваны подпіс. Адбываецца гэта наступным чынам (c — адкрыты ключ): sc (mod M) мусібыць роўным ac*d (mod M), а гэта, у сваю чаргу, роўнае a (mod M).

Таму, калі sc (mod M) = a (mod M), аўтар сапраўдны й паведамленьне не зьмянялася, інакш — або падроблены аўтар, або тэкст паведамленьня.


Частка 2, практычная

Для ажыцьцяўленьня шыфраваньня будзем выкарыстоўваць PGP 8.0.2 freeware і The Bat! 2.0.
PGP можна ўзяць на www.pgpi.com ў разьдзеле бясплатных праграмаў (бяз сорцаў амаль што 9М, з сорцамі, адпаведна, больш). Будзем выкарыстоўваць бясплатную вэрсію, таму што:

1) ейнае выкарыстаньне цалкам легальнае

2) камэрцыйнай вэрсіі я нідзе не знайшоў у вольным доступе

The Bat 2.0 ёсьць на www.ritlabs.com (2-3M). Менавіта ў гэтай вэрсіі зьявілася ўбудаваная падтрымка PGP 8.

Ставімся

Бат цяжкасьцяў не выклікае.

PGP. Усталёўшчык папрасіў упэўніцца, што Кліент для сетак Мікрасофт усталяваны. Ага, фак ім. Добраахвотнага расшарваньня ўласных дыскаў я яшчэ нідзе ня бачыў. Цісьнем ОК... І аблом. Што ж... Яшчэ раз. Фак, тое самае.

Ідзем ва ўласьцівасьці любога злучэньня зь Сецівам. Я выбраў тое, якое выкарыстоўваю. Properties -> Networking -> Install -> Client -> Client for Microsoft Networks -> OK. Да лякальнай сеткі я не падлучаны, таму зьняў птушку насупраць яго, каб розныя там хакеры не ўтыкалі свой нос туды, куды яго ўтыкаць ня трэба.

Закрывай усе вокны запускай усталёўку PGP. У мяне ўсё ок.

Next -> Yes -> Next -> No I'm a new User -> Next -> [Browse ->] Next.
Далей я адзначыў усё. У мяне папрасілі 13 з гакам Мб. Нармальна. Next -> Next. Спыталіся пра тэчку Эўдоры. Мусіць, ня варта было яе ў кампанэнтах адзначаць. Будзеш ставіць — здымі, калі ў цябе яе таксама няма. Папрасілі перазагрузіцца. Перазагружаймася.

Так, што мы маем. Замок ў трэі, PGP-дыск не працуе...

Як бы гэтая бясплатная вэрсія і ласты праз 30 дзён ня склеіла... Паглядзім.

Заўвага. Нічога ня склеілася, усё працуе і па сёньняшні дзень.

Ключыкі.

Ёсьць 2 варыянты.

Першы. Выкарыстоўваць стандартны мэнэджр ключоў і шыфраваць-дэшыфраваць паведамленьні copy-paste'ам. Мы пойдзем іншым шляхам!

Другі. У Бат, пачынаючы з 2.0, убудаваная падтрымка PGP 8. Вось яе і заюзаем.

У Баце. Tools -> OpenPGP -> Choose OpenPGP version -> PGP 5,6,7,8 (built-in support) -> OK.

Далей.

Tools -> OpenPGP -> OpenPGP Preferences.

Наладкі. Тут можна выдаліць іконку з трэю (я б гэта рабіць ня раіў, адныя недахопы; тым больш, што праз пэўны час яна сама схаваецца; ў цябе ж XP?), зьняць птушку Faster Key Generation, бо, як я падумаў, не сказаўся б гэты адзначаны радок на надзейнасьці таго, што генэруецца.

Памяняй месцазнаходжаньне ключоў. Які вірус ці што — тэчка Твае Дакумэнты накрыецца другой (пасьля :/Windows/, зразумела).

Хаця тут назіраліся ў мяне нейкія глюкі з закрытым ключом. Праблема вырашылася проста упісаньнем патрэбнага шляху ў радок. Астатняе я пакінуў як было.

Стварэньне пары ўласных ключоў

Tools -> OpenPGP -> Key Manager...

Keys -> New Key -> Expert

Full Name: Тваё імя, мянушка, пад якой цябе будуць бачыць абанэнты.

Email-address: Email-адрас, для якога ствараецца ключ.

Key-Type: Deffie-Hellman/DSS

KeySize: 4096 — чаго там... Чым больш, тым лепш :)

Key expiration: Час, калі згенэраваны ключ зробіцца нядзейным. Увогуле пажадана час ад часу мяняць ключы. Гэта нясе з сабою адсутнасьць залежнасьці існай пары ключоў ад паведамленьняў, якія былі зашыфраваныя папярэднімі ключамі, што падвышае надзейнасьць сыстэмы, але ў той жа час новы ключ касуе магчымасьць чытаць старыя паведамленьні. Таму тут вырашаць табе. Можаш, напрыклад, мяняць сваю пару кожныя 4 месяцы. Але тады кожны, хто мае твой закрыты ключ мусіць усталёўваць новы таксама кожныя 4 месяцы. А можаш паставіць і never. Хаця ў гэтым выпадку я б ня раіў ствараць сабе кароткі ключ.

Next. Passphrase. Справа ў тым, што закрыты ключ дастаткова вялікі для таго, каб яго было магчыма запомніць. Нават калі гэта ўсё-ткі адбудзецца, праблематычна кожны раз яго уводзіць з-за яго даўжыні. Таму гэты ключ захоўваецца на дыску карыстальніка ў зашыфраваным стане, а гэты пароль выкарыстоўваецца для яго расшыфроўкі. PGP-сыстэма расшыфроўвае закрыты ключ і ўтрымлівае яго ў памяці для далейшага выкарыстаньня.

Пароль табе прыйдзецца ўводзіць досыць часта, таму варта выбраць просты, але адначасова не відавочны сказ. Ну і так, каб прагрэсбар цалкам запоўніўся. Нэкст. Як згенэруюцца ключы, нэкст -> Фініш.

Схема простая: адкрытым ключом юзэры шыфруюць сваё паведамленьне табе, а расшыфраваць яго можна толькі закрытым ключом, які маеш толькі ты (вядома, калі ты нікому яго не паказваў і ніхто не пазычаў яго ў цябе).

Распаўсюджваньне адкрытага ключа

Клікаеш правай кнопкай па самым тлустым запісе -> Export...

У файл, які пазначыш, будзе захаваны адкрыты ключ. Пасьля гэты файл можна адкрыць нататнікам ці проста паслаць па пошце сваім абанэнтам.

Усталяваньне адкрытага ключа, дасланага кімсьці

Keys -> Import...

Вылучаеш файл з ключом -> OK -> Import/Cancel (Cancel — каб адмовіцца ад імпартаваньня)

Або, калі ключ быў прысланы адразу ў лісьце, што нашмат больш верагодна, то проста ў Баце вылучаеш ліст з ключом, пасьля Tools -> Message Security -> Import Key/Certificate.

Шыфраваньне паведамленьня

Выкарыстоўваецца паведамленьне і адкрыты ключ таго, каму паведамленьне пасылаецца. У Баце Ctrl+Shift+E -> зашыфраваць. Тут пачаліся праблемы. Здавалася б — усё ок, толькі нешта не працуе й замок у трэі расшпілены. Пасьля разнастайных спробаў выявіць прычыну, аказалася, што трэба згенэраваць яшчэ адну пару ключоў. Ад балды, якога памеру, зь якім імем, адрасам і фразай. Проста калі шыфравацца ім нічога ня будзе, можна ўводзіць дадзеныя ад балды. І ўсё пайшло як мае паўботы па сьлізкай лесьвіцы.

Заўвага. Такое было толькі адзін раз — калі пісалася ўся гэтая бадзяга. Так што цалкам імаверна, што ў цябе ўсё будзе працаваць адразу. А расшпілены замок у трэі азначае толькі тое, што passphrase ужо ўводзіўся ў гэтым сэансе і закрыты ключ у незашыфраваным стане знаходзіцца ў кэшы крыптасыстэмы.

Дэшыфраваньне паведамленьня

Няхай нехта зашыфраваў паведамленьне тваім адкрытым ключом і яно прыйшло ў скрыню, для якой той ключ ствараўся. Вылучаеш паведамленьне, Сtrl+Shift+D. Усё працуе! Заўваж, зьяўляецца часовая закладка (а не новае паведамленьне, як у The Bat! v1.6х), якая зьнікае пасьля зьняцьця вылучэньне зь ліста. То бок яго нельга будзе прачытаць нават калі маеш доступ да тэчкі Бата. Адзінае выйсьце — займець закрыты ключ, так што беражы яго.

Калі ты напісаў(ла) некаму ліст, та пасьля шыфраваньня можна заўважыць, што ты ўсё роўна можаш расшыфраваць паведамленьне. Гэта не зусім стасуецца з тэорыяй, зашыфраванае паведамленьне можна расшыфраваць толькі закрытым ключом з пары, да якой належыць выкарыстаны адкрыты ключ. Тут я магу толькі здагадвацца, бо я ня ведаю сапраўднага альгарытму работы TheBat!. Найбольш верагодным варыянтам мне здаецца наступны. Калі ты шыфруеш паведамленьне, напісанае камусьці, ягоным(ейным) паблік-ключом, Бат шыфруе яго ў двух асобніках, т.б. шыфруе арыгінальнае паведамленьне спачатку адкрытым ключом карыстальніка, які напісаў паведамленьне (т.б. цябе), а пасьля зноў шыфруе арыгінальнае паведамленьне толькі на гэты раз не тваім паблік-ключом, а паблік-ключом твайго адрасату. І тое, што атрымалася — два шыфраваных паведамленьня — аб'яднанае разам лічыцца шыфраваным паведамленьнем. Расшыфраваць зараз яго можна любым з двух ключоў: закрытым ключом абанэнта або тваім закрытым ключом. Адсюль вынікае, што калі твой закрыты ключ вядомы пабочным асобам, закрыты ключ твайго адрасату вядомы толькі яму, а ты паслаў яму ліст, зашыфраваны ягоным адкрытым ключом, то яго ўсё роўна тыя пабочныя асобы змогуць бязь цяжкасьцяў яго расшыфраваць і пачытаць. Сьцеражыся.

Таксама варта помніць аб тым, што другі адкрыты ключ (твой адкрыты ключ, а не твайго адрасату) для шыфраваньня паведамленьня будзе выкарыстаны з пары ключоў, якая пазначаная як пара па змоўчаньні, незалежна ад таго, зь якога адрасу ты адпраўляеш ліст.

Электронна-лічбавы подпіс

Электронна-лічбавы подпіс — набор сымбаляў, які дадаецца да шыфраванага або нешыфраванага паведамленьня, і які пацьвярджае аўтарства паведамленьня. Той набор лічбаў-літараў можа быць згенэраваны толькі пры наяўнасьці закрытага ключа. А што ж будзе, калі я зраблю сабе пару з тваім імем і падпішу паведамленьне? — спытаеш ты. А тое, што праверка адбываецца з выкарыстаньнем адкрытага ключа падпісанта. І таму пры спробе завэрыфаяць чыесь фэйкавы ліст стане зразумелым, што гэта падробка. Тому, хто ня ведае закрытага ключа, трэба ня толькі зьмяніць подпіс, але й прыдумаць такі зьмест, які б яшчэ й адпавядаў ягоным патрэбам. Во як.

ХаўТу не прыводжу, бо там усё проста: Privacy -> OpenPGP -> Sign Entire Text,
Privacy -> OpenPGP -> Sign & Encrypt Entire Text —
каб падпісаць або падпісаць і зашыфраваць тэкст,
Tools -> Message Security -> Verify Signature —
каб праверыць, ці зьяўляецца аўтарам паведамленьня той, ад каго яно прыйшло.

Ну й, зразумела, каб што-небудзь правяраць, трэба мець адкрыты ключ таго чалавека.


Канец

Вось як. Бачыш, усё проста, як SSL-пратакол. І пасьля таго, як ўсё напісанае зьверху зробіцца зразумелым, зьявіцца адчуваньне ўласнай прыналежнасьці да групы людзей, што маюць права на прыватныя паведамленьні. Усё. Ўсем спасіба, ўсе свабодны.

Камэнтары

Глядзець усе камэнтары ў Coredump
Усяго камэнтароў: 5

rydel.net

27.09.2004
02:25:11
Можа хочаце запосьціць гэты артыкул у вольную энцыкляпэдыю Вікіпэдыю:
http://be.wikipedia.org/?

:)
zedlik

27.09.2004
12:02:52
Шчыра кажучы, мне ўсё роўна. На маю думку, гэты артыкул яшчэ сыры для якіх-небудзь публікацыяў. Зь іншага боку, ніякіх ягоных дапрацовак пакуль што не плянуецца. Таму, rydel, калі хочаш, можаш запосьціць. Толькі на ўмовах, прыведзеных унізе старонкі, то бок з пазначэньнем крыніцы.

/* Хаця насамрэч зараз мяне хвалюе крыху іншае пытаньне. Чаму ў гэтым даўбаным скрыпце камэнтароў зноў не працуе аўтаматычнае распазнаваньне лінкаў?!! */
DK

12.10.2004
15:06:34
PGP объединяет в себе лучшие стороны симметричной криптографии и криптографии с открытым ключом. PGP — это гибридная криптосистема.

Когда пользователь зашифровывает данные с помощью PGP, программа для начала их сжимает. Сжатие сокращает время модемной передачи и экономит дисковое пространство, а также, что более важно, повышает криптографическую стойкость. Большинство криптоаналитических техник основано на статистическом анализе шифртекста в поисках признаков открытого текста. Сжатие уменьшает число таких признаков (снижает избыточность данных), чем существенно усиливает сопротивляемость криптоанализу. (Слишком короткие файлы и файлы, которые не сжимаются достаточно хорошо, не сжимаются вовсе.)

Затем, PGP создаёт сеансовый ключ, т.е. одноразовый симметричный ключ, применяемый только для одной операции. Этот сеансовый ключ представляет собой псевдослучайное число, сгенерированное от случайных движений мышки и нажатий клавиш. Сеансовый ключ работает на основе очень надёжного, быстрого симметричного алгоритма, которым PGP зашифровывает сжатое сообщение; в результате получается шифртекст. Как только данные зашифрованы, сеансовый ключ также шифруется, но уже открытым ключом получателя. Этот зашифрованный открытым ключом сеансовый ключ прикрепляется к шифртексту и передаётся вместе с ним получателю.
zedlik

12.10.2004
23:04:12
Ня ведаю, дзядзька, адкуль ты скапіяваў гэты кавалак, але ён на самой справе зьяўляецца апісаньнем прынцыпа функцыяваньня https-пратаколу і ня мае нічога агульнага з PGP, апроч альгарытма RSA, які зьяўляеца цалкам асымэтрычным.
zedlik

12.10.2004
23:08:46
Хаця не, ведаю ;)
http://www.pgpru.com/manuals/intro...

Але тым ня менш, прыведзенае апісаньне зьяўляецца апісаньнем пратаколу SSL, і я паняцьця ня маю, чаму фан-клюб PGP прыводзіць яго ў якасьці апісаньня PGP.

Дадаць камэнтар

 
 
 

навіны сайту
14.03.2015
VMS 2.9.2: адпраўка на velcom і life, падтрымка перанесеных нумароў
07.05.2012
VMS 2.9.1: выпраўленая адпраўка на velcom і life
27.04.2010
VMS 2.9: дададзены life і выпраўлены velcom
02.03.2009
Падтрымка Windows Vista для Belarusian (Latin) (Custom) Keyboard Layout
усе навіны
 
стужкі навінаў
RSS
Atom
 
вялікі брат
 
не па тэме
zedlik. Пэрсанальны блог