Bitchat for Android:安全、去中心化的蓝牙网状网络即时通讯应用

news/2025/12/4 6:04:16/文章来源:https://www.cnblogs.com/qife122/p/19304712

Bitchat for Android

Bitchat for Android 是一款安全、去中心化、点对点 (P2P) 的即时通讯应用,基于蓝牙网状网络运行。在蓝牙网状聊天模式下,无需互联网连接,没有服务器,无需手机号码,只有纯粹的加密通信。Bitchat 还支持地理哈希频道,该模式使用互联网连接将您与您所在地理区域内的其他人联系起来。

这是原始 bitchat iOS 应用 的 Android 移植版,保持了 100% 的协议兼容性以实现跨平台通信。

警告:
此软件尚未接受外部安全审查,可能存在漏洞,且不一定满足其声明的安全目标。请勿将其用于敏感用例,并且在经过安全审查之前,请勿依赖其安全性。仍在开发中。

功能特性

  • :check_mark_button: 跨平台通信:确保 Android 与 iOS 设备之间能够无缝互发消息。
  • :check_mark_button: 蓝牙网状网络:无需任何互联网基础设施,即可与附近设备进行直接、私密的对话。
  • :check_mark_button: 端到端加密:使用行业标准的加密协议(X25519、AES-256-GCM、Ed25519)保护所有消息。
  • :check_mark_button: 地理位置频道:基于地理哈希加入公共频道,与同一区域内的其他人进行在线交流。
  • :check_mark_button: 无需账户:无需提供电话号码、电子邮件或任何个人身份信息。私钥在本地生成和管理。
  • :check_mark_button: 开源与可审计:完整的源代码开放,任何人都可以检查其隐私和安全机制。
  • :check_mark_button: 协议兼容性:与原始 iOS 应用以及基于 Rust 的实现完全兼容。
  • :check_mark_button: 无服务器架构:无中央服务器存储用户数据或消息,通信直接发生在设备之间。

安装指南

您可以从 GitHub Releases 页面 下载 Android 版 bitchat 的最新版本。

或者,您可以从 Google Play 商店安装:

Get it on Google Play

安装说明:

  1. 下载 APK 文件:在您的 Android 设备上,访问上述链接并下载最新的 .apk 文件。
  2. 允许未知来源安装:在某些设备上,安装 APK 之前,您可能需要先在设备的 设置 > 安全设置 > 应用和通知 > 特殊应用权限 中启用“允许来自未知来源的安装”。
  3. 安装:打开下载的 .apk 文件开始安装。

使用说明

核心操作流程

安装并启动应用后,您将进入主界面。

1. 加入或创建聊天室

  • 您可以加入一个现有的密码保护聊天室,或创建一个新房间。
  • 房间密码确保只有知道密码的用户才能加入并查看消息。

2. 蓝牙网状聊天

  • 打开蓝牙,应用会自动扫描附近的 Bitchat 设备。
  • 您可以在范围内与其他用户进行实时、端到端加密的聊天。
  • 消息通过邻近设备组成的临时网状网络进行中继。

3. 地理哈希频道

  • 此功能需要互联网连接。
  • 根据您的地理位置(转换为地理哈希)加入公共讨论频道。
  • 您的消息将通过 Nostr 中继站进行传输。

4. 管理联系人

  • 将经常通信的对方标记为“收藏”,以便在未来的会话中更容易识别。
  • 收藏信息仅存储在您的本地设备上。

5. 隐私与数据控制

  • 一键清除数据:在主界面上 快速三击 Logo 可以立即清除所有本地数据(身份密钥、昵称、消息历史、收藏列表)。
  • 关闭应用后,您的在线状态会立即消失。
  • 消息默认在会话结束后从内存中清除(除非房间所有者启用了消息保留)。

隐私注意事项

  • Bitchat 不会收集或传输任何个人身份信息给开发者或第三方。
  • 所有敏感数据(如加密密钥)都存储在设备的安全存储区域。
  • 通信过程中,其他用户只能看到您选择的昵称和临时的会话公钥。
  • 应用的完整隐私政策,请参阅项目文件中的 Privacy Policy 部分。

