Signal (軟件)
2014年發布的開放原始碼通訊程式 来自维基百科,自由的百科全书
Signal是由Signal技術基金會和Signal Messenger LLC開發的跨平台加密消息服務。Signal經互聯網傳送一對一及群組訊息,訊息可包含圖像及影片,它還可以用來經互聯網作一對一及群組語音通話。
![]() | |
開發者 |
|
---|---|
首次發布 | 2014年7月29日[1][2] |
當前版本 | |
源代碼庫 | |
平台 | |
文件大小 | 36.23MB(Android) |
語言 | 42種語言 |
語言列表 英語、阿拉伯語、白俄羅斯語、孟加拉語、加泰羅尼亞語、克羅地亞語、捷克語、丹麥語、荷蘭語、芬蘭語、法語、德語、希臘語、古吉拉特語、希伯來語、印地語、匈牙利語、印度尼西亞語、愛爾蘭語、意大利語、日語、韓語、馬來語、馬拉地語、挪威博克馬爾語、波斯語、波蘭語、葡萄牙語、羅馬尼亞語、俄語、塞爾維亞語、簡體中文、斯洛伐克語、西班牙語、瑞典語、泰語、繁體中文、土耳其語、維吾爾語、烏克蘭語、烏爾都語、越南語 | |
類型 | 加密即時通訊及語音通話 |
許可協議 | |
網站 | signal![]() |
Signal使用標準的流動電話號碼作為標識符,並使用端到端加密來保護與其他Signal用戶的所有通信。這些應用程序包括一些機制,通過這些機制,用戶可以獨立驗證其聯繫人的身份和數據通道的完整性[11][12]。
所有Signal軟件都是自由及開源的。用戶端是按GPLv3授權的自由及開放源碼軟體[7][8][9],而服器端的程式碼則按AGPLv3發佈[10]。Signal之正式版軟件通常使用了Google專營的Google Play服務(被預裝在大多數Android設備中),但它亦被設計為可在無Google Play服務的環境中運行。Signal在Android、iOS操作系統,和Windows、macOS、Linux等桌面操作系統均有正式版的客戶端軟件[13]。
非營利組織Signal基金會於2018年2月成立, Brian Acton提供了初期5000萬美元之初始資金[14]。自2021年1月,Signal已獲得超過1億5百萬之下載總量,並且該軟件擁有約4千萬月活躍用戶[15]。目前(2021-2-14),Signal已被安裝於超過5千萬台Android設備上[16]。
歷史
Signal是RedPhone加密語音呼叫應用程序和TextSecure加密短信程序的後繼產品。RedPhone和TextSecure的測試版最初由Whisper Systems於2010年5月推出[17],Whisper Systems是一家由前twitter安全研究員Moxie Marlinspike和機器人專家Stuart Anderson共同創立的創業公司[18]
Open Whisper Systems的網站於2013年1月啟動[19]。
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用戶進行語音和視頻通話[20]。所有通話都是通過Wi-Fi或數據連接進行的(數據費除外)是免費的,包括長途電話和國際長途電話[21]。Signal還允許用戶通過Wi-Fi或數據連接向iOS,Android和桌面應用程序上的其他Signal用戶發送文本消息,文件[22],語音注釋,圖片,GIF[23]和視頻消息。該應用程序還支持群組消息傳遞。
Signal用戶之間的所有通信會話都會自動進行端到端加密(加密密鑰在設備上生成和存儲,而不是在服務器上)。[24]為了驗證通信對方確實是他們聲稱的人,Signal用戶可以比較密鑰指紋(或掃描二維碼)帶外。[25]該平台採用首次使用信任機制,在通信對方的密鑰發生變化時通知用戶。[25]
直到2023年,Android用戶可以選擇將Signal作為默認的短信/彩信應用程序,從而除了標準的端到端加密Signal消息外,還可以發送和接收未加密的短信。[26]然後,用戶可以使用相同的應用程序與沒有Signal的聯繫人進行通信。[26]截至2022年10月,由於安全和隱私問題,此功能已被棄用,並於2023年被移除。[27][28]
TextSecure允許用戶設置一個密碼來加密本地消息數據庫和用戶的加密密鑰。[29]這不會加密用戶的聯繫人數據庫或消息時間戳。[29] Android和iOS上的Signal應用程序可以使用手機的PIN碼、密碼或生物識別進行鎖定。[30]用戶可以定義「屏幕鎖定超時」時間間隔,以便在手機丟失或被盜時提供額外的保護機制。[25][30]
Signal具有定時發送消息的功能。[31]此外,消息可以附加計時器,[32]以便自動從發送方和接收方的設備中刪除消息。[32]保留消息的時間段可以在5秒到1周之間,[32]並且在每個接收者閱讀完他們的消息副本後開始計時。[33]開發人員強調,這旨在成為「所有參與者都希望自動執行最小數據清理的對話的協作功能,而不是接收者是對手的情況」。[32][33]
Signal的應用程序圖標可以使用各種顏色主題進行自定義,應用程序名稱也可以自定義。[34]即將推出的功能包括隱藏劇透[35]以及通過二維碼添加其他用戶。[36]
默認情況下,Signal會將用戶的聊天記錄排除在未加密的雲備份之外。[37]
Signal具有對已讀回執和鍵入指示符的支持,兩者均可禁用[38][39]。
Signal允許用戶自動模糊照片中人物的臉部,以保護其身份。[40][41][42][43]
Signal包含一個加密貨幣錢包功能,用於存儲、發送和接收應用內付款。[44]除了某些地區和國家或地區外,[44]該功能已於2021年11月在全球範圍內啟用。[45] 截至2022年1月[update],唯一支持的支付方式是MobileCoin。[44]
2024年2月,Signal在其測試版應用程序中添加了用戶名功能。這是一項隱私功能,允許用戶在不共享電話號碼的情況下與他人通信。[46][47]
局限性
Signal要求用戶提供電話號碼進行驗證,[48]從而無需用戶名或密碼,並方便聯繫人查找(見下文)。[38]該號碼不必與設備SIM卡上的號碼相同;它也可以是VoIP號碼[48]或固定電話號碼,只要用戶能夠接收驗證碼並擁有單獨的設備來設置軟件即可。一個號碼一次只能在一個移動設備上註冊。[49]帳戶註冊需要iOS或Android設備。[50][51]
這種與電話號碼的強制連接(Signal與WhatsApp、KakaoTalk等共享的功能)被批評為注重隱私的用戶的一個「主要問題」,因為他們不願意透露自己的私人號碼。[38]一種解決方法是使用輔助電話號碼。[38]選擇一個可公開更改的用戶名而不是共享自己的電話號碼是用戶廣泛要求的功能。[38][52][53]此功能已於2024年2月添加到Signal的測試版中。[54]
使用電話號碼作為標識符也可能會造成安全風險,因為攻擊者可能會盜用電話號碼。[38]2022年8月,至少有一名用戶遭到攻擊,攻擊方式與此類似,但攻擊是通過Signal短信服務提供商執行的,而不是任何用戶的提供商。[55]可以通過啟用Signal的註冊鎖功能來降低這種攻擊的威脅,該功能是一種雙因素身份驗證形式,要求用戶輸入PIN碼才能在新設備上註冊電話號碼。[56]
將Signal桌面版鏈接到移動設備時,對話歷史記錄不會同步;Signal桌面版上只會顯示新消息。[57]
實用性
2016年7月,互聯網協會發布了一項用戶研究,評估了Signal用戶檢測和阻止中間人攻擊的能力。[12]該研究得出結論,28名參與者中有21名未能正確比較公鑰指紋以驗證其他Signal用戶的身份,並且這些用戶中的大多數人認為他們已經成功了,而實際上他們失敗了。[12]四個月後,Signal的用戶界面進行了更新,以簡化驗證其他Signal用戶身份的過程。[58]
2023年,法國政府正在推動採用名為Olvid的歐洲加密消息傳遞應用程序來替代Signal和WhatsApp,作為其安全的通信平台。[59]
架構
Signal消息使用Signal協議(曾稱作TextSecure協議)進行加密。該協議結合了雙棘輪算法、預共享密鑰和擴展三元迪菲-赫爾曼 (X3DH)握手。[60][61]它使用Curve25519、AES-256和HMAC-SHA256作為基元。[11]該協議提供機密性、完整性、身份驗證、參與者一致性、目標驗證、前向保密、後向保密(又稱未來保密)、因果關係保留、消息不可鏈接性、消息否認、參與否認和異步性。[62]它不提供匿名性保留,並且需要服務器來中繼消息和存儲公鑰材料。[62]
Signal協議還支持端到端加密群聊。群聊協議是成對雙棘輪和多播加密的組合。[62]除了單對單協議提供的屬性外,群聊協議還提供發言者一致性、亂序彈性、丟棄消息彈性、計算平等、信任平等、子群消息傳遞,以及可收縮和可擴展的成員資格。[62]
2014年10月,波鴻魯爾大學的研究人員發表了對Signal協議的分析。[11]除其他發現外,他們還提出了對該協議的未知密鑰共享攻擊,但總的來說,他們發現它是安全的。[63] 2016年10月,來自英國牛津大學、澳大利亞昆士蘭科技大學和加拿大麥克馬斯特大學的研究人員發表了對該協議的正式分析。[64][65]他們得出結論,該協議在密碼學上是可靠的。[64][65] 2017年7月,波鴻魯爾大學的研究人員在對群組信使的另一項分析中發現了對Signal群組協議的純理論攻擊:知道群組秘密ID的用戶(由於以前是群組成員或從成員的設備中竊取了它)可以成為該群組的成員。由於無法猜測群組ID,並且此類成員更改會顯示給其餘成員,因此在不被發現的情況下很難執行此類攻擊。[66]
截至2018年8月[update],Signal協議已在WhatsApp、Facebook Messenger、Skype[67]和Google Allo[68]中實現,使得「全球超過10億人」的對話能夠進行端到端加密。[69]在Google Allo、Skype和Facebook Messenger中,默認情況下不使用Signal協議加密對話;它們僅在可選模式下提供端到端加密。[37][70][67][71]
直到2017年3月,Signal的語音通話都使用SRTP和ZRTP密鑰協商協議進行加密,該協議由菲爾·齊默爾曼開發。[72][73] 2017年3月,Signal過渡到新的基於WebRTC的呼叫系統,該系統引入了進行視頻通話的功能。[74]Signal的語音和視頻通話功能使用Signal協議通道進行身份驗證,而不是ZRTP。[75][76][20]
為了驗證通信方確實是他們聲稱的人,Signal用戶可以比較密鑰指紋(或掃描二維碼)帶外。[25]該平台採用首次使用信任機制,以便在通信方的密鑰發生變化時通知用戶。[25]
應用程序在接收和解密消息後,會將它們本地存儲在每個設備上的SQLite數據庫中,該數據庫使用SQLCipher加密。[77]此數據庫的加密密鑰也存儲在本地,如果設備已解鎖,則可以訪問該密鑰。[77][78]2020年12月,Cellebrite發表了一篇博文,宣布他們的一款產品現在可以訪問此密鑰並使用它來「解密Signal應用程序」。[77][79]科技記者後來發表文章,報道了Cellebrite如何聲稱有能力「侵入Signal應用程序」和「破解Signal的加密」。[80][81]後一種解釋遭到了一些專家的反駁,[82]以及Signal的代表,他們表示Cellebrite最初的帖子是關於訪問「他們實際擁有的已解鎖Android手機」上的數據,並且他們「可以打開應用程序查看消息」。[83][84]類似的提取工具也存在於iOS設備和Signal桌面版上。[85][86]
Signal依賴於由Signal Messenger維護的集中式服務器。除了路由Signal的消息外,服務器還有助於發現同時也是Signal用戶註冊的聯繫人以及自動交換用戶的公鑰。默認情況下,Signal的語音和視頻通話是雙方的點對點直接連接[20]。如果呼叫者不在接收者的通訊簿中,則將呼叫路由通過服務器以隱藏用戶的IP地址[20]。
服務器存儲註冊用戶的電話號碼、公鑰材料和推送令牌,這些都是建立呼叫和傳輸消息所必需的。[87]為了確定哪些聯繫人也是Signal用戶,用戶聯繫電話號碼的密碼散列會定期傳輸到服務器。[88]然後,服務器會檢查這些散列是否與任何註冊用戶的SHA256散列匹配,並在找到任何匹配項時通知客戶端。[88]之後,散列的號碼將從服務器中丟棄。[87] 2014年,Moxie Marlinspike寫道,由於電話號碼的有限原像空間(所有可能散列輸入的集合),因此很容易計算出所有可能散列輸入到散列輸出的映射並反轉映射,並且「實用的隱私保護聯繫人發現仍然是一個未解決的問題」。[89][88] 2017年9月,Signal的開發人員宣布,他們正在研究一種方法,使Signal客戶端應用程序能夠「有效且可擴展地確定其地址簿中的聯繫人是否是Signal用戶,而無需向Signal服務透露其地址簿中的聯繫人」。[90][91]
所有客戶端-服務器通信都受到TLS的保護。[73][92] Signal的開發人員斷言,他們的服務器不會保留有關誰在何時給誰打電話的日誌。[93] 2016年6月,Marlinspike告訴《The Intercept》,「Signal服務器存儲的最接近元數據的信息是每個用戶最後一次連接到服務器的時間,並且此信息的精度降低到天,而不是小時、分鐘和秒」。[37] 群組消息傳遞機制的設計使服務器無法訪問成員列表、群組標題或群組圖標。[94]相反,群組的創建、更新、加入和離開由客戶端完成,客戶端以與傳遞一對一消息相同的方式將成對消息傳遞給參與者。[95][96]
Signal的服務器架構在2013年12月至2016年2月期間是互聯(英語:federation)的。2013年12月,宣布Signal使用的消息傳遞協議已成功集成到基於Android的開源操作系統CyanogenMod中。[97][98][99]從CyanogenMod 11.0開始,客戶端邏輯包含在一個名為WhisperPush的系統應用程序中。據Signal的開發人員稱,Cyanogen團隊為WhisperPush客戶端運行他們自己的Signal消息傳遞服務器,該服務器與主服務器聯合,以便兩個客戶端可以相互交換消息。[99] WhisperPush源代碼在GPLv3許可下可用。[100] 2016年2月,CyanogenMod團隊停止了WhisperPush,並建議其用戶切換到Signal。[101] 2016年5月,Moxie Marlinspike寫道,與CyanogenMod服務器的聯合降低了用戶體驗並阻礙了開發,並且他們的服務器可能不會再次與其他服務器聯合。[102]
2016年5月,Moxie Marlinspike要求名為LibreSignal的第三方客戶端不要使用Signal服務或Signal名稱。[102]結果,LibreSignal項目在2016年5月24日發布公告稱該項目已「放棄」。[103] LibreSignal提供的功能隨後被Marlinspike整合到Signal中。[104]
適用於Android、iOS和桌面的Signal客戶端的完整源代碼在GitHub上以自由軟件許可證的形式提供。[7][8][9]這使得有興趣的人士可以檢查代碼並幫助開發人員驗證一切是否按預期運行。它還允許高級用戶編譯他們自己的應用程序副本,並將它們與Signal Messenger分發的版本進行比較。2016年3月,Moxie Marlinspike寫道,除了由於缺乏Gradle NDK支持而未與項目構建一起編譯的一些共享庫外,Signal for Android是可重現的。[105] Signal的服務器是部分開源的,但由於安全原因,服務器軟件的反垃圾郵件組件是專有的並且是閉源的。[10][106]
事件
由於Facebook在2021年1月7日更新了WhatsApp的隱私條款[107],新的隱私協議規定(除歐盟外)WhatsApp將在2021年2月8日與Facebook共享包括但不限IP地址,手機號等用戶數據,這導致Signal的排名在不少國家的Google Play和App Store的應用排行榜急劇上升。[108][109]
爭議
Signal為應對伊朗政府封殺提出了TLS代理(Signal TLS Proxy)方案,此方案在2021年2月7日被被曝出重大漏洞,會泄漏DNS和API請求[110][111],隨後其TLS代理在Github的「問題」功能被關閉,引起批評。[112][113][114][115]
地區限制

