{"id":15717017,"url":"https://github.com/armfazh/qdsa-space17","last_synced_at":"2025-03-30T21:19:40.564Z","repository":{"id":100497566,"uuid":"103472839","full_name":"armfazh/qdsa-space17","owner":"armfazh","description":"[New Optimized] This is an optimized C-language library of the qDSA digital signature scheme instantiated with Curve25519.","archived":false,"fork":false,"pushed_at":"2019-06-21T22:11:43.000Z","size":61,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-06T00:35:01.540Z","etag":null,"topics":["cryptography","curve25519","digital-signature","high-performance","montgomery-ladder","public-key-cryptography","qdsa","x64"],"latest_commit_sha":null,"homepage":"http://github.com/armfazh/qdsa-space17","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/armfazh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2017-09-14T02:00:49.000Z","updated_at":"2019-08-28T21:49:35.000Z","dependencies_parsed_at":"2023-05-15T10:45:29.396Z","dependency_job_id":null,"html_url":"https://github.com/armfazh/qdsa-space17","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/armfazh%2Fqdsa-space17","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/armfazh%2Fqdsa-space17/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/armfazh%2Fqdsa-space17/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/armfazh%2Fqdsa-space17/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/armfazh","download_url":"https://codeload.github.com/armfazh/qdsa-space17/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246379712,"owners_count":20767748,"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":["cryptography","curve25519","digital-signature","high-performance","montgomery-ladder","public-key-cryptography","qdsa","x64"],"created_at":"2024-10-03T21:48:30.622Z","updated_at":"2025-03-30T21:19:40.546Z","avatar_url":"https://github.com/armfazh.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# qdsa-space2017\n---\nThis is an optimized software library of the Quotient Digital Signature Algorithm (qDSA). This library is an extension of the original code written by [Joost Renes](https://www.cs.ru.nl/~jrenes/) (v. 2017-05-24). However, our code is enhanced with the following new features:\n\n**New Features**:\n\n - New right-to-left algorithm to calculate fixed-point multiplications on Montgomery curves.\n - Optimized prime field arithmetic for 64-bit Intel architectures using MULX and ADCX/ADOX instructions.\n - A short-size look-up table of 8 KB.\n - Around 25,000 signatures-per-second on an Intel Haswell processor running at 3.4 GHz ([see more details](#benchmark)).\n - Secure software protected with countermeasures against some side-channel attacks, e.g. constant-time execution, memory accessing and branching using non-secret data.  \n\n----\n\n## Research Resources\n\nThis software library is part of a peer-reviewed paper titled _\"A Secure and Efficient Implementation of the Quotient Digital Signature Algorithm (qDSA)\"_ authored by:\n * [Armando Faz-Hernández](http://www.ic.unicamp.br/~armfazh)\n * [Hayato Fujii](http://lasca.ic.unicamp.br/~hayato/)\n * [Diego Aranha](https://sites.google.com/site/dfaranha/)\n * [Julio López](http://www.ic.unicamp.br/pessoas/docentes/jlopez)\n\nall of them are with the [Institute of Computing](http://ic.unicamp.br) of the University of Campinas, Brazil.\nThis paper was presented at the Seventh International Conference on Security, Privacy, and Applied Cryptography Engineering ([SPACE 2017](http://www.space.dbcegoa.ac.in/)) conference.\n\nTo cite this work use:\n\n```tex\n@inproceedings{faz_qdsa_space2017,\n    author = {Armando Faz-Hern\\'{a}ndez and Hayato Fujii and Diego F. Aranha and Julio L\\'{o}pez},\n    address = \"Cham\",\n\tbooktitle = \"Security, Privacy, and Applied Cryptography Engineering: 7th International Conference, SPACE 2017, Goa, India, December 13-17, 2017, Proceedings\",\n\tdoi = \"10.1007/978-3-319-71501-8_10\",\n\teditor = \"Ali, Sk Subidh and Danger, Jean-Luc and Eisenbarth, Thomas\",\n\tisbn = \"978-3-319-71501-8\",\n\tpages = \"170–189\",\n\tpublisher = \"Springer International Publishing\",\n\ttitle = \"A Secure and Efficient Implementation of the Quotient Digital Signature Algorithm (qDSA)\",\n\turl = \"https://doi.org/10.1007/978-3-319-71501-8_10\",\n\tyear = \"2017\"\n}\n\n```\n\n----\n\n## Compilation Steps:\n\n#### Pre-requirements\n\n- A C-language compiler, e.g. gcc, clang, or icc.\n- The CMake tool.\n- Make command.\n\n\n#### Compilation\nYou can use `make` command as follows:\n\n```\n $ cd qdsa-space2017\n $ CC=gcc make \n```\n\nIf compilation succeds, four executable files will be generated:\n\n - ```qdsa_ref```: The reference implementation of qDSA.\n - ```qdsa_x64```: The reference implementation of qDSA using 64-bit optimized arithmetic.\n - ```qdsa_r2l_ref```: The reference implementation of qDSA using the new right-to-left method of point multiplication.\n - ```qdsa_r2l_x64```: The *optimized* implementation.\n\nAlternatively, you can use the `CMake` tool to generate the same files:\n\n```\n $ cd qdsa-space2017\n $ mkdir build\n $ cd build \n $ CC=gcc cmake ..\n $ make \n```\n----\n\n## Benchmark\nPerformance benchmark on Intel architectures.\n\n\n#### Runing benchmark\nExecute this program to obtain the performance report:\n\n```\n $ ./qdsa_r2l_x64\n```\n\n#### Timings\nThese are timings (reported in 10³ clock cycles) measured on Haswell and Skylake Intel processors of the optimized library (`qdsa-r2l-x64`).\n\n| Operation | Haswell | Skylake |\n| :------ | ------: | ------: |\n| KeyGen | 103.8 | 86.8 |\n| Signature | 130.1 | 114.6 |\n| Verification | 309.6 | 253.5 |\n\n#### Comparison\nPerformance rendered on a Haswell processor running at 3.4 GHz.\n\n| Scheme | Sign/second | Verification/second |\n| :------ | ------: | ------: |\n| ECDSA (P-256) | 25.3 | 10.2 |\n| Ed25519 | 48.7 | 17.1 |\n| qDSA | 25.1 | 12.1 |\n\n\n----\n\n### License \nGNU Lesser General Public License v3.0 ([LICENSE](https://www.gnu.org/licenses/lgpl-3.0.txt))\n\n----\n\n### Contact \n\nTo report some issues or comments of this project, please use the [issues](https://github.com/armfazh/qdsa-space2017/issues) webpage. \n\n\n----\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farmfazh%2Fqdsa-space17","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farmfazh%2Fqdsa-space17","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farmfazh%2Fqdsa-space17/lists"}