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.

··Feeds·Contacto·Privacidad·© 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.9k76898hace 7 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 APIs 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 HSMs 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 APIs e implementaciones están sujetas a cambios sin previo aviso, al igual que las capas de "puente" JNI, C y Node add-on. Sin embargo, los cambios incompatibles hacia atrás en las APIs de Java, Swift, TypeScript y Rust que no son de puente se reflejarán en el número de versión en la medida de lo posible, incluidos los aumentos a las versiones mínimas de herramientas soportadas.

Compilación

Instalación del toolchain

Para compilar cualquier cosa en este repositorio debes 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, puedes 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, tenemos 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 usa una versión específica del compilador estable de Rust, que será descargada automáticamente por cargo. Para compilar y probar las bibliotecas de protocolo básicas:

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

Eventualmente, puede que descubras que necesitas algunas herramientas adicionales de Rust como taplo para el formateo de código.

Siempre debes instalar cualquier herramienta de Rust que necesites 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 (especialmente cbindgen).

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 del toolchain

Para compilar para Android debes instalar varios paquetes adicionales, incluido un JDK, el NDK/SDK de Android, y agregar los targets de Android al compilador de Rust, usando

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

Nuestra versión de JDK soportada oficialmente para compilaciones de Android es JDK 21, así que asegúrate de instalar, por ejemplo, OpenJDK 21, y luego apuntar JAVA_HOME a él.

Puedes hacer esto fácilmente en macOS mediante:

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

En Linux, la forma de hacer esto varía según la distribución. Para distribuciones basadas en Debian como Ubuntu, puedes usar:

sudo update-alternatives --config java

También incluimos un archivo .tools_version para usar con gestores de versiones en tiempo de ejecución.

Compilación y pruebas

Para compilar el jar y aar de Java/Android, y ejecutar las pruebas:

$ cd java
$ ./gradlew test
$ ./gradlew build # if you need AAR outputs

Puedes pasar -P debugLevelLogs a Gradle para compilar sin filtrar los logs de nivel debug y verbose de Rust, y -P jniTypeTagging para habilitar comprobaciones adicionales en el código de puente JNI de Rust.

Alternativamente, hay disponible un sistema de compilación que usa Docker:

$ cd java
$ make

Al exponer nuevas APIs a Java, necesitarás ejecutar rust/bridge/jni/bin/gen_java_decl.py además de recompilar. Esto requiere instalar la herramienta de Rust cbindgen, como se detalla arriba.

Uso como biblioteca

Signal publica paquetes Java para su propio uso, bajo los nombres org.signal:libsignal-server, org.signal:libsignal-client y org.signal:libsignal-android. libsignal-client y libsignal-server contienen bibliotecas nativas para Linux x86_64 de sabor Debian, así como Windows (x86_64) y macOS (x86_64 y arm64). libsignal-android contiene bibliotecas nativas para armeabi-v7a, arm64-v8a, x86 y x86_64 Android. Estas se encuentran en un repositorio Maven en https://build-artifacts.signal.org/libraries/maven/; para usarlas desde Gradle, agrega lo siguiente a tu bloque repositories:

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/")
}

Las compilaciones anteriores se publicaban en Maven Central en su lugar.

Al compilar para Android necesitas tanto libsignal-android como libsignal-client, pero las bibliotecas de Windows y macOS en libsignal-client no se excluirán automáticamente de tu aplicación final. Puedes excluirlas explícitamente usando packaging:

Descargar herramienta