Signal (软件)

Signal（中文意为信号）是一款开源跨平台加密即时通讯应用程序。其支持经由互联网发送一对一和群组消息，消息类型包括文本、短语音、图片、视频及其他文件，同时提供语音或视频通话功能。

Signal使用移动电话号码注册及管理账户，在2024年3月添加了可由用户设置之用户名，以允许用户向其他用户隐藏自己的电话号码。并使用端到端加密来保护与其他Signal用户的所有通讯。应用程序还带有一些机制，给予用户独立验证其联系人的身份和数据通道的完整性的能力。

Signal的所有软件都是自由及开源的，由非营利组织Signal基金会和Signal Messenger有限公司开发。其用户端和服务器端的程式码均按AGPLv3授权发布。Signal之Android正式版软件通常使用了Google专营的Google Play服务（被预装在大多数Android设备中），但它亦被设计为可在无Google Play服务的环境中运行。Signal还在iOS操作系统，以及Windows、macOS、Linux等桌面操作系统均有正式版的客户端软件。

非营利组织Signal基金会于2018年2月成立， WhatsApp联合创始人布莱恩·艾克顿提供了初期5000万美元之初始资金。自2024年12月，Signal已获得超过2亿2千万之下载总量，并且拥有约7千万月活跃用户。Signal已被安装于超过1亿台Android设备上。

## 历史

### 2010年至2013年：起源

Signal是RedPhone加密语音呼叫应用程序和TextSecure加密短信程序的后继产品。RedPhone和TextSecure的测试版最初由Whisper Systems于2010年5月推出，Whisper Systems是一家由前twitter安全研究员马克西·马林史派克和机器人专家Stuart Anderson共同创立的创业公司

### 2013年至2018年: Open Whisper Systems

Open Whisper Systems的网站于2013年1月启动。

### 2018年至今：Signal技术基金会

2018年2月21日，马克西·马林史派克和WhatsApp联合创始人布莱恩·艾克顿宣布成立Signal Technology Foundation，这是一个非营利组织，其使命是“支持、加速和扩大Signal进行私人通信的使命可访问且无处不在”。阿克顿以5000万美元的资金创立了基金会，并在2017年9月离开WhatsApp的母公司Facebook后成为基金会的执行主席。马林斯派克继续担任Signal Messenger的第一任首席执行官。截至2020年，Signal完全依靠捐赠，作为非营利组织。

2022年1月10日，马克西·马林史派克宣布辞去Signal Messenger首席执行官一职。他继续留在Signal董事会，布莱恩·艾克顿自愿在寻找新首席执行官期间担任临时首席执行官。

## 功能

Signal允许用户与iOS、Android和桌面端的其他Signal用户进行语音和视频通话。由于其通话是通过Wi-Fi或运营商的数据连接进行，所有通话都是免费的（数据费除外），包括长途电话和国际长途电话。Signal还允许用户向这些平台的其他Signal用户发送文本、文件、短语音、图片、GIF和视频消息。此外该应用程序还支持群组消息传递。

Signal用户之间的所有通信会话都会自动进行端到端加密（加密密钥在设备上生成及存储，并非服务器）。Signal用户可以通过比较密钥指纹带外数据（或扫描二维码）验证通信的对方符合其所声称的身份。该平台采用首次使用信任机制，会在通信对方的密钥发生变化时通知用户。

2023年之前，Android用户可以选择将Signal作为默认的短信/彩信应用程序，从而除了标准的端到端加密Signal消息外，还可以发送和接收未加密的短信。于是用户可以使用同一个应用程序与没有Signal的联系人进行通信。截至2022年10月，由于安全和隐私问题，此功能已被弃用，并于2023年被移除。

TextSecure允许用户设置一个密码来加密本地消息数据库以及用户的加密密钥。这不会加密用户的联系人数据库或消息时间戳。Android和iOS上的Signal应用程序可以使用手机的PIN码、密码或生物识别进行锁定。用户可以定义“屏幕锁定超时”时间间隔，以便在手机丢失或被盗时提供额外的保护机制。