默認啟用Signal域名偽裝的國家或地區
屏蔽Signal的國家或地區(2021年3月)
2016年12月,埃及屏蔽了對Signal的訪問。[116]作為回應,Signal的開發人員在其服務中添加了域前置(域名偽裝)功能。[117]
截至2018年1月[update],Signal在伊朗被屏蔽。[118][119]Signal的域名偽裝功能依賴於Google App Engine (GAE)服務。[119][118]這在伊朗不起作用,因為Google為了遵守美國制裁,屏蔽了伊朗對GAE的訪問。[118][120]
2018年初,Google App Engine進行了一項內部更改,停止了所有國家或地區的域名偽裝。由於此問題,Signal進行了一項公開更改,使用Amazon CloudFront進行域名偽裝。但是,AWS也宣布他們將對其服務進行更改以防止域名偽裝。因此,Signal表示他們將開始研究新的方法或途徑。[121][122] Signal在2019年4月從AWS切換回Google。[123]
2021年1月,伊朗從應用商店中移除了該應用程序,[124][125]並屏蔽了Signal。[126]有媒體發現,中國用戶在2021年3月15日晚上起,如不接入虛擬私人網絡 (VPN)便無法使用Signal,[127][128][129]專門追蹤中華人民共和國網路審查的GreatFire亦發現無法在中國境內瀏覽Signal的官方網站,可能受到防火長城的限制而無法正常使用。[130]Signal隨後於2024年4月19日從中國App Store中下架。[131][132]
2024年8月9日,Signal在俄羅斯被封鎖。俄羅斯聯邦通信監督局(Roskomnadzor)聲稱,這是由於「違反了有關打擊恐怖主義和極端主義的法律」。[133][134]幾乎同一時間,在委內瑞拉存在爭議的2024年總統選舉以及隨之而來的抗議活動過後,Signal在委內瑞拉被封鎖。[135]
Signal官方提供了如下規避封鎖的方法:域前置(域名偽裝)和TLS代理。[136][115]
域前置功能可以使得特定國家或地區的Signal流量顯得是在連接着其他互聯網服務以規避審查。[117][137]截至2024年12月[update],Signal的域前置在埃及、阿聯酋、阿曼、卡塔爾、伊朗、古巴、烏茲別克斯坦、烏克蘭和巴基斯坦默認啟用。[138]域前置功能可以在應用內啟用「審查規避」設置項以手動開啟。[129]
使用TLS代理功能則需要獲得相關服務器鏈接,也可以利用配有TCP 80和443端口的服務器以及指向該服務器IP地址的域名部署TLS代理服務器。[115][112]
參見
來源
參考
外部連結
Wikiwand - on
Seamless Wikipedia browsing. On steroids.