核心代码示例

1. 椭圆曲线密钥交换 (Curve25519)

以下代码展示了项目中用于安全密钥交换的 Curve25519 算法的核心实现片段。

package com.bitchat.android.noise.southernstorm.crypto;public final class Curve25519 {// 常量定义:使用 26 位字表示 255 位模数private static final int NUM_LIMBS_255BIT = 10;private static final int NUM_LIMBS_510BIT = 20;private int[] x_1;private int[] x_2;private int[] x_3;private int[] z_2;private int[] z_3;// ... 其他中间状态变量/*** 执行 Curve25519 标量乘法运算,这是密钥协商的核心。** @param result 输出缓冲区,用于存放计算得到的公钥或共享密钥。* @param resultOffset result 中的起始偏移量。* @param privateKey 输入的私钥(标量)。* @param publicKey 输入的公钥点(基点或对端的公钥)。若为 null,则使用标准基点。*/public static void eval(byte[] result, int resultOffset, byte[] privateKey, byte[] publicKey) {// ... 实现基于 Montgomery 阶梯算法的标量乘法// 确保恒定时间操作以防止旁路攻击}// ... 其他辅助方法,如大整数模运算、蒙哥马利表示转换等
}

2. 消息认证与加密 (ChaChaPoly)

以下代码展示了用于消息认证和加密的 ChaChaPoly 算法的状态机实现,它是 Noise 协议的一部分。

package com.bitchat.android.noise.southernstorm.protocol;import com.bitchat.android.noise.southernstorm.crypto.ChaChaCore;
import com.bitchat.android.noise.southernstorm.crypto.Poly1305;class ChaChaPolyCipherState implements CipherState {private Poly1305 poly; // 用于消息认证private int[] input;   // 加密状态输入private int[] output;  // 加密状态输出private byte[] polyKey; // Poly1305 密钥long n;                // 非ce计数器private boolean haskey;/*** 使用 ChaCha20 加密数据并使用 Poly1305 生成认证标签。** @param plaintext 明文输入缓冲区。* @param plaintextOffset 明文起始偏移量。* @param plaintextLength 明文长度。* @param ciphertext 密文输出缓冲区。* @param ciphertextOffset 密文起始偏移量。* @param additionalData 额外的认证数据(AAD)。* @return 写入 ciphertext 的总字节数(包含加密数据和认证标签)。* @throws ShortBufferException 输出缓冲区空间不足。* @throws BadPaddingException 如果解密或验证失败。*/@Overridepublic int encryptWithAd(byte[] additionalData,byte[] plaintext, int plaintextOffset, int plaintextLength,byte[] ciphertext, int ciphertextOffset)throws ShortBufferException, BadPaddingException {// 1. 使用 ChaCha20 核心函数和当前密钥、nonce 生成密钥流// 2. 将密钥流与明文进行 XOR 操作得到密文// 3. 使用 Poly1305 和生成的 polyKey 计算密文和 AAD 的认证标签// 4. 将密文和认证标签一起输出// ... 具体实现return ciphertextLength + 16; // 16 字节 Poly1305 标签}// ... 相应的 decryptWithAd 方法用于解密和验证
}

3. 握手协议状态机 (HandshakeState)

以下代码是 Noise 协议握手过程的核心状态机,负责管理密钥协商和会话建立。