Signal具有定时发送消息的功能。此外，消息可以附加计时器，以便自动从发送方和接收方的设备中删除消息。保留消息的时间段可以在5秒到4周之间，并且在每个接收者阅读完他们的消息副本后开始计时。开发者们强调，这旨在作为一项协作功能，用于所有对话参与者都期望的少量数据清理自动化，而不是用于接收者是敌对方的情况。

Signal的应用程序图标可以使用各种颜色主题进行自定义，应用程序名称也可以自定义。消息可以带有防剧透遮罩和斜体等效果，用户可以通过二维码互相添加。

对于云备份，默认情况下Signal会将用户的聊天记录排除在外。密钥保存在钥匙串（Keychain）中。

Signal具有对已读回执和键入指示符的支持，两者均可禁用。

Signal允许用户自动模糊照片中人物的脸部，以保护其身份。

Signal包含一个加密货币钱包功能，用于存储、发送和接收应用内付款。除了某些地区和国家或地区外，该功能已于2021年11月在全球范围内启用。唯一支持的支付方式是MobileCoin。

2024年2月，Signal在其测试版应用程序中添加了用户名功能。这是一项隐私功能，允许用户在不共享电话号码的情况下与他人通信。

## 局限性

Signal要求用户提供电话号码进行验证，从而无需用户名或密码，并方便联系人查找（见下文）。号码不必和设备SIM卡上的号码一样；它可以是VoIP号码或座机号码，关键在于用户能够接收验证码，并需要一台设备来安装软件。一个号码在同一时间只能注册到一台移动设备上。帐户注册需要iOS或Android设备。

这种与电话号码的强制连接（Signal与WhatsApp、KakaoTalk等应用也采用该机制）一直受到注重隐私的用户的批评，被认为是一个“主要争议”，因为他们不愿意透露自己的私人号码。一种解决方法是使用辅助电话号码。使用可更改的公开用户名，而非共享电话号码，则是一项备受期待的功能。这项功能已于2024年2月在Signal测试版中添加。使用电话号码作为身份标识符也可能会造成安全风险，因为攻击者可能会盗用电话号码。一个类似的漏洞在2022年8月被发现用来攻击至少一名用户，尽管这次攻击是通过Signal的短信服务提供商进行的，而非用户的运营商。这类威胁风险可以通过启用Signal的注册锁功能来降低，该功能以一种双因素身份验证的形式，要求用户输入PIN码才能在新设备上注册电话号码。

即使Signal努力隐匿用户元数据，但通过网络提供者以及各地的网络监控仍然可以探察到元数据，泄露例如在线时间、向某位联系人发送消息的频率以及基于IP地址的地理位置等在内的用户行为模式。如果设备被恶意软件入侵或者被他人物理访问，Signal的安全效果将不能如期体现。类似于飞马这样的间谍软件不会破解加密，而是会完全绕过加密机制，使攻击者能够通过屏幕或内存访问已解密的消息。此外，加密只是保护敏感或机密通信的一个方面，对于政府的机密通信而言还需要严格的保管链过程、专用硬件以及遵循机密处理框架，目前的Signal并不支持这些。

## 实用性

2016年7月，互联网协会发布了一项用户研究，评估了Signal用户检测和阻止中间人攻击的能力。该研究得出结论，28名参与者中有21名未能正确比较公钥指纹以验证其他Signal用户的身份，并且这些用户中的大多数人认为他们已经成功了，而实际上他们失败了。四个月后，Signal的用户界面进行了更新，以简化验证其他Signal用户身份的过程。

## 架构

### 加密协议

Signal消息使用Signal协议（曾称作TextSecure协议）进行加密。该协议结合了双棘轮算法、预共享密钥和扩展三元迪菲-赫尔曼 （X3DH）握手。它使用Curve25519、AES-256和HMAC-SHA256作为密码基元。该协议提供机密性、完整性、身份验证、参与者一致性、目标验证、前向保密、后向保密（又称未来保密）、因果关系保留、消息不可链接性、可否认认证、参与否认和异步性。它不提供匿名性保留，并且需要服务器来中继消息和存储公钥材料。

