четвртак, 25 априла, 2024
Како да...?

Како до сигурнијих шифара

Аутор: Петар Симовић

Када помислимо о приватности наших података, прво што нам падне на памет требало би да је шифра. Зашто? Зато што се у суштини класично симетрично шифровање своди на шифру коју корисник унесе и податак на који се та шифра примењује употребом одређеног алгоритма коначан број пута. Погледајмо где се заправо данас све ослањамо на шифре како бисмо се заштитили од нападача и очували приватност. Најпре, сви користимо имејл, онда друштвене мреже попут Фејсбука и Твитера, затим, можда смо активни и на форумима или користимо неку од клауд услуга чувања података, ту је и приступ нашем рачунару или телефону, бежична (енг. Wi-fi) мрежа на коју смо повезани, и тако даље. Листа може бити оптерећујуће дугачка, и морате водити рачуна о свим тим шифрама за приступ одређеном налогу.

Ситуација у којој просечан корисник има више од десетак налога за које треба да памти шифре свакако представља проблем и води ка коришћењу једне шифре за све налоге, или употреби веома кратких и једноставних шифара. Штавише, корисници су често склони записивању шифара у једној незаштићеној текстуалној датотеци коју, да ствар буде гора, чувају на неком УСБ-у који даље прикључују на друге непроверене рачунаре. Чест је и случај да се шифре између корисника размењују путем незаштићених комуникација као што су имејлови, смс поруке, твитер или фејсбук директне поруке, па и слањем у облику текстуалне, људски читљиве, датотеке. Неретке су и ситуације у којима администратори или дизајнери неког мрежног сервиса или платформе погрешно рукују корисничким шифрама из незнања, недостатка новца или времена. Тако је чест случај да се шифре корисника на неком сајту чувају у текстуалној и људски читљивој датотеци тзв. плеинтексту (енг. plain text) или незаштићеној бази података, или се слање шифре између корисника и сервера не обавља преко заштићене везе тј. не користи се ССЛ.

Шта је сигурна шифра?

Како бисмо одговорили на ово питање, морамо прво знати како се мери сигурност шифре, тј. морамо увести појам ентропије. Ентропија је број битова који изражава колико је шифра јака поредећи је са одговарајућим низом насумичних битова. Тачна формула је једноставна и ако ентропију обележимо са Е укључује дужину шифре D и скуп/сет могућих карактера из кога је шифра одабрана S:

sifre i fraze

