ტექნოლოგია
/
28.02.2026
ძირითადი საკითხიდან: ისტორია იმისა, თუ როგორ დაიწყო „პატარა ჰობის პროექტის“ ბიბლიოთეკა, რომელიც გადაიქცა ერთ-ერთ ყველაზე უსაფრთხოების კრიტიკულ კოდის გზად მრავალტრილიონიანი აქტივის დასაცავად.
ეს სტატია დეტალურად აღწერს 'libsecp256k1'-ის ისტორიასა და ევოლუციას, კრიპტოგრაფიული ბიბლიოთეკის, რომელიც გადამწყვეტია ბიტკოინის უსაფრთხოებისთვის. ის დაიწყო როგორც პატარა ჰობის პროექტი ხელმოწერის ვერიფიკაციის ოპტიმიზაციისთვის, ჩაანაცვლა OpenSSL უსაფრთხოების პრობლემების გამო და მას შემდეგ გახდა მაღალოპტიმიზებული და კრიტიკული კომპონენტი მრავალტრილიონიანი აქტივების დასაცავად, მუდმივი გაუმჯობესებებითა და სხვადასხვა კრიპტოგრაფების წვლილით.
ბიტკოინერებს შორის გავრცელებული ფრაზებია „ნუ ენდობი, გადაამოწმე“ ან „არა შენი გასაღებები, არა შენი მონეტები“, ზოგჯერ კი ამტკიცებენ, რომ ის „მათემატიკით არის გამყარებული“. მაგრამ რას ნიშნავს საბოლოოდ ეს ანდაზები და როგორ ხორციელდება ეს მათემატიკა პრაქტიკაში? მკითხველთა უმეტესობამ, რა თქმა უნდა, იცის, რომ ბიტკოინის დიზაინის ფუნდამენტური ინგრედიენტი არის საჯარო გასაღების კრიპტოგრაფია და უფრო კონკრეტულად ციფრული ხელმოწერები, რომლებიც აუცილებელია საკუთრების დასამტკიცებლად ცენტრალური ერთეულის საჭიროების გარეშე. ალბათ ნაკლებად ცნობილია, თუ რომელი პროგრამული უზრუნველყოფა მუშაობს ფარულად, რათა ელიფსური მრუდის მათემატიკა იმუშაოს და რა ძალისხმევაა საჭირო იმისათვის, რომ ეს მოხდეს ყველაზე უსაფრთხო და ეფექტური გზით, მუდმივი გაუმჯობესებებით. მოდით ჩავუღრმავდეთ „libsecp256k1“-ის საინტერესო ისტორიასა და ევოლუციას, ბიბლიოთეკის, რომელიც დაიწყო როგორც პატარა ჰობის პროექტი და წლების განმავლობაში გადაიქცა კონსენსუსის წესების არსებით ნაწილად, რომელიც იცავს მრავალტრილიონიან აქტივს. მიზეზების გამო, რომლებიც ზუსტად არ ვიცით, სატოშიმ აირჩია ელიფსური მრუდი სახელწოდებით „secp256k1“ ბიტკოინში ციფრული ხელმოწერების შესაქმნელად და გადასამოწმებლად. ბიტკოინის კლიენტის საწყისი ვერსია გამოვიდა ფართოდ გავრცელებული OpenSSL ბიბლიოთეკის გამოყენებით ტრანზაქციების ხელმოწერისა და გადამოწმებისთვის. მესამე მხარის ბიბლიოთეკაზე დაყრდნობა გონივრულ მიდგომად ჟღერს პროგრამული ინჟინერიის პერსპექტივიდან (მით უმეტეს, თუ ეს ისეთი დომენ-სპეციფიკური და რთულია, როგორიცაა ელიფსური მრუდის კრიპტოგრაფია), მაგრამ ეს არჩევანი მოგვიანებით პრობლემური აღმოჩნდა ხელმოწერის პარსინგის კოდში შეუსაბამობების გამო. უარეს შემთხვევაში, ამან შეიძლება გამოიწვიოს ჯაჭვის გაუთვალისწინებელი გაყოფა. იმ პერიოდის ერთ-ერთი გაკვეთილი იყო ის, რომ OpenSSL არ არის შესაფერისი ბიბლიოთეკა კონსენსუს-კრიტიკული სისტემისთვის, როგორიცაა ბიტკოინი. პრობლემა მოგვიანებით გამოსწორდა BIP66-ით, რომელმაც უზრუნველყო ECDSA ხელმოწერების მკაცრი კოდირება. ამის შემდეგ, OpenSSL-ის დამოკიდებულება შეიცვალა libsecp256k1-ით Bitcoin Core v0.12-ში, რომელიც გამოვიდა 2016 წლის დასაწყისში.1 მაგრამ უკან დახევით, libsecp256k1 პროექტის დაწყების საწყისი მოტივაცია ძირითადად იყო ცნობისმოყვარეობა პოტენციური დაჩქარების შესახებ. 2012 წელს, Bitcoin Core-ის დეველოპერმა პიტერ ვუილემ, იგივე „sipa“-მ, წააწყდა ჰალ ფინის (ცნობილია, როგორც 2009 წელს სატოშისგან პირველი ბიტკოინის ტრანზაქციის მიმღები) bitcointalk-ის თემას. თემის სათაურით „ხელმოწერის ვერიფიკაციის დაჩქარება“, პოსტში განხილული იყო ოპტიმიზაცია, რომელიც გამოიყენებდა ეგრეთ წოდებულ „ენდომორფიზმს“ (უფრო კონკრეტულად, ეგრეთ წოდებულ GLV-მეთოდს, Gallant-Lambert-Vanstone), რასაც მხოლოდ გარკვეული ელიფსური მრუდები უშვებენ, secp256k1 კი მოხერხებულად ერთ-ერთი მათგანია. ჰალ ფინიმ თავად განახორციელა ის OpenSSL პრიმიტივების გამოყენებით, მოგვიანებით ის PR-ის სახითაც კი წარედგინა Bitcoin Core-ს.2 მიუხედავად იმისა, რომ მან აჩვენა მყარი ~20%-იანი დაჩქარება, ის საბოლოოდ არ იქნა გაერთიანებული კოდის სირთულის გაზრდის და იმის გარანტიის არარსებობის გამო, რომ ჩართული კრიპტოგრაფია უსაფრთხოა. პიტერ ვუილემ გადაწყვიტა ახალი ბიბლიოთეკის შექმნა ნულიდან, „secp256k1“ საცავის საწყისი კომიტით, რომელიც 2013 წლის 5 მარტით თარიღდება. მხოლოდ ერთი კვირის შემდეგ ბიბლიოთეკამ შეძლო სრული ბლოკჩეინის გადამოწმება (ბლოკის სიმაღლე იმ დროს ~225000), კიდევ ერთი კვირის განმავლობაში კი ხელმოწერის ფუნქციონალობა განხორციელდა. კიდევ გარკვეული დრო და ტესტირება დასჭირდა, სანამ ბიბლიოთეკა მზად იქნებოდა Bitcoin Core-ში OpenSSL-ის შემცვლელად გამოსაყენებლად, ჯერ საფულეში ხელმოწერისთვის (გამოშვება v0.10, 2015), და საბოლოოდ ECDSA ხელმოწერის ვერიფიკაციისთვის კონსენსუსში (გამოშვება v0.12, 2016). ძალისხმევა აბსოლუტურად ღირდა: Core-ში PR-ის აღწერის მიხედვით, libsecp256k1-ის გამოყენება ხელმოწერის ვერიფიკაციისთვის იყო „2.5-დან 5.5-ჯერ უფრო სწრაფი“. ირონიულად, ეს ჯერ კიდევ არ მოიცავდა ადრე ნახსენებ ენდომორფიზმის ოპტიმიზაციას, რადგან ის ნაგულისხმევად არ იყო ჩართული პატენტის დარღვევის შესახებ შეშფოთების გამო. ის მხოლოდ 2020 წელს გააქტიურდა, პატენტის ვადის გასვლის შემდეგ (ჩართული იყო გამოშვება v0.20-ში), რამაც გამოიწვია კიდევ ერთი მყარი დაჩქარება დაახლოებით 16%-ით. დროთა განმავლობაში, პროექტმა მოიზიდა რამდენიმე სხვა კონტრიბუტორი. ეს ბუნებრივად მოიცავდა ადამიანებს, რომლებიც თავიდანვე მჭიდროდ მუშაობდნენ პიტერთან Blockstream-ში, კერძოდ, მაშინდელ CTO გრეგორი მაქსველს და მკვლევარ ენდრიუ პოელშტრას. 2015 წელს შეუერთდა იონას ნიკი, ხოლო რამდენიმე წლის შემდეგ ტიმ რაფინგი, ორივე დასაქმებული იყო Blockstream-ში მკვლევარებად და ახლა უკვე რამდენიმე წელია libsecp256k1-ის შემნახველების როლს ასრულებენ. ვინაიდან ისინი პასუხისმგებელნი არიან როგორც ახალი კრიპტოგრაფიული პროტოკოლების სპეციფიკაციაზე (დეტალური უსაფრთხოების მტკიცებულებების ჩათვლით), ასევე მათ პრაქტიკაში განხორციელებაზე იმპლემენტაციითა და განხილვით, ძალიან მიზანშეწონილია მათ ვუწოდოთ „full-stack კრიპტოგრაფები“, როგორც ტიმ რაფინგს მოსწონს საკუთარი თავის აღწერა. ზოგჯერ ბიტკოინის სივრცის გარეთ მყოფმა კრიპტოგრაფებმაც კი შეიტანეს წვლილი libsecp256k1-ში. ამის ერთი გამორჩეული მაგალითია პიტერ დეტმანი, რომელიც ცნობილია C#/Java კრიპტოგრაფიული ბიბლიოთეკა BouncyCastle-ის ერთ-ერთი შემნახველის როლით, რომელიც დღემდე დროდადრო ჩნდება სხვადასხვა შესრულების გაუმჯობესების წინადადებებით. მისი ერთ-ერთი მთავარი წვლილი იყო მოდულური ინვერსიის განხორციელება „safegcd“ ალგორითმის გამოყენებით 2021 წელს უსაფრთხოდ გასაუმჯობესებლად, დანიელ ჯ. ბერნშტეინისა და ბო-იინ იანგის ნაშრომის მიხედვით. libsecp256k1-ის მიზანია უზრუნველყოს უმაღლესი ხარისხის ბიბლიოთეკა კრიპტოგრაფიული ოპერაციებისთვის secp256k1 მრუდზე, ძირითადი მიზნით, რომ იყოს სასარგებლო ბიტკოინის ფართო ეკოსისტემაში – Bitcoin Core უბრალოდ მთავარი კლიენტია, რომელიც მას იყენებს. libsecp256k1-ის API შექმნილია იმისთვის, რომ იყოს მტკიცე და ძნელად ბოროტად გამოსაყენებელი, რათა მომხმარებლები არ შეასრულონ არაუსაფრთხო ოპერაციები (მაგალითად, საკუთარი კრიპტოგრაფიული სქემების შექმნით), რამაც უარეს შემთხვევაში შეიძლება გამოიწვიოს სახსრების დაკარგვა. მხოლოდ ერთ ელიფსურ მრუდზე ფოკუსირებით და მისი ფუნქციონალობის ბიტკოინთან დაკავშირებული ოპერაციებით შეზღუდვით (ანუ, ძირითადად ტრანზაქციების ხელმოწერა და გადამოწმება), კოდი შეიძლება იყოს როგორც უფრო სწრაფი, ასევე უფრო მარტივი განსახილველი, რაც იწვევს მოვლის დაბალ ტვირთს და საერთო ხარისხის გაუმჯობესებას სხვა იმპლემენტაციებთან შედარებით. libsecp256k1 დაწერილია C-ზე და არ აქვს დამოკიდებულება სხვა ბიბლიოთეკებზე, ამიტომ ის იყენებს მხოლოდ პროექტისთვის სპეციალურად დაწერილ შიდა კოდს. როგორც ასეთი, ის შექმნილია იმისთვის, რომ იმუშაოს შეზღუდულ მოწყობილობებზე, როგორიცაა მიკროკონტროლერები, რომლებიც ხშირად გამოიყენება აპარატურულ საფულეებში. თავიდანვე, libsecp256k1-ს ჰქონდა ძლიერი აქცენტი ხარისხის უზრუნველყოფაზე, რომელიც მუდმივად უმჯობესდებოდა და იხვეწებოდა წლების განმავლობაში. ახლა მას აქვს ტესტირების კოდის დაფარვა თითქმის 100%-ით, და ახალ მოდულებს შერწყმის შანსი მხოლოდ იმ შემთხვევაში აქვთ, თუ ეს ზღვარი კვლავ დაკმაყოფილებულია. გარდა ამისა, არსებობს უზრუნველყოფის სპეციალური ფორმა, რომელსაც „ამომწურავი ტესტირება“ ეწოდება. ძირითადი იდეაა ბიბლიოთეკის ფუნქციონალობის შემოწმება მრუდზე შესაძლო მნიშვნელობების მთელი სივრცისთვის. ვინაიდან ეს შეუძლებელი იქნებოდა რეალურ secp256k1 მრუდზე, რომელიც შედგება ~2^256 წერტილისგან, სპეციალური
#ბიტკოინი
#უსაფრთხოება
#შესრულება
#კრიპტოგრაფია
#blockstream
#libsecp256k1
#ციფრული ხელმოწერები
#secp256k1
#openssl
#ჰალ ფინი
#აპარატურული საფულეები
#ამომწურავი ტესტირება
#ელიფსური მრუდი
#პიტერ ვუილე
წყარო: bitcoinmagazine.com
გაზიარება