Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
libsignal — Heimat des Signal-Protokolls sowie anderer kryptografischer Grundbausteine, die Signal ermöglichen. | Kitploit
Tools/GitHubGitHub/signalapp/libsignal
Verschlüsselungs-/EntschlüsselungstoolsIdentitätsmanagementKryptographiePrivatsphäreHardware-Sicherheit
GitHubsignalapp/libsignal

libsignal

Heimat des Signal-Protokolls sowie anderer kryptografischer Grundbausteine, die Signal ermöglichen.

Repository anzeigen
5.9k7681vor 6 TagenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Übersicht

libsignal enthält plattformunabhängige APIs, die von den offiziellen Signal-Clients und -Servern verwendet werden und als Java-, Swift- oder TypeScript-Bibliothek bereitgestellt werden. Die zugrunde liegenden Implementierungen sind in Rust geschrieben:

  • libsignal-protocol: Implementiert das Signal-Protokoll, einschließlich des Double-Ratchet-Algorithmus. Ein Ersatz für libsignal-protocol-java und libsignal-metadata-java.
  • signal-crypto: Kryptografische Primitive wie AES-GCM. Wir verwenden, wo möglich, die von RustCrypto bereitgestellten Implementierungen, haben aber manchmal abweichende Anforderungen.
  • device-transfer: Unterstützungslogik für Signals Gerät-zu-Gerät-Transferfunktion.
  • attest: Funktionalität für Remote-Attestierung von SGX-Enklaven und serverseitigen HSMs.
  • zkgroup: Funktionalität für Zero-Knowledge-Gruppen und verwandte Funktionen, die in Signal verfügbar sind.
  • zkcredential: Eine Abstraktion für die Art von Zero-Knowledge-Anmeldeinformationen, die von zkgroup verwendet werden, basierend auf dem Paper „The Signal Private Group System“ von Chase, Perrin und Zaverucha.
  • poksho: Hilfsprogramme zur Implementierung von Zero-Knowledge-Beweisen (wie sie von zkgroup verwendet werden); steht für „proof-of-knowledge, stateful-hash-object“.
  • account-keys: Funktionalität für die konsistente Verwendung von PINs als Passwörter in Signals Secure-Value-Recovery-System sowie für andere kontoweite Schlüsseloperationen.
  • usernames: Funktionalität für die Generierung, das Hashen und den Nachweis von Benutzernamen.
  • media: Hilfsprogramme zur Bearbeitung von Medien.

Dieses Repository wird von den Signal-Client-Apps (Android, iOS und Desktop) sowie serverseitig verwendet. Eine Verwendung außerhalb von Signal wird nicht unterstützt. Insbesondere sind die Produkte dieses Repositorys die Java-, Swift- und TypeScript-Bibliotheken, die die zugrunde liegenden Rust-Implementierungen kapseln. Alle APIs und Implementierungen können ohne Vorankündigung geändert werden, ebenso wie die JNI-, C- und Node-Add-on-„Bridge“-Ebenen. Nicht abwärtskompatible Änderungen an den Java-, Swift-, TypeScript- und Nicht-Bridge-Rust-APIs werden jedoch nach bestem Bemühen in der Versionsnummer berücksichtigt, einschließlich Erhöhungen der Mindestversionen der unterstützten Tools.

Erstellen

Installation der Toolchain

Um etwas in diesem Repository zu erstellen, müssen Sie Rust sowie aktuelle Versionen von Clang, libclang, CMake, Make, protoc, Python (3.9+) und git installiert haben.

Linux/Debian

Auf einem Debian-ähnlichen System können Sie diese zusätzlichen Abhängigkeiten über apt installieren:

root@kitploit:~
$ apt-get install clang libclang-dev cmake make protobuf-compiler libprotobuf-dev python3 git

macOS

Für macOS stellen wir ein nach bestem Bemühen gepflegtes Skript zur Einrichtung der Rust-Toolchain bereit, das Sie wie folgt ausführen können:

root@kitploit:~
$ bin/mac_setup.sh

Rust

Erster Build und Test

Der Build verwendet derzeit eine bestimmte Version des Rust-Nightly-Compilers, die von cargo automatisch heruntergeladen wird. Um die grundlegenden Protokollbibliotheken zu erstellen und zu testen:

root@kitploit:~
$ cargo build
...
$ cargo test
...

Zusätzliche Rust-Tools

Die oben genannten grundlegenden Tools sollten für die meiste Rust-Entwicklung von libsignal ausreichen.

Möglicherweise benötigen Sie irgendwann zusätzliche Rust-Tools wie taplo für die Codeformatierung.

Sie sollten alle Rust-Tools, die den Build beeinflussen können, immer über cargo installieren und nicht über Ihren Systempaketmanager (z. B. apt oder brew). Paketmanager enthalten manchmal veraltete Versionen dieser Tools, die den Build aufgrund von Inkompatibilitäten brechen können (insbesondere cbindgen).

Um die wichtigsten zusätzlichen Rust-Abhängigkeiten in den von uns verwendeten Versionen zu installieren, können Sie die folgenden Befehle ausführen:

