{ "info": { "author": "Carter Yagemann", "author_email": "yagemann@gatech.edu", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Topic :: Security", "Topic :: Security :: Cryptography", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Utilities" ], "description": "Fuzzy Extractor\n===============\n\nA Python implementation of fuzzy extractor.\n\nIntroduction\n============\n\nFuzzy extractors are a cryptography primitive designed to reliably derive keys\nfrom noisy sources. This makes them suitable for areas like biometric\nauthentication where two measurements of the same subject can yield slightly\ndifferent values. This implementation uses hamming distance as its error\nmetric, meaning that two binary strings will produce the same key with very\nhigh probability if their hamming distance is within some given threshold.\n\nThe storage and retrieval of keys is performed using a primitive known as a\n*digital locker*. More information is available in the references section of\nthis documentation.\n\nNote that this is a probabilistic primitive based on very recent research. Use\nthis library in real security applications at your own risk, ideally after\nperforming some empirical evaluation for your chosen thresholds.\n\nInstalling\n==========\n\nThis library can be install from pip::\n\n $ pip install fuzzy-extractor\n\nDevelopment\n-----------\n\nThis repository comes with a `Makefile` to help with getting a development\nenvironment configured::\n\n $ make help\n\nUsage\n=====\n\nGetting Started\n---------------\n\nThis section will cover the basics of using fuzzy extractors. First, we need\nto create an extractor::\n\n from fuzzy_extractor import FuzzyExtractor\n\n extractor = FuzzyExtractor(16, 8)\n\nThe extractor we just created will accept 16 byte (128-bit) input values and\nguarantees that inputs within 8 bits of each other will produce the same key\nwith over 0.9999 probability (see the references for more details).\n\nWe're now ready to generate a key for some input::\n\n key, helper = extractor.generate('AABBCCDDEEFFGGHH')\n\nNote that `generate()` returned two things: `key` and `helper`. The former is\nthe secret that can now be used for further cryptography. The latter does not\nneed to be protected (i.e., it is not a secret), but it does need to be stored\nsomewhere if we want to be able to reproduce the same key later.\n\nAs long as we have the public helper, we can reproduce the key with any input\nclose enough to the original::\n\n r_key = extractor.reproduce('AABBCCDDEEFFGGHH', helper) # r_key should equal key\n r_key = extractor.reproduce('AABBCCDDEEFFGGHI', helper) # r_key will probably still equal key!\n r_key = extractor.reproduce('AAAAAAAAAAAAAAAA', helper) # r_key is no longer likely to equal key\n\nDocumentation\n-------------\n\nSee the `doc` directory for documentation.\n\nReferences\n==========\n\n- Canetti, Ran, et al. \"Reusable fuzzy extractors for low-entropy distributions.\" *Annual International Conference on the Theory and Applications of Cryptographic Techniques*. Springer, Berlin, Heidelberg, 2016.\n\n\nCarter Yagemann\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "https://github.com/carter-yagemann/python-fuzzy-extractor", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/carter-yagemann/python-fuzzy-extractor", "keywords": "fuzzy extractor security", "license": "GPLv3+", "maintainer": "", "maintainer_email": "", "name": "fuzzy-extractor", "package_url": "https://pypi.org/project/fuzzy-extractor/", "platform": "Any", "project_url": "https://pypi.org/project/fuzzy-extractor/", "project_urls": { "Download": "https://github.com/carter-yagemann/python-fuzzy-extractor", "Homepage": "https://github.com/carter-yagemann/python-fuzzy-extractor" }, "release_url": "https://pypi.org/project/fuzzy-extractor/0.3/", "requires_dist": [ "fastpbkdf2", "numpy" ], "requires_python": "", "summary": "A Python implementation of fuzzy extractor", "version": "0.3" }, "last_serial": 3711334, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "874eba04299d210d251fd073b1dddb02", "sha256": "04df6e7b1912024e38ab4690e47560eba970daf16dab49a6a0db26da359b6438" }, "downloads": -1, "filename": "fuzzy_extractor-0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "874eba04299d210d251fd073b1dddb02", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 19767, "upload_time": "2018-03-16T00:05:05", "url": "https://files.pythonhosted.org/packages/2a/da/5b65db439d1abca2ae813b464929c33b01e3d27d069c36ed537f2526284e/fuzzy_extractor-0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "25ce62d0e2c7684ec91daee49fe8c098", "sha256": "a5a1cd711ead5d77d83a12128e85a176552d3eada2fa978cab428097439b011d" }, "downloads": -1, "filename": "fuzzy_extractor-0.1.tar.gz", "has_sig": false, "md5_digest": "25ce62d0e2c7684ec91daee49fe8c098", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17421, "upload_time": "2018-03-16T00:05:07", "url": "https://files.pythonhosted.org/packages/2f/6f/bafcbc9dfe6bcb1d6a51a92b463dc1e17f3ce5e8fb77a9f1360146a5936a/fuzzy_extractor-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "69708d4cadd5cf2ec591f3445a592e1a", "sha256": "297c17d6101c12c0fefe6e6b0d2e94e4314f2f8f8ce8cc959daebdb9916476ba" }, "downloads": -1, "filename": "fuzzy_extractor-0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "69708d4cadd5cf2ec591f3445a592e1a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 19923, "upload_time": "2018-03-21T03:27:50", "url": "https://files.pythonhosted.org/packages/74/99/b8db26f4a576dc8799f3c82831bcde5ad23b659e61165a739c1b18c7e6d6/fuzzy_extractor-0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "efc50adaff52023a779d092bc107ca9b", "sha256": "ddd8e2ffbd3a841e15b9acf126b482ed960c494945afbb17844ba4a33e4fbe29" }, "downloads": -1, "filename": "fuzzy_extractor-0.2.tar.gz", "has_sig": false, "md5_digest": "efc50adaff52023a779d092bc107ca9b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17599, "upload_time": "2018-03-21T03:27:52", "url": "https://files.pythonhosted.org/packages/ea/e8/9255032dc90c13da24ef00a42bb6222e6471cd33b67b24c2894a70d005f1/fuzzy_extractor-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "41c3d1bd73974f3d102d035e2f503730", "sha256": "0b186d21f76333054c8e9b74187803fde1a57371cd31796ecafdd0e1372a5681" }, "downloads": -1, "filename": "fuzzy_extractor-0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "41c3d1bd73974f3d102d035e2f503730", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 19924, "upload_time": "2018-03-27T18:54:00", "url": "https://files.pythonhosted.org/packages/4a/56/5e2032668da1bfc72cf7fa268713c806bb5ff15dedec9b97d3e994529cc1/fuzzy_extractor-0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8653360898d21295da638afb1cf7aaf3", "sha256": "f45c1f5e627d1f3e5e81e210a768f0fc82ef0e209d52de663d3d7ad822999c89" }, "downloads": -1, "filename": "fuzzy_extractor-0.3.tar.gz", "has_sig": false, "md5_digest": "8653360898d21295da638afb1cf7aaf3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17601, "upload_time": "2018-03-27T18:54:01", "url": "https://files.pythonhosted.org/packages/06/04/be94c98cdd06a4edf08db891235e7655fcf4361c84622f659058d2cd5086/fuzzy_extractor-0.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "41c3d1bd73974f3d102d035e2f503730", "sha256": "0b186d21f76333054c8e9b74187803fde1a57371cd31796ecafdd0e1372a5681" }, "downloads": -1, "filename": "fuzzy_extractor-0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "41c3d1bd73974f3d102d035e2f503730", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 19924, "upload_time": "2018-03-27T18:54:00", "url": "https://files.pythonhosted.org/packages/4a/56/5e2032668da1bfc72cf7fa268713c806bb5ff15dedec9b97d3e994529cc1/fuzzy_extractor-0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8653360898d21295da638afb1cf7aaf3", "sha256": "f45c1f5e627d1f3e5e81e210a768f0fc82ef0e209d52de663d3d7ad822999c89" }, "downloads": -1, "filename": "fuzzy_extractor-0.3.tar.gz", "has_sig": false, "md5_digest": "8653360898d21295da638afb1cf7aaf3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17601, "upload_time": "2018-03-27T18:54:01", "url": "https://files.pythonhosted.org/packages/06/04/be94c98cdd06a4edf08db891235e7655fcf4361c84622f659058d2cd5086/fuzzy_extractor-0.3.tar.gz" } ] }