package com.bitchat.android.noise.southernstorm.protocol;public class HandshakeState implements Destroyable {private SymmetricState symmetric; // 对称加密状态private boolean isInitiator;      // 标识当前端是否为发起方private DHState localKeyPair;     // 本地静态密钥对private DHState localEphemeral;   // 本地临时密钥对private DHState remotePublicKey;  // 远程静态公钥// ... 其他状态变量/*** 开始或继续握手过程。** @param message 输入/输出的握手消息缓冲区。* @param payload 可选的应用层负载数据。* @return 握手动作状态码(如需要读取、需要写入、握手完成等)。* @throws BadPaddingException 握手消息验证失败。* @throws ShortBufferException 缓冲区空间不足。*/throws BadPaddingException, ShortBufferException {// 1. 根据预定义的握手模式(如 XX, IK, NK)解析消息令牌// 2. 执行 Diffie-Hellman 操作(EE, ES, SE, SS)// 3. 混合握手哈希,并加密/解密传输的负载// 4. 更新内部握手状态// ... 具体实现if (/* 握手完成条件 */) {return ACTION_SPLIT; // 指示可以拆分会话密钥用于数据传输}return ACTION_READ; // 或 ACTION_WRITE,等待下一条消息}/*** 握手成功后,拆分为两个独立的 CipherState,分别用于发送和接收数据。** @return 包含发送和接收 CipherState 的配对对象。*/public CipherStatePair split() {// 从握手哈希中派生出最终的发送和接收密钥// 创建并返回 CipherStatePair// ... 具体实现return new CipherStatePair(sendCipher, recvCipher);}
}

更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)

公众号二维码

公众号二维码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/986238.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025杭州沙发清洗公司哪家强?杭州沙发清洗公司推荐甄选

2025杭州沙发清洗公司哪家强?杭州沙发清洗公司推荐甄选!沙发作为家庭和办公空间中使用频率极高的家具,其清洁状况直接影响室内环境与健康。专业的沙发清洗不仅能去除污渍,更能深度清除尘螨、细菌等过敏原。在选择杭…

杭州外墙清洗公司哪家强?2025靠谱杭州外墙清洗公司推荐优选

杭州外墙清洗公司哪家强?2025靠谱杭州外墙清洗公司推荐优选!外墙清洗是一项专业性高、风险性大的作业,选择一家靠谱的服务商至关重要。在选择杭州外墙清洗公司时,建议您从以下几个核心维度进行综合评估:安全资质与…

智能门锁口碑哪家好,2025智能门锁品牌排行榜

当你站在家门外,发现忘记带钥匙的瞬间,一个微小的科技进步就能化解所有尴尬——智能门锁正是为这种日常困境而生的解决方案。选择智能门锁时,消费者往往需要平衡安全性与便捷性,而市场上的众多品牌又增加了决策难度…

Pandas高级GroupBy技术详解

本文深入探讨了利用Pandas库的GroupBy功能处理复杂数据聚合场景的进阶技术,包括条件聚合、加权指标、时间序列分组及组内排名等,提供了避开常见陷阱的实用策略。引言 虽然 groupby().sum() 和 groupby().mean() 用于…

2025杭州单位保洁哪家强?这份杭州单位保洁公司推荐清单合集

2025杭州单位保洁哪家强?这份杭州单位保洁公司推荐清单合集!对于企业、院校等单位而言,优质的保洁服务不仅能营造整洁舒适的办公与经营环境,提升单位形象,更能为员工与访客的健康提供基础保障。但面对杭州市场上众…

2025杭州石材保养公司推荐:杭州石材保养公司哪家强大盘点

2025杭州石材保养公司推荐:杭州石材保养公司哪家强大盘点!大理石的温润、花岗岩的坚硬、砂岩的质朴,让石材成为杭州众多写字楼、酒店、企业办公区的装饰首选。但石材在长期使用中,难免面临磨损失光、污渍渗透、潮湿返…

2025年下半年内蒙古坑道钻机企业深度评测与选购指南

摘要 2025年下半年,内蒙古坑道钻机行业随着矿业发展持续升温,企业竞争加剧。本文基于第三方调研,提供一份坑道钻机企业推荐榜单,排名仅作参考,不区分先后顺序,旨在帮助用户了解行业概况。榜单包含五家推荐企业,…

2025下半年徐州MPP电力管优质厂商综合推荐指南

摘要 随着城市电网改造和新能源建设的快速发展,MPP电力管作为电力电缆保护的重要材料,在2025年下半年徐州市场的需求持续增长。本文基于行业调研和用户反馈,为您推荐五家优质的MPP电力管厂商,排名不分先后,仅供参…

