Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
libsignal — Signal Protocol をはじめ、Signal を可能にするその他の暗号プリミティブの本拠地です。 | Kitploit
ツール/GitHubGitHub/signalapp/libsignal
暗号化/復号化ツールID管理暗号化プライバシーハードウェアセキュリティ
GitHubsignalapp/libsignal

libsignal

Signal Protocol をはじめ、Signal を可能にするその他の暗号プリミティブの本拠地です。

リポジトリを見る
5.9k7681305日前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

概要

libsignal には、公式の Signal クライアントおよびサーバーで使用されるプラットフォーム非依存の API が含まれており、Java、Swift、または TypeScript ライブラリとして公開されています。基盤となる実装は Rust で書かれています:

  • libsignal-protocol: Double Ratchet アルゴリズムを含む Signal プロトコルを実装しています。libsignal-protocol-java および libsignal-metadata-java の代替です。
  • signal-crypto: AES-GCM などの暗号プリミティブ。可能な限り RustCrypto のものを使用していますが、異なるニーズがある場合もあります。
  • device-transfer: Signal のデバイス間転送機能をサポートするロジック。
  • attest: SGX エンクレーブおよびサーバー側 HSM のリモート認証のための機能。
  • zkgroup: Signal で利用可能なゼロ知識グループおよび関連機能のための機能。
  • zkcredential: Chase、Perrin、Zaverucha による論文「The Signal Private Group System」に基づく、zkgroup で使用される種類のゼロ知識クレデンシャルの抽象化。
  • poksho: ゼロ知識証明(zkgroup で使用されるものなど)を実装するためのユーティリティ。「proof-of-knowledge, stateful-hash-object」の略です。
  • account-keys: Signal の Secure Value Recovery システムで PIN をパスワードとして一貫して使用するための機能、およびその他のアカウント全体の鍵操作。
  • usernames: ユーザー名の生成、ハッシュ、および証明のための機能。
  • media: メディアを操作するためのユーティリティ。

このリポジトリは、Signal クライアントアプリ(Android、iOS、Desktop)およびサーバー側で使用されています。Signal 以外での使用はサポートされていません。特に、このリポジトリの成果物は、基盤となる Rust 実装をラップする Java、Swift、および TypeScript ライブラリです。すべての API および実装は、JNI、C、および Node アドオンの「ブリッジ」レイヤーと同様に、予告なく変更される可能性があります。ただし、Java、Swift、TypeScript、および非ブリッジ Rust API への後方互換性のない変更は、サポートされる最小ツールバージョンの引き上げを含め、可能な限りバージョン番号に反映されます。

ビルド

ツールチェーンのインストール

このリポジトリで何かをビルドするには、Rust がインストールされている必要があり、さらに Clang、libclang、CMake、Make、protoc、Python(3.9+)、および git の最近のバージョンも必要です。

Linux/Debian

Debian 系のシステムでは、これらの追加依存関係を apt で取得できます:

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

macOS

macOSでは、Rustツールチェーンをセットアップするためのベストエフォートでメンテナンスされているスクリプトがあり、次のコマンドで実行できます:

$ bin/mac_setup.sh

Rust

初回ビルドとテスト

現在のビルドでは、特定のバージョンの Rust 安定版コンパイラを使用しており、 これは cargo によって自動的にダウンロードされます。基本的なプロトコル ライブラリをビルドおよびテストするには:

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

追加の Rust ツール

上記の基本ツールで、ほとんどの libsignal Rust 開発のセットアップが完了します。

最終的には、コードフォーマット用の taplo など、追加の Rust ツールが必要になる場合があります。

ビルドに影響を与える可能性のある Rust ツールは、システムのパッケージマネージャー(例: apt や brew)からではなく、常に cargo からインストールする必要があります。パッケージマネージャーには、これらのツールの古いバージョンが含まれていることがあり、非互換性の問題でビルドが壊れる可能性があります。

使用しているバージョンに一致する主要な Rust 追加依存関係をインストールするには、以下のコマンドを実行します:

$ 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

ツールチェーンのセットアップ / 設定

Android向けにビルドするには、JDK、Android NDK/SDK などの追加パッケージをいくつかインストールし、RustコンパイラにAndroidターゲットを追加する必要があります。次のコマンドを使用します

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 # 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"
  // "uri()" の部分は Kotlin Gradle でのみ必要です。Groovy Gradle ではここに文字列をそのまま指定できます。
  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.

Testing a local build with Signal-Android

The Signal-Android gradle.properties file has a commented-out line to include libsignal as part of the build. Uncomment that and adjust the path; optionally, you can restrict the architectures you want to build for by adding androidArchs=aarch64 to libsignal's gradle.properties. (The set of recognized architectures is in java/build_jni.sh.) If you're using an IDE, you'll need to re-import the Gradle structure at this point. When you're done, revert the changes to the Android app's gradle.properties and re-import once more.

Note that this does not import the Rust parts of the project into the IDE. Doing that in a multi-language IDE like IDEA is possible, but finicky; as of 2025 the most reliable way to do it is to open the Android project first, add the libsignal repo root directory as a Rust project second (only including the top-level directory), and only then make the changes to gradle.properties.

Swift

To learn about the Swift build process see swift/README.md

Node

You'll need Node installed to build. If you have nvm, you can run nvm use to select an appropriate version automatically.

We use npm as our package manager, and a Python script to control building the Rust library, accessible as npm run build.

$ cd node
$ nvm use
$ npm install
$ npm run build
$ npm run tsc
$ npm run test

When testing changes locally, you can use npm run build to do an incremental rebuild of the Rust library. Alternately, npm run build-with-debug-level-logs will rebuild without filtering out debug- and verbose-level logs.

When exposing new APIs to Node, you will need to run just generate-node in addition to rebuilding.

NPM

ツールをダウンロード