All Projects → duomarket → userless

duomarket / userless

Licence: MIT license
A client and server side solution for zero knowledge authentication, in Go

Programming Languages

go
31211 projects - #10 most used programming language
javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to userless

Cryptpad
Collaboration suite, end-to-end encrypted and open-source.
Stars: ✭ 3,125 (+20733.33%)
Mutual labels:  encryption
Sqleet
SQLite3 encryption that sucks less
Stars: ✭ 244 (+1526.67%)
Mutual labels:  encryption
Setup Ipsec Vpn
Scripts to build your own IPsec VPN server, with IPsec/L2TP, Cisco IPsec and IKEv2
Stars: ✭ 16,987 (+113146.67%)
Mutual labels:  encryption
Privy
An easy, fast lib to correctly password-protect your data
Stars: ✭ 230 (+1433.33%)
Mutual labels:  encryption
Peertransfer
📦 • Send a file p2p and e2e encrypted in your browser using WebRTC.
Stars: ✭ 238 (+1486.67%)
Mutual labels:  encryption
Syphon
⚗️ a privacy centric matrix client
Stars: ✭ 245 (+1533.33%)
Mutual labels:  encryption
Nsec
A modern and easy-to-use cryptographic library for .NET Core based on libsodium
Stars: ✭ 217 (+1346.67%)
Mutual labels:  encryption
DiscordEncryption
🔐 Configurable end to end encryption for Discord
Stars: ✭ 30 (+100%)
Mutual labels:  encryption
Helib
HElib is an open-source software library that implements homomorphic encryption. It supports the BGV scheme with bootstrapping and the Approximate Number CKKS scheme. HElib also includes optimizations for efficient homomorphic evaluation, focusing on effective use of ciphertext packing techniques and on the Gentry-Halevi-Smart optimizations.
Stars: ✭ 2,749 (+18226.67%)
Mutual labels:  encryption
Openssl
TLS/SSL and crypto library
Stars: ✭ 17,157 (+114280%)
Mutual labels:  encryption
Jsrsasign
The 'jsrsasign' (RSA-Sign JavaScript Library) is an opensource free cryptography library supporting RSA/RSAPSS/ECDSA/DSA signing/validation, ASN.1, PKCS#1/5/8 private/public key, X.509 certificate, CRL, OCSP, CMS SignedData, TimeStamp, CAdES JSON Web Signature/Token in pure JavaScript.
Stars: ✭ 2,760 (+18300%)
Mutual labels:  encryption
Laravel Database Encryption
A package for automatically encrypting and decrypting Eloquent attributes in Laravel 5.5+, based on configuration settings.
Stars: ✭ 238 (+1486.67%)
Mutual labels:  encryption
Sio
Go implementation of the Data At Rest Encryption (DARE) format.
Stars: ✭ 248 (+1553.33%)
Mutual labels:  encryption
Armor
Armor is a simple Bash script designed to create encrypted macOS payloads capable of evading antivirus scanners.
Stars: ✭ 228 (+1420%)
Mutual labels:  encryption
Blockchain
Recently started working on Blockchain technologies. This repo contains material related to Blockchain technologies. My current focus on dAPP development using Hyperledger.
Stars: ✭ 21 (+40%)
Mutual labels:  openbazaar
Marysue Encoder
把任意文字和玛丽苏体的姓名进行加密转换
Stars: ✭ 219 (+1360%)
Mutual labels:  encryption
Lurch
XEP-0384: OMEMO Encryption for libpurple.
Stars: ✭ 245 (+1533.33%)
Mutual labels:  encryption
diary-app
🔐An End-To-End Encrypted Diary Web App
Stars: ✭ 83 (+453.33%)
Mutual labels:  encryption
aliceandbob
🔐 A free, light and easy to use client-side tool to generate PGP key pairs, encrypt and decrypt messages.
Stars: ✭ 24 (+60%)
Mutual labels:  encryption
Privacytools.io
🛡🛠 You are being watched. Protect your privacy against global mass surveillance.
Stars: ✭ 3,048 (+20220%)
Mutual labels:  encryption

#userless This is an attempt at a user authentication service that knows nothing about the user; it revolves around an email and password, but the server knows neither, and cannot verify if a given email is a user, without the password as well. The service is very resistant to brute force, as it requires a valid signature of the current time in nanoseconds for login, so there must be one request for every password attempt. This code should be treated as a reference implementation of the crypto scheme described in the spec, and can't just be plugged in to your application without any work, but it also forms part of the Duo Market authentication system, with some minor additions.

In this implementation, the secret that the server provides on successful login is an encrypted 16 bytes of entropy, which is the counterpart to a bip39 mnemonic; this could be the key to a bitcoin wallet, although in the Duo Market case it is the key to your OpenBazaar identity, and unlocks your user database. This system is quite general; any data could be encrypted and stored as a secret, simply change the expected size validation on the server. Furthermore, you can adapt login to be the gateway to anything, instead of returning an encrypted secret it could give an authentication token, for example. This implementation uses couchDB for all of its storage, but this is easily replaced.

The whole system is designed such that an attacker with full database read access is essentially no better off; with read access, the attack strategy would be to try to brute force email:password combinations against all user identifiers, deriving public keys from them and checking against ones stored in the server. Even if an attacker knows a given email has an account with the server, they would not be able to know which identifier it is in the database.

One of the exciting elements of userless is that it still allows for two-factor authentication via email. The email is still not stored on the server, however, but instead should be provided on login. The way the crypto system is set up, the server can verify that the given email is a member of the requested account when it is provided the email and the hash of the email:password combination. Once this is verified, an email is sent. When the link in the email is clicked, the original login endpoint will return as usual. If you attempt to login without 2FA, the server will return a boolean, originally signed by the user's password-derived key, which proves that 2FA is enabled, at which point the client code automatically retries providing the email. This is to prevent a man in the middle pretending 2FA is enabled to force users to provide their emails.

This was designed and built by Jack Kleeman and Justin Drake of Duo Market, as part of a wider attempt at a totally zero knowledge product that lets you purchase on OpenBazaar from your browser.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].