XÜSUSİ DÖVLƏT MÜHAFİZƏ XİDMƏTİ
XÜSUSİ RABİTƏ VƏ İNFORMASİYA
TƏHLÜKƏSİZLİYİ DÖVLƏT AGENTLİYİ

KOMPÜTER İNSİDENTLƏRİNƏ
QARŞI MÜBARİZƏ
MƏRKƏZİ

İnsident bildir

Məqalələr > Şifrə təhlükəsizliyinin riyazi hesablanması alqoritmləri

17 Noy 2017

 

Müasir dövrümüzdə İKT sahəsi sürətlə inkişaf etməkdədir. Yeni texnologiyaların işlənib hazırlanması və həmçinin müvafiq olaraq hücum metodlarının inkişaf etdirilməsi sistemlərin təhlükəsizliyinin yüksək səviyyədə təmin olunması zərurətini meydana qoyur. Bildiyimiz kimi, web platformalarda, proqram təminatlarında, ödəmə terminallarında və digər sistemlərdə şəxsi hesabların və məlumatların qorunması məqsədilə və həmçinin identifikasiya qurğularında şəxsiyyətin və səlahiyyətin təsdiq olunması üçün şifrələrdən geniş istifadə olunur. Tədqiqatlar göstərir ki, istifadəçilərin 40%-i asan tapıla bilən (12345, admin və s.) sadə şifrələrdən istifadə edirlər. Bir sıra metodlarla bu kimi zəif şifrələrin aşkarlanması isə çox da vaxt sərf etmir. Bu səbəbdən praktikada istifadəçi hesablarının təhlükəsizliyini maksimum təmin etmək məqsədi ilə şifrə təyin olunarkən onun "təhlükəsizlik dərəcəsi" xüsusi alqoritmlər vasitəsi ilə avtomatik qiymətləndirilir və daha dayanıqlı şifrə seçilməsi təmin olunur.

İndi isə şifrə təhlükəsizliyini qiymətləndirən bir sıra alqoritmlərlə tanış olaq:

 

SeaMonkey şifrə analizatoru

Bu parol analizatoru Seamonkey Council şirkəti tərəfindən yaradılan və təmin edilən, internetlə işləmək üçün azad proqramlar yığımı olan SeaMonkey layihəsinin bir hissəsi kimi işlənmişdir. Bu şifrə analizinin əsas mexanizmi JavaScript kitabxanasının parollarla işləmək üçün bir hissəsindən ibarətdir. Onun alqoritmi şifrənin tərkibində olan simvollar haqqında məlumata əsaslanmaqla şifrənin çəkisini hesablamaqdır. Şifrənin çəkisi aşağıdakı düstur ilə hesablanır: 

pwstrength = ((pwlength * 10) - 20) + (numeric * 10) + (numsymbols * 15) + (upper * 10)

Burada,

  • pwlength şifrədəki simvolların sayı 5-dən çoxdursa və ya şifrənin uzunluğuna bərabərdirsə 5-ə bərabərdir;
  • numeric şifrədəki rəqəmlərin sayı 3-dən çoxdursa 3-ə, əks halda rəqəmlərin sayına bərabərdir;
  • numsymbols şifrədəki hərf, rəqəm və alt xətt işarələri istisna olmaqla qalan simvolların sayı 3-dən çoxdursa 3-ə bərabər hesab olunur, əks halda bu kimi simvolların sayına bərabərdir;
  • upper şifrədəki böyük hərflərin sayı 3-dən çoxdursa 3-ə, əks halda böyük hərflərin sayına bərabərdir.

Hesablamadan sonra şifrənin çəkisi elə normallaşdırılır ki, onun dəyəri 0 – 100 intervalına daxil olsun. Normallaşdırma, şifrənin çəkisi bu intervala daxil olmadıqda həyata keçirilir. Əgər pwstrength-in dəyəri 0-dan azdırsa 0-a bərabərləşdirilir, 0-dan yuxarıdırsa 100-ə bərabər edilir. Göründüyü kimi, izah olunan analizatorun yoxlama zamanı heç bir hazır lüğət istifadə etməməsi onun qiymətləndirilməsini birtərəfli edir və Google və Microsoft proqramları ilə müqayisədə daha az dəqiq edir.

 

 

