Threema komt met snel en zuinig alternatief op Google-pushberichtdienst

Threema, bekend van de gelijknamige Zwitserse messaging-app die de nadruk legt op privacy en security, zegt een manier gevonden te hebben om berichten en oproepen tijdig binnen te laten komen op een toestel zonder het gebruik van Googles Firebase Cloud Messaging.

Firebase Cloud Messaging is een systeem van Google dat het mogelijk maakt om betrouwbaar berichten naar een Android-smartphone te sturen, zonder dat de ontvangende smartphone regelmatig bij een server hoeft te controleren of er nog berichten klaarstaan, wat energie en data kost. Zeer veel apps gebruiken dit systeem.

Threema treedt niet heel erg in detail over de nieuwe feature, ook niet in de faq. Wat duidelijk is, is dat deze Googles pushdiensten niet gebruikt en schijnbaar ook niet aan regelmatige polling bij de Threema-servers doet. Deze nieuwe functie vervangt de polling-optie juist. Wellicht dat Threema zelf heeft geïnvesteerd in infrastructuur die soortgelijk is aan Googles Firebase Cloud Messaging, maar dat is niet zeker.

Naast de privacyvoordelen maakt deze functie het volgens Threema mogelijk om tijdig spraakoproepen te ontvangen, dus voordat de initiatiefnemer een time-out krijgt. Dit was zonder FCM niet mogelijk, tenzij de gebruiker agressieve polling inschakelde en een beetje geluk had.

Verder meldt Threema wel dat het een voorwaarde is dat power restrictions voor de app uitgeschakeld worden en dat background data usage ingeschakeld is. Ook moet Threema een aanhoudende notificatie tonen voor de dienst, maar die is wel te verbergen zonder gevolgen. De makers zeggen dat het energieverbruik van de app 'mogelijk licht stijgt' door Threema Push.

Threema redeneert dat het gebruik van FCM weliswaar niet betekent dat al te gevoelige informatie de revue passeert bij de servers van Google, maar dat deze situatie het toch theoretisch mogelijk maakt om een Threema-gebruiker te kunnen koppelen aan een specifiek Google-account. Wegens de focus op privacy bij Threema, heeft het bedrijf de polling-functie langer gehad en nu dus Threema Push.

Threema Push staat standaard ingeschakeld op Android-telefoons die geen Google Play Services geïnstalleerd hebben. Firebase Cloud Messaging is daar een onderdeel van. Tweakers schreef in 2020 een achtergrondverhaal over het hoe en waarom van ontgoogelen.

Door Mark Hendrikman

Redacteur

03-04-2022 • 12:52

37 Linkedin

Submitter: MoraalRidder

Reacties (37)

37
37
24
1
0
10
Wijzig sortering
Google heeft met FCM eigenlijk een monopolie. Het framework van Google Play Services en de bibliotheken van Firebase, waaronder FCM, werken nauw samen om zeer efficiënt pushberichten af te handelen voor apps. Als je geen FCM wilt gebruiken in de apps die je bouwt, dan moet je dus iets volledig alternatiefs bouwen dat, zoals beschreven, iets van polling doet of met regelmaat op de achtergrond draait. Google heeft heel slim beperkingen in Android gebouwd waardoor dat erg gebruiksONvriendelijk is, ook voor ontwikkelaars. Dat komt doordat apps niet zomaar op de achtergrond mogen draaien. Sterker nog: apps die zelden of nooit door de gebruiker worden geopend kunnen in een 'standby bucket' terechtkomen waarin ze niet of amper op de achtergrond mogen draaien. En dus kunnen ze dan helemaal niet meer checken op berichten of iets anders op de achtergrond doen.

Google noemt dat optimalisatie. En dat is goed tegen apps die op de achtergrond bitcoins minen of persoonsgegevens stelen. Maar tegelijkertijd versterkt het de positie van services zoals Google Play en Firebase. En laat die laatste nou enorme hoeveelheden gegevens verwerken, met alle risico's van dien.

Weet iemand een gebruiks- en privacyvriendelijk alternatief voor FCM, dat dus niet met permanente notificaties of extra handelingen van gebruikers werkt?
Je hoeft geen volledig alternatief te bouwen, er zijn zat alternatieven zoals bijvoorbeeld openpush. De app developer moet alleen wel de moeite nemen een alternatief te implementeren.
Over OpenPush lees ik "This is is an unfinished prototype project that's currently not being continued."

