{"id":19621931,"url":"https://github.com/kiooku/cryptography-notebook","last_synced_at":"2025-04-23T21:47:04.706Z","repository":{"id":167949211,"uuid":"643550331","full_name":"Kiooku/Cryptography-Notebook","owner":"Kiooku","description":"Cryptography Notebook is a repository containing some of the cryptographic implementations I have done for learning purposes.","archived":false,"fork":false,"pushed_at":"2024-06-22T09:27:28.000Z","size":184,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-11-11T11:30:56.727Z","etag":null,"topics":["assymetric-encryption","commitment-schemes","cryptography","digital-signature","double-ratchet-algorithm","e2ee","ggh","hkdf","hmac","identification-scheme","one-time-pad","post-quantum-cryptography","public-key-cryptography","rsa","signal","x3dh","zero-knowledge-proof"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Kiooku.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-05-21T14:20:41.000Z","updated_at":"2024-11-08T09:13:58.000Z","dependencies_parsed_at":"2024-06-22T19:11:33.400Z","dependency_job_id":null,"html_url":"https://github.com/Kiooku/Cryptography-Notebook","commit_stats":null,"previous_names":["kiooku/cryptography-notebook"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kiooku%2FCryptography-Notebook","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kiooku%2FCryptography-Notebook/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kiooku%2FCryptography-Notebook/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kiooku%2FCryptography-Notebook/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Kiooku","download_url":"https://codeload.github.com/Kiooku/Cryptography-Notebook/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":233181000,"owners_count":18637503,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["assymetric-encryption","commitment-schemes","cryptography","digital-signature","double-ratchet-algorithm","e2ee","ggh","hkdf","hmac","identification-scheme","one-time-pad","post-quantum-cryptography","public-key-cryptography","rsa","signal","x3dh","zero-knowledge-proof"],"created_at":"2024-11-11T11:25:16.073Z","updated_at":"2025-01-09T11:32:48.553Z","avatar_url":"https://github.com/Kiooku.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Cryptography Notebook\n\n## What is that ?\n\nIt's a repository with some of the cryptographic implementations I have done for learning purposes.\n\nUntil then by solving cryptography challenges on [CryptoHack](https://cryptohack.org/user/Kioku/) and Root-Me.\n\nCurrently, I'm reading \"An Introduction to Mathematical Cryptography\" (Second edition), and in order to apply the mathematical knowledge and get a better understanding, I decided to create this repository.\n\nLearn, understand, and create project is a long process, which is why the repository will contain more implementation month after month.\n\n## Content of the repository\n\n### Symmetric Ciphers\n\n\u003e [!NOTE] \n\u003e Work in progress\n\n- [ ] AES (ECB / CBC / CFB / OFB / CTR)\n\n### Asymmetric Ciphers\n\n\u003e [!NOTE] \n\u003e Work in progress\n\n#### Implementations\n\n- [X] [Diffie-Hellman Key Exchange](./AsymmetricCiphers/Diffie_Hellman/)\n\n- [X] [ElGamal PKC](./AsymmetricCiphers/ElGamal/)\n\n- [X] [RSA](./AsymmetricCiphers/RSA/)\n\n- [X] [Goldwasser–Micali Probabilistic PKC](./AsymmetricCiphers/GoldwasserMicaliProbabilisticPKC/)\n\n- [X] [Elliptic Diffie-Hellman Key Exchange](./AsymmetricCiphers/Elliptic_Diffie_Hellman/)\n\n- [X] [Elliptic Elgamal Public Key Cryptosystem](./AsymmetricCiphers/EllipticElgamalPKC/)\n\n- [ ] Menezes-Vanstone variant of the Elliptic Elgamal PKC\n\n- [X] [Tripartite Diffie-Hellman Key Exchange](./AsymmetricCiphers/Tripartite_Diffie_Hellman_Key_Exchange/)\n\n- [X] [The Merkle–Hellman subset-sum cryptosystem](./Mathematics/Lattice/SubsetSum/)\n\n- [X] [GGH cryptosystem](./AsymmetricCiphers/GGH_cryptosystem/)\n\n- [X] [NTRUEncrypt cryptosystem](./AsymmetricCiphers/NTRUEncrypt/)\n\n- [X] [X3DH](./AsymmetricCiphers/x3dh/)\n\n#### Attacks\n\n##### Diffie-Hellman\n\n- [X] [Small Subgroup Confinement Attack *(Diffie-Hellman)*](./Attacks/README.md#small-subgroup-confinement-attack-diffie-hellman)\n\n##### ElGamal\n\n- [X] [ElGamal with a Diffie-Hellman Oracle](./AsymmetricCiphers/ElGamal/README.md#attacks-using-oracle)\n\n##### RSA\n\n- [X] [Blinding Attack on RSA Digital Signature](./Attacks/RSA/BlindingAttackonRSADigitalSignature.md)\n- [X] [Bleinchenbacher's attack (PKCS 1 v1.5)](./Attacks/RSA/BleinchenbacherAttack(PKCS%201v1.5).md)\n\n#### Man-in-the-Middle Attack *(MITM)*\n\n- [ ] Diffie-Hellman MITM\n\n### ID-Based Public Key Cryptosystem\n\n- [ ] The Boneh Franklin Id Based PKC\n\n### Commitment Schemes\n\n- [X] [The Pedersen commitment scheme](./CommitmentScheme/pedersen-commitment-scheme/)\n\n### Identiﬁcation Schemes\n\n- [X] [Feige–Fiat–Shamir identification scheme](./IdentiﬁcationSchemes/feige-fiat-shamir-identification-scheme/)\n\n- [X] [Schnorr's sigma protocol](./IdentiﬁcationSchemes/schnorr_sigma_protocol/)\n\n### Digital Signatures\n\n\u003e [!NOTE] \n\u003e Work in progress\n\n- [X] [RSA Digital Signatures](./DigitalSignatures/RSA_Digital_Signatures/)\n\n- [X] Elgamal Digital Signatures\n\n- [X] Digital Signature Algorithm (DSA)\n\n- [X] Elliptic Curve Digital Signature Algorithm (ECDSA)\n\n- [X] [GGH Digital Signature Scheme](./DigitalSignatures/GGH_Digital_Signature/)\n\n- [ ] NTRU Modular Lattice Signature Scheme (NTRUMLS)\n\n### Hash Functions\n\n\u003e [!NOTE]\n\u003e Basic knowledge -\u003e Need to learn more\n\n### Message Authentification\n\n- [X] [HMAC](./MessageAuthentification/)\n\n### Key Derivation Function\n\n- [X] [HKDF](./KeyDerivationFunction/HKDF/)\n\n### Secret Sharing Schemes\n\n- [ ] Shamir's secret sharing\n\n- [ ] Blakley's scheme\n\n### PRNG\n\n\u003e [!NOTE] \n\u003e Need to learn\n\n- [ ] ANSI X9.17 PRNG\n\n- [ ] DSA PRNG\n\n- [ ] RSAREF PRNG\n\n- [ ] fsrRand\n\n### One-Time pad\n\n\u003e [!NOTE] \n\u003e One-Time pad can be really simple to code, so I did it in assembly\n\n- [X] [XOR based one-time pad](./OneTimePad/)\n\n### End-to-end encryption\n\n- [X] [Double Ratchet Algorithm](./E2EE/double-ratchet-algorithm/)\n\n- [X] [Double Ratchet with header encryption](./E2EE/double-ratchet-with-header-encryption/)\n\n### Zero-Knowledge Proofs\n\n\u003e [!NOTE] \n\u003e Need to learn\n\n### Homomorphic Encryption\n\n\u003e [!NOTE] \n\u003e Ongoing learning of lattices to understand homomorphic encryption\n\n### Post-Quantum\n\n\u003e [!NOTE] \n\u003e Ongoing learning of lattices and learning with errors to understand Post-Quantum cryptography\n\n### Mathematics\n\n#### Algorithm and Theorem\n\n\u003e [!NOTE] \n\u003e Work in progress\n\n- [X] Euclidean algorithm\n\n- [X] Shanks’s Babystep–Giantstep Algorithm\n\n- [X] Chinese Remainder Theorem\n\n- [X] Pohlig-Hellman Algorithm\n\n- [X] Miller–Rabin test for composite numbers\n\n- [X] Pollard’s p − 1 factorization algorithm\n\n- [ ] Gaussian elimination\n\n- [X] Fermat's Factorization\n\n- [X] Kraitchik’s Factorization\n\n- [ ] A three step factorization procedure (Relation Building / Elimination / GCD Computation)\n\n- [X] Quadratic sieve\n\n- [ ] Index calculus\n\n- [ ] Pollard's $\\rho$ Method\n\n#### Elliptic Curves\n\n- [X] Addition\n- [X] Double-and-Add Algorithm\n- [X] Lenstra's Elliptic Curve Factorization Algorithm\n- [X] Miller algorithm\n- [X] Weil Pairing\n- [X] MOV algorithm\n\n#### Lattices\n\n- [X] Create a Lattice class\n\n- [X] Create a Knapsack class\n\n- [X] Gram-Schmidt Algorithm\n\n- [X] Hadamard ratio\n\n- [X] Babai's closest vertex algorithm\n\n- [X] Babai's closest plane algorithm\n\n- [X] Gaussian Lattice reduction\n\n- [X] LLL algorithm\n\n### Learning with errors (LWE)\n\n\u003e [!NOTE] \n\u003e Need to learn\n\n### Cryptography projects\n\n- [X] [mini-signal](https://github.com/Kiooku/mini-signal)\n\n## Resources\n\n- [An Introduction to Mathematical Cryptography (Second Edition)](https://link.springer.com/book/10.1007/978-1-4939-1711-2)\n\n- [CryptoHack](https://cryptohack.org/)\n\n- [Cryptography Academy](https://cryptographyacademy.com/identification-schemes/)\n\n- [Signal](https://signal.org/docs/)\n\n- [Serious Cryptography A Practical Introduction to Modern Encryption](https://nostarch.com/seriouscrypto)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkiooku%2Fcryptography-notebook","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkiooku%2Fcryptography-notebook","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkiooku%2Fcryptography-notebook/lists"}