ჩავარდნა სისტემის დიზაინში

როდესაც ინფორმაციული სისტემის დიზაინის მნიშვნელობაზე საუბრობთ და თვალსაჩინოებისთვის კარგი მაგალითი გჭირდებათ, შეგიძლიათ ქვემოთ მოყვანილი ილუსტრაცია გამოიყენოთ.

სურათზე გამოსახულია სახანძრო განგაშის სასიგნალო მოწყობილობის მიერ “გამოჭერილი” ადამიანი.

დიზაინერებმა “გააუმჯობესეს” მოწყობილობა და დაამატეს მექანიზმი, რომელიც სიგნალის ჩამრთველის ხელს ითრევს (და ადამიანი იქნება ასე დაბმული სანამ პოლიციელი ან მეხანძრე არ გამოუშვებს).

ამით დიზაინერებმა თავიდან აიცილეს ცრუ განგაშის მიცემის შესაძლებლობა.

არ არის გენიალური გადაწყვეტილება? 😀

ვინც ვერ მიხვდით, დაფიქრდით, ხანძრის შემთხვევაში შეყოფდით აქ ხელს განგაშის ასატეხად?

ბლოკჩეინის უსაფრთხოება – ნაშრომები

ბლოკჩეინის უსაფრთხოებაზე ვეძებდი ნაშრომებს. რასაც მივაგენი, გამოვარჩევდი ორს: Security of Blockchain Technologies, რომელიც დაწერილია ციურიხის ETH-ში (სამაგისტრო ნაშრომი) და ENISA-ს კვლევას Distributed Ledger Technology & Cybersecurity.

Security of Blockchain Technologies-ში მიმოხილულია Proof of Work-ზე (PoW) დაფუძნებული ბლოკჩეინების (bitcoin, ethereum) უსაფრთხოება, შესაძლო შეტევების სცენარები და გაუმჯობესებები. ითვლება, რომ PoW ბლოკჩეინებში თაღლითობისთვის საჭიროა 50% გამოთვლითი რესურსის ქონა. რეალურად კი შეტევის წარმატებაზე გავლენის მოხდება შეუძლია ბლოკების დაგენერირების დროს, ბლოკების ზომას, ე.წ. ცარიელი ბლოკების პროპორციას (stale block rate; stale blocks არის ბლოკები, რომლებიც იქმნება ბლოკჩეინის წევრების მიერ, მაგრამ ვერასოდეს ხვდებიან მთავარ ჯაჭვში).

ნაშრომში განხილულია 2 შეტევა PoW ბლოკჩეინებზე: ორმაგი ხარჯვა (double spending; როდესაც თავდამსხმელი ცდილობს ერთი და იგივე ვირტუალური მონეტა ორჯერ დახარჯოს) და ხარბი მოპოვება (selfish mining; რომლის დროსაც თავდამსხმელი არა ფინანსური მოგებით, არამედ მთავარ ჯაჭვში რაც შეიძლება თავის მიერ გამოთვლილი ბლოკების მოხვედრით არის დაინტერესებული).

როგორც აღმოჩნდა, ბიტკოინი უფრო უსაფრთხო სისტემაა, ვიდრე ეთერეუმი (ეს უკანასკნელი იმითაა საინტერესო, რომ ბიტკოინისგან განსხვავებით აქვს ჭკვიანი კონტრაქტების (smart contracts) მხარდაჭერა). ეთერეუმის კრიტიკული სისუსტეა (CVSS ქულა 9.1) ის, რომ ბლოკჩეინის მონაწილე სინქრონიზაციას ახორციელებს მხოლოდ ერთ სხვა მონაწილესთან. თუ ეს სხვა მონაწილე არის თავდამსხმელი, მას (სხვადასხვა ტექნიკური მანიპულაციებით) შეუძლია გამოთიშოს მსხვერპლი “რეალური” მოვლენებისგან და გამოსათვლელად გაუგზავნოს ყალბი ბლოკები. ერთი მხრივ, შეტევის გავლენა შეიძლება იყოს როგორც Denial of Service, ისე ორმაგი ხარჯვა. იმდენად, რამდენადაც შეტევა მოითხოვს მცირე გამოთვლით რესურსებს და ეთერეუმის ბლოკჩეინში კი სულ რამდენიმე ათასი მონაწილეა, შეტევის (სულ მცირე Denial of Service) განხორციელება რეალურია.

ნაშრომში აგრეთვე განხილულია Stellar ბლოკჩეინი და მისი სისუსტე, რომელიც დაკავშირებულია კვორუმის მიღებასთან. დასკვნის მიხედვით, Stellar-ის ნოუდების ამჟამინდელი რაოდენობა (10) არ იძლევა ფინანსური სისტემისთვის საჭირო უსაფრთხოების დონეს.

რაც შეეხება, ENISA-ს კვლევას, ის უფრო ზოგადად ბლოკჩეინის ტექნოლოგიასთან დაკავშირებულ რისკებზეა. განხილულია ჭკვიან კონტრაქტებთან დაკავშირებული რისკები და შეტევები. ასევე მიმოხილულია ბლოკჩეინზე დაფუძნებულ სხვადასხვა პროექტებს (Ethereum, Ripple, Hyperledger, Sawtooth Lake/Intelledger, Corda).

ბლოკჩეინის უსაფრთხოებით დაინტერესების შემთხვევაში, გირჩევთ სწორედ ENISA-ს კვლევით დაიწყოთ.

Agile Security Manifesto

agile seurity manfiesto

2001 წელს 18-მა დეველოპერმა გამოაქვეყნა ე.წ. Agile მანიფესტი, რომელშიც ჩამოყალიბებული იყო პროგრამული უზრუნველყოფის განვითარების პრინციპები.

მანიფესტს თავისი საიტიც აქვს და ქართულადაც არის თარგმნილი (სიტყვა Agile-ის გარდა 😀 ).

2016 წელს კომპანია Cigital-მა, რომელიც მოღვაწეობს პროგრამული უზრუნველყოფის უსაფრთხოების სფეროში, გამოაქვეყნა Agile უსაფრთხოების მანიფესტი.

მანიფესტის სრული ტექსტის PDF იხილეთ Cigital-ის საიტზე, აქ კი გთავაზობთ ძირითად პრინციპებს:

  1. პროგრამული უზრუნველყოფის უსაფრთხოება, პირველ რიგში, უნდა იყოს დეველოპერებისა და ტესტერების, და არა უსაფრთხოების სპეციალისტების, საქმე და პასუხისმგებლობა;
  2. უსაფრთხოება ჩადებული უნდა იყოს დეველოპმენტის პროცესსა და საქმიანობაში და უსაფრთხოებაზე ზრუნვა არ უნდა იწყებოდეს პროგრამის დასრულების შემდეგ;
  3. უმჯობესია პროგრამის ფუნქციონალში იყოს გათვალისწინებული უსაფრთხოება, ვიდრე ცალკე უსაფრთხოების ფუნქციონალი ემატებოდეს პროგრამას; გარდა ამისა, პროგრამაში უნდა ჩაიდოს უსაფრთხოების გამოცდილი და დატესტილი იმპლემენტაცია და არა იმპროვიზაცია;
  4. ორიენტაცია უნდა იყოს რისკების მოგვარებაზე და არა ბაგების აღმოფხვრაზე – დეველოპმენტის პროცესში გათვალისწინებული უნდა იყოს რისკები და უსაფრთხოება არ ამოიწურებოდეს ბაგების ან სისუსტეების სიის აღმოფხვრით;

 

როგორი უნდა იყოს უკეთესი ინტერნეტი – მოსაზრებები 1988 და 2008 წლებიდან

MIT-ის პროფესორმა დევიდ კლარკმა 1988 წელს გამოაქვეყნა ნაშრომი ინტერნეტი განვითარების პრიორიტეტებზე. ნაშრომი შეგიძლიათ წაიკითხოთ აქ.

კლარკი ამბობს, რომ ინტერნეტის არქიტექტორების უპირველესი მიზანი იყო ერთმანეთთან დაკავშირებული კომპიუტერული ქსელების (ARPANET) მულტიპლექსური (კომუნიკაციის 1 მედიუმის გამოყენებით მრავალი სიგნალის (ერთდროული) გადაცემა)  გამოყენების ეფექტური საშუალების შექმნა.

ქართულად:

უკვე არსებული ქსელის ისე გარდაქმნა, რომ მას შეძლებოდა სხვადასხვა მხარის მიერ ერთმანეთთან ერთდროული კომუნიკაციის უზრუნველყოფა.

პ.ს. TCP/IP პროტოკოლი 1983 წელს დაინერგა.

იქვე კლარკს მოცემული აქვს ინტერნეტის განვითარების 7 პრიორიტეტი:

  1. ინტერნეტ კომუნიკაცია უნდა გაგრძელდეს მიუხედავად ზოგი ქსელის ან გეითვეის დაკარგვისა;
  2. ინტერნეტს უნდა გააჩნდეს კომუნიკაციის სხვადასხვა ტიპის სერვისის მხარდაჭერა;
  3. ინტერნეტის არქიტექტურა შესაძლებლობას უნდა იძლეოდეს მას მიუერთდნენ განსხვავებული და ახალ-ახალი ქსელები;
  4. ინტერნეტის არქიტექტურა რესურსების გადანაწილებით (distributed) მართვის საშუალებას უნდა იძლეოდეს;
  5. ინტერნეტის არქიტექტურა უნდა იყოს ფინანსურად ეფექტური (cost effective);
  6. ინტერნეტში ახალი სისტემის ჩართვა უნდა მოითხოვდეს მინიმალურ ძალისხმევას;
  7. ინტერნეტის არქიტექტურაში გამოყენებული რესურსები უნდა იყოს დაანგარიშებადი;

20 წლის შემდეგ, National Science Foundation-მა დევიდ კლარკის ხელმძღვანელობით დაიწყო ახალი პროექტი (რომელიც ისევ გრძელდება) ინტერნეტის გაუმჯობესებასთან დაკავშირებით (პროექტის საიტი: www.nets-fia.net)

დევიდ კლარკის პრიორიტეტი ახალი და უკეთესი ინტერნეტისთვის (2008):

SECURITY

ბოქლომი

მგზავრობისას ბარგს ბოქლომით იცავთ და გიჭირთ 3 ან 4 ციფრიანი კოდის დამახსოვრება?

სწორედ თქვენთვის ახალი ბოქლომი შექმნეს! მასზე შეგიძლიათ დააყენოთ თარიღი. მაგალითად, თქვენი დაბადების დღე, რომელსაც აეროპორტის პერსონალი თქვენი პასპორტიდან გაიგებს, თქვენი დაქორწინების თარიღი, რომელიც ფეისბუქის public პროფილზე გიწერიათ ან გამგზავრების დღის თარიღი, რომელსაც ნებისმიერი გამვლელი მიხვდება 😀

P.S. ამავე დროს არ დაგავიწყდეთ, ყველაზე ძვირფასი ნივთები ამ ბოქლომით დაცულ ჩემოდანში ჩაალაგოთ 🙂

Birthday Lock

P.S.S. მარტივი ანალიზი და შედარება 4-ციფრიან ბოქლომთან:

4 ციფრიან ბოქლომზე შეიძლება 10,000 სხვადასხვა კომბინაციის დაყენება (0000-დან 9999-ის ჩათვლით).

ამ ბოქლომზე შეიძლება დაყენდეს 48,000 სხვადასხვა თარიღი (მარცხნიდან პირველზე არის 4 ვარიანტი (0,1,2,3), მეორეზე – 10, მესამეზე – 12 (თვეები), მომდევნო 2-ზე კი 10-10; შესაბამისად: 4x10x12x4x10=48,000)

ერთი შეხედვით, თარიღიანი ბოქლომი უფრო “უსაფრთხო” ჩანს, თუ ჩავთვლით, რომ მასზე დადებული კოდი იქნება random და შესაძლებელი იქნება ავირჩიოთ 30 თებერვალი და 35 მაისი (ამის შესაძლებლობას იძლევა ბოქლომი).

თუმცა პრაქტიკაში, უფრო რთულად არის საქმე. დაბადების დღეზე დაფუძნებული კოდზე გაცილებით მეტი ინფორმაციის მოძიება შეიძლება ბოქლომის პატრონის ელემენტარული “დაგუგლვით”.

გარდა ამისა, დაბადების დღიანი ბოქლომის კოდი შედგება სხვადასხვა სიძლიერის ნაწილისგან და ერთი რომელიმე მათგანის გამოცნობამ შესაძლებელია ძლიერ შეამციროს ვარიანტების რაოდენობა. მაგალითად, მხოლოდ იმის გაგებით, რომელი თვეა არჩეული, შესაძლო ვარიანტები 48,000/12=4,000-მდე მცირდება (რაც 2.5-ჯერ ნაკლბია 4-ციფრიანი კოდის შესაძლო ვარიანტებზე).

თუ ვივარაუდებთ, რომ ადამიანები საკუთარი და ოჯახის დაბადების დღეების და სხვა მნიშვნელოვანი თარიღების (რისი ნახვაც მათი სოციალური ქსელების პროფილებში იქნება შესაძლებელი) დაყენებისკენ არიან მიდრეკილი და ასევე სავარაუდოდ არ აირჩევენ არარსებულ თარიღებს (მაგალითად, 38 აგვისტოს), შესაძლოა ვარიანტების რაოდენობა კიდევ უფრო მცირდება. სავარაუდოდ, კვლევის ჩატარების შემთხვევაში შესაძლებელი იქნება რაიმე ტენდენციის აღმოჩენა ათწლეულების არჩევაშიც.

შეიძლება ეს ბოქლომი საკმარისი იყოს იმისთვის, რომ ნებისმიერმა გამვლელმა არ სცადოს ჩემოდნის გაღება. მეორეს მხრივ კი კარგი მაგალითია უსაფრთხოების სისტემებისა და მათი დიზაინის კონკრეტულ კონტექსტში განხილვისა და დისკუსიისთვის. საბოლოო ჯამში კი იმის საილუსტრაციოდ, თუ როგორ ახდენს გავლენას ადამიანი უსაფრთხოებაზე და ზოგადად ტექნოლოგიებზე.