Signal协议还支持端到端加密群聊。群聊协议是成对双棘轮和多播加密的组合。除了单对单协议提供的属性外，群聊协议还提供发言者一致性、乱序弹性、丢弃消息弹性、计算平等、信任平等、子群消息传递，以及可收缩和可扩展的成员资格。

2014年10月，波鸿鲁尔大学的研究人员发表了对Signal协议的分析。除其他发现外，他们还提出了对该协议的未知密钥共享攻击，但总的来说，他们发现它是安全的。2016年10月，来自英国牛津大学、澳大利亚昆士兰科技大学和加拿大麦克马斯特大学的研究人员发表了对该协议的正式分析。他们得出结论，该协议在密码学上是可靠的。2017年7月，波鸿鲁尔大学的研究人员在对群组信使的另一项分析中发现了对Signal群组协议的纯理论攻击：知道群组秘密ID的用户（由于以前是群组成员或从成员的设备中窃取了它）可以成为该群组的成员。由于无法猜测群组ID，并且此类成员更改会显示给其余成员，因此在不被发现的情况下很难执行此类攻击。

Signal协议已在WhatsApp、Facebook Messenger、Skype和Google Allo中实现，使得“全球超过10亿人”的对话能够进行端到端加密。在Google Allo、Skype和Facebook Messenger中，默认情况下不使用Signal协议加密对话；它们仅在可选模式下提供端到端加密。

直到2017年3月，Signal的语音通话都使用SRTP和齐默尔曼实时传输协议密钥协商协议进行加密，该协议由菲尔·齐默尔曼开发。2017年3月，Signal过渡到新的基于WebRTC的呼叫系统，该系统引入了进行视频通话的功能。Signal的语音和视频通话功能使用Signal协议通道进行身份验证，而不是ZRTP。

#### 身份验证

Signal用户可以通过比较密钥指纹带外数据（或扫描二维码）验证通信的对方符合其所声称的身份。该平台采用首次使用信任机制，以便在通信方的密钥发生变化时通知用户。

### 本地存储

应用程序在接收和解密消息后，会将它们本地存储在每个设备上的SQLite数据库中，该数据库使用SQLCipher加密。此数据库的加密密钥也存储在本地，如果设备已解锁，该密钥则可被访问。2020年12月，Cellebrite发表了一篇博文，宣布他们的一款产品现在可以访问此密钥并使用它来“解密Signal应用程序”。科技记者后来发表文章，报道了Cellebrite如何声称有能力“侵入Signal应用程序”和“破解Signal的加密”。后一种解释遭到了一些专家以及Signal的代表的反驳，他们表示Cellebrite最初的帖子是关于访问“他们实际拥有的已解锁的Android手机”上的数据，并且他们“可以打开应用程序查看消息”。类似的提取工具也存在于iOS设备和Signal桌面版上。

### 服务器

Signal所采用的基础设施来自遍及世界各地的大型供应商，如亚马逊云计算服务（AWS）、Google计算引擎（GCE）及Microsoft Azure等。除了路由Signal的消息外，服务器还有助于发现同时也是Signal用户注册的联系人以及自动交换用户的公钥。默认情况下，Signal的语音和视频通话是双方的点对点直接连接。如果呼叫者不在接收者的通讯簿中，则将呼叫路由通过服务器以隐藏用户的IP地址。

#### 联系人发现

服务器存储注册用户的电话号码、公钥材料和推送令牌，这些都是建立呼叫和传输消息所必需的。为了确定哪些联系人也是Signal用户，用户联系电话号码的密码散列会定期传输到服务器。然后，服务器会检查这些散列是否与任何注册用户的SHA256散列匹配，并在找到任何匹配项时通知客户端。之后，散列的号码将从服务器中丢弃。2014年，马克西·马林史派克写道，由于电话号码的有限原像空间（所有可能散列输入的集合），因此很容易计算出所有可能散列输入到散列输出的映射并反转映射，并且“实用的隐私保护联系人发现仍然是一个未解决的问题”。2017年9月，Signal的开发人员宣布，他们正在研究一种方法，使Signal客户端应用程序能够“有效且可扩展地确定其地址簿中的联系人是否是Signal用户，而无需向Signal服务透露其地址簿中的联系人”。