Примера ради, ако користимо само слова из азбуке (S=30) за састављање наше шифре, и ако нам је шифра дужине 8 слова/карактера (D=8), ентропија ће бити 39,25 (log2(30^8) https://goo.gl/vcAvOM) или око 4.9 бита ентропије по слову (ако се користе само мала или само велика слова). Наравно ентропија од 39,25 бита није довољна да заштити важне тајне. Препорука је да у зависности од врсте напада коју нападач изводи, ентропија буде већа (80+ битова) за офлајн нападе и (40+ битова) за мрежне нападе. Разлика је у томе што уколико нападач не може да дође у посед шифрованим датотекама или хешираној шифри, мораће да покушава да погоди вашу шифру дирекно на мрежи сервиса што је спорије и што се лакше уочава и спречава. Међутим, ентропија није најбоља мера, јер комплексност шифре није урачуната. Тако, на пример, наша шифра од 8 карактера могла је бити „лубеница” која није комплексна иако има сва различита слова. Ствар је у томе да је „лубеница” реч из речника и то је чини неотпорном на нападе речницима (енг. dictionary attack). Ту долазимо до још једног важног аспекта када је у питању начин на који корисници састављају своје шифре, а то је насумичност. Шифра „лубеница” није спој насумично одабраних слова азбуке, већ циљано бирана реч. Разна истраживања показују да су људи веома лоши у састављању насумичних шифара јер све раде по некој логици или обрасцу. Ни рачунари нису савршени извор насумичности, али са овог аспекта су бољи од људи. Зато је важно напоменути да је ентропија добар показатељ сигурности шифре ако се карактери бирају насумично, а не циљано. Ако користите енглески алфабет присутан на тастатурама, поред слова користите и бројеве и специјалне карактере „0123456789” (10 карактера) „~`!@#$%^&*()_+-={}|[]\/;’:“/.,?><” (33 карактера) тј. све Аски (енг. АSCII) карактере који се могу одштампати. То је укупно 95 карактера (26 малих слова, 26 великих, 33 специјална карактера и 10 бројева). Скуп од 95 карактера вам даје и већу ентропију по карактеру, тј. имате око 6.5 бита ентропије по карактеру из овог скупа.

Поред шифара постоје и фразе (енг. passphrase) које у овом контексту означавају речи из речника. Наиме, уместо да користимо скуп слова из абуке или абецеде, користићемо речник као скуп познатих речи. Сигурно се питате „Речи из речника? А шта је са нападима речника”. Одговор је заправо једноставан. Речник има много већи скуп елемената тј. речи него што азбука има слова, па је одабир пар речи бољи од одабира неколико карактера. Овај концепт се заснива на томе да је лакше упамтити 4 неповезане и насумично изабране речи из скупа од 7776 речи него 8 насумичних карактера из скупа од 95 (log2(7776^4) = 51; log2(95^8) = 52) за исту ентропију сигурне шифре.

Истакнимо још једном да је насумичност важно својство процеса генерисања сигурних шифара или фраза. Ентропија као мера сигурности шифре или фразе је тачнија ако се шифра саставља од насумично бираних карактера, односно фраза од насумично бираних речи из одређеног скупа. Међутим, насумичност је још важнија за одбрану од напада социјалним инжењеригом (енг. Social Engineering) о коме сте могли да прочитате у 39. броју. Како бисте избегли да нападач познајући вас, ваше навике и интересовања може лако да погоди вашу шифру, најбољи начин је да избор шифре или фразе препустите насумичности. Састављање сигурне фразе може бити и занимљиво или чак личити на дечју игру једноставном дајсвер (енг. Diceware https://goo.gl/oukz5n) методом. Узмите листу речи или речник (можете наћи и преузети са https://goo.gl/pXBYJL или https://goo.gl/AABLJE) и једну коцкицу. Затим баците пет пута коцкицу и запишите бројеве које добитете (на пример ако добијете 32512 тај број ће одговарати речи „хеат” у листи https://goo.gl/ZUOLQW на страни 14.) Значи пет бацања коцкице вам даје једну реч, а треба вам најмање 4 речи за сигурност фразе од преко 50 битова ентропије.

password_strength Важна напомена је и да замењивање слова „А” са бројем „4” или карактером „@”, или слово „О” са бројем „0” или карактером „*” неће унапредити сигурност шифре, већ ће вам само дати лажан осећај сигурности. Када нападач покуша да пробије неку шифру, он наравно зна за замене ове врсте и направиће програм који ће речи из речника пробати и заменом одређених карактера за бројеве. На пример шифра „MyPassword123” са заменама може да изгледа „MyP@SSw0rd123”. Да ствари буду горе, по неискусне кориснике, када овакву шифру за замењеним карактерима испробате у неким од познатих онлајн мерача сигурних шифара, добићете задовољавајуће или чак одличне оцене јачине ваше шифре (резултате можете видети на: http://imgur.com/a/mjV4I). Док за исту шифру, други мерачи сигурности шифара дају реалније резултате (резулате можете видети на: http://imgur.com/a/Yla5t). Нису сви мерачи сигурности шифара исти.

dropboxКада смо већ код онлајн мерача сигурности шифре, будите веома опрезни. Иако већина тврди да не прикупљају ваше шифре које проверавате на тим сајтовима, такву тврдњу је тешко проверити. Зато саветујемо да сами насумично генеришете и проверите сигурност ваше шифре без коришћења онлајн сајтова и програма. Уколико вас мрзи да ручно рачунате ентропију ваше шифре, можете посетити https://goo.gl/9OyNMY сајт који вам неће тражити да унесете вашу шифру, већ податке о њој (да ли користите слова, бројеве специјалне карактере и које је дужине шифра).

passwordstrengthcalculator

Осим мрежних мерача сигурности и јачине шифара, на нету се могу лако наћи и гомиле правих корисничких шифара које су прибављене у разним неовлашћеним приступима сајтовима и њиховим базама података. Једна таква база података са шифрама је јавно доступна на гитхабу https://goo.gl/VCbGj9. А за више о најкоришћенијим шифрма посетите http://wpengine.com/unmasked/.

Када правите шифре или фразе, трудите се да имају 80 или више битова ентропије, да користите и мала и велика слова, бројеве и специјалне карактере насумично одабране. Фразе бирајте исто насумично из неког речника, одаберите да фраза има најмање четири насумичне речи. За сваки налог правите нову шифру/фразу, никако немојте употребљавати једну исту шифру/фразу за више налога, нови налог тотално нова независна шифра/фраза. Користите неки менаџер шифара (енг. password manager) отвореног кода. Никако немојте записивати шифре/фразе на папир, или их чувати у људски читљивој текстуалној датотеци.

Како сигурно чувати шифре?

Менаџери шифара

Просечан интернет корисник има више од 10 различитих налога (зависно од истраживања просечан број се креће од 17 до 27 https://goo.gl/oZ4B14, https://goo.gl/tzFzUQ). Тај број тачних шифара није лако памтити, а поготово може бити тешко запамтити која шифра је за који налог. Да би се обичном кориснику олакшао свакодневни живот, у сајбер свету постоје менаџери шифара (енг. password manager). Оно што је још важније, међу њима постоје и они који су отвореног кода. Менаџери шифара ће за ваш налог генерисати насумичну шифру/фразу жељене дужине и сигурности, чувати је у шифрованој бази са осталим налозима. База свих ваших налога се шифрује једном шифром коју морате запамтити. Предност менаџера шифара је у томе што памтите једну шифру уместо за сваки налог посебно. Препоручујемо Кипасикс (енг. KeePassX, https://www.keepassx.org/) или Кипас (енг. KeePass, http://keepass.info/) који постоји за Мек о.с. (енг. Мac OS), Виндоуз (енг. Windows) и линукс, а постоји и Кипасдроид (енг. KeePassDroid, http://www.keepassdroid.com/) форк Кипас-а за андроид. За остале менаџере шифара можете посетити странице: https://goo.gl/XwKkJR или нашу скромну листу мање познати менаџера: https://goo.gl/pPUcjj). Постоје и групни менаџери шифара као што су Тимпас (енг. TeamPass, http://teampass.net/) и Пасболт (енг. Passbolt, https://www.passbolt.com/) Када користите било који менаџер шифара, направите бекап шифроване базе на неком спољном сигурном медијуму који нећете давати свима.

keepassx_logos

Постоје и мрежни менаџери шифара који шифровану базу шифара синхронизују са неким мрежним сервером. На тај начин уколико изгубите свој уређај на коме сте држали шифре, и даље можете приступити вашим шифрама складиштеним на серверу. Редунданса свих ваших шифара је заиста неопходна, поготово ако нисте добри у памћењу шифара. Ово ипак може представљати ризик по сигурност ваших шифара јер поред сигурности вашег уређаја, од велике важности је и начин комуникације са сервером, сама безбедност сервера, као и јачина шифре којом сте шифровали базу шифара пре слања на сервер. Такав је рецимо Енкриптер (енг. Encryptr, https://goo.gl/HdaeQR).

Мане менаџера шифара

Евентуалне мане коришћења менаџера шифара представља централизовано место које садржи све ваше шифре, па тиме представља мету евентуалних нападача/хакера. Затим прављење резервне копије и чување исте на довољно безбедном месту, као и евентуални пропуст у самом програму, може имати негативан ефекат на сигурност корисникових шифара. Напоменимо и то да је од великог значаја који криптографски алгоритми се користе за шифровање базе шифара унутар менаџера, као и која се хеш (енг. hash) функција користи за чување главне шифре. Јер нису сви криптографски алгоритми сигурни (РЦ4 и ДЕС, https://goo.gl/V8qD3h), као што ни све хеш функције нису сигурне (МД2 и МД4 и МД5, РИПЕМД, https://goo.gl/LKzsDI).

Алтернативе менаџерима шифара

Да ли морате да чувате шифре уопште? Да ли постоји начин да памтите само једну сигурну шифру и да на основу ње креирате остале, без складиштења било које шифре на било ком рачунару или уређају? Овако нешто је заправо могуће, штавише веома просто. И ако сте помислили да на једну шифру само надовезујете по неки додатни карактер (пример: tajna_šifra123, tajna_šifra1234), нисте погодили, али били сте близу.

Концепт је следећи:

  1. Саставите веома добру шифру или фразу са најмање 80 битова ентропије (пример шифре: p:<(ZAS2O#PM или фразе: dim livada mačka sir crveno prozor )
  2. Одредите име апликације или сајта за који састављате шифру (пример за сајт libre.lugons.org).
  3. Одредите хеш алгоритме које користите за састављање и евентуално дужину шифре (пример користићемо base64, sha1>, и sha256)

Сада можете генерисати шифру из терминала по принципу:

echo “šifra/fraza:ime_aplikacije/sajta” | base64 | sha1sum | sha256sum

echo “ZAS2O#PM:libre.lugons.org” | base64 | sha1sum | sha256sum

или

echo “dim livada mačka sir crveno prozor:libre.lugons.org” | base64 | sha1sum | sha256sum

Што ће вам у првом случају дати 29a6eac9c1a6800a886fdbdb7f8a2a36b4fc55994728ab9b37bdb01a7f1da107, а у другом 29a6eac9c1a6800a886fdbdb7f8a2a36b4fc55994728ab9b37bdb01a7f1da107. Овај низ од 64 хексадекадна карактера можете једноставно смањити на жељену дужину додајући на крај претходних команди tail -c 14 или head -c 10 (што ће приказати последњих 10 или првих 10 хедксадекадних карактера).

echo “ZAS2O#PM:libre.lugons.org” | base64 | sha1sum | sha256sum | head -c 10

Програми који ово раде постоје и то су Мастер пасворд (енг. Master Password, https://goo.gl/R6t2BI GPLv3), пвдхеш (енг. PwdHash, https://goo.gl/jagYyt) и СуперГенПас (енг. SuperGenPass, https://goo.gl/4PtFO0 GPLv2). Сви су отвореног кода, а Мастер пасворд и СуперГенПас су доступни и као андроид и Ајос (енг. IOS), веб-апликације, C програм, и друге платформе (https://goo.gl/rQTCPX).

zerostoragepassword-managers

Овај систем генерисања и чувања шифара има предности када је реч о складиштењу шифара, јер оно не постоји. Ако вам неко украде рачунар, на њему се не налазе ваше шифре уопште. Уколико неко сазна шифру за један налог, помоћу ње не може сазнати остале шифре, овако генерисане, као ни главну шифру од које се све остале праве све док користите сигурне хеш алгоритме. Напомена је да погледате који су хеш алгоритми сигурни (https://goo.gl/LKzsDI), као и да не користите само base64 кодирање, наведено у претходном примеру, (ако не знате шта радите) јер base64 није хеш функција и лако се може декодирати . У наведеном примеру base64 се ипак користи, али после њега се примењују две довољно сигурне и иреверзибилне хеш функције. Савет је да за хеш функције користите SHA256, SHA512, прихватљиве су и SHA1, РИПЕМД160 и Вирпул (енг. Whirpool) доступни унутар ОпенССЛ-а, а ако сте прави параноик користите БЛАКЕ2 (https://blake2.net/), али по цену удобности и преносивости. Врло је важно одабрати добру главну шифру, као и сигурне хеш алгоритме, јер од њих зависи сигурност свих ваших шифара генерисаних на овај начин. Наравно, постоје одређене мане углавном везане за мењање већ постојећих шифара, јер захтева памћење још једаног податка (да корисник памти и број колико пута је променио шифру за одређени сајт) што може бити веома незгодно са порастом броја налога који активно користите. У том случају би алгоритам изгледао отприлике овако: šifra/fraza:redni_broj:ime_aplikacije/sajta” | base64 | sha1sum | sha256sum. Друга мана је што ћете морати брзо променити све шифре уколико нападач сазна вашу главну шифру. Приметите да начин на који генеришете шифре није тајна, и нападачу неће значити много информација које хеш алгоритме користите док год су они сигурни, и док год је ваша главна шифра довољно компликована.

Генератори шифара и фраза

Поменућемо да за линукс постоје веома корисни ЦЛИ програми попут пвген-а (енг. pwgen) који вам помаже да генеришете насумичне шифре (кога када инсталирате можете користити рецимо овако: pwgen -sy 20 15 и који ће вам понудити 15 различитих, независних и насумичних шифара, где је свака шифра дужине 20 из скупа од 95 карактера). Ту је и пасворд генератор (енг. password-generator, https://goo.gl/Suigwo) који може генерисати шифре које се лако памте password-generator -l 20 или једноставније, без инсталирања додатних програма openssl rand -base64 20 или


</dev/urandom tr -dc ')(*&~^%$#@_:}[}],.?-| ~+⇒<\/`“;!0123456789_A-Z-a-z' | head -c20;

За генерисање фраза можете користити Икс-кеј-Си-ди-пас (енг. xkcdpass, https://goo.gl/d8TJrB) и добити лако памтљиве фразе попут ове:

Yeti permutes kilobyte visa string

Закључак

Како ћете генерисати и где ћете чувати шифре је свакако на вама. Употреба сигурних шифара није тешка, и програми попут Кипас-а и СуперГенПас-а то олакшавају максимално. Свакако се исплати мало се потрудити око својих шифара, не зато што нешто кријемо, већ да нас не би болела глава када неки хакер провали тајну шифру password1234.

Security Blanket, machine quilted, digitally printed cotton fabric, 63.5"x39"
Password Security Blanket – Lorrie Faith Cranor – https://goo.gl/JoVyCd