{{Header}}
{{Title|title=
Instant Messenger Chat
}}
{{#seo:
|description=Anonymous Chat, IRC, XMPP in {{project_name_short}}.
|image=Balloons-874841640.jpg
}}
[[File:Balloons-874841640.jpg|thumb]]
{{intro|
Anonymous Chat, IRC, XMPP in {{project_name_short}}.
}}
= General Safety Advice =
{{mbox
| type = notice
| image = [[File:Ambox_notice.png|40px|alt=Info]]
| text = '''Tip:''' Most existing instant messenger protocols are unsafe from a privacy point of view. This is not a {{project_name_short}}-specific problem, but a general problem with instant messengers.
}}
{{PQCrypto}}
It is recommended to review the [[Tips_on_Remaining_Anonymous#Keep_Anonymity_Modes_separate|Do not Mix Anonymity Modes]] section in conjunction with this entry. For a comprehensive comparison of instant messengers, [https://en.wikipedia.org/wiki/Comparison_of_instant_messaging_clients see here].
== Encryption ==
[[Warning#Exit_Relays_can_Eavesdrop_on_Communications|Tor exit relays can eavesdrop]] on communications if encryption to the server is disabled. Depending on the protocol which an instant messenger is using, encryption might be disabled by default or not even supported. Tails has noted that without encryption, Tor exit relays can see the contact list, all messages, file transfers, and audio/video.
See: https://tails.boum.org/todo/Pidgin_Protocol_Review/ for an overview of Pidgin protocols and associated encryption features.
While encryption to the server prevents exit relay eavesdropping, it still leaves one problem unresolved: [[Chat#Server_Logging|server logging]].
High-risk users should also bear in mind that even in the event that strong and secure end-to-end encryption is used -- for example encrypted chat using .onion
connections only (staying within the Tor network) -- advanced adversaries are capable of compromising the trusted computing base (TCB)
"... the trusted computing base or TCB comprises the set of all hardware, software, and firmware components that are critical to establishing and maintaining its security. Typically, the TCB consists of an operating system with all its in-built security controls, individual system hardware, network hardware and software, defined security procedures and protocols, and the actual physical location of the system itself." [https://web.archive.org/web/20210724143029/https://blog.finjan.com/trusted-computing-base/ Trusted Computing Base or "TCB"]
of nearly all platforms:
https://github.com/maqp/tfc/wiki/Security-design#the-issue-of-endpoint-security
All proper end-to-end encrypted (E2EE) messaging systems store private key(s) exclusively on user's device (endpoint). The holy grail of attacks against E2EE systems is called exfiltration where the sensitive data, namely the private keys or plaintext messages, are stolen from the endpoint. The attack is directed against the trusted computing base (TCB) of the target system. The overwhelming majority of TCBs are connected to the network and compromising them with polished malware that exploits a zero-day vulnerability, is trivial and undetectable.Another consideration is that even when using end-to-end encrypted applications, additional strong security protocols such as [https://en.wikipedia.org/wiki/Forward_secrecy forward secrecy] [https://signal.org/blog/advanced-ratcheting/ Advanced cryptographic ratcheting]:
As we’ve discussed previously, “forward secrecy” is one of the critical security properties OTR is designed to provide. In contrast to the PGP protocol model, where messages to a recipient are encrypted with the same public key over and over again, OTR uses ephemeral key exchanges for each session. This is a critical feature of any modern secure protocol, because otherwise a network adversary who records (potentially years of) ciphertext traffic can later decrypt all of it if they manage to later compromise the one key that was used. By contrast, with ephemeral key exchanges, there is no key to compromise in the future (since the keys are only ephemerally in memory for a short time), so any recorded ciphertext should remain private.may not be available for group communication channels, see: [https://eprint.iacr.org/2017/713.pdf More is Less: On the End-to-End Security of Group Chats in Signal, WhatsApp, and Threema]. == Web Interfaces == Avoid using web interfaces for any messengers because they break end-to-end encryption (E2E). If the website can show the messages, it follows that the server, if malicious or compromised, could also view the messages. Locally running applications should be preferred. Web apps running on a foreign server accessed through the user's browser are more exposed and therefore have a higher security risk. == Server Logging == Encrypted server connections do not prevent the server gathering interesting information about users, such as common contacts and the regularity of communications. An example list includes: * account names * buddy list (list of contacts) * the exact date and time of logins * message timestamps * communication patterns like common contacts (see footnote) If the recipient knows the sender and has ever used a non-anonymous account or logged in without Tor, this information can be used to try and determine the sender's identity. The content of messages will only be protected by using end-to-end encryption, for example [https://en.wikipedia.org/wiki/OMEMO OMEMO]. The threat of server logging can be completely removed with decentralized (server-less) instant messengers like [[OnionShare]]. == Jabber / XMPP == [https://xmpp.org/ Jabber/XMPP] is a libre server-federation protocol designed with openness in mind: "''... All of the existing XMPP servers, clients, and programming libraries support the key features of an IM system, such as one-to-one and multi-party messaging, presence subscriptions and notifications, and contact lists.''" The system is decentralized because there is no central authoritative server; anyone can run a server. Some users are confused on this point because there are a number of large and popular public XMPP servers (like jabber.org), to which many have subscribed. Other popular public servers are listed [https://xmpp.org/getting-started/ here]. Each network user has a unique XMPP address called a JID (Jabber ID). The JID is similar to an email address insofar as it has a username and domain name like username@example.com https://en.wikipedia.org/wiki/XMPP Safely using the protocol requires proper use of encryption (such as OMEMO), because it is unwise to trust server connections are properly encrypted between each other. Jabber privacy is also limited, as various adversaries are capable of observing which accounts are communicating. Jabber and Tor combined only guarantee pseudonymous communications, as while the user's current location is hidden, the social graph can still expose their true identity. For tips on operational security when chatting anonymously, see this [https://archive.ph/n116i article] by [https://theintercept.com/2015/07/14/communicating-secret-watched/ The Intercept]. Also see: [https://forums.whonix.org/t/why-is-icq-considered-unsafe-through-tor/1096 Why prefer open protocols such as Jabber/XMPP over proprietary ones such as ICQ?] == IRC == When using IRC (Internet Relay Chat) inside {{project_name_workstation_long}}, the [https://en.wikipedia.org/wiki/Ident_protocol Ident Protocol] is automatically blocked because {{project_name_workstation_long}} is firewalled. Therefore the associated daemon will not identify the username which is linked with a particular TCP connection, as is normally the case. The Tor Project [https://gitlab.torproject.org/legacy/trac/-/wikis/doc/TorifyHOWTO/IRC Internet Relay Chat] page contains a number of important recommendations and tips for safe IRC use:
~/.local/share/dino/omemo.db
(a SQLite database). Problems are avoided so long as keys are not backed up while Dino is running and Dino is not started from the same database twice.
= Gajim =
[[File:Gajimlogo.png|border]]
== Overview ==
Ubuntu provides a succinct overview of Gajim: https://help.ubuntu.com/community/Gajim
Gajim is a free software, instant messaging client for the Jabber (XMPP) protocol which uses the GTK+ toolkit. It runs on GNU/Linux, BSD and Windows. The name Gajim is a recursive acronym for Gajim (is) a jabber instant messenger. The goal of Gajim is to provide a full featured and easy to use Jabber client. Gajim works nicely with GNOME, but does not require it to run. It is released under the GNU General Public License.Gajim has various features, including: https://gajim.org/ * chat client synchronization * group chats * sending of pictures, videos and other files to friends or groups * secure end-to-end encryption via OMEMO or PGP * the option to keep and manage all chat history * connection compatibility with other messengers via transports, such as IRC * various other features are available via plugins In 2021, audio/video is reportedly not functional in Gajim. Further, OTR support was dropped in Gajim release
1.0
, but the [https://dev.gajim.org/gajim/gajim-plugins/wikis/OmemoGajimPlugin OMEMO plugin] is an encryption alternative. https://dev.gajim.org/gajim/gajim/-/wikis/help/gajimfaq#does-gajim-support-audiovideo
'''Figure:''' ''Gajim Client in {{project_name_short}}''
[[File:Gajim.png|1600px]]
== Installation ==
{{mbox
| type = notice
| image = [[File:Ambox_notice.png|40px|alt=Info]]
| text = '''Tip:''' Gajim dependencies and Debian instructions are always available [https://dev.gajim.org/gajim/gajim/blob/master/README.md here].
}}
The steps below install Gajim, along with the OMEMO encryption plugin and [https://dev.gajim.org/gajim/gajim-plugins/wikis/HttpUploadPlugin HTTP Upload plugin] (which is required for file transfers). Note this feature can be combined with OMEMO for encrypted file transfers. The latter plugin is fully integrated into the core Gajim software as of version 1.0
. Upon first launch of the program, users can use an existing [[#Jabber_.2F_XMPP|XMPP account]] or create a new one.
{{Update}}
{{CodeSelect|code=
sudo apt update
}}
Install gajim and gajim-httpupload. gajim-omemo
is installed by default in Debian bullseye
during the Gajim installation.
{{CodeSelect|code=
sudo apt install gajim gajim-httpupload
}}
Start Gajim from the start menu or type in konsole.
{{CodeSelect|code=
gajim
}}
[https://github.com/{{project_name_short}}/anon-apps-config anon-apps-config] which is installed by default will [https://github.com/{{project_name_short}}/anon-apps-config/blob/master/debian/anon-apps-config.hide deactivate gajim plugin installer / updater] because it is not secure.
== Configuration ==
=== Account ===
On first launch, an Account Creation Wizard Dialog will appear. Use the wizard to either create a new account to connect to the jabber network or use an existing account. For new accounts, there are multiple jabber servers available and only a username and password is required to join. A new account can always be added with: Edit
→ Accounts
→ New
=== Gajim Settings ===
The following changes are recommended for better security and privacy.
{{Box|text=
Logs:
* Edit
→ Accounts
→ '''un'''check Save conversation logs for all contacts
Preferences
→ Status
→ '''un'''check Away after
To prevent needlessly leaking your activity to the server.
* Preferences
→ Status
→ '''un'''check Not available after
Privacy settings:
* Preferences
→ Advanced
→ Privacy
→ '''un'''check
** Allow client / OS information to be sent
** Allow local system time information to be sent
** Log encrypted chat session
** Allow my idle time to be sent
Prevent auto-start:
* Preferences
→ Advanced
→ applications
→ Custom
→ clear fields for: For better security, this prevents the automatic start of these applications from the chat client.
** Browser
** Mail Client
** File Browser
Network settings: To set use of the Tor network, along with [[Stream Isolation]]. [https://forums.whonix.org/t/whonix-gajim-instructions-giving-error/11632 Whonix gajim instructions giving error]. Proxy authentication is tested to work in {{project_name_short}} 16 when the username
and password
are left blank in settings.
* Preferences
→ Advanced
→ global proxy
→ Tor
* Preferences
→ Advanced
→ global proxy
→ mange
→ Tor
→ check Use proxy authentication
→ leave username
blank → leave password
blank
}}
Gajim cannot be installed by default in {{project_name_short}} yet, as there is more development work TODO; see [[Dev/Gajim]].
= IRC Client =
[[Undocumented]]
= OnionShare =
[[File:OnionShare_logo.png|128px]]
See [[OnionShare]].
= element =
== Notices ==
{{Third_Party_Repository}}
== element installation ==
{{CodeSelect|code=
sudo extrepo enable element.io
}}
{{Install Package|package=
element-desktop
}}
= Quaternion =
[[File:quaternion.png|border]]
== Overview ==
Quaternion is a Qt-based desktop IM client for the Matrix protocol. Matrix is an open, federated communications protocol.
https://packages.debian.org/{{Stable project version based on Debian codename}}/quaternion
At time of writing, [https://github.com/quotient-im/Quaternion/issues/75 Quaternion did not support end-to-end encryption] yet.
For example, it is possible to create an account on the [https://chat.{{project_matrix_server}}/#/register {{project_matrix_server}}] home server for a more private experience; less data is collected about users compared to the matrix.org home server. The privacy issues are inherent in the synapse server side software itself; refer to this [https://github.com/privacytools/services/issues/17 list] for a full write-up. Besides federating with other Matrix instances, Quaternion supports bridging to IRC, Telegram and many other protocols.
https://matrix.org/bridges/
== Installation ==
{{Install Package
|package=quaternion
}}
= Nheko Reborn =
[[File:Nhekologo.png|border]]
== Overview ==
Nheko Reborn is: https://packages.debian.org/bullseye/nheko
... a Qt-based chat client for Matrix, an open, federated communications protocol. The motivation behind the project is to provide a native desktop app for Matrix that feels more like a mainstream chat app and less like an IRC client.The developers explicitly warn that although the current implementation of end-to-end encryption is functional, it may have bugs that affect security. Further, it may be necessary to bootstrap cross-signing keys in a different client. Online key backup is not supported, but this can be performed offline. Most major chat features are available such as: VoIP calls (voice and video); user registration; creating, joining and leaving rooms; sending and receiving invites/files/emojis and so on. Refer to the [https://github.com/Nheko-Reborn/nheko Nheko Reborn GitHub README] for further information. == Installation == {{Install Package |package=nheko }} = Cwtch = == Cwtch Introduction == [https://cwtch.im/ Cwtch] (by [https://openprivacy.ca/ Open Privacy]). * [https://docs.cwtch.im/blog/cwtch-nightly-preview-whonix-save-history/ Cwtch announced Whonix support. related: * upstream documentation: [https://docs.cwtch.im/docs/platforms/whonix/ Running Cwtch on Whonix] * Whonix forum discussion: [https://forums.whonix.org/t/cwtch-messaging/5353 Cwtch messaging] {{testers-only}} == Cwtch {{project_name_gateway_short}} Installation Steps == {{onion-grater-warning}} {{Control_Port_Filter_Python_Profile_Add |filename_new=40_cwtch }} These instructions use the [https://github.com/Whonix/onion-grater/blob/master/usr/share/doc/onion-grater-merger/examples/40_cwtch.yml
/usr/share/doc/onion-grater-merger/examples/40_cwtch.yml
] onion-grater profile packaged for Whonix.
In the future it is conceivable that the upstream [https://git.openprivacy.ca/cwtch.im/cwtch-ui/src/branch/trunk/linux/cwtch-whonix.yml cwtch-whonix.yml
onion-grater profile is more recent.
In that case it might be necessary to replace /usr/share/doc/onion-grater-merger/examples/40_cwtch.yml
with upstream's cwtch-whonix.yml
until onion-grater in Whonix is upgraded to contain the new onion-grater profile.
== Cwtch {{project_name_workstation_short}} Installation Steps ==
Unfortunately not installable from Debian package repositories at time of writing.
[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=922887 RFP: cwtch -- Privacy Preserving Infrastructure for Asynchronous, Decentralized, Multi-Party, and Metadata Resistant Applications]
Inside {{project_name_workstation_short}}.
'''1.''' Find latest version and download link.
By visiting upstream download page https://cwtch.im/download/#linux.
'''2.''' Download.
Note: Replace download link with newer version if available.
{{CodeSelect|code=
scurl-download https://cwtch.im/releases/cwtch-v1.14.0/cwtch-v1.14.0.tar.gz
}}
'''3.''' Digital software signature verification.
{{always_verify_signatures_reminder}}
Unavailable. Apparently upstream does not provide digital signatures yet. Cwtch upstream feature request: [https://git.openprivacy.ca/cwtch.im/cwtch-ui/issues/802 digital software signatures - sign releases]
'''4.''' Extract.
{{CodeSelect|code=
tar xvf cwtch*.tar.gz
}}
'''5.''' Change directory.
{{CodeSelect|code=
cd ./cwtch
}}
'''6.''' Run the Cwtch for Whonix installer.
{{CodeSelect|code=
./install-whonix.sh
}}
'''6.''' Done.
Installation of cwtch has been completed.
== Cwtch Usage ==
Inside {{project_name_workstation_short}}.
To start Cwtch.
{{CodeSelect|code=
/home/user/.local/bin/cwtch
}}
= Web Browser / JavaScript Clients =
Web clients can provide weaker or stronger security depending on the user's threat model.
One disadvantage of web clients is that they rely on the server not attacking the user and stealing their encryption keys from the browser. Websites can target specific users with malicious JavaScript whereas with an installed application, the code is completely static.
https://proton.me/blog/cryptographic-architecture-response/
Furthermore, installed applications can utilize TLS certificate pinning to better mitigate [[Warning#Man-in-the-middle_Attacks|man-in-the-middle attacks]] by eliminating the dependence on potentially compromised certificate authorities. Certificate pinning is already being extensively used by applications such as Signal
https://www.signal.org/blog/certifiably-fine/
, ProtonMail
https://proton.me/blog/tls-ssl-certificate#Extra-security-precautions-taken-by-ProtonMail
and others.
In addition, the stateless design of Tor Browser will erase any keys created and approved by communicating parties. This can cause confusion about the trustworthiness of contacts in subsequent sessions -- one workaround is to use a dedicated install of Firefox for that purpose.
However, there are advantages to web clients too. Websites are much less privileged than installed applications and have no direct access to system resources. Common browsers also often employ browser sandboxing technologies to contain malicious websites even in the event of a browser exploit (unless chained with an additional sandbox escape exploit).
== Element Web ==
[https://app.element.io/#/welcome Element Web App] is a browser-based Matrix client. It can also be run from [https://element.io/get-started different platforms].
== Converse.js ==
[https://conversejs.org/ Converse.js] is an OMEMO browser client which is provided by some XMPP hosting services. However, chat encryption is only available on "Trusted Devices".
= Deprecated Chat Clients =
== Introduction ==
The following is a list of chat clients which were previously documented on this page. It is not a list of all deprecated chat clients that have ever existed.
== CoyIM ==
CoyIM is no longer included in {{project_name_short}} due to technical issues. Namely, it is currently not available from Debian stable or backports package sources (packages.debian.org
).
https://forums.whonix.org/t/coyim-in-whonix-development-discussion/5901/16
There is a chance it will be reintroduced when {{project_name_short}} 16 (based on Debian bullseye
) is released. Manual software installation might also be possible (see [[Install Software]]), but that procedure is [[Unsupported|undocumented]] by {{project_name_short}} developers.
== Nheko ==
The original Nheko application is no longer maintained and was last worked on in 2018.
https://github.com/mujx/nheko
This repository has been archived by the owner. It is now read-only.As an alternative, consider installing [[#Nheko_Reborn|Nheko Reborn]]. == Pidgin == Pidgin supports most protocols and OTR end-to-end encrypted chat. However, it is not recommended because it has a [https://pidgin.im/about/security/advisories/ very poor security record] with many remotely exploitable bugs. Security researcher and developer Micah Lee notes this is the result of reliance on legacy protocols and the libpurple, libotr and libxml libraries which are: ''"... massive, written in C/C++, and are littered with memory corruption bugs. ..."'' https://micahflee.com/2013/02/using-gajim-instead-of-pidgin-for-more-secure-otr-chat/ == RetroShare == {{project_name_short}} developers no longer list RetroShare, which is a [https://en.wikipedia.org/wiki/Friend-to-friend friend-to-friend] (peer-to-peer), decentralized network and not an anonymizing network. Encrypted RetroShare connections support chat, voice and video, mail, file-sharing, forums and Tor. Unlike other private P2P options, the F2F network can grow in size without compromising their users' identities. Also, passwords or digital signatures are required for authentication. Although RetroShare is [https://github.com/RetroShare/RetroShare under active development], See also: https://retroshareteam.wordpress.com/2021/03/15/release-notes-for-v0-6-6/ there are several serious concerns which disqualify a recommendation: * The RetroShare package is signed with [[RetroShare#Installation|weak 1024-bit keys]] (in late-2018). * A 2016 code review which focused on implementation vulnerabilities discovered multiple security issues: https://www.elttam.com/blog/a-review-of-the-eff-secure-messaging-scorecard-pt1/ ** The attack surface is high due to the feature-rich codebase. ** Systemic "insecure coding practice" was identified, particularly ''"...inconsistent return value checking and error handling, poor usage of explicit and implicit typecasting, and relaxed handling of adverse security edge-cases."'' ** Within a 24-hour period, auditors had developed proof of concept exploits for web-like vulnerabilities, weak binary protections, and out of bound memory reads and remote memory corruption (promptly rectified by developers). * A coverity scan of the RetroShare code shows a large number of outstanding defects, along with a relatively high defect density. https://scan.coverity.com/projects/retroshare-retroshare For example, compare this result with the low number of defects and defect density of the [https://scan.coverity.com/projects/tor Tor] codebase. == Ricochet IM == Ricochet IM (original) is no longer recommended as a decentralized (server-less) option because it is not functional in {{project_name_short}} and deprecated upstream by its original developers. Ricochet IM 'only' uses onion encryption and is difficult to set up and use. OTR or OMEMO-grade encryption is not available and offline messages are not supported. https://github.com/ricochet-im/ricochet/issues/72 https://github.com/ricochet-im/ricochet/issues/405 Ricochet Refresh is [[Unsupported|unsupported]] since it was broken in {{project_name_short}} 15 [https://forums.whonix.org/t/ricochet-support/7174 despite all efforts to fix it]. A contributor submitted github pull requests * https://forums.whonix.org/t/ricochet-support/7174/56 * https://github.com/blueprint-freespeech/ricochet-refresh/pull/101 * https://github.com/blueprint-freespeech/ricochet-refresh/pull/102 which were unfortunately rejected due to Ricochet Refresh's rewrite [https://github.com/blueprint-freespeech/gosling gosling] in development. [https://github.com/blueprint-freespeech/ricochet-refresh/commit/b0a274c07f0e8afd7b6727e3fe8428e1f9ad5249 The Ricochet Refresh was changed and Ricochet rewrite is now non-freedom software]. The [https://github.com/blueprint-freespeech/gosling/commit/27fe04db12f8d83d44e4c21d94a8331e8aa8b8f5 chosen license for gosling (a rewrite of Ricochet Refresh) is the same non-freedom software license] [https://www.gnu.org/licenses/license-list.html#comclause
Commons Clause
].
{{Non-freedom-software}}
An issue [https://github.com/blueprint-freespeech/ricochet-refresh/issues/153 Ricochet-Refresh is now proprietary] had been reported. According to the [https://github.com/blueprint-freespeech/ricochet-refresh/issues/153#issuecomment-1126821612 Ricochet-Refresh developer's reply] it seems unlikely that the license would be reverted to a Freedom Software license.
Update: Was reverted.
* https://github.com/blueprint-freespeech/ricochet-refresh/pull/156
([[Deprecated/Ricochet IM|archived documentation]])
== TorChat ==
TorChat has not been recommended by {{project_name_short}} developers since late-2015. The reason is [https://github.com/prof7bit/TorChat/issues development has been at a standstill] since 2013 and the TorChat developer does not respond to other people, suggesting the project has been abandoned. TorChat is also an unofficial project and unaffiliated with The Tor Project. Since communication, support, active development and security fixes are essential for anonymity-related projects, modern software alternatives are recommended. Ricochet IM was previously recommended in this section, since it passed a recent (2016) security audit with flying colors.
Another reason to avoid TorChat is the findings of a 2015 security analysis [https://kodu.ut.ee/~arnis/torchat_thesis.pdf Security Analysis of Instant Messenger TorChat] which inspected the protocol and Python implementation: https://en.wikipedia.org/wiki/TorChat#Security
It was found that although the design of TorChat is sound, its implementation has several flaws, which make TorChat users vulnerable to impersonation, communication confirmation and denial-of-service attacks.== Tor Messenger == Do not use Tor Messenger! It was deprecated by upstream developers in early-2018. * https://blog.torproject.org/sunsetting-tor-messenger * [[Deprecated#Tor_Messenger]] * https://forums.whonix.org/t/tor-messenger-is-no-longer-maintained-as-of-march-2018 == Tox == Tox is a fully-featured, decentralized (server-less) option which employs strong encryption, but the software is in alpha status. qTox has been [https://forums.whonix.org/t/tox-qtox-whonix-integration/1219/18 removed from {{project_name_short}}] due to serious security issues. = Other Software = For anonymous Voice over IP (VoIP) or encrypted, anonymous phone calls using the Tor anonymity network, see: [[VoIP]]. If a messenger program is not listed in this chapter, it is for now recommended against. If readers feel any privacy-respecting chat clients are missing on this page, first search the [https://forums.{{project_clearnet}} {{project_name_short}} forums] to see if that application has been discussed in the recent past. Any additions to this page will be based on an objective analysis of the software's underlying strength and compatibility with {{project_name_short}}. Also see: https://forums.whonix.org/t/client-server-instant-messengers-im/3081 = See Also = * [[Signal]] * [[Telegram]] * [[OnionShare]] * [[Wickr]] = Footnotes / References = {{reflist|close=1}} = License = {{License_Amnesia|{{FULLPAGENAME}}}} {{Footer}} [[Category:Documentation]]