avascript如何判断是触摸屏还是PC端

avascript如何判断是触摸屏还是PC端在Web开发中,判断设备是触摸屏还是PC端(鼠标操作)通常涉及到检测用户输入的类型。JavaScript提供了几种方式来实现这一功能,以下是一些常见的方法: 1. 使用 ontouchstart 属性 …

2025年下半年内蒙古探水钻机企业综合评测与选购指南

摘要 随着内蒙古矿产资源开发的持续深入,探水钻机作为矿山勘探的核心设备,其市场需求在2025年下半年呈现稳步增长态势。本文基于行业调研数据及用户反馈,为您推荐五家值得关注的探水钻机企业(排名不分先后),重点…

2025年下半年内蒙古探水钻机企业综合推荐指南:十大优质供应商盘点

摘要 随着内蒙古矿产资源开发的不断深入,探水钻机作为矿山勘探的关键设备,其市场需求在2025年下半年持续增长。本文基于行业调研数据,为您推荐十家在该领域表现突出的企业,排名不分先后,仅作参考。特别说明:本推…

杭州拱墅区初中初一初二初三中考辅导机构推荐——德易辅导班李秋老师

随着中考竞争的日益激烈,以及对孩子未来学业长远发展的关注,高效、系统化的考试提分辅导成为杭州家庭的核心考量。然而,市场上补习机构众多,真正的核心能力、提分效果、学习方法论却良莠不齐,家长在选择时常常面临…

2025年下半年内蒙古履带钻机品牌综合推荐与选购指南

摘要 2025年下半年,内蒙古地区的履带钻机行业在矿产资源开发和基础设施建设推动下持续发展,品牌竞争加剧。本文基于第三方调研和用户反馈,整理了五家推荐品牌,并提供简要表单供参考。排名仅为推荐,不区分先后顺序…

2025年下半年内蒙古履带钻机品牌综合评估与选购指南

摘要 随着内蒙古矿产资源开发的持续深入,履带钻机作为矿山勘探的核心装备,其市场需求在2025年下半年呈现稳步增长态势。本文基于行业调研数据,为读者推荐10家在本地区表现优异的履带钻机品牌(排名不分先后),重点…

图片的秘密

将文件放进随波逐流里面用binwalk分离获得一个压缩包,打开压缩包发现这个文件里面有一个pass.txt打开发现秘钥,在返回上一个文件打开word,在打开media将里面的图片解压出来在https://tool.zootu.cn/tools/fun/pixel…

tailscale与macos shadow火箭,chrome浏览器proxyswitchomega并存问题

问题:开magicdns chrome下switchomega direct连接访问谷歌会报证书错误, 这是因为switchomega direct模式下,dns被magicdns接管的,不走火箭的,导致ip错误了(被污染) 。可以:1 关magicdns2 tailscale后台开over…

RSI 2

将文件放进随波逐流里面,用binwalk分离,发现一个压缩包将压缩包里面的文件提取出来,打开文件发现大量数据借用大佬的脚本,将数据转成图片点击查看代码 import matplotlib.pyplot as pltdef validate_coord(coord):…

RSI 1

将文件放进随波逐流里面,使用binwalk分离文件获得一个压缩包,打开压缩包将里面的文件解压出来打开文件获得flag

CVE-2016-7124

CVE-2016-7124复现分析代码,当执行反序列化时触发__wakeup(),导致返回默认页面,但是当序列化字符串中对象属性数量大于实际属性数量时,__wakeup()不会执行,从而绕过。生成payload,将O:8:"xiaorang":1:{…

接口加密

接口加密一、业务场景介绍 数据安全性 - 抓包工具系统明文传输的数据会被不明身份的人用抓包工具抓取,从而威胁系统和数据的安全性。 二、加密方式 1. 摘要算法消息摘要是把任意长度的输入揉和而产生长度固定的信息。…