Settling for RCS means no E2EE. It’s also handing control over messaging back to carriers (or most likely, Google, because not many carriers have RCS servers) which is a step backwards.
For all of Apple’s many many faults, iMessage is a pretty good service once you pay the Apple tax to get in.
Doesn’t RCS support E2EE if properly implemented? I seem to recall reading that the spec for RCS supports this, but it’s just that carriers won’t enable it.
No, E2EE is not part of any RCS spec yet. Based on news articles, Apple is implementing RCS but will supposedly ask the governing standards bodies to add E2EE to the spec so they can implement it according to the official specifications.
Google has implemented their own E2EE on top of RCS (based on Signal’s messaging for one to one conversations, based on MLS for group chats), but they haven’t published any specifications for that. It shouldn’t be too hard to reverse engineer, but that shouldn’t be necessary for any open protocol.
Google has implemented their own E2EE on top of RCS (based on Signal’s messaging for one to one conversations, based on MLS for group chats), but they haven’t published any specifications for that.
Ahh, this must be what I was thinking of, then. Thanks for clarifying!
If you mean this link: that’s a high level description of the protocol, but it leaves out important details.
For example, Google uses MLS for group chats, but the document only mentions the Signal protocol. In other words, E2EE for group chats is broken even if you manage to implement the protocol exactly as they describe.
For example, they say the client “registers with the key server” and “uploads the public key parts”. What server is that? What protocol do we use? HTTPS POST? Do we use form/multipart? Do we encode the key in PEM or do we submit they bytes directly?
Another example: “Key material, digest, and some metadata are encrypted using the Signal session”. Whay do you mean “some”? What algorithm is used to generate the digest?
The document is a nice high level overview, but worthless if you want to implement their protocol. It basically says “we put signal, and send the signal messages over RCS, with out own key servers. Here’s how the Signal protocol works”. If, for example, Ubuntu Touch would like to implement this into their messenger, they’ll need to reverse engineer Google’s Messages app, guided by the description in their whitepaper.
It’s also handing control over messaging back to carriers
I don’t really see any issue in this, as RCS was meant as an upgrade of the SMS protocol. Moreover, as the smartphone market is now pretty much a duopoly between Google and Apple, and pretty much what is not Apple is Google, it was natural for Google to also come up with an alternative to iMessage of theirs. Because that’s what it is currently. I’m surprised Apple accepted to implement RCS after all because of this tbh.
Imo, both Google, Apple could have worked with the major carriers to implement a solution like this over GSM (and not requiring you to use mobile data). For me, that’s the advantage of the SMS over any IM app out there (including Matrix, XMPP etc.): you’re not required to turn on your data in order to use it. It’s just right there. For the current implementations of RCS/iMessage respectively, I don’t see any advantage over just using WhatsApp or Facebook Messenger for example.
Carriers wanted RCS because WhatsApp and iMessage were taking away their ability to charge by the text more than anything. I think they all dropped their subscription model by now, but no doubt they’ll start charging you when you use the more advanced features of RCS (i.e. uploading 500MB files).
Google did come up with an alternative: Google Talk, then Hangouts, then Allo, then Google Chat, and I think I missed one or two. Unfortunately, Google employees only get promoted by launching new products, so every chat team wants to launch something new, and that’s why every year Google launches a new messenger.
Nobody I know uses SMS because carriers here still charged by the SMS five years ago. MMS has been turned off entirely by the largest carriers around. Why would I pay 5 cents per message, or €3 extra for unlimited text, when I could just use the data plan I already have for free? Messages cost kilobytes of data, fractions of a cent.
As for the evolution of SMS: SMS was free at first, then relatively cheap, because it used empty space in the GSM standards allocated for basic message passing. Someone noticed that there was some leftover capacity and thought they may as well use it for a small feature. Then once people started using it, this stuff stayed in.
MMS (the part where you send anything more than 140 characters to a single phone number) is using your data connection. Well, it’s actually using a separate data connection, but it’s all packeted, like RCS is. That’s why SMS works when you have a single bar of reception, but MMS struggles.
As of LTE/4G, everything is packeted networking. Phone calls (over VoLTE) are no longer directly routed audio links, they’re voice (or video, but nobody seems to implement that part) streams over a network connection. VoWiFi (WiFi calling) is basically a VPN tunnel with two audio streams inside it. A true 4G successor of SMS would he RCS, except you’d need a separate APN that normal applications couldn’t use to reach an internal IP address that’s not accessible over the internet.
Like how MMS is entirely optional for carriers to provide, so is RCS. That’s why Google runs their own servers. For the majority of people, they need Google’s servers because their carrier doesn’t offer RCS services. They basically took a component intended to be run by carriers only and said “fuck it, we’re a carrier now”.
There can be advantages to RCS if your carrier has a server you can use, but if you’re using Google Jibe, there’s not much, really. In theory Google could expose an RCS API that would automatically enable E2EE (if available) to other apps, like how you can access RCS received messages through the same API you can use to read MMS messages on Android phones with Google’s messages app, but Google hasn’t implemented that in core Android yet. Knowing them, they probably don’t want to be locked down in their encryption system or protocol by making it part of the standard distributed to every phone manufacturer, but it’s hurting the effort to go beyond SMS.
iMessage has one advantage, which is that it can fall back to SMS when it can’t teach its servers. In theory any app could implement that. I’m not sure if iMessage does anything to encrypt its fallback SMS messages (it could) or use a chain of them to also send the necessary metadata to put the SMS messages into an iMessage conversation, but it’s always an option.
For Android users, Google Messages and soon RCS adds the ability to communicate with iMessage users without requiring iMessage users to install another app. In the silly bubble shaming countries, this is a major advantage. Outside those, everyone probably already has either WhatsApp, Line, or Vibe, or in China WeChat, so you can just use that. On the other hand, it RCS is no different than all the others and comes preinstalled on your phone, why not use it?
With the European DSA quickly approaching, there’s a good chance we’ll also gain some kind of cross messenger interoperability in the future. Google already uses the MLS standard for group messaging, which is part of an effort to standardise messaging protocols, and when MIMI gets finalised next year, perhaps large European gatekeeper apps like WhatsApp will become interoperable with RCS and other messaging apps. In a perfect world, you could just install the messaging app you prefer, or stick with the default one, and communicate with every other messenger app out there. Kind of like how iChat/MSN used to work, but as part of the standard.
Settling for RCS means no E2EE. It’s also handing control over messaging back to carriers (or most likely, Google, because not many carriers have RCS servers) which is a step backwards.
For all of Apple’s many many faults, iMessage is a pretty good service once you pay the Apple tax to get in.
Doesn’t RCS support E2EE if properly implemented? I seem to recall reading that the spec for RCS supports this, but it’s just that carriers won’t enable it.
No, E2EE is not part of any RCS spec yet. Based on news articles, Apple is implementing RCS but will supposedly ask the governing standards bodies to add E2EE to the spec so they can implement it according to the official specifications.
Google has implemented their own E2EE on top of RCS (based on Signal’s messaging for one to one conversations, based on MLS for group chats), but they haven’t published any specifications for that. It shouldn’t be too hard to reverse engineer, but that shouldn’t be necessary for any open protocol.
Ahh, this must be what I was thinking of, then. Thanks for clarifying!
https://support.google.com/messages/answer/10262381?hl=en
E2EE White paper (technical specifications) is listed on this site (pdf)
If you mean this link: that’s a high level description of the protocol, but it leaves out important details.
For example, Google uses MLS for group chats, but the document only mentions the Signal protocol. In other words, E2EE for group chats is broken even if you manage to implement the protocol exactly as they describe.
For example, they say the client “registers with the key server” and “uploads the public key parts”. What server is that? What protocol do we use? HTTPS POST? Do we use form/multipart? Do we encode the key in PEM or do we submit they bytes directly?
Another example: “Key material, digest, and some metadata are encrypted using the Signal session”. Whay do you mean “some”? What algorithm is used to generate the digest?
The document is a nice high level overview, but worthless if you want to implement their protocol. It basically says “we put signal, and send the signal messages over RCS, with out own key servers. Here’s how the Signal protocol works”. If, for example, Ubuntu Touch would like to implement this into their messenger, they’ll need to reverse engineer Google’s Messages app, guided by the description in their whitepaper.
Thanks for this explanation!
I don’t really see any issue in this, as RCS was meant as an upgrade of the SMS protocol. Moreover, as the smartphone market is now pretty much a duopoly between Google and Apple, and pretty much what is not Apple is Google, it was natural for Google to also come up with an alternative to iMessage of theirs. Because that’s what it is currently. I’m surprised Apple accepted to implement RCS after all because of this tbh.
Imo, both Google, Apple could have worked with the major carriers to implement a solution like this over GSM (and not requiring you to use mobile data). For me, that’s the advantage of the SMS over any IM app out there (including Matrix, XMPP etc.): you’re not required to turn on your data in order to use it. It’s just right there. For the current implementations of RCS/iMessage respectively, I don’t see any advantage over just using WhatsApp or Facebook Messenger for example.
Carriers wanted RCS because WhatsApp and iMessage were taking away their ability to charge by the text more than anything. I think they all dropped their subscription model by now, but no doubt they’ll start charging you when you use the more advanced features of RCS (i.e. uploading 500MB files).
Google did come up with an alternative: Google Talk, then Hangouts, then Allo, then Google Chat, and I think I missed one or two. Unfortunately, Google employees only get promoted by launching new products, so every chat team wants to launch something new, and that’s why every year Google launches a new messenger.
Nobody I know uses SMS because carriers here still charged by the SMS five years ago. MMS has been turned off entirely by the largest carriers around. Why would I pay 5 cents per message, or €3 extra for unlimited text, when I could just use the data plan I already have for free? Messages cost kilobytes of data, fractions of a cent.
As for the evolution of SMS: SMS was free at first, then relatively cheap, because it used empty space in the GSM standards allocated for basic message passing. Someone noticed that there was some leftover capacity and thought they may as well use it for a small feature. Then once people started using it, this stuff stayed in.
MMS (the part where you send anything more than 140 characters to a single phone number) is using your data connection. Well, it’s actually using a separate data connection, but it’s all packeted, like RCS is. That’s why SMS works when you have a single bar of reception, but MMS struggles.
As of LTE/4G, everything is packeted networking. Phone calls (over VoLTE) are no longer directly routed audio links, they’re voice (or video, but nobody seems to implement that part) streams over a network connection. VoWiFi (WiFi calling) is basically a VPN tunnel with two audio streams inside it. A true 4G successor of SMS would he RCS, except you’d need a separate APN that normal applications couldn’t use to reach an internal IP address that’s not accessible over the internet.
Like how MMS is entirely optional for carriers to provide, so is RCS. That’s why Google runs their own servers. For the majority of people, they need Google’s servers because their carrier doesn’t offer RCS services. They basically took a component intended to be run by carriers only and said “fuck it, we’re a carrier now”.
There can be advantages to RCS if your carrier has a server you can use, but if you’re using Google Jibe, there’s not much, really. In theory Google could expose an RCS API that would automatically enable E2EE (if available) to other apps, like how you can access RCS received messages through the same API you can use to read MMS messages on Android phones with Google’s messages app, but Google hasn’t implemented that in core Android yet. Knowing them, they probably don’t want to be locked down in their encryption system or protocol by making it part of the standard distributed to every phone manufacturer, but it’s hurting the effort to go beyond SMS.
iMessage has one advantage, which is that it can fall back to SMS when it can’t teach its servers. In theory any app could implement that. I’m not sure if iMessage does anything to encrypt its fallback SMS messages (it could) or use a chain of them to also send the necessary metadata to put the SMS messages into an iMessage conversation, but it’s always an option.
For Android users, Google Messages and soon RCS adds the ability to communicate with iMessage users without requiring iMessage users to install another app. In the silly bubble shaming countries, this is a major advantage. Outside those, everyone probably already has either WhatsApp, Line, or Vibe, or in China WeChat, so you can just use that. On the other hand, it RCS is no different than all the others and comes preinstalled on your phone, why not use it?
With the European DSA quickly approaching, there’s a good chance we’ll also gain some kind of cross messenger interoperability in the future. Google already uses the MLS standard for group messaging, which is part of an effort to standardise messaging protocols, and when MIMI gets finalised next year, perhaps large European gatekeeper apps like WhatsApp will become interoperable with RCS and other messaging apps. In a perfect world, you could just install the messaging app you prefer, or stick with the default one, and communicate with every other messenger app out there. Kind of like how iChat/MSN used to work, but as part of the standard.