All Projects → NuID → zk

NuID / zk

Licence: Apache-2.0, MIT licenses found Licenses found Apache-2.0 LICENSE-APACHE.md MIT LICENSE-MIT.md
Cross-platform zero knowledge proofs

Programming Languages

clojure
4091 projects
typescript
32286 projects
shell
77523 projects

Projects that are alternatives of or similar to zk

examples
Examples of NuID's zero knowledge authentication and key management facilities in various languages and frameworks. Open an Issue or PR if you'd like to see your favorite tool here.
Stars: ✭ 42 (-4.55%)
Mutual labels:  key-management, zero-knowledge
awesome-zkp-starter-pack
A curated collection of links for zero-knowledge proof cryptography used in blockchains
Stars: ✭ 63 (+43.18%)
Mutual labels:  zero-knowledge
klefki
Klefki is a playground for researching elliptic curve group based algorithm, such as MPC, ZKP and HE. All data types & structures are based on mathematical defination of abstract algebra.
Stars: ✭ 12 (-72.73%)
Mutual labels:  zero-knowledge
snarkVM
A Virtual Machine for Zero-Knowledge Executions
Stars: ✭ 345 (+684.09%)
Mutual labels:  zero-knowledge
Cryptpad
Collaboration suite, end-to-end encrypted and open-source.
Stars: ✭ 3,125 (+7002.27%)
Mutual labels:  zero-knowledge
arkworks-gadgets
Zero-knowledge gadgets for Webb's cross-chain blockchain applications.
Stars: ✭ 72 (+63.64%)
Mutual labels:  zero-knowledge
schnorr-nizk
Schnorr Protocol for Non-interactive Zero-Knowledge Proofs
Stars: ✭ 67 (+52.27%)
Mutual labels:  zero-knowledge
wordlines
Mobile ZK Puzzle Game with NFT rewards
Stars: ✭ 180 (+309.09%)
Mutual labels:  zero-knowledge
MLSAG
Multilayered Linkable Spontaneous Anonymous Group - Implemented as is from paper. Not Monero specific
Stars: ✭ 19 (-56.82%)
Mutual labels:  zero-knowledge
Keytransparency
A transparent and secure way to look up public keys.
Stars: ✭ 1,561 (+3447.73%)
Mutual labels:  key-management
libe4
C library of Teserakt's E4 end-to-end security protocol
Stars: ✭ 15 (-65.91%)
Mutual labels:  key-management
universe
Decentralized private key recovery
Stars: ✭ 13 (-70.45%)
Mutual labels:  key-management
dalek-rangeproofs
This was a pure-Rust implementation of a rangeproof scheme. It is now obsoleted by Bulletproofs.
Stars: ✭ 16 (-63.64%)
Mutual labels:  zero-knowledge
FISCO-BCOS
FISCO BCOS是由微众牵头的金链盟主导研发、对外开源、安全可控的企业级金融区块链底层技术平台。 单链配置下,性能TPS可达万级。提供群组架构、并行计算、分布式存储、可插拔的共识机制、隐私保护算法、支持全链路国密算法等诸多特性。 经过多个机构、多个应用,长时间在生产环境中的实践检验,具备金融级的高性能、高可用性及高安全性。FISCO BCOS is a secure and reliable financial-grade open-source blockchain platform. The platform provides rich features including group architecture, cross-chain communication protoc…
Stars: ✭ 1,603 (+3543.18%)
Mutual labels:  zero-knowledge
cljsee
Backporting cljc
Stars: ✭ 26 (-40.91%)
Mutual labels:  cljc
plonk
A pure Rust PLONK implementation using arkworks as a backend.
Stars: ✭ 128 (+190.91%)
Mutual labels:  zero-knowledge
crypto-in-action
algebra arithmetic, finite fields, elliptic curves, zero-knowledge
Stars: ✭ 65 (+47.73%)
Mutual labels:  zero-knowledge
aeonflux
Infinitely presentable (aeon) rerandomisable (flux) anonymous credentials.
Stars: ✭ 25 (-43.18%)
Mutual labels:  zero-knowledge
confidential-computing-zoo
Confidential Computing Zoo provides confidential computing solutions based on Intel SGX, TDX, HEXL, etc. technologies.
Stars: ✭ 177 (+302.27%)
Mutual labels:  key-management
bellman
Bellman zkSNARK library for community with Ethereum's BN256 support
Stars: ✭ 121 (+175%)
Mutual labels:  zero-knowledge

nuid.zk

Cross-platform zero knowledge proofs.

Git issues and other communications are warmly welcomed. [email protected]

Requirements

jvm, node + npm, clj, shadow-cljs

Clojure and ClojureScript

tools.deps:

{nuid/zk {:git/url "https://github.com/nuid/zk" :sha "..."}}

usage:

$ clj # or shadow-cljs node-repl
=> (require
     #?@(:clj
         ['[clojure.spec-alpha2.gen :as gen]
          '[clojure.spec-alpha2 :as s]]
         :cljs
         ['[clojure.spec.gen.alpha :as gen]
          '[clojure.test.check.generators]
          '[clojure.spec.alpha :as s]])
     '[nuid.cryptography :as crypt]
     '[nuid.zk :as zk])

=> (def parameters (gen/generate (s/gen ::zk/parameters)))
=> (def secret     "high entropy ✅")
=> (def pub        (zk/pub (assoc parameters :secret secret)))
=> (def nonce      (gen/generate (s/gen ::crypt/nonce)))
=> (def parameters (merge parameters {:pub pub :nonce nonce}))

=> (def good-proof (zk/proof (merge parameters {:secret secret})))
=> (def bad-proof  (zk/proof (merge parameters {:secret "garbage 🚮"})))

=> (zk/verified?   (merge parameters good-proof))
=> (zk/verified?   (merge parameters bad-proof))

JavaScript

node:

$ npm install -s @nuid/zk
$ node
> var Zk = require('@nuid/zk');

// client context, sign up
> var secret = "high entropy ✅"
> var verifiable = Zk.verifiableFromSecret(secret);
> var json = JSON.stringify(verifiable);

// server context, sign up
> var verifiable = JSON.parse(json);
> Zk.isVerified(verifiable)
> var credential = Zk.credentialFromVerifiable(verifiable); // persist credential (db, ledger, ...)

// server context, sign in
> var challenge = Zk.defaultChallengeFromCredential(credential); // retrieve credential (db, ledger, ...)
> var json = JSON.stringify(challenge);

// client context, sign in
> var challenge = JSON.parse(json);
> var proof = Zk.proofFromSecretAndChallenge(secret, challenge);
> var json = JSON.stringify(proof);

// server context, sign in
> var proof = JSON.parse(json);
> var verifiable = Zk.verifiableFromProofAndChallenge(proof, challenge)
> Zk.isVerified(verifiable) ? /* verified */ : /* unverified */ ;

browser:

The npm package is browser-compatible in Webpack-like workflows.

Java

To call nuid.zk from Java or other JVM languages, use one of the recommended interop strategies (var/IFn or uberjar/aot). Doing so may require modifications or additions to the API for convenience.

CLR

Coming soon

Notes

The purpose of nuid.zk and sibling nuid libraries (e.g. nuid.bn) is to abstract over platform-specific differences and provide a common interface to fundamental dependencies. This allows us to express dependent logic (e.g. nuid.zk) once in pure Clojure(Script), and use it from each of the host platforms (Java, JavaScript, CLR). This is particularly useful for generating and verifying proofs across service boundaries.

Licensing

Apache v2.0 or MIT

⚠️ Disclaimer

This library is property tested to help verify implementation, but has not yet been audited by an independent third party.

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].