Signal是由Signal技术基金会和Signal Messenger LLC开发的跨平台加密消息服务。Signal经互联网传送一对一及群组讯息,讯息可包含图像及影片,它还可以用来经互联网作一对一及群组语音通话。

Quick Facts 开发者, 首次发布 ...
Signal
Thumb
截图
Thumb
Signal Android版本4.52的屏幕截图(2019年12月)
开发者
首次发布2014年7月29日,​10年前​(2014-07-29[1][2]
当前版本
  • 7.11(2024年5月18日;稳定版本;IOS)[3]
  • 7.8.1(2024年5月16日;稳定版本;Android)[4]
  • 7.9.0(2024年5月15日;稳定版本;个人电脑)[5]
  • 7.18.0(2024年9月24日;稳定版本)[6]
编辑维基数据链接
源代码库 编辑维基数据链接
平台
类型加密即时通讯语音通话英语Voice calling
许可协议
网站signal.org/zh_CN/ 编辑维基数据
Close

Signal使用标准的流动电话号码作为标识符,并使用端到端加密来保护与其他Signal用户的所有通信。这些应用程序包括一些机制,通过这些机制,用户可以独立验证其联系人的身份和数据通道的完整性[12][13]

所有Signal软件都是自由及开源的。用户端是按GPLv3授权的自由及开放源码软体[8][9][10],而服器端的程式码则按AGPLv3发布[11]。Signal之正式版软件通常使用了Google专营的Google Play服务(被预装在大多数Android设备中),但它亦被设计为可在无Google Play服务的环境中运行。Signal在AndroidiOS操作系统,和WindowsmacOSLinux等桌面操作系统均有正式版的客户端软件[14]

非营利组织Signal基金会于2018年2月成立, Brian Acton 提供了初期5000万美元之初始资金[15]。自2021年1月,Signal已获得超过1亿5百万之下载总量,并且该软件拥有约4千万月活跃用户[16]。目前(2021-2-14),Signal已被安装于超过5千万台Android设备上[17]

历史

2010–2013年:起源

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

2013–2018: Open Whisper Systems

Open Whisper Systems的网站于2013年1月启动[20]

2018-至今:Signal技术基金会

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

2022 年1月10日,Moxie Marlinspike 宣布辞去 Signal Messenger 首席执行官一职。他继续留在Signal董事会,Brian Acton自愿在寻找新首席执行官期间担任临时首席执行官。

功能

Signal允许用户与iOS和Android上的其他Signal用户进行语音和视频通话[21]。所有通话都是通过Wi-Fi或数据连接进行的(数据费除外)是免费的,包括长途电话和国际长途电话[22]。Signal还允许用户通过Wi-Fi或数据连接向iOS,Android和桌面应用程序上的其他Signal用户发送文本消息,文件[23],语音注释,图片,GIF[24]和视频消息。该应用程序还支持群组消息传递。

Signal 用户之间的所有通信会话都会自动进行端到端加密(加密密钥在设备上生成和存储,而不是在服务器上)。[25]为了验证通信对方确实是他们声称的人,Signal 用户可以比较密钥指纹(或扫描二维码)带外英语Out-of-band data[26]该平台采用首次使用信任英语Trust on first use机制,在通信对方的密钥发生变化时通知用户。[26]

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

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

Signal 具有定时发送消息的功能。[32] 此外,消息可以附加计时器,[33]以便自动从发送方和接收方的设备中删除消息。[33] 保留消息的时间段可以在 5 秒到 1 周之间,[33] 并且在每个接收者阅读完他们的消息副本后开始计时。[34] 开发人员强调,这旨在成为“所有参与者都希望自动执行最小数据清理的对话的协作功能,而不是接收者是对手的情况”。[33][34]

Signal 的应用程序图标可以使用各种颜色主题进行自定义,应用程序名称也可以自定义。[35]即将推出的功能包括隐藏剧透[36] 以及通过二维码添加其他用户。[37]

默认情况下,Signal 会将用户的聊天记录排除在未加密的云备份之外。[38]

Signal具有对已读回执和键入指示符的支持,两者均可禁用[39][40]

Signal允许用户自动模糊照片中人物的脸部,以保护其身份。[41][42][43][44]

Signal 包含一个加密货币钱包功能,用于存储、发送和接收应用内付款。[45]除了某些地区和国家/地区外,[45]该功能已于 2021 年 11 月在全球范围内启用。[46] 截至2022年1月 (2022-01),唯一支持的支付方式是MobileCoin英语MobileCoin[45]

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

局限性

Signal 要求用户提供电话号码进行验证,[49]从而无需用户名或密码,并方便联系人查找(见下文)。[39] 该号码不必与设备 SIM 卡上的号码相同;它也可以是 VoIP 号码[49] 或固定电话号码,只要用户能够接收验证码并拥有单独的设备来设置软件即可。一个号码一次只能在一个移动设备上注册。[50] 帐户注册需要 iOS 或 Android 设备。[51][52]

这种与电话号码的强制连接(Signal 与 WhatsAppKakaoTalk 等共享的功能)被批评为注重隐私的用户的一个“主要问题”,因为他们不愿意透露自己的私人号码。[39] 一种解决方法是使用辅助电话号码。[39]选择一个可公开更改的用户名而不是共享自己的电话号码是用户广泛要求的功能。[39][53][54]此功能已于 2024 年 2 月添加到 Signal 的测试版中。[55]

使用电话号码作为标识符也可能会造成安全风险,因为攻击者可能会盗用电话号码。[39]2022 年 8 月,至少有一名用户遭到攻击,攻击方式与此类似,但攻击是通过Signal短信服务提供商执行的,而不是任何用户的提供商。[56]可以通过启用Signal的注册锁功能来降低这种攻击的威胁,该功能是一种双因素身份验证形式,要求用户输入PIN码才能在新设备上注册电话号码。[57]

将Signal桌面版链接到移动设备时,对话历史记录不会同步;Signal桌面版上只会显示新消息。[58]

实用性

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

2023 年,法国政府正在推动采用名为Olvid的欧洲加密消息传递应用程序来替代Signal和WhatsApp,作为其安全的通信平台。[60]

架构

加密协议

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

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

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

截至2018年8月 (2018-08),Signal 协议已在WhatsAppFacebook MessengerSkype[68]Google Allo[69]中实现,使得“全球超过 10 亿人”的对话能够进行端到端加密。[70] 在 Google Allo、Skype 和 Facebook Messenger 中,默认情况下不使用 Signal 协议加密对话;它们仅在可选模式下提供端到端加密。[38][71][68][72]

直到 2017 年 3 月,Signal 的语音通话都使用SRTPZRTP英语ZRTP密钥协商协议进行加密,该协议由菲尔·齐默尔曼开发。[73][74] 2017 年 3 月,Signal过渡到新的基于WebRTC的呼叫系统,该系统引入了进行视频通话的功能。[75]Signal的语音和视频通话功能使用Signal协议通道进行身份验证,而不是ZRTP。[76][77][21]

身份验证

为了验证通信方确实是他们声称的人,Signal 用户可以比较密钥指纹(或扫描二维码)带外英语Out-of-band data[26]该平台采用首次使用信任英语Trust on first use机制,以便在通信方的密钥发生变化时通知用户。[26]

本地存储

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

伺服器

Signal依赖于由Signal Messenger维护的集中式服务器。 除了路由Signal的消息外,服务器还有助于发现同时也是Signal用户注册的联系人以及自动交换用户的公钥。 默认情况下,Signal的语音和视频通话是双方的点对点直接连接[21]。如果呼叫者不在接收者的通讯簿中,则将呼叫路由通过服务器以隐藏用户的IP地址[21]

联系人发现

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

元数据

所有客户端-服务器通信都受到 TLS 的保护。[74][93] Signal 的开发人员断言,他们的服务器不会保留有关谁在何时给谁打电话的日志。[94] 2016 年 6 月,Marlinspike 告诉《The Intercept》,“Signal 服务器存储的最接近元数据的信息是每个用户最后一次连接到服务器的时间,并且此信息的精度降低到天,而不是小时、分钟和秒”。[38] 群组消息传递机制的设计使服务器无法访问成员列表、群组标题或群组图标。[95] 相反,群组的创建、更新、加入和离开由客户端完成,客户端以与传递一对一消息相同的方式将成对消息传递给参与者。[96][97]

互联

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

2016 年 5 月,Moxie Marlinspike 要求名为 LibreSignal 的第三方客户端不要使用 Signal 服务或 Signal 名称。[103] 结果,LibreSignal 项目在 2016 年 5 月 24 日发布公告称该项目已“放弃”。[104] LibreSignal 提供的功能随后被 Marlinspike 整合到 Signal 中。[105]

许可

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

事件

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

争议

Signal应对伊朗政府封杀提出了TLS代理方案,此方案在2021年2月7日被被曝出重大漏洞,会泄漏 DNS 和 API 请求[111][112],随后其TLS代理在Github的“问题”功能被关闭,引起批评。[113][114][115]

地区限制

Thumb
  默认启用 Signal 域名伪装的国家/地区
  屏蔽 Signal 的国家/地区(2021 年 3 月)

2016 年 12 月,埃及屏蔽了对 Signal 的访问。[116] 作为回应,Signal的开发人员在其服务中添加了域名伪装[117] 这使得特定国家/地区的 Signal 用户可以通过使其看起来像是在连接到不同的互联网服务来规避审查。[117][118] 截至2022年5月 (2022-05),Signal的域名伪装在埃及、阿联酋阿曼卡塔尔伊朗古巴乌兹别克斯坦乌克兰默认启用。[119]

截至2018年1月 (2018-01),Signal 在伊朗被屏蔽。[120][121]Signal的域名伪装功能依赖于 Google App Engine (GAE) 服务。[121][120]这在伊朗不起作用,因为 Google 为了遵守美国制裁,屏蔽了伊朗对 GAE 的访问。[120][122]

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

2021 年 1 月,伊朗从应用商店中删除了该应用程序,[126][127] 并屏蔽了 Signal。[128]科技媒体TechCrunch发现,中国用户在2021年3月15日晚上起,如不使用虚拟私人网络 (VPN) 便无法使用Signal,[129]专门追踪中华人民共和国网路审查GreatFire亦发现无法在中国境内浏览Signal的官方网站,可能受到防火长城的限制而无法正常使用。[130]

Signal随后于2024年4月19日从中国App Store中下架。[131][132]

参见

来源

参考

外部链接

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.