Password Strength Meter (jQuery plugin)

Klient tərəfində işləyən daha bir şifrə qiymətləndirmə üsulu – Password Strength Meter plagini JavaScript framework-u olan jQuery üçün hazırlanıb. Analizator şifrin keyfiyyət göstəricilərinə görə artır və ya azalır. Bütün keyfiyyət göstəriciləri yoxlandıqdan sonra şifrənin dayanıqlıq səviyyəsi haqqında qənaət əldə olunur. Şifrə qiymətləndirmə prosedurunun alqoritmini nəzərdən keçirək:

  1. Şifrənin çəkisi 0-a bərabər edilir.
  2. Əgər şifrənin uzunluğu 4 simvoldan azdırsa, alqoritmin işi bitir və "şifrə çox qısadır" nəticəsi qaytarılır. Əks halda 3-cü mərhələyə keçilir.
  3. Şifrənin çəkisini 4 * len qədər artırırıq, burada len – şifrənin uzunluğudur.
  4. Növbəti alqoritmə əsasən şifrənin sıxılması cəhdi həyata keçirilir. Əgər şifrədə SS tipli qoşa simvol rast gəlinirsə (S - uzunluğu 1 olan simvoldur), bu halda mətnin birinci hissəsi silinir və sıxılma ikinci simvoldan başlayaraq davam etdirilir. Məsələn, bu alqoritmi aaabbcab mətninə tətbiq etdikdə, nəticədə abcab mətnini alırıq. Sıxılma əməliyyatı icra olunduqdan sonra şifrin çəkisi len – lenCompress dəyərində azalır. Burada, len – şifrənin uzunluğu və lenCompress – şifrənin sıxılmadan sonrakı uzunluğudur.
  5. 2, 3 və 4 simvol uzunluğunda olan S simvolları üçün də sıxılma cəhdi icra olunur. Şifrənin uzunluğu müvafiq olaraq len – lenCompress qədər azalır. Qeyd edək ki, sıxılma hər dəfə əvvəlki cəhdlərdən alınan mətnlərdə yox, yoxlanılan şifrə üzərində icra olunur.
  6. Əgər şifrədə ən azı 3 rəqəm varsa, şifrənin çəkisi 5 vahid artırılır.
  7. Əgər şifrədə ən azı 2 işarə varsa, şifrənin çəkisi 5 vahid artırılır.
  8. Əgər şifrədə həm böyük, həm də kiçik hərflər varsa, şifrənin çəkisi 10 vahid artırılır.
  9. Əgər şifrədə hərflər və rəqəmlər varsa, şifrənin çəkisi 15 vahid artırılır.
  10. Əgər şifrədə işarələr və rəqəmlər varsa, şifrənin çəkisi 15 vahid artırılır.
  11. Əgər şifrədə hərflər və işarələr varsa, şifrənin çəkisi 15 vahid artırılır.
  12. Əgər şifrə yalnız hərflərdən və ya yalnız rəqəmlərdən ibarətdirsə, şifrənin çəkisi 10 vahid azaldılır.
  13. Əgər şifrənin çəkisi 0-dan azdırsa, 0-a bərabər edilir, əgər 100-dən çoxdursa, 100-ə bərabər edilir.
  14. Çəkisi 34-dən az olan şifrə "zəif" hesab olunur. Əgər şifrənin çəkisi 34 ilə 67 intervalındadırsa, onda şifrə "yaxşı", 67-dən çoxdursa, "əla" hesab olunur.

Şəkil 1

psm_1 

Baxılan analizator da həmçinin SeaMonkey məhsulu kimi mövcud lüğətlərlə (ən çox istifadə olunan standart şifrələr toplusu) yoxlama aparmır. Bundan əlavə, şifrə qiymətləndirilməsinin formalaşması zamanı çəki əmsalının müəyyən qiymətlərinin seçilməsinin etibarlılığı məsələsi qaranlıq qalır.

 

 

Cornell University — Password Strength Checker