root@kitploit:~
$ cargo +stable install --version "$(cat acknowledgments/cargo-about-version)" --locked cargo-about
$ cargo +stable install --version "$(cat .taplo-cli-version)" --locked taplo-cli
$ cargo +stable install cargo-fuzz

Java/Android

Toolchain-Einrichtung / Konfiguration

Um für Android zu erstellen, müssen Sie mehrere zusätzliche Pakete installieren, darunter ein JDK, das Android-NDK/SDK, und die Android-Ziele mit folgendem Befehl zum Rust-Compiler hinzufügen:

rustup target add armv7-linux-androideabi aarch64-linux-android i686-linux-android x86_64-linux-android

Unsere offiziell unterstützte JDK-Version für Android-Builds ist JDK 21. Stellen Sie daher sicher, dass Sie z. B. OpenJDK 21 installieren, und setzen Sie dann JAVA_HOME darauf.

Auf macOS können Sie dies einfach über Folgendes tun:

root@kitploit:~
export JAVA_HOME=$(/usr/libexec/java_home -v 21)

Unter Linux variiert die Vorgehensweise je nach Distribution. Für Debian-basierte Distributionen wie Ubuntu können Sie Folgendes verwenden:

root@kitploit:~
sudo update-alternatives --config java

Wir committen außerdem eine .tools_version-Datei zur Verwendung mit Laufzeit-Versionsmanagern.

Erstellen und Testen

Um das Java/Android-jar und aar zu erstellen und die Tests auszuführen:

root@kitploit:~
$ cd java
$ ./gradlew test
$ ./gradlew build # if you need AAR outputs

Sie können -P debugLevelLogs an Gradle übergeben, um ohne das Herausfiltern von Debug- und Verbose-Level-Logs aus Rust zu erstellen, sowie -P jniTypeTagging, um zusätzliche Prüfungen im Rust-JNI-Brückencode zu aktivieren.

Alternativ ist ein Build-System mit Docker verfügbar:

root@kitploit:~
$ cd java
$ make

Wenn Sie neue APIs für Java bereitstellen, müssen Sie zusätzlich zum Neuerstellen rust/bridge/jni/bin/gen_java_decl.py ausführen. Dazu muss das Rust-Tool cbindgen installiert sein, wie oben beschrieben.

Verwendung als Bibliothek

Signal veröffentlicht Java-Pakete für den eigenen Gebrauch unter den Namen org.signal:libsignal-server, org.signal:libsignal-client und org.signal:libsignal-android. libsignal-client und libsignal-server enthalten native Bibliotheken für Debian-basiertes x86_64-Linux sowie Windows (x86_64) und macOS (x86_64 und arm64). libsignal-android enthält native Bibliotheken für armeabi-v7a, arm64-v8a, x86 und x86_64-Android. Diese befinden sich in einem Maven-Repository unter https://build-artifacts.signal.org/libraries/maven/; zur Verwendung mit Gradle fügen Sie Ihrem repositories-Block Folgendes hinzu:

root@kitploit:~
maven {
  name = "SignalBuildArtifacts"
  // The "uri()" part is only necessary for Kotlin Gradle; Groovy Gradle accepts a bare string here.
  url = uri("https://build-artifacts.signal.org/libraries/maven/")
}

Ältere Builds wurden stattdessen in Maven Central veröffentlicht.

Beim Erstellen für Android benötigen Sie sowohl libsignal-android als auch libsignal-client, aber die Windows- und macOS-Bibliotheken in libsignal-client werden nicht automatisch aus Ihrer finalen App ausgeschlossen. Sie können sie mit packaging explizit ausschließen:

root@kitploit:~
android {
  // ...
  packaging {
    resources {
      excludes += setOf("libsignal_jni*.dylib", "signal_jni*.dll")
    }
  }
  // ...
}

Sie können zusätzlich libsignal_jni_testing.so ausschließen, wenn Sie keine der für Client-Tests vorgesehenen APIs verwenden möchten.

Testen eines lokalen Builds mit Signal-Android

Die Datei gradle.properties von Signal-Android enthält eine auskommentierte Zeile, um libsignal als Teil des Builds einzubinden. Kommentieren Sie diese Zeile aus und passen Sie den Pfad an; optional können Sie die Architekturen, für die Sie bauen möchten, einschränken, indem Sie androidArchs=aarch64 zur gradle.properties von libsignal hinzufügen. (Die Menge der erkannten Architekturen befindet sich in java/build_jni.sh.) Wenn Sie eine IDE verwenden, müssen Sie an dieser Stelle die Gradle-Struktur neu importieren. Wenn Sie fertig sind, machen Sie die Änderungen an der gradle.properties der Android-App rückgängig und importieren Sie erneut.

Beachten Sie, dass dadurch die Rust-Teile des Projekts nicht in die IDE importiert werden. In einer Mehrsprachen-IDE wie IDEA ist das zwar möglich, aber heikel; Stand 2025 ist der zuverlässigste Weg, zuerst das Android-Projekt zu öffnen, dann das Wurzelverzeichnis des libsignal-Repositorys als Rust-Projekt hinzuzufügen (nur das oberste Verzeichnis), und erst danach die Änderungen an gradle.properties vorzunehmen.

Swift

Informationen zum Swift-Build-Prozess finden Sie in swift/README.md.

Node

Sie benötigen eine installierte Node-Version, um zu bauen. Wenn Sie nvm haben, können Sie nvm use ausführen, um automatisch eine passende Version auszuwählen.

Wir verwenden npm als Paketmanager und ein Python-Skript zur Steuerung des Builds der Rust-Bibliothek, das über npm run build verfügbar ist.

root@kitploit:~
$ cd node
$ nvm use
$ npm install
$ npm run build
$ npm run tsc
$ npm run test

Wenn Sie Änderungen lokal testen, können Sie npm run build verwenden, um einen inkrementellen Neuaufbau der Rust-Bibliothek durchzuführen. Alternativ führt npm run build-with-debug-level-logs einen Neuaufbau durch, ohne Debug- und Verbose-Level-Logs herauszufiltern.

Wenn Sie neue APIs für Node bereitstellen, müssen Sie zusätzlich zum Neuerstellen just generate-node ausführen.

NPM

Signal veröffentlicht das NPM-Paket @signalapp/libsignal-client für den eigenen Gebrauch, einschließlich nativer Bibliotheken für Windows, macOS und Debian-basiertes Linux. Für alle drei Plattformen sind sowohl x64- als auch arm64-Builds enthalten, aber die arm64-Builds für Windows und Linux gelten als experimentell, da es für diese Architekturen keine offiziellen Signal-Builds gibt.

Testen eines lokalen Builds mit Signal-Desktop

Nachdem Sie alle oben genannten Build-Befehle ausgeführt haben, ändern Sie die Abhängigkeit @signalapp/libsignal-client in der package.json der Desktop-App auf "link:path/to/libsignal/node" und führen Sie pnpm install aus. Wenn Sie fertig sind, machen Sie die Änderungen an package.json rückgängig und führen Sie pnpm install erneut aus.

Beiträge

Signal akzeptiert externe Beiträge zu diesem Projekt. Wenn die Änderung jedoch nicht einfach und leicht verständlich ist, z. B. die Behebung eines Fehlers oder eines Portabilitätsproblems, das Hinzufügen eines neuen Tests oder die Verbesserung der Leistung, öffnen Sie bitte zuerst ein Issue, um Ihre beabsichtigte Änderung zu besprechen, da nicht alle Änderungen akzeptiert werden können.

Beiträge, die nicht direkt von einer der offiziellen Signal-Client-Apps verwendet werden, können trotzdem in Betracht gezogen werden, allerdings nur, wenn sie keine unzumutbare Wartungslast darstellen oder den Zielen des Projekts zuwiderlaufen.

Für alle Beiträge ist die Unterzeichnung einer CLA (Contributor License Agreement) erforderlich.

Codeformatierung und Danksagungen

Sie können den Styler für das gesamte Projekt mit folgendem Befehl ausführen:

root@kitploit:~
just format-all

Sie können umfangreichere Tests sowie Linter und Clippy mit folgendem Befehl ausführen:

root@kitploit:~
just check-pre-commit

Wenn Sie einen PR erstellen, der Abhängigkeiten anpasst, müssen Sie unsere Danksagungsdateien neu generieren. Siehe acknowledgments/README.md.

Rechtliche Hinweise

Hinweis zur Kryptografie

Diese Distribution enthält kryptografische Software. Das Land, in dem Sie sich derzeit aufhalten, kann Beschränkungen für den Import, den Besitz, die Verwendung und/oder die Wiederausfuhr von Verschlüsselungssoftware in ein anderes Land vorsehen. Bevor Sie Verschlüsselungssoftware verwenden, prüfen Sie bitte die Gesetze, Vorschriften und Richtlinien Ihres Landes bezüglich des Imports, des Besitzes oder der Verwendung und der Wiederausfuhr von Verschlüsselungssoftware, um festzustellen, ob dies erlaubt ist. Weitere Informationen finden Sie unter http://www.wassenaar.org/.

Das Bureau of Industry and Security (BIS) des US-Handelsministeriums hat diese Software als Export Commodity Control Number (ECCN) 5D002.C.1 eingestuft, was Informationssicherheitssoftware umfasst, die kryptografische Funktionen mit asymmetrischen Algorithmen verwendet oder ausführt. Die Form und Art dieser Distribution macht sie sowohl für den Objektcode als auch für den Quellcode unter der Lizenzausnahme ENC Technology Software Unrestricted (TSU) exportfähig (siehe BIS Export Administration Regulations, Abschnitt 740.13).

Lizenz

Copyright 2020-2026 Signal Messenger, LLC

Lizenziert unter der GNU AGPLv3: https://www.gnu.org/licenses/agpl-3.0.html

Tool herunterladen