#### 元数据

所有通信都受到TLS的保护。Signal的开发人员断言，他们的服务器不会保留有关谁在何时给谁打电话的日志。2016年6月，Marlinspike告诉《The Intercept》，“Signal服务器存储的最接近元数据的信息是每个用户最后一次连接到服务器的时间，并且此信息的精度降低到天，而不是小时、分钟和秒”。

群组消息传递机制的设计使服务器无法访问成员列表、群组标题或群组图标。相反，群组的创建、更新、加入和离开由客户端完成，客户端以与传递一对一消息相同的方式将成对消息传递给参与者。

#### 互联

Signal的服务器架构在2013年12月至2016年2月期间是互联（federation）的。2013年12月，宣布Signal使用的消息传递协议已成功集成到基于Android的开源操作系统CyanogenMod中。从CyanogenMod 11.0开始，客户端逻辑包含在一个名为WhisperPush的系统应用程序中。据Signal的开发人员称，Cyanogen团队为WhisperPush客户端运行他们自己的Signal消息传递服务器，该服务器与主服务器联合，以便两个客户端可以相互交换消息。WhisperPush源代码在GPLv3许可下可用。2016年2月，CyanogenMod团队停止了WhisperPush，并建议其用户切换到Signal。2016年5月，马克西·马林史派克写道，与CyanogenMod服务器的联合降低了用户体验并阻碍了开发，并且他们的服务器可能不会再次与其他服务器联合。

2016年5月，马克西·马林史派克要求名为LibreSignal的第三方客户端不要使用Signal服务或Signal名称。结果，LibreSignal项目在2016年5月24日发布公告称该项目已“放弃”。LibreSignal提供的功能随后被Marlinspike整合到Signal中。

### 代码许可

适用于Android、iOS和桌面的Signal客户端的完整源代码在GitHub上以自由软件许可证的形式提供。这使得有兴趣的人士可以检查代码并帮助开发人员验证一切是否按预期运行。它还允许高级用户编译他们自己的应用程序副本，并将它们与Signal Messenger分发的版本进行比较。2016年3月，马克西·马林史派克写道，除了由于缺乏Gradle NDK支持而未与项目构建一起编译的一些共享库外，Signal for Android是可重现的。Signal的服务器是部分开源的，但由于安全原因，服务器软件的反垃圾邮件组件是专有的并且是闭源的。

## 反响

### 安全

2014年10月，电子前哨基金会（EFF）在其更新的监视自卫指南中收录了Signal。2014年11月，Signal在EFF的安全消息评分卡上获得了满分；因由以下方面加分：通信在传输过程中加密、通信使用提供商无法访问的密钥进行加密（端到端加密）、使用户能够独立验证其通信对象的身份、若密钥被盗过去通信仍然安全（前向保密）、代码开放可供独立审查（开源）、安全设计文档完善以及近期进行过独立的安全性审计。彼时，“ChatSecure + Orbot”、Pidgin（配以OTR)、Silent Phone和Telegram的可选“秘密聊天”也在评分卡上获得了七分（满分）。

前美国国家安全局（NSA）技术员爱德华·斯诺登在多个场合认可了Signal。在他2014年3月在SXSW的主题演讲中，他称赞Signal的前身，TextSecure和RedPhone，易于使用。2014年12月，明镜周刊泄露了NSA一份日期为2012年6月的内部演示文稿幻灯片，其中NSA认为Signal的加密语音通话组件（RedPhone）本身就是对其访问用户私人数据任务的“重大威胁”，并且当与Cspace、Tor、Tails和TrueCrypt等其他隐私工具结合使用时，被评为“灾难性”（catastrophic）的，并导致“几乎完全丧失或缺乏对目标通信（及其）存在的洞察能力”。

在2016年民主党全国委员会电子邮件泄露事件之后，《名利场》报道称，马克·伊莱亚斯（希拉里·克林顿总统竞选的总法律顾问）已指示DNC工作人员在说任何关于共和党总统候选人唐纳德·特朗普的负面言论时，必须专门使用Signal。

2017年3月，Signal获得美国参议院军械主管批准，供参议员及其工作人员使用。