Kornell Universitetinin (İtaka, ABŞ) təhlükəsizlik mərkəzinin təqdim etdiyi rəsmi onlayn servisdir. Onun köməyi ilə istifadəçilər şifrələrinin web-forma doldurmaqla və yoxlamaya göndərməklə qiymətləndirə bilərlər. Şifrənin qiymətləndirilməsi Google servisi kimi server tərəfində həyata keçirilir.

Alqoritmin realizasiyası ümumi istifadə üçün açıq deyil, lakin xidmətin təsvirində şifrənin müvəffəqiyyətli olmasını təmin etmək üçün tələb olunan şərtlər müəyyən edilmişdir:

  1. şifrənin uzunluğu 8 simvoldan az olmamalıdır;
  2. şifrənin tərtib olunması üçün aşağıdakı siyahıya müvafiq simvollar seçilə bilər:
  • böyük latın hərfləri;
  • kiçik latın hərfləri;
  • rəqəmlər;
  • xüsusi işarələr (məsələn: ! * ( ) : | və s.);
  1. şifrə lüğətdəki sözlərdən ibarət olmamalıdır;
  2. şifrə təkrarlanan hərf ardıcıllığından (məsələn, AAA) və abc, qüerty, 123, 321 kimi ardıcıllıqlarından ibarət olmamalıdır.

Bu tələblərə mütləq əməl olunmalıdır. Əgər hər hansı bir tələb yerinə yetirilməzsə, şifrə etibarsız hesab olunur.

Bu yanaşmaya aşağıdakı tənqidi fikirlər verilə bilər. Hər hansı bir uzun şifrə, məsələn təbii dildə istifadə olunan ifadə 3-cü tələbin şərtlərini ödəməyərək avtomatik mənfi qiymət alacaq ki, buna tam olaraq bəraət vermək düzgün olmaz.

 

 

Password Strength Tester

Rumkin.com-un layihələri çərçivəsində hazırlanmış bu JavaScript şifrə analizatorunda realizə olunmuş qiymətləndirmə alqoritmi informasiya nəzəriyyəsinin ümumi qaydalarına əsaslanır. Şifrənin əsas qiymətləndirilməsi kimi onun entropiyasından – İngilis dilində olan cədvəl və diaqramların köməyi ilə həyata keçirilən hesablamalardan istifadə olunur. Şifrənin entropiyası (informasiya tutumu) dedikdə, şifrəni təşkil edən simvollar sırasının təsadüfi seçilməsi nəzərdə tutulur. İnformasiya tutumu E bitlərlə ölçülür və şifrənin xarakteri haqqında əvvəlcədən məlumat olmadıqda tam axtarış metodu ilə şifrə seçilməsinə olan dayanıqlığı xarakterizə edir. Bu analizatorun tərtibatçısının sözlərinə görə, istifadəçi tərəfində yüklənən məlumatın həcminin azalılması məqsədi ilə hərf sayılmayan bütün simvollar vahid qrupda birləşdirilir. Bu qrup tezliklər cədvəlində istifadə olunan universal bir simvoldur. Tərtibatçı qeyd edir ki, bu halda əldə olunan entropiyanın dəyəri bütün simvolların tezlik cədvəlində ayrı-ayrılıqda təqdim edildiyi haldan az olacaqdır.

Entropiyanın alınan dəyərindən asılı olaraq şifrəyə onun dayanıqlıq xarakteri əlavə olunur.

Şəkil 2

 psm_2

 

Entropiya

Dayanıqlıq səviyyəsi

İzahı

< 28 bit

Çox zəif

Yalnız dəyərsiz informasiyanı saxlamaq üçün yol veriləndir

28-35 bit

Zəif

Yeni başlayan hücumçuların çoxusuna qarşı dayanıqlı hesab olunandır, desktop şifrələrində istifadə olunmaq üçün daha münasibdir

36-59 bit

Məqbul

Şəbəkə və şirkət şifrələri üçün kifayət qədər təhlükəsiz hesab olunur

60-127 bit

Yüksək

Maliyyə məlumatlarını qorumaq üçün yaxşı hesab oluna bilər

> 128 bit

Yüksək-etibarlı

Şifrə seçimə qarşı olduqca dayanıqlıdır