Er bestaat wel het vergelijkbare UnifiedPush. Daarover lees ik dat het werkt via een self hosted server, in plaats van de servers van Google.

Zo'n server is voor zover ik het begrijp een belangrijk component van pushberichten. Klopt mijn vermoeden dat het koppelen van je app, via een service op het Android device, aan een Push server alleen voordelen heeft als meerdere apps via diezelfde service diezelfde server raadplegen? Het schaalvoordeel lijkt er namelijk in te zitten dat niet iedere app een afzonderlijke server hoeft te raadplegen. Dus dan kan een individuele ontwikkelaar dit pas met nuttig effect implementeren als er al een server in de lucht is waar andere apps al gebruik van maken. En die afstemming in de markt is extra lastig omdat het vooralsnog om oplossingen met een self hosted server gaat...

[Reactie gewijzigd door pmeter op 3 april 2022 13:39]

Je vermoeden klopt. Bovendien klopt het niet alleen voor de server, maar ook de client: als apps op een Androidtoestel FCM gebruiken, dan zorgt de centrale app van Google Play Services ervoor dat er met Google wordt gecommuniceerd in 1x voor alle apps, ipv dat iedere app individueel met Google praat. Dus het mes snijdt aan twee kanten. En het mes is bot aan twee kanten voor wie een alternatief wil gebruiken in zijn apps en bijbehorende servers.
Kan een app developer niet FCM gebruiken om te weten te komen dat er een bericht is maar de inhoud van het bericht niet via FCM laten lopen?
ja dat kan. Ooit zoiets opgezet. ik stuurde via fcm alleen een signaal van een nieuw bericht, en dan werd dat bericht na aantikken onder water gewoon opgehaald via de eigen api. Maar dat is wel inefficient en bij een storing frustrerend, wel een bericht, maar niet weten wat...
Dit zag een paar jaar geleden bij WhatsApp (voor wie dat gebruikte) rond de tijd dat e2ee werd geïntroduceerd: dan had je een melding met 'You may have new messages, open WhatsApp to check.' (of zoiets). Dan was de push gelukt, maar de inhoud zit niet in de push (want versleuteld), en de app was nog niet op de achtergrond gestart om het bericht te ontsleutelen of op te halen, of dat was mislukt om een of andere reden.
Volgens mij beantwoord het artikel jouw vraag:
Threema redeneert dat (...) het toch theoretisch mogelijk maakt om een Threema-gebruiker te kunnen koppelen aan een specifiek Google-account.
Ik denk dat als ik jou een bericht verstuur, dat bericht binnen milliseconden via jouw Google-account aan wordt gekondigd aan jouw app. Die haalt welliswaar de inhoud op via een ander pad, maar als ik vijf minuten later weer jou een berichtje stuur, wordt dat weer enkele milliseconden later via jou Google-account aangekondigd. Herhaal dat een paar keer en ik kan samen met de data die Google heeft met statistische zekerheid zeggen welk Google-account bij jou hoort. Erg theoretisch wellicht, maar toch een privacy-issue.
En zo zijn er ook andere timing- en locatiegebaseerde theoretische aanvallen denkbaar. Bijv.:

Er komt een push binnen via niet-FCM op mijn Googletoestel. Dat kan het toestel loggen.
Als ik vervolgens elke keer een webpagina open met bepaalde privacygevoelige content, dan kan er alsnog een profiel over de inhoud van de push worden opgebouwd, bijv.: ik open de website van een bepaalde zorgverlener, omdat ik specifieke zorg nodig heb. Of van een bepaalde politieke partij. Of van een bepaalde religie. Of iets anders waarop Google zou kunnen willen profileren. Of ik ga, met mijn toestel waarop Google's locatietimeline aanstaat, telkens na een bepaalde notificatie naar een bepaalde locatie.