2019年9月27日，在Google的Project Zero漏洞研究团队工作的安全工程师Natalie Silvanovich披露了Android Signal客户端中的一个漏洞，该漏洞可能让攻击者在用户不知情的情况下监听用户。该项漏洞可使攻击者向目标设备去电，并将其静音。通话会建立连接并保持音频通道开启，然而设备持有者不会察觉音频仍在被传输（不过设备持有者仍可能注意到来电伊始的铃声或震动）。该漏洞在报告的当天得到修复，并在Android应用程序的4.47.7版本中进行了修补。

2020年2月，欧盟委员会建议其工作人员使用Signal。在始于2020年5月的乔治·弗洛伊德抗议活动之后，5月25日至6月4日期间，Signal在美国被下载了121,000次。2020年7月，在香港国安法通过后，Signal成为香港在苹果App Store和Google Play商店中下载次数最多的应用程序。

Signal是向主流新闻媒体（如《华盛顿邮报》、《卫报》、《纽约时报》和《华尔街日报》）安全提供线索的联系方式。

间谍软件公司Candiru与FinFisher声称若将其间谍软件安装到手机上的话，有能力从Signal提取消息。Signal的一些分支项目尝试通过加密静态数据来对抗这些问题。

2022年8月9日，马来西亚首相伊斯梅尔·萨布里称，他的Signal帐户被“黑客入侵”且被第三者渗透，发送消息以冒充这位政治家。然尚未透露有关获取账户访问权的方法的任何细节。

据美国中央情报局（CIA）第9任局长约翰·拉特克利夫称自2025年起，Signal已默认安装于大多数CIA员工的设备上，其使用已纳入标准入职培训。

### 应用内支付

2021年4月，Signal宣布增加加密货币钱包功能，该功能允许用户发送和接收MobileCoin付款。这受到了安全专家布鲁斯·施奈尔的批评，他之前曾称赞过该软件。施奈尔表示，这将使客户端膨胀，并引起有关当局的不必要注意。钱包功能最初仅在某些国家可用，但后来于2021年11月在全球范围内启用。

### 部分受众

#### 活动人士使用

在2020年，这款应用程序被乔治·弗洛伊德抗议期间的抗议者用于协调和沟通，因为他们依赖该应用程序的端到端加密来安全地共享信息。

在2021年3月，联合国建议缅甸居民使用Signal和ProtonMail来传递和保存2021年政变期间侵犯人权行为的证据。

#### 争议性使用

Signal的服务条款声明，该产品不得用于违反法律。据一位前雇员称，Signal当时的领导层告诉他，他们会“在人们开始滥用Signal或做我们认为可怕的事情时”发声。在2021年1月，Signal领导层的立场是对内容审核采取“不干预的态度”，因为该公司的员工无法读取用户消息，而Signal基金会也“不想成为一家媒体公司”。

2016年，印度当局逮捕了一个涉嫌与伊斯兰国有关联的恐怖组织成员，该组织通过Signal进行通信。

美国激进右翼 (美国)民兵和白人民族主义者使用Signal来组织他们的行动，包括2018年的团结右翼II集会。

声称Signal被用于资助恐怖主义或犯罪活动是土耳其将该应用程序定为普通民众犯罪行为的理由，阿卜杜拉·博兹库尔特称这是“政府滥用其反恐法来惩罚批评者、反对者和异议人士”的一种方式。

## 事件

### 2021年社交移民潮

由于Facebook在2021年1月7日更新了WhatsApp的隐私条款，新的隐私协议规定（除欧盟外）WhatsApp将在2021年2月8日与Facebook共享包括但不限IP地址，手机号等用户数据，这导致Signal的排名在不少国家的Google Play和App Store的应用排行榜急剧上升。

### TLS代理漏洞争议

Signal为应对伊朗政府封杀提出了TLS代理（Signal TLS Proxy）方案，此方案在2021年2月7日被曝出重大漏洞，会泄漏DNS和API请求，随后其TLS代理Github仓库中的相关议题（issue）被关闭，引起批评。

### 美国总统内阁成员使用失误