Bundan başqa məhsul şifrəni ən çox istifadə olunan şifrələr siyahısında (100 sözdən ibarət) axtarır və şifrənin siyahıda tapılması zamanı xəbərdarlıq bildirir. Həmçinin şifrə 4 simvoldan az olduqda ("çox qısa şifrə") və 8 simvoldan az olduqda ("qısa şifrə") müvafiq xəbərdarlıq olunur.

 

 

The Password Meter

Jeff Todnem tərəfindən hazırlamış və paylaşılmış bu şifrə analizatoru şifrə təhlükəsizliyinin riyazi hesablanması alqoritmini özündə əks etdirir. İstifadəçi tərəfdə web forma daxil edilən şifrə Javascript dilində yazılmış alqoritm vasitəsi ilə qiymətləndirilir.

CERT.GOV.AZ portalında istifadəçilərin istifadəsi üçün Jeff Todnemin hesablama yöntəmi tədbiq olunmuşdur.  (https://cert.gov.az/az/password-security)

Şəkil 3

psm_3

 

Şəkildən də göründüyü kimi minimum tələblərə aşağıdakılar daxildir:

  • Şifrənin uzunluğu minimum 8 simvoldan ibarət olmalıdır;
  • Aşağıdakı şərtlərdən ¾-nə malik olmalıdır:
  • böyük hərflər
  • kiçik hərflər
  • rəqəmlər
  • simvollar

 

Şifrə təhlükəsizliyinin riyazi hesablanması alqoritmi şəkil 4-də əks olunmuşdur. Qiymətləndirmə ümumi bal əsasında həyata keçirilir. Belə ki, müəyyən şərtlərə əsasən ümumi bala əlavələr və deduksiya olunmaqla alınan nəticəyə baxılır. Nəticə 0-dan kiçik olduqda 0-a, 100-dən böyük olduqda 100-ə bərabər götürülür və nəticə:

0 – 19 intervalında olduqda,      "çox zəif",

20 – 39 intervalında olduqda,    "zəif",

40 – 59 intervalında olduqda,    "yaxşı",

60 – 79 intervalında olduqda,    "güclü",

80 – 100 intervalında olduqda, "çox güclü" hesab olunur.

Şəkil 4

psm_4

Şəkil 4-dən göründüyü kimi ümumi bala əlavə və deduksiya olunması üçün bir sıra hallar mövcuddur və hər bir halın düsturu qarşısında qeyd olunmuşdur. Burada həmçinin,

  • Flt: Sabit dəyişənlərə görə aparılan hesablamalar.
  • Inc: Dəyişənlərin sayına görə aparılan hesablamalar.
  • Cnd: Dəyişən faktorlardan asılı olaraq aparılan hesablamalar.
  • Cmp: Ümumiləşdirilməsi mürəkkəb olan hesablamalar.
  • n: Müvafiq şərtə uyğun simvolların sayını göstərir.
  • l: Ümumi şifrə uzunluğunu göstərir.
  • Əlavə ballar simvolların müxtəlifliyinə görə artır.
  • Yekun nəticə bütün balların əlavəsi və deduksiyası (çıxılması) ilə hesablanır.
  • Yekun nəticə 0 ilə 100 arasında bir rəqəm alır.
  • Nəticə və mürəkkəblik qiymətlərinin hesablanması minimal tələblərin yerinə yetirilməsindən asılı deyil.

Şəkil 4-dəki nümunədə "p@sss123" sözünün qiymətləndirilməsi üçün riyazi hesabat əks olunmuşdur. İndi isə, ümumi bala əlavə və deduksiyalara nəzər salaq:

 

Əlavələr

  1. ümumi simvol sayı:

Şifrədəki simvollar çoxluğu [p, @, s, s, s, 1, 2, 3] olduğundan, şərti ödəyən element sayı – n 8-ə bərabərdir (həmçinin, len = 8) və (n * 4) = 8 * 4 = 32 düsturu ilə hesablanır;

  1. böyük hərflər:

tələb ödənilmir, şifrədə böyük hərf olmadığından n = 0.

Baxmayaraq ki, müvafiq düsturu tədbiq edərək ((len – n) * 2) = ((8 – 0) * 2) = 16 alırıq, minimal tələblərə daxil olan müddəalar ödənilmədikdə, ümumi bala əlavə olunmur;

  1. kiçik hərflər:

Şifrədəki kiçik hərflər çoxluğu [p, s, s, s] olduğundan, burada n = 4.

Müvafiq düsturu tədbiq edərək, ((l - n) * 2) = ((8 – 4) * 2) = 8 almış oluruq;

  1. rəqəmlər:

Şifrədəki rəqəmlər çoxluğu [1, 2, 3] olduğundan, burada n= 3.

Müvafiq düsturu tədbiq edərək, (n * 4) = 3 * 4 = 12 almış oluruq;

  1. qrafik simvollar:

Şifrədə qrafik simvol kimi yalnız bir @ işarəsi olduğundan, n = 1 götürülür.

Müvafiq düsturu tədbiq edərək, (n * 6) = 1 * 6 = 6 almış oluruq;

  1. ortadakı rəqəmlər və qrafik simvollar:

Şifrədə ilk və son simvol istisna olmaqla, digər simvollar içərisində rastlanan rəqəm və qrafik simvollar çoxluğu [@, 1, 2] olduğundan, n = 3.

Müvafiq düsturu tədbiq edərək, (n * 2) = 3 * 2 = 6 almış oluruq;

  1. minimum tələblər:

Minimal tələblərə əsasən əvvəla şifrənin uzunluğu ən az 8 simvoldan ibarət olmalıdır ki, bu tələb ödənilir (+1). Növbəti tələbə əsasən şifrədə böyük hərf, kiçik hərf, rəqəm və simvol bəndlərindən ən azı 3-ü iştirak etməlidr. Əks halda, ümumi xal 0 götürüləcək. Nümunədə isə, böyük hərf olmasa da (+0), kiçik hərf (+1), rəqəm (+1) və simvol (+1) olduğundan, ümumi 4 bəndin tələbi ödənilir ki, bu da n = 4 deməkdir.

Müvafiq düsturu tədbiq edərək, (n * 2) = 4 * 2 = 8 almış oluruq.

 

Deduksiya

  1. yalnız hərflər:

tələb ödənilmir, şifrə yalnız hərflərdən ibarət olmadığı üçün deduksiya olunmur: n = 0;

  1. yalnız rəqəmlər:

tələb ödənilmir, şifrə yalnız rəqəmlərdən ibarət olmadığı üçün deduksiya olunmur: n = 0;

  1. təkrar simvollar (böyük/kiçik fərq etmədən):

Şifrədə "s" simvolu 3 dəfə təkrarlandığından n = 3 götürülür;

  1. ardıcıl böyük hərf:

şifrədə ardıcıl böyük hərf olmadığı üçün deduksiya olunmur. n = 0 olduğundan:

müvafiq düsturu tədbiq edərək, - (n * 2) = - (0 * 2) = 0 almış oluruq;

  1. ardıcıl kiçik hərf:

Şifrədə 3 ədəd "s" hərfi ardıcıl iştirak etdiyindən, ardıcıl kiçik hərf cütlüklərinə baxılır: Mətnin "sss" hissəsinə 2 ayrı hal kimi – "ss" və "ss" kimi baxılır və n = 2 götürülür.

 Müvafiq düsturu tədbiq edərək, - (n * 2) = - (2 * 2) = -4 almış oluruq;

  1. ardıcıl rəqəmlər:

Şifrədə "123" ardıcıl rəqəmlər iştirak etdiyindən, ardıcıl rəqəm cütlüklərinə baxılır: Mətnin "123" hissəsinə 2 ayrı hal kimi – "12" və "23" kimi baxılır və n = 2 götürülür.

Müvafiq düsturu tədbiq edərək, - (n * 2) = - (2 * 2) = -4 almış oluruq;

  1. məntiqi ardıcıl hərflər (3+):

Şifrədə əlifba sırası ilə (və ya tərsinə) 3 və daha artıq ardıcıl hərf (məsələn, abc, qwerty və s.) rastlanmadığı üçün deduksiya olunmur: n = 0 olduğundan:

müvafiq düsturu tədbiq edərək, - (n * 3) = - (0 * 3) = 0 almış oluruq;

  1. məntiqi ardıcıl rəqəmlər (3+):

Şifrədə sıra ilə (və ya tərsinə) 3 və daha artıq ardıcıl rəqəm (məsələn, 123, 54321 və s.) iştirak etdiyi üçün hər 3 simvol blokuna baxılaraq 1 hal kimi qiymətləndirilir. Nümunədə "123" ardıcıllığı yalnız 1 belə blokdarastlandığı üçün n=1 götürülür.

Müvafiq düsturu tədbiq edərək, - (n * 3) = - (1 * 3) = -3 almış oluruq;

  1. məntiqi ardıcıl qrafik simvollar (3+):

Şifrədə sıra ilə (və ya tərsinə) 3 və daha artıq ardıcıl işarə (məsələn, !@#, ^%$#@ və s.) rastlanmadığı üçün deduksiya olunmur. n = 0 olduğundan:

müvafiq düsturu tədbiq edərək, - (n * 3) = - (0 * 3) = 0 almış oluruq;

 

Beləliklə, ümumi bal: 32 + 8 + 12 + 6 + 6 + 8 – 3 – 4 – 4 – 3 = 58%  (yaxşı)

 

Nəticə

          Yuxarıda göstərilən proqramlarda şifrələrin qiymətləndirilməsinin müxtəlif üsulları istifadə olunur və onların hər birində parolun yalnız müəyyən xüsusiyyətləri qiymətləndirilir. Belə ki, SeaMonkey layihəsi olan şifrə analizatoru qiymətləndirmənin əsası kimi şifrənin uzunluğu haqqında məlumatı və şifrə yaratmaq üçün istifadə olunan bu və ya digər əlifbadan olan simvolların sayını istifadə edir.  jQuery üçün olan "Password Strength Meter" pluginində qiymətləndirmə zamanı simvol qruplarının təkrarlanması üsulu ilə tərtib edilmiş şifrələrin seçilməsi həyata keçirilir. İnformasiya nəzəriyyəsinə əsaslanan və riyazi modeldən istifadə edərək entropiyanın hesablanması ilə çalışan "Password Strength Tester" məhsuluna da xüsusi diqqət yetirilməlidir. Jeff Todnem tərəfindən hazırlanmış "The Password Meter" məhsulu da riyazi hesablamalar metodu ilə çalışaraq yüksək dayanıqlıq təmin edir.

          Qeyd etmək lazımdır ki, baxılan proqram təminatlarında bir sıra problemlər vardır ki, şifrənin etibarlılıq dərəcəsinin qiymətləndirilməsini tam hesab etmək olmaz. Beləliklə, müştəri tərəfində icra edilən JavaScript mühitində reallaşdırılan onlayn analizatorlar böyük həcmli lüğətləri yoxlamaq imkanına malik olmamaqla öz resurslarında məhduddur.

Bununla yanaşı, şifrənin server tərəfində yoxlanılması lüğətlərdən istifadə olunma məsələsini həll etsə də, ötürülmənin etibarlılığını və ən əsası qiymətləndirilən şifrənin icazəsiz istifadəsi məsələsini sual altında qoyur. Sonuncu halda istifadəçi sifrə qiymətləndirilməsinin hakerlər üçün xidmət edən servis yox, yalnız "təmiz" əməliyyatlar yerinə yetirən server tərəfindən həyata keçirildiyini ümid etməli olur.

          Bundan başqa qeyd etmək lazımdır ki, baxdığımız bütün proqram təminatları (məhsullar) kiril hərflərindən ibarət şifrələrin qiymətləndirilməsini dəstəkləmir.

 

          Kompüter İnsidentlərinə Qarşı Mübarizə Mərkəzi istifadəçilərə şifrə seçimi edərkən Jeff Todnemin yanaşmasında oluğu kimi minimal tələbləri ödəmələrini (minimum 8 simvol uzunluğunda olmalı və böyük hərf, kiçik hərf, rəqəm və simvol istifadə etməli) məsləhət görür. Bundan başqa xüsusi əhəmiyyətli məlumatların təhlükəsizliyini təmin etmək məqsədilə şəxsi hesabların şifrələrini təyin edən zaman şifrələrdə ad, soyad, doğum tarixi və s. kimi şəxsi məlumat istifadə etmək məsləhət görülmür və əvəzində şifrə generatorlarından istifadə etmək tövsiyyə olunur.

 

İstinad: