Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
libsignal — Hogar del Protocolo Signal, así como de otras primitivas criptográficas que hacen posible Signal. | Kitploit
Herramientas/GitHubGitHub/signalapp/libsignal
Herramientas de Cifrado/DescifradoGestión de IdentidadesCriptografíaPrivacidadSeguridad de Hardware
GitHubsignalapp/libsignal

libsignal

Hogar del Protocolo Signal, así como de otras primitivas criptográficas que hacen posible Signal.

Ver Repositorio
5.9k768130hace 5 díasRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Descripción general

libsignal contiene API agnósticas de la plataforma utilizadas por los clientes y servidores oficiales de Signal, expuestas como una biblioteca Java, Swift o TypeScript. Las implementaciones subyacentes están escritas en Rust:

  • libsignal-protocol: Implementa el protocolo Signal, incluido el [algoritmo Double Ratchet][]. Un reemplazo de libsignal-protocol-java y libsignal-metadata-java.
  • signal-crypto: Primitivas criptográficas como AES-GCM. Usamos las de RustCrypto cuando podemos pero a veces tenemos necesidades diferentes.
  • device-transfer: Lógica de soporte para la función de transferencia de dispositivo a dispositivo de Signal.
  • attest: Funcionalidad para atestación remota de [enclaves SGX][] y [HSM][] del lado del servidor.
  • zkgroup: Funcionalidad para [grupos de conocimiento cero][] y características relacionadas disponibles en Signal.
  • zkcredential: Una abstracción para el tipo de credenciales de conocimiento cero utilizadas por zkgroup, basada en el artículo "The Signal Private Group System" de Chase, Perrin y Zaverucha.
  • poksho: Utilidades para implementar pruebas de conocimiento cero (como las utilizadas por zkgroup); significa "proof-of-knowledge, stateful-hash-object".
  • account-keys: Funcionalidad para usar consistentemente PINs como contraseñas en el sistema Secure Value Recovery de Signal, así como otras operaciones de claves a nivel de cuenta.
  • usernames: Funcionalidad para la generación, hashing y pruebas de nombres de usuario.
  • media: Utilidades para manipular medios.

Este repositorio es utilizado por las aplicaciones cliente de Signal (Android, iOS y Desktop) así como del lado del servidor. El uso fuera de Signal no está soportado. En particular, los productos de este repositorio son las bibliotecas Java, Swift y TypeScript que envuelven las implementaciones subyacentes en Rust. Todas las API e implementaciones están sujetas a cambios sin previo aviso, al igual que las capas de "puente" JNI, C y complemento de Node. Sin embargo, los cambios incompatibles hacia atrás en las API de Java, Swift, TypeScript y Rust que no son de puente se reflejarán en el número de versión según nuestro mejor esfuerzo, incluidos los aumentos a las versiones mínimas de herramientas soportadas.

Compilación

Instalación del conjunto de herramientas

Para compilar cualquier cosa en este repositorio debe tener Rust instalado, así como versiones recientes de Clang, libclang, CMake, Make, protoc, Python (3.9+) y git.

Linux/Debian

En un sistema similar a Debian, puede obtener estas dependencias adicionales a través de apt:

$ apt-get install clang libclang-dev cmake make protobuf-compiler libprotobuf-dev python3 git

macOS

En macOS, disponemos de un script mantenido con el mejor esfuerzo posible para configurar el toolchain de Rust que puedes ejecutar con:

$ bin/mac_setup.sh

Rust

Primera compilación y prueba

La compilación actualmente utiliza una versión específica del compilador estable de Rust, que será descargada automáticamente por cargo. Para compilar y probar las bibliotecas básicas del protocolo:

$ cargo build
...
$ cargo test
...

Herramientas adicionales de Rust

Las herramientas básicas anteriores deberían ser suficientes para la mayoría del desarrollo de libsignal en Rust.

Con el tiempo, es posible que necesites algunas herramientas adicionales de Rust como taplo para el formateo de código.

Siempre debes instalar cualquier herramienta de Rust que necesites y que pueda afectar la compilación desde cargo en lugar de desde tu gestor de paquetes del sistema (por ejemplo, apt o brew). Los gestores de paquetes a veces contienen versiones desactualizadas de estas herramientas que pueden romper la compilación con problemas de incompatibilidad.

Para instalar las principales dependencias adicionales de Rust que coincidan con las versiones que usamos, puedes ejecutar los siguientes comandos:

$ 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

Configuración / Ajuste de la cadena de herramientas

Para compilar para Android debes instalar varios paquetes adicionales, incluyendo un JDK, el NDK/SDK de Android, y añadir los objetivos de Android al compilador de Rust, usando

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

Our officially supported JDK version for Android builds is JDK 21, so be sure to install e.g. OpenJDK 21, and then point JAVA_HOME to it.

You can easily do this on macOS via:

export JAVA_HOME=$(/usr/libexec/java_home -v 21)

On Linux, the way you do this varies by distribution. For Debian based distributions like Ubuntu, you can use:

sudo update-alternatives --config java

We also check-in a .tools_version file for use with runtime version managers.

Building and Testing

To build the Java/Android jar and aar, and run the tests:

$ cd java
$ ./gradlew test
$ ./gradlew build # si necesitas salidas AAR

You can pass -P debugLevelLogs to Gradle to build without filtering out debug- and verbose-level logs from Rust, and -P jniTypeTagging to enable additional checks in the Rust JNI bridging code.

Alternately, a build system using Docker is available:

$ cd java
$ make

When exposing new APIs to Java, you will need to run cargo run -p libsignal-jni-native_kt (or just generate-jni) in addition to rebuilding.

Use as a library

Signal publishes Java packages for its own use, under the names org.signal:libsignal-server, org.signal:libsignal-client, and org.signal:libsignal-android. libsignal-client and libsignal-server contain native libraries for Debian-flavored x86_64 Linux as well as Windows (x86_64) and macOS (x86_64 and arm64). libsignal-android contains native libraries for armeabi-v7a, arm64-v8a, x86, and x86_64 Android. These are located in a Maven repository at https://build-artifacts.signal.org/libraries/maven/; for use from Gradle, add the following to your repositories block:

maven {
  name = "SignalBuildArtifacts"
  // La parte "uri()" solo es necesaria para Kotlin Gradle; Groovy Gradle acepta una cadena simple aquí.
  url = uri("https://build-artifacts.signal.org/libraries/maven/")
}

Older builds were published to Maven Central instead.

When building for Android you need both libsignal-android and libsignal-client, but the Windows and macOS libraries in libsignal-client won't automatically be excluded from your final app. You can explicitly exclude them using packaging:

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

You can additionally exclude libsignal_jni_testing.so if you do not plan to use any of the APIs intended for client testing.

Descargar herramienta