2025年3月，特朗普政府的高级官员（包括副总统JD·万斯、国务卿马可·鲁比奥和国防部长皮特·赫格塞斯）使用Signal讨论机密信息，包括在也门的军事攻击计划细节。《大西洋月刊》编辑杰弗里·戈德堡披露了该聊天室的存在，他此前被意外加入到该群组中。国家安全委员会布莱恩·休斯（Brian Hughes）后来有证实戈德堡的说法。

## 地区限制

<image>

### 历史

2016年12月，埃及屏蔽了对Signal的访问。作为回应，Signal的开发人员在其服务中添加了域前置（域名伪装）功能，该功能在一些国家默认启用。

Signal在伊朗被屏蔽。Signal的域名伪装功能依赖于Google App Engine （GAE）服务。但这在伊朗不起作用，因为Google为了遵守美国制裁，屏蔽了伊朗对GAE的访问。

2018年初，Google App Engine进行了一项内部更改，停止了所有国家或地区的域名伪装。由于此问题，Signal进行了一项公开更改，使用Amazon CloudFront进行域名伪装。但是，AWS也宣布他们将对其服务进行更改以防止域名伪装。因此，Signal表示他们将开始研究新的方法或途径。Signal在2019年4月从AWS切换回Google。

2021年1月，伊朗从应用商店中移除了该应用程序，并屏蔽了Signal。有媒体发现，中国用户在2021年3月15日晚上起，如不接入虚拟私人网络（VPN）便无法使用Signal，专门追踪中华人民共和国网络审查的GreatFire亦发现无法在中国境内浏览Signal的官方网站，可能受到防火长城的限制而无法正常使用。Signal随后于2024年4月19日从中国App Store中下架。

2024年8月9日，Signal在俄罗斯被封锁。俄罗斯联邦通信监督局（Roskomnadzor）声称，这是由于“违反了有关打击恐怖主义和极端主义的法律”。对此，Signal官方称若连接受影响，可尝试启用其内置的审查规避功能（域前置）。几乎同一时间，在有争议的2024年委内瑞拉总统选举以及随之而来的抗议活动过后，Signal在委内瑞拉被封锁。

### 缓解

Signal官方提供了如下规避封锁的方法：域前置（域名伪装）和TLS代理。

域前置功能可以使得Signal的流量显得是在连接着其他互联网服务（如google.com）以规避审查。Signal的域前置在埃及、阿联酋、阿曼、卡塔尔、伊朗、古巴、乌兹别克斯坦、委内瑞拉和巴基斯坦默认启用。域前置功能还可以在连接异常时在应用内启用“审查规避”设置项以手动开启。

TLS代理功能则可通过获取现有服务的链接或自行部署TLS代理服务等方式使用。

## 外部链接

- How to: Use Signal for Android by the Electronic Frontier Foundation
- How to: Use Signal on iOS by the Electronic Frontier Foundation

## 基本资料

- 日语原文：Signal
- 说明：Signal iOS版本屏幕截图
- 开发者：Signal基金会、Signal Messenger LLC及其他贡献者
- 发行日期：2014年7月29日
- 平台：Android 5.0及以后版本、iOS 15及以后版本、基于Debian的发行版，如Ubuntu等、MacOS 10.10或更新、Windows 64-bit: 7,8,8.1及10、Chrome（Chromium）不再支援
- 语言：英语、阿拉伯语、白俄罗斯语、孟加拉语、加泰罗尼亚语、克罗地亚语、捷克语、丹麦语、荷兰语、芬兰语、法语、德语、希腊语、古吉拉特语、希伯来语、印地语、匈牙利语、印度尼西亚语、爱尔兰语、意大利语、日语、韩语、马来语、马拉地语、挪威博克马尔语、波斯语、波兰语、葡萄牙语、罗马尼亚语、俄语、塞尔维亚语、简体中文、斯洛伐克语、西班牙语、瑞典语、泰语、繁体中文、土耳其语、维吾尔语、乌克兰语、乌尔都语、越南语
- 语言：42
- 类型：加密即时通讯及语音通话
- 许可协议：用户端：AGPLv3、服务器：AGPLv3