{"id":13508370,"url":"https://github.com/ahf/passphrase-identity","last_synced_at":"2025-04-15T15:04:05.955Z","repository":{"id":35776911,"uuid":"40056796","full_name":"ahf/passphrase-identity","owner":"ahf","description":"Regenerable ed25519 keys for OpenSSH and OpenPGP.","archived":false,"fork":false,"pushed_at":"2019-11-21T15:34:47.000Z","size":84,"stargazers_count":36,"open_issues_count":4,"forks_count":5,"subscribers_count":5,"default_branch":"develop","last_synced_at":"2024-11-01T08:33:01.885Z","etag":null,"topics":["cryptography","ed25519","openpgp","openssh","privacy"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ahf.png","metadata":{"files":{"readme":"README.markdown","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}},"created_at":"2015-08-01T18:51:49.000Z","updated_at":"2024-10-02T07:36:50.000Z","dependencies_parsed_at":"2022-08-17T21:35:38.885Z","dependency_job_id":null,"html_url":"https://github.com/ahf/passphrase-identity","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/ahf%2Fpassphrase-identity","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ahf%2Fpassphrase-identity/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ahf%2Fpassphrase-identity/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ahf%2Fpassphrase-identity/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ahf","download_url":"https://codeload.github.com/ahf/passphrase-identity/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226918965,"owners_count":17703180,"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","ed25519","openpgp","openssh","privacy"],"created_at":"2024-08-01T02:00:52.138Z","updated_at":"2024-11-28T12:59:52.754Z","avatar_url":"https://github.com/ahf.png","language":"C","funding_links":[],"categories":["C","privacy"],"sub_categories":[],"readme":"# Passphrase Identity\n\nRegenerable ed25519 keys for OpenSSH and OpenPGP.\n\nPassphrase Identity allows you to deterministically generate ed25519 key pairs (signing keys) for OpenSSH and OpenPGP from a set of parameters.\nThis allows you to (re)generate your key pair on a computer which, for example, lacks persistent storage - it derives an \"identity\" from a passphrase.\n\nYou must be able to remember three things to (re)generate your key pair;\n\n1. A user defined \"username\", which can be any string.\n2. A Passphrase-identity defined \"profile\" name. There's currently only two profiles available: `2015v1`, and `2017`, both of which use `scrypt()` + `salsa20/8` + `sha256` as KDF.\n3. Your personally selected passphrase.\n\n## Usage\n\n    Usage: ./passphrase-identity [ options ] [ output directory ]\n\n    Help Options:\n      -h, --help                Display this message (default behavior)\n\n    Key Options:\n      -u, --user \u003cusername\u003e     Specify which username to use [as salt]\n      -p, --profile \u003cprofile\u003e   Specify which profile to use\n\n      Available Profiles:\n\n          2015v1\n          2017\n\n    Output Format Options:\n\n      -s, --openssh             Output OpenSSH public and private key\n                                The keys are written to id_ed25519{,.pub}\n\n      -g, --gpg                 Output OpenPGP public and private key\n                                The keys are written to {public,private}.asc\n\n## Example Usage\n\n1. We start by creating a key pair for OpenSSH using `ahf@passphrase-identity.0x90.dk` as username.\n\n        $ ./passphrase-identity --openssh --user ahf@passphrase-identity.0x90.dk\n        Passphrase: foobar\n        Generating key pair using the '2015v1' profile ...\n        This may take a little while ...\n        Successfully generated key pair ...\n        Saving OpenSSH secret key to id_ed25519 ...\n        Saving OpenSSH public key to id_ed25519.pub ...\n\n        $ cat id_ed25519\n        -----BEGIN OPENSSH PRIVATE KEY-----\n        b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW\n        QyNTUxOQAAACArYR91DYHLCeYb+Ls3wyYsSJrADs7topOSlioZ6GNX2AAAAJj36teu9+rX\n        rgAAAAtzc2gtZWQyNTUxOQAAACArYR91DYHLCeYb+Ls3wyYsSJrADs7topOSlioZ6GNX2A\n        AAAEAv/A/ak2U1vqbQR7sDFmJFp1eC7kv0HdZYm4Dt50n33ythH3UNgcsJ5hv4uzfDJixI\n        msAOzu2ik5KWKhnoY1fYAAAAEWFoZkB0ZW5lby4weDkwLmRrAQIDBA==\n        -----END OPENSSH PRIVATE KEY-----\n\n        $ cat id_ed25519.pub\n        ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICthH3UNgcsJ5hv4uzfDJixImsAOzu2ik5KWKhnoY1fY ahf@passphrase-identity.0x90.dk\n\n        $ openssl sha256 id_ed25519.pub\n        SHA256(id_ed25519.pub)= a394eb08102eefb020d3274285671d113604690bedb551c5dfbf27c0d6844482\n\n2. Wipe the key pair.\n\n        $ shred -u id_ed25519\n        $ shred -u id_ed25519.pub\n\n3. Create the key again using the same parameters and passphrase.\n\n        $ ./passphrase-identity --openssh --user ahf@passphrase-identity.0x90.dk\n        Passphrase: foobar\n        Generating key pair using the '2015v1' profile ...\n        This may take a little while ...\n        Successfully generated key pair ...\n        Saving OpenSSH secret key to id_ed25519 ...\n        Saving OpenSSH public key to id_ed25519.pub ...\n\n        $ openssl sha256 id_ed25519.pub\n        SHA256(id_ed25519.pub)= a394eb08102eefb020d3274285671d113604690bedb551c5dfbf27c0d6844482\n\n## Compiling on Ubuntu\n\n```bash\n# if you want to use a proxy for git via https:\n# git config --global http.proxy 'socks5://127.0.0.1:9150'\n\ngit clone https://github.com/ahf/passphrase-identity\napt-get install autoconf libtool pkg-config libsodium-dev -y\ncd passphrase-identity/\n./autogen.sh\n./configure\nmake\n# Binary will be named ./src/passphrase-identity\n```\n\n## Authors\n\n- [Alexander Færøy](https://twitter.com/ahfaeroey) ([ahf@0x90.dk](mailto:ahf@0x90.dk)).\n\n## Todo\n\n1. Code clean-up. This is a prototype written during two evenings of a weekend.\n2. Consider the new Tor ed25519 ID keys?\n3. Add proper tests. Use Travis CI to build on both OS X and Linux.\n4. Add fancy graphics after key generation, like the OpenSSH client, such that\n   the user can quickly identify if something is wrong. \n5. Add cracklib support and remember to make it possible to disable it as well.\n\n## License\n\nSee the LICENSE file.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fahf%2Fpassphrase-identity","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fahf%2Fpassphrase-identity","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fahf%2Fpassphrase-identity/lists"}