ეს ვებგვერდი თან ახლავს თავისუფალი უნივერსიტეტის კრიპტოგრაფიის (aka კომპიუტერული სისტემების უსაფრთხოების) კურსს. აქ იპოვით ინფორმაციას ლექციებზე, სემინარებსა და საშინაო დავალებებზე, ასევე სხვა გამოსადეგ ბმულებს. კურსის ფორუმად ვიყენებთ Google Classroom-ს.
ლექტორის ელფოსტა: g.osipovi@freeuni.edu.ge
კურსის აღწერა
კრიპტოგრაფია კომპიუტერულ სისტემებში ინფორმაციის დაცვის შეუდარებელი საშუალებაა. მის გარეშე წარმოუდგენელი იქნებოდა თანამედრობე ინტერნეტ ბიზნების უდიდესი ნაწილი. ამ კურსში ისწავლით კრიპტოგრაფიული პრიმიტივების გამოყენებას და მათი მუშაობის ძირითად პრინციპებს.
კურსი შედგება 16 ლექციისა და 16 სემინარისგან. შეფასება ხდება 3 საშინაო დავალების (3x10%) და ორი გამოცდის - შუალედურის (30%) და ფინალურის (40%) - მიხედვით.
ლექციების ვიდეოებს უნდა უყუროთ დამოუკიდებლად. ჩვენს სალექციო საათებს დავუთმობთ ნანახი მასალის და დამატებითი მაგალითების გარჩევას. ჩანაწერებს იპოვით ამ ვებგვერდზე ან Coursera-ზე. (შეგიძლიათ კურსერას კურსი აიღოთ და მიყვეთ სემესტრის განმავლობაში, ბოლოს სერტიფიკატიც მოითხოვოთ).
სემინარის ამოცანები დევს ამ ფოლდერში, ვიდეოამახსნები კი ამ პლეილისტში. რჩევა: სანამ ამოხსნის ვიდეოს უყურებთ, სცადეთ ამოცანის ამოხსნა დამოუკიდებლად ან სხვა სტუდენტებთან ერთად.
კურსში არ გვაქვს ოფიციალური სახელმძღვანელო, რომელსაც მივყვებით ტექსტთან ახლოს. ყველა საჭირო თემაზე წერია ბონეს და შუპის შიგნში, თუმცა ის გათვლილია სამაგისტრო და სადოქტორო სტუდენტებზე. უფრო მარტივი და დასრულებული სახელმძღვანელოა კაცისა და ლინდელის წიგნი.
დავალებები
საშინაო დავალებებისთვის ვიყენებთ GitHub Classroom-ს. დავალებებს ვწერთ Python 3-ზე. შეგიძლიათ გამოიყენოთ მხოლოდ სტანდარტული ბიბლიოთეკის ფუნქციები.
- პირველი დავალების ბმული: https://classroom.github.com/a/-rvYMdrL
- მეორე დავალების ბმული: https://classroom.github.com/a/djCIlYSR
- მესამე დავალების ბმული: https://classroom.github.com/a/GV_k7ho0
ყველა დავალების დედლაინი არის ფინალურ გამოცდამდე ერთი კვირით ადრე.
ბმულზე გადასვლის შემდეგ GitHub შეგიქმნით რეპოზიტორიას, რომელშიც იქნება საწყისი ფაილები, დავალების ინსტრუქცია და ტესტები თქვენი კოდის შესამოწმებლად. როდესაც კოდს თქვენს კომპიუტერში აამუშავებთ და მოცემულ ტესტებზე გაატარებთ, გააკეთეთ commit. ყოველ კომიტზე ავტომატურად გაიშვება ავტოგრეიდერი, რომელიც კოდს ბით ტესტებზე შეამოწმებს. ავტოგრეიდინგის შედეგი გამოიყურება ასე:
დეტალების სანახავად ორი გზა გაქვთ:
- დააჭირეთ სიმბოლოს (სქრონშოტზე, წითელ X-ს მონიშნულ არეში) და შემდეგ Details.
- გადადით Actions-ში, აირჩიეთ GitHub Classroom Autograding Workflow, და შედმეგ Autograding.
საბოლოო შემოწმება, რომლის მიხედვითაც დაიწერება ქულები, მოხდება დახურულ ტესტებზე, რომელსაც ავტვირთავთ დედლაინის მერე.
ყველა ფაილი ავტომატურად მოწმდება პლაგიატზე. ეჭვის შემთხვევაში კოდს პლაგიატზე აფასებს შოთა
განრიგი
ეს არის სავარაუდო განრიგი. ვიდეოების სახელები იგივეა რაც ამ გვერდზე. თუ გინდათ, მოძებნოთ შესაბამისი თავი წიგნში, შეგიძლიათ გამოიყენოთ CS255-ის სილაბუსი.
ლექციაზე განვიხილავთ | შემდეგი კვირისთვის საყურებელი ვიდეო | შემდეგი კვირის ამოცანები | |
---|---|---|---|
0 | What is cryptography?; Crash course in discrete probability | Discrete Probability | |
1 | შესავალი | Stream Ciphers 1, 2, 3 | Problem Set 1: 1, 2, 3 |
2 | One-Time Pad, Stream ciphers | Stream Ciphers 4 | Problem Set 1: 4, 5, 6 |
3 | Pseudorandom generators, Sematic security | Block Ciphers 1, 2, 3 | Problem Set 2: 1, 2 |
4 | DES, AES, Pseudorandom permutations | How to Use Block Ciphers 1, 2 | Problem Set 2: 3, 4, 5, 6, 7 |
5 | Block ciphers, modes of encryption | Message Integrity 1, 2 | Problem Set 3: 1, 2, 3 |
6 | Message authentication codes (MAC) | Collision Resistance 1, 2; HMAC | Problem Set 3: 4, 5, 6, 7, 8 |
7 | Hash functions, HMAC | Authenticated Encryption 1, 2, 3 | შარშანდელი შუალედურის ბილეთი |
8 | Chosen ciphertext attacks | Odds and Ends 1, 2, 3 | Problem Set 4: 1, 2, 3 |
9 | Authenticated encryption | Number Theory 1, 2 | Problem Set 5: 1 |
10 | დასვენება | ||
11 | Number theory and groups | Basic Key Exchange 1, 2 | Problem Set 5: 2, 3 |
12 | Key exchange, Diffie-Hellman | PKE from Trapdoor Permutations, PKE From Diffie-Hellman: ElGamal | Problem Set 6: 1 |
13 | Chosen ciphertext security, ElGamal | PKE from Trapdoor Permutations: RSA, attacks | Problem Set 6: 2, 3 |
14 | RSA | შარშანდელი ფინალურის ბილეთი | |
15 | Zero-knowledge proofs | ||
16 | Quantum cryptography (სტუმრის ლექცია) |
კონსპექტები
- იდეალური დაცულობა და შენონის თეორემა
- …
- ჯგუფები და დიფი-ჰელმანის გასაღების გაცვლის პროტოკოლი
- მოდულარული არითმეტიკა
- დაშიფრვა საჯარო გასაღებით და RSA
დამატებითი სავარჯიშოები
ეს ამოცანები შეგიძლიათ გამოიყენოთ დამატებით სავარჯიშოებად. ცნობისთვის, შუალედურისა და ფინალური ამოცანები იქნება სხვა სტილისა და სირთულის, უფრო Problem Set-ების მსგავსი. თუ ამოხსნები დაგაინტერესებთ, შეგვიძლია განვიხილოთ სემინარზე ან/და საკონსულტაციო საათების დროს.
წყაროები:
- R - როსულეკის უფასო წიგნიდან “The Joy of Cryptography”
- KL - კაცის და ლინდელის წიგნი (დევს კლასრუმზე)
თემა | R | KL |
---|---|---|
One-Time Pad | 1.(1,2,4,5,7,8,10) | 2.(8,9,10). |
Pseudorandom Generators | 5.(1,7-14) | 3.(5,6) |
Pseudorandom Functions | 6.(2-10,17), 8.12 | 3.(11,14,15,16,19) |
Block Ciphers | 8.(4,6,8,13bc,14,15) | 3.(26,29-33) |
MACs | 10.(1,2,5) | 4.(5,6,7,13-16,19,20) |
Hash Functions | 11.(2,7,13) | |
Number Theory, Diffie-Hellman, RSA | 14.(1,3,5,8) | 9.(4-6,10-13,21,28,29) |
სხვა ბმულები
წიგნები და კონსპექტები
- ბონეს და შუპის წიგნი: http://toc.cryptobook.us/
- როსულეკის წიგნი: https://joyofcryptography.com/pdf/book.pdf
- პასის და შელას კონსპექტი: https://www.cs.cornell.edu/courses/cs4830/2010fa/lecnotes.pdf
- სმარტის წიგნი: https://www.mog.dog/files/SP2019/Cryptography%20Made%20Simple.pdf
სხვა კურსები კრიპტოგრაფიაზე
- ჯონ კაცის კურსი კურსერაზე: https://www.coursera.org/learn/cryptography
- დან ბონეს კურსი სტენფორდის უნივერსიტეტში: http://crypto.stanford.edu/~dabo/cs255/
- მონი ნაორის კურსი ვაიცმანის ინსტიტუტში: https://www.wisdom.weizmann.ac.il/~naor/COURSE/foundations_cryptography_21_22.html
- ბოაზ ბარაკის კურსი ჰარვარდის უნივერსიტეტში: https://intensecrypto.org/public/index.html
- რონ რივესტის და იაელ კალაის კურსი MIT-ში: http://courses.csail.mit.edu/6.857/2022/
- ვინოდ ვაიკუნტანათანის კურსი MIT-ში: https://mit6875.github.io/
- ვიპულ გოიალის კურსი CMU-ში: http://www.cs.cmu.edu/~goyal/15356/
- lvh-ის ნაკლებად ფორმალური კურსი: https://www.crypto101.io/ (სახალისო შესავალი ლექციით)
- ხანის აკადემიის კურსი: https://www.khanacademy.org/computing/computer-science/cryptography
ამოცანები და გამოცანები
- https://cryptopals.com/
- https://mysterytwister.org/home/welcome/
- https://cryptohack.org/
- https://www.wisdom.weizmann.ac.il/~naor/puzzler.html
- შეამოწმეთ თავი, რამდენად კარგი რენდომ გენერატორები ხართ https://calmcode.io/blog/inverse-turing-test.html
სხვადასხვა ვიდეოები
- ვიდეოილუსტრაციები კრიპტოგრაფიის თემებზე: https://www.youtube.com/c/ArtOfTheProblem/
- 3b1b-ს ვიდეო “How secure is 256 bit security?”: https://youtu.be/S9JGmA5_unY
- დან ბონეს პოპ-მეცნიერული ლექცია “Cryptography: From Mathematical Magic to Secure Communication” ელიპტურ წირებსა და მათ გამოყენებებზე კრიპტოგრაფიაში: https://youtu.be/4M8_Oo7lpiA
- სილვიო მიკალის პოპ-მეცნიერული ლექცია “Proofs, Knowledge, and Computation”: https://youtu.be/WSuUTLqqLIU
კრიპტოგრაფიის must-read სტატიები
სია შეადგინა მონი ნაორმა.
- M. Blum. Coin flipping by telephone. In Proceedings of IEEE Spring Computer Conference, pages 133–137. IEEE, 1982.
- M. Blum and S. Micali, How to Generate Cryptographically Strong Sequences of Pseudo-Random Bits, SIAM J. Comput. 13(4), 1984, pages 850-864.
- W. Diffie and M. Hellman, New Directions in Cryptography , IEEE Trans. on Information Theory, 1976.
- O. Goldreich, S. Goldwasser and S. Micali, How to construct random functions , Journal of the ACM (JACM), Volume 33 , Issue 4 (October 1986), Pages: 792 - 807.
- S. Goldwasser and S. Micali, Probabilistic Encryption, Journal of Computer and System Sciences, 28:270-299, 1984. link
- S. Goldwasser, S. Micali, and C. Rackoff, The Knowledge Complexity of Interactive Proof Systems . SIAM J. of Computing, vol. 18, no. 1, 1989, Pages 186-208.
- S. Goldwasser, S. Micali, and R. L. Rivest, A Digital Signature Scheme Secure Against Adaptive Chosen-Message Attacks, SIAM J. on Computing, vol 17(2) 1988, pages 281-308.
- M. Luby and C. Rackoff, How to construct pseudorandom permutations from pseudorandom functions, SIAM J. on Computing, vol 17(2) 1988, pages 373 - 386.
- R.L. Rivest, A. Shamir, and L.M. Adleman, A Method for Obtaining Digital-Signatures and Public-Key Cryptosystems, Comm. ACM 21(2): 120-126 (1978).
- Michael O. Rabin, How to exchange secrets by oblivious transfer. Technical Report TR-81, Aiken Computation Laboratory, Harvard University, 1981.
- C. Shannon, Communication Theory of Secrecy Systems
- C. Shannon, A mathematical Theory of Communication, Bell System Technical Journal, vol. 27, pp. 379-423 and 623-656, July and October, 1948. link