Allemaal theoretisch en wellicht niet praktisch, maar niet ondenkbaar.
Dit klinkt wel logisch. Dan ben ik benieuwd wat Threema precies heeft gedaan, om zonder 'schaalvoordeel' toch efficiënt te kunnen zijn zonder Google?
Kan niet. Je kan als developer alleen gebruik maken van FCM. Alle andere opties werken niet omdat third-party achtergrond services niet toegestaan zijn. Wij hebben enorm last van onbetrouwbaar gedrag van FCM. We versturen zo'n 10 miljoen notificaties per dag. (Geen spam, echt gewilde notificaties). Daarvan komt ongeveer 0.5% niet aan. Heel veel grote partijen klagen hierover. En wat zie je. Partijen als Facebook krijgen wel de mogelijkheid voor eigen implementaties. Echt bizar.
Is dit iets?
https://appwrite.io/
Ik zag het pas voorbijkomen, maar nog geen tijd gehad om er vol in te duiken wat dit nu precies doet.
Ze zeggen zelf een beetje een vervanger te zijn van FCM.
Bedankt voor de tip. Dat lijkt meer een generieke en complete backend voor mobiele frontends. Die ontwikkelen wij zelf ook (al kan zo'n alternatief daarbij wel handig zijn. Ik zoek slechts een alternatief voor pushberichten. Dat gaat overigens verder dan Android en iOS, want pushberichten werken ook op het web en vast ook wel op andere clients.
Wat ik niet helemaal uit het bericht haal is nu hoe deze dienst 'snel en zuinig' is vergeleken met de Google dienst.

Is dit gewoon een rare/gekleurde manier van de titel verwoorden, of is het werkelijk zo dat deze dienst sneller of zuiniger is dan de Google dienst (zoals de zinsbouw zegt).
Hier ben ik ook wel benieuwd naar. Wat doet Threema dan nu precies waardoor ze efficiënt kunnen pushen zonder Google?
Als je app power restrictions uit heeft en background data usage aan, kun je gewoon een TCP-verbinding aanhouden naar een server. Zolang er geen dataverkeer is (er word niets gepusht), gebruikt dat vrijwel geen energie, omdat de standaard keep-alive rond de 2 uur ligt.

Een voorbeeld zijn mobiele XMPP-clients die hier gebruik van maken door met de server af te spreken alleen noodzakelijk verkeer (geen presence updates, maar wel tekstberichten) te sturen. Het batterijverbruik wordt dan behoorlijk ingeperkt en is vrijwel vergelijkbaar met het gebruik van FCM.

Het voordeel van FCM is natuurlijk dat die standaard batterijbesparingen voor apps omzeild worden en je zo'n verbinding deelt met andere apps. Maar een XMPP-client zoals Conversations kan prima zonder FCM als die besparingen uit staan, zonder veel impact op je batterij. Ik vermoed dat in Threema iets vergelijkbaars gedaan wordt.
Hmm maar waarom doet niet elk programma dit dan?

Doet Telegram het ook? Dat werkt namelijk uitstekend zonder Google-meuk.

Whatsapp daarentegen geeft geen meldingen totdat ik het programma open, omdat ik alle Google-dingen standaard bevroren heb. Als ik Whatsapp niet open kan het uren duren voordat meldingen doorkomen. Wat ik op zich ook wel lekker rustig vind, maar het zou niet zo moeten zijn.
Wat ik niet helemaal uit het bericht haal is nu hoe deze dienst 'snel en zuinig' is vergeleken met de Google dienst.
Ik haal uit het artikel dat ze zuinig zijn ondanks het niet gebruiken van Google-diensten. Dat dat nogal een uitdaging is wist ik niet, maar ook dat blijkt naar mijn mening voldoende uit het artikel.
Hmm, helaas vind ik de artikelen in het weekend vrij vaak onder de maat of gewoon vol met een mening. Ik gok dat in het weekend veel mensen werken zonder journalistieke achtergrond, anders moeten we die opleiding echt even grondig herzien.

De titel maakt een vergelijking met de Google dienst, als je iets een snel en zuinig alternatief noemt is het taalkundig gewoon een vergelijking. Als ik zeg dat ik een zuinig en goedkoop alternatief heb voor iets, dan is de aanname dus dat hetgene waar je een alternatief voor hebt niet zuinig en duur is.
Maar er was al een alternatief, dat is niet het nieuws. Dat alternatief was echter erg energieverslindend. Ik snap je verwarring wel, maar met goed lezen kom je een heel eind. Verder kan je best gelijk hebben dat de kwaliteit beter is als er meer redactieleden beschikbaar zijn voor wederzijdse controle.
ja...het zou snel en zuinig zijn, maar je telefoon gaat iets meer verbruiken....huh?
Toevallig gisteren nog op reddit gezeten en topics gelezen over threema. De self destructing timer blijkt een heel groot gemis te zijn over heel veel threema gebruikers en begrijpen niet dat de devs er niks aan willen doen. Devs van threema ziet self-destructing als "onveilig". :X
Devs van threema ziet self-destructing als "onveilig". :X
Daar hebben ze gelijk in, en als je een bepaald imago hoog te houden hebt of beperkte resources, dan stop je daar geen tijd in. Kan alleen maar mis gaan.
Inderdaad, maar toch vinden veel mensen het dan een miskoopje. :P Iemand die opzoek is naar privacy rekend erop dat die functie er ook in zit, omdat het in elke app aanwezig is signal, wire, matrix, session, telegram en zelfs whatsapp. Je zou denken dat je voor een betaalde privacy app meer krijgt, maar eigenlijk krijg je minder functies dan voor een gratis app en dan nog wel een heel opvallende: self-destructing
Iemand die opzoek is naar privacy rekend erop dat die functie er ook in zit, omdat het in elke app aanwezig is signal, wire, matrix, session, telegram en zelfs whatsapp.
Al die implementaties zijn afhankelijk van medewerking van de (andere) client, wat een vals gevoel van veiligheid creëert bij nietsvermoedende gebruikers voor deze functie. Ik denk dat Threema dat wil voorkomen.

Say it, forget it. Write it, regret it.

[Reactie gewijzigd door The Zep Man op 3 april 2022 13:27]

Al die implementaties zijn afhankelijk van medewerking van de (andere) client, wat een vals gevoel van veiligheid creëert bij nietsvermoedende gebruikers voor deze functie. Ik denk dat Threema dat wil voorkomen.
Goed voorbeeld hiervan is de notificatie geschiedenis in Pixel telefoons bij A12. Heb vaak genoeg dat mensen een bericht hebben gedelete maar ik kan de notificatie daarvan nogsteeds zien in mijn notificatie geschiedenis en weet dus exact wat er gezegd is terwijl de andere kant denkt van niet.
Waarom noemt niemand wickr.me? E2E, burn on read en burn on time afzonderlijk in te stellen en nooit de inhoud van een bericht in notificaties.
Geen afzonderlijke apk beschikbaar of je moet het van apkmirror afhalen, wat erg slordig is. Het was trouwens moeilijk om Wire ook in het rijtje te plaatsen, maar omdat die onlangs beschikbaar is bij f-droid heb ik er al wat vertrouwen in. Verder heb je ook Briar, maar heel veel functies ontbreken, dan heb je nog xmpp, maar dat is een hele operatie die met ducktape aan elkaar is geplakt, deltachat is email based en tox is een batterij vreter voor de smartphone.
Het maakt een chat niet veiliger noch onveiliger, dus als ze werkelijk zeggen “onveilig” hebben ze daar imho helemaal geen gelijk in.
Een vals gevoel van veiligheid adverteren? Dat maakt het zeker weten wel onveiliger. Misschien dat jij en ik de nuances kennen, maar een hoop mensen hebben geen idee dat een self-destruct afhankelijk is van een ontvanger die lief meespeelt.
Threema heeft daar een reactie op gegeven:
'In Our opinion, current implementations of self-destructing messages provide a false sense of security due to insufficient reliability, which is why we don't provide this functionality for the time being.
However, we are aware that some users would like to see this feature, and it might be implemented in an adequate form eventually.'
Dit klinkt volgens mij net als de local push meldingen die Home Assistant recent aan hun app heeft toegevoegd. Dat is uiteraard geen chat app, maar toont volgens mij wel aan dat het geen nieuwe technologie betreft.
Tutanota heeft dit ook al lang, daar hebben ze zelfs geen permanente notificatie meer voor nodig: https://f-droid.org/en/20...cing-gcm-in-tutanota.html
Gisteren threema geüpdatet.
Er staat nu inderdaad threema push bij, net zoals bij signal.
Ooit heb ik Threema als alternatief uitgeprobeerd met een ander.
Maar de app slurpte toen energie, of gaf niet door dat er een bericht was. Dus precies waar dit een oplossing voor is.

Misschien moeten we Threema toch maar weer proberen.
Iemand ervaring met 'PRIVUS' ? - https://www.privus.global/secure-messaging-and-calls
Ben wel heel benieuwd vergeleken met Threema.
Ze maken vergelijkingen op hun website maar niet met Threema.
Privus beweerd servers te hebben in Zwitserland maar ook in Duitsland, wat niet zo feilloos is.
Ik vind ze ook niet terug op https://www.securemessagingapps.com/
Maw vind het toch niet zo waterdicht als Threema, ook hun belangen met regeringen etc.
Vind ook geen kostprijs terug.
Benieuwd naar jullie reacties :)

Op dit item kan niet meer gereageerd worden.

Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee