თებ 5, 2011
Public Key Cryptography
ამ პოსტის სათაურად ვაპირებდი რომ ყოფილოყო “საჯარო გასაღების კრიპტოგრაფია”, მაგრამ ქართულად სამწუხაროდ არაკეთილხმოვნად ჟღერს, თანაც ცოტათი დაგაბნევდათ ამ სიტყვების კომბინაცია, არადა აშკარად საჭიროა ასეთი “IT სიტყვების” ლოკალიზაცია თორემ მერე მივიღებთ “პაჩემნიკის” ანალოგებს. მცირე პროლოგის მიწურულს, ვინც თვლის რომ ეს პოსტი მისთვისაა და აინტერესებს რა კეთილ საქმეში შეიძლება მისი გამოყენება ვსქროლავთ ქვევით.
Public key cryptography ეს არის ასიმეტრიული ალგორითმების ნაკრები (ცალმხრივი შიფრაციის მათემატიკური მოდელები). გასული საუკუნის 70-იან წლებში აქტიურად დაიწყო ამ ალგორითმების ციფრულ სამყაროში ინტეგრაცია და დღეისთვის ინფორმაციის დაშიფვრის ყველაზე გავრცელებულ და გამართლებულ მეთოდად ითვლება. Public key cryptography ყოველთვის შედგება წყვილი, საჯარო და პირადი (public & private) გასაღებებისგან.
როგორი იქნებოდა public key cryptography-ის გამოყენება ჩვეულებრივ ცხოვრებაში? წარმოვიდგინოთ მაგალითი: გამოჩენილი ამერიკელი “წყვილის” ელისის და ბობის მაგალითზე ( Alice & Bob. ამ “წყვილის” სამეცნიერიო ტესტირებაში გამოყენება იმდენად გავრცელებულია, რომ ქართული ანალოგის შექმნა ზედმეტი იქნებოდა).
ელისი უგზავნის ბობს წერილს, რომელსაც ათავსებს ყუთში და ადებს თავის ბოქლომს (public), რომლის გასაღებიც მხოლოდ ელისს გააჩნია, ყუთს კი უგზავნის ბობს ფოსტის მეშვეობით. როდესაც ბობი მიიღებს ყუთს ისიც დაადებს თავის ბოქლომს და უკან გაუგზავნის ელისს. როდესაც ელისი მიიღებს ყუთს ორი ბოქლომით, მოხსნის თავის ბოქლომს და კვლავ გადაუგზავნის ბობს. ბოლოს კი როდესაც ბობი მიიღებს ყუთს მხოლოდ თავისი ბოქლომით, მას შეუძლია გახსნას ის თავისი გასაღებით და წაკითხოს წერილი ელისისგან. ამ “ჰეფი ენდს” ალტერნატიული ფინალიც ააქვს რომელსაც ქვია: მელორი, ანუ ამ სცენარის ერთადერთი სისუტე – მესამე პირი რომელიც შეიძლება ბობს და ელისს შორის ჩადგეს. დიახ, დიახ, ბოროტ მელორის შეუძლია ჩადგეს გასაღებების დაგზავნის შუამავლად მაგ: ელისი>>მელორი>>ბობი და ბობი>>მელორი >>ელისი. ისე რომ ელისმა და ბობმა ეს ვერ გაიგონ . მელორის ასეთ სქციელს ეწოდება Man-in-the-middle attack, თუმცა შესაძლებელია ამის თავიდან აცილება certificate authority იგივე (CA) გამოყენებით (მესამე მხარე რომლიც გადაამოწმებს გამგზავნის და მიმღების იდენტურობას). საჯარო გასაღებებს კიდევ რამოდენიმე სისუსტე გააჩნია, მაგრამ ისინი ისეთი უმნიშვნელო და უწყინარია რომ ამ პოსტში არ განვიხილათ.
ძირითადი მახასიათებლები:
1. public key cryptography ყოველთვის შედგება წყვილი გასაღებებისგან: public, private (საჯარო, პირადი)
2. public key ყველასთვის ხელმისაწვდომია.
3. private key ხელმისაწვდიომია მხოლოდ მფლობელისთვის.
4. public key დაშიფრული ინფორმაციის გაშიფვრა შეუძლია მხოლოდ მის შესაბამის private key-ს და პირიქით.
5. public key მათემატიკურად დაკავშირებულია private key-სთან, მაგარამ პირველიდან მეორეს მღება შეუძლებელია.
ქვემთ მოცემულ სურათში განვიხილოთ შიფრაციის სქემა:
ამ სურათის მიხედვით ბობი უგზავნის ელისს ბანალურ შეტყობინებას, რომელიც იშიფრება ელისის საჯარო გასაღებით და მიღებული შეტყობინების გაშიფვრას ელისი ახდენს პირადი გასაღების საშულებთ. ტექსტის დასაშიფრად ამ შემთხვევაში გამოყენებულია DSA 2048 – ბიტიანი ალგორითმი. განვიხილოთ მეორე შემთხვევა, როდესაც ელისი უკან უგზავნის პასუხს ბობს.
აქვე ვგებულობთ, რომ შეტყობინების დაშიფვრა აგრეთვე შესაძლებელი ყოფილა პირადი გასაღებით, რომლის გახსნა მხოლოდ საჯარო გასაღებს შეუძლია. შესაბამისად ბობი ბანალურ მიმართვაზე ბანალურ პასუხს ღებულობს და ორივე ბედნიერია.
გამოყენება
როგორც იქნა მივედით უფრო საინტერესო ნაწილამდე, რასაც ამ ყველაფრის რეალიზაცია ქვია. ამ მეთოდს პლანეტრაული გამოყენება აქვს, მაგრამ ჩვენ დღეს განვიხილავთ როგორ გამოვიყენოთ იგი 2 ან n კომპიურტერის ერთმანეტში უპაროლო ავტორიზაციისთვის SSH_ის გამოყენებით, ზოგადად მიჩნეულია და მეც ვეთანხხმები, რომ ასეთი მეთოდით ავტორიზაცია უფრო უსაფრთხოა ვიდრე პაროლის გამოყენება, ყველაფერს რომ თავი დავანებოთ ძალიან აადვილებს და მოსახერხებელს ხდის წვდომას დაშორებულ კომპიუტერამდე ავტორიზაციის თავიდან აცილების გზით.
ნაგულისხმევად ssh ავტორიზაციის ფაილები და პარამეტრები ინახება მიმდინარე მომხმარებლის დირექტორიაში ~/.ssh , თუ ეს მისამართი თქვენთან არ არსებობს არაუშავს ssh-keygen უტილიტა მას თავისთ დააგენერირებს და საჭირო წვდომის უფლებებსაც მიანიჭებს. დავაყენეოთ openssh კლიენტი და სერვერი ან განვაახლოთ თუ უკვე გვაქვს და დავაგენერიროთ public key წყვილი:
yum -y install openssh openssh-clients openssh-server ls -l ~/.ssh yes | ssh-keygen -t rsa
გამოვა შეტყობინება: “Enter passphrase (empty for no passphrase):” ვაწვებით ენთერს. პაროლი არ გვჭირდება.
ოპერაციის დასრულების შემდეგ გამოვა რაღაც ამდაგვარი ბინარულ – აბტრაქციონისტური შემოქმედება და გვახარებს წყვილი გასაღების გენერირებას.
The key fingerprint is:
f3:96:01:e8:6f:64:01:53:27:d2:58:a1:0b:a6:2c:e1 user@hostname.ge
The key’s randomart image is:
ვნახოთ რა შექმნა წინა ბრძანებამ:
ls -la ~/.ssh drwx------ 2 user group 4096 2011-02-04 16:19 . drwx------ 28 user group 4096 2011-02-04 15:14 .. -rw------- 1 user group 1675 2011-02-04 02:18 id_rsa -rw-r--r-- 1 user group 393 2011-02-04 02:18 id_rsa.pub -rw-r--r-- 1 user group 391 2011-02-04 16:19 known_hosts
ვნახავთ ორ ახალ ფაილს: id_rsa და id_rsa.pub
ყურადრება: ფაილი id_rsa წარმოადგენს თქვენს პირად გასაღებს! მის სხვისთვის გაზიერება იგივეა რაც პაროლის გაზიარება, ან სეიფის გასაღების გაზიარება, ამიტომ მაქსილამურად დაცული იქონიეთ. ვაკოპირებთ id_rsa.pub სამიზნე კომპზე (სამიზნე კომპზეც უნდა იყვეს დირექტორია ~/.ssh)
scp ~/.ssh/id_rsa.pub user@hostname.ge:.ssh/authorized_keys2
თქვენს შემთხვევაში hostname.ge შეიძლება იყვეს სერვერის IP. ეხლა შევცვალოთ შემდეგი პარამეტრები /etc/ssh/sshd_config, _ში უსაფრთხოების გაძლიერების მიზნით, ვეძებთ შემდეგ სტრიქონებს კონფიგ ფაილში ვუშლით კომენტარებს (კომენტარი = #) და ვუცვლით მნიშვნელობებს შემდეგზე:
PermitRootLogin no PasswordAuthentication no ChallengeResponseAuthentication no PrintMotd no UseLogin no UseDNS no
გადავტვირთოდ sshd სერვისი სერვერზე :
ssh root@hostname.ge "service sshd restart"
თუ თქვენ ჯეეეერ ვერაფერს მიხვდით მაშინ მოსინჯეთ სერვერზე შესვლა შემდეგნაირად :) :
ssh hostname.ge
დიახ! თქვენ უკვე აღარ გჭირდებათ მომხმარებლის სახელის და პაროლის შეყვანა ავტორიზაციის გასავლელად.



Gaixare magari postia. Vse iasno exla :-)