
Implémentation de la bibliothèque Zero-Knowledge de Google pour les protocoles d'identité.
La bibliothèque Longfellow permet la construction de protocoles à divulgation nulle de connaissance (zero-knowledge) concernant des normes de vérification d'identité héritées telles que la norme ISO MDOC, la norme JWT et les W3 Verifiable Credentials. Cette implémentation est décrite dans :
Elle doit son nom au pont situé devant le bureau de Google à Cambridge.
Ce projet a fait l'objet de plusieurs revues de sécurité indépendantes menées par des panels d'experts académiques et industriels du domaine. Leurs rapports sont disponibles sur la page Documentation du projet/Revues.
Ce dépôt contient les fichiers de travail pour une spécification de Longfellow et de ses composants. Si vous souhaitez contribuer, veuillez créer une Issue ou une Pull Request. Nos discussions ont lieu dans les Issues.
Vous pouvez tester notre bibliothèque en utilisant le devcontainer associé pour créer son environnement. Sélectionnez Code → Codespaces → Create codespace on main pour commencer. Cela crée un conteneur sur GitHub qui inclut les dépendances et fournit une interface VS Code basée sur navigateur. Vous pouvez y compiler et exécuter nos benchmarks, bien que la VM puisse être plus lente que les mesures rapportées.
Ce paquet dépend de cmake, openssl, zstd, clang, googletest et googlebenchmark.
$ sudo apt install -y build-essential clang cmake libssl-dev libzstd-dev libgtest-dev libbenchmark-dev zlib1g-dev
$ yum install -y clang libzstd-devel openssl-devel git cmake google-benchmark-devel gtest-devel
Les versions plus récentes de fedora semblent nécessiter libpfm-devel :
$ yum install -y clang libzstd-devel openssl-devel git cmake google-benchmark-devel gtest-devel libpfm-devel
Assurez-vous que les outils en ligne de commande Xcode tels que clang et cmake sont installés.
$ brew install googletest google-benchmark zstd
Exécutez d'abord l'étape d'initialisation de cmake
$ CXX=clang++ cmake -D CMAKE_BUILD_TYPE=Release -S lib -B clang-build-release --install-prefix ${PWD}/install
Ensuite :
$ cd clang-build-release && make -j 16 && ctest -j 16
Nous avons défini plusieurs benchmarks unitaires, sumcheck et zk. En voici quelques-uns :
$ ./algebra/fft_test --benchmark_filter='BM_*'
$ ./circuits/sha/flatsha256_circuit_test --benchmark_filter=BM_ShaZK_fp2_128