All Projects → skalenetwork → Libbls

skalenetwork / Libbls

Licence: agpl-3.0
BLS signatures, threshold encryption, distributed key generation library in modern C++. Actively maintained and used by SKALE for consensus, distributed random number gen, inter-chain communication and protection of transactions. BLS threshold signatures can be verified in Solidity, and used as random beacon (common coin)

Programming Languages

solidity
1140 projects

Projects that are alternatives of or similar to Libbls

Quantumgate
QuantumGate is a peer-to-peer (P2P) communications protocol, library and API written in C++.
Stars: ✭ 62 (-16.22%)
Mutual labels:  cryptography
Seal Demo
Demos, Examples, Tutorials for using Microsoft SEAL library.
Stars: ✭ 63 (-14.86%)
Mutual labels:  cryptography
Gurvy
gurvy implements Elliptic Curve Cryptography (+Pairing) for BLS12-381, BLS12-377, BW6-761, and BN256. Originally developed (and used) by gnark
Stars: ✭ 66 (-10.81%)
Mutual labels:  cryptography
Shadowcloud
Universal cloud storage client
Stars: ✭ 62 (-16.22%)
Mutual labels:  cryptography
Fhe Toolkit Linux
IBM Fully Homomorphic Encryption Toolkit For Linux. This toolkit is a Linux based Docker container that demonstrates computing on encrypted data without decrypting it! The toolkit ships with two demos including a fully encrypted Machine Learning inference with a Neural Network and a Privacy-Preserving key-value search.
Stars: ✭ 1,123 (+1417.57%)
Mutual labels:  cryptography
Cloakify
CloakifyFactory - Data Exfiltration & Infiltration In Plain Sight; Convert any filetype into list of everyday strings, using Text-Based Steganography; Evade DLP/MLS Devices, Defeat Data Whitelisting Controls, Social Engineering of Analysts, Evade AV Detection
Stars: ✭ 1,136 (+1435.14%)
Mutual labels:  cryptography
Raaz
Cryptographic library for Haskell
Stars: ✭ 60 (-18.92%)
Mutual labels:  cryptography
Ssri
Standard Subresource Integrity library for Node.js
Stars: ✭ 69 (-6.76%)
Mutual labels:  cryptography
Low Latency Android Ios Linux Windows Tvos Macos Interactive Audio Platform
🇸Superpowered Audio, Networking and Cryptographics SDKs. High performance and cross platform on Android, iOS, macOS, tvOS, Linux, Windows and modern web browsers.
Stars: ✭ 1,121 (+1414.86%)
Mutual labels:  cryptography
Crypto Bench
Benchmarks for crypto libraries (in Rust, or with Rust bindings)
Stars: ✭ 67 (-9.46%)
Mutual labels:  cryptography
Exonum Client
JavaScript client for Exonum blockchain
Stars: ✭ 62 (-16.22%)
Mutual labels:  cryptography
Masterpassword
Project moved to https://gitlab.com/spectre.app
Stars: ✭ 1,122 (+1416.22%)
Mutual labels:  cryptography
Pypinksign
PinkSign – a friendly Python library for NPKI (공인인증서) certificates 🔑
Stars: ✭ 65 (-12.16%)
Mutual labels:  cryptography
Waykichain
Public Blockchain as a Decentralized Finance Infrastructure Service Platform
Stars: ✭ 1,117 (+1409.46%)
Mutual labels:  cryptography
Babassl
A Brisk and Better Assured Cryptographic Toolkit
Stars: ✭ 68 (-8.11%)
Mutual labels:  cryptography
Constantine
Constant time pairing-based or elliptic curve based cryptography and digital signatures
Stars: ✭ 61 (-17.57%)
Mutual labels:  cryptography
Python Opentimestamps
Stars: ✭ 64 (-13.51%)
Mutual labels:  cryptography
Veracruz
Main repository for the Veracruz privacy-preserving compute project.
Stars: ✭ 71 (-4.05%)
Mutual labels:  cryptography
Lazysodium Android
An Android implementation of the Libsodium cryptography library. For the lazy dev.
Stars: ✭ 69 (-6.76%)
Mutual labels:  cryptography
Cryptoswift
CryptoSwift is a growing collection of standard and secure cryptographic algorithms implemented in Swift
Stars: ✭ 8,846 (+11854.05%)
Mutual labels:  cryptography

libBLS: a C++ library for BLS Threshold Signatures

Build Status codecov CII Best Practices Discord

A mathematical library written in C++ that supports BLS threshold signatures, Distributed Key Generation (DKG) and Threshold Encryption (TE).

This libBLS library is developed by SKALE Labs and uses SCIPR-LAB's libff and PBC library by Ben Lynn (see Libraries below).

An important note about production readiness

This libBLS library is still in active development and therefore should be regarded as alpha software. The development is still subject to security hardening, further testing, and breaking changes. This library has not yet been reviewed or audited for security. Please see SECURITY.md for reporting policies.

Overview

libBLS is a C++ library for BLS signatures and DKG that supports both threshold signatures and multi-signatures. Also it supports Threshold Encryption.

The signature process proceeds in 4 steps:

  1. Key generation
  2. Hashing
  3. Signing
  4. Verification

libBLS uses the alt_bn128 (Barreto-Naehrig curve) elliptic curve to be compatible with Ethereum's cryptography and provides 128 bits of security. Also, it provides opportunity to generate secret keys with DKG algorithm that supports the same curve.

libBLS for the most part corresponds to BLS signature standard. This work is still in progress and is going to be improved in the next couple of months.

Encryption process is running running as follows:

  1. Key generation
  2. Encryption
  3. Decryption
  4. Verifying and combining shares

You can learn more about the algebraic structures used in this algorithm in Ben Lynn’s PhD Dissertation. libBLS uses a modified Ben Lynn's pbc library with memory corruption bug fixed and the TYPE A curve for symmetric bilinear pairing.

Performance Specifications

libBLS allows to sign about 3000 messages per second on a single thread (Intel® Core™ i3-4160 CPU @ 3.60GHz). However, for our solution we have implemented constant time signing (0.01 sec for sign) to avoid timing attacks.

Installation Requirements

libBLS has been built and tested on Ubuntu and Mac.

GitHub is used to maintain this source code. Clone this repository by:

git clone https://github.com/skalenetwork/libBLS.git
cd libBLS

Building Dependencies

Ensure that required packages listed below are installed.

Build libBLS's dependencies by:

cd deps
bash ./build.sh
cd ..

Building from source on Mac

brew install flex bison libtool automake cmake pkg-config yasm
# Configure the project and create a build directory.
cmake -H. -Bbuild

# Build all default targets using all cores.
cmake --build build -- -j$(sysctl -n hw.ncpu)

Building from source on Ubuntu

Ensure that the required packages are installed by executing:

sudo apt-get update
sudo apt-get install -y automake cmake build-essential libprocps-dev libtool\
                        pkg-config yasm texinfo autoconf flex bison clang-format-6.0

Configure the project build with the following commands.

# Configure the project and create a build directory.
cmake -H. -Bbuild

# Build all default targets using all cores.
cmake --build build -- -j$(nproc)

Include the library

#include <libBLS.h>

Documentation

See docs for libBLS documentation.

Libraries

Contributing

If you have any questions please ask the development community on Discord.

Discord

Otherwise see our CONTRIBUTING.md for more information.

License

License

Copyright (C) 2018-present SKALE Labs

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