Veiligheid Telegram

Door MBV op zaterdag 22 februari 2014 15:35 - Reacties (25)
Categorie: -, Views: 7.818

Ik heb gisteren redelijk naïef Telegram geïnstalleerd nadat een paar kennissen mij een SMS daarover hadden gestuurd. Op het eerste gezicht leken ze vrij goed te reageren op veiligheidsissues die anderen hadden gevonden, dus ik vond het de moeite waard. Toen hoorde ik wat geruchten over de veiligheid van je adresboek, en heb ik besloten eens door de code te gaan graven. Gotta love GPL :) Ik had voordat ik begon te zoeken 2 problemen gezien op internet:
- niet verifieerbare encryptie: http://unhandledexpressio...stand-back-we-know-maths/
- rare matches op adreslijst: http://mcleaver.blogspot....-verses-whatsapp.html?m=1

De encryptie zal ik me niet aan wagen, geen ervaring mee en geen tijd om het van A tot Z uit te zoeken. De adreslijst zou te doen moeten zijn, toch? Dat was wel even zoeken: de code is niet echt van hoge kwaliteit (functies van honderden regels zonder duidelijke structuur, inline classes van net zo lang, enzovoort). Na een uur zoeken heb ik het gevonden:
https://github.com/DrKLO/...tactsController.java#L421

Daar loopt hij door al je contacten heen, stopt voor- en achternaam met telefoonnummer in een pakketje (regel 430), en op regel 450 tot en met 453 wordt dat pakketje verstuurd naar hun server, met hun zelf-verzonnen encryptieprotocol. Wat die server ermee doet is mag Joost weten, maar dit komt sowieso niet overeen met hun privacy policy.

Ik heb dus een mooi mailtje getypt, en ben benieuwd naar hun reactie.
Hi Telegram,

according to your privacy policy: "Telegram uses phone numbers as unique identifiers, so that it is easy for you to switch from other messaging apps (SMS, WhatsApp, etc.) and retain your social graph. We always ask your permission before syncing your contacts."

On my phone, Galaxy S4 mini with Android 4.3 (account is +31xxxxxxxx) no such question was asked, but I do see for all my friends who is available on Telegram. The matches are plausible, and they are for contacts of which I have phone numbers. However, some blogs suggest that you also match on names, so I started digging through the code, and found this:
https://github.com/DrKLO/...tactsController.java#L421

The android app sends first name, last name and phone number for every contact in my address book instead of just the phone number you promised to use as identifier. Supposedly after asking for permission (which I don't recall giving, but that might be a simple bug) everything is sent for your server to read, using your 'secure' communication protocol (don't invent your own crypto!).

I suggest two changes to this mechanism:
- fix the bug that the android app doesn't ask for permission to share my address book. I'd probably start looking for it myself if a well-known encryption scheme was used, and the second point would be fixed
- send only a hash of the phone number to the server. This way you can't know my contacts until they sign up to telegram. You don't need anything more, so according to bullet 2 of your privacy policy you shouldn't store anything more: "Telegram only stores the data it needs to function properly — for as long as you want Telegram to function."

Until you fix the issues with the address book I won't use it, and until you start using a decent encryption scheme (http://unhandledexpressio...stand-back-we-know-maths/) I won't treat it as any more secure than WhatsApp.

Regards,
MBV

Reacties


Door Tweakers user masauri, zaterdag 22 februari 2014 15:49

dank je voor je telefoon nummer?
ik zou m der ff uithalen of censureren ;)

Door Tweakers user MBV, zaterdag 22 februari 2014 15:50

Hehe, die stond middenin de mail, dus was hem even vergeten :/

Door Tweakers user Kecin, zaterdag 22 februari 2014 16:33

Ben benieuwd naar hun reactie. Verder raar dat iedereen massaal overstapt naar een andere chatclient, alsof de data al niet is binnengehaald...

Door Tweakers user MBV, zaterdag 22 februari 2014 16:34

Volgens de privacy-policy van Whatsapp hebben ze dat nog niet binnengehaald, maar dat is erg moeilijk te controleren:
WhatsappHack: Facebook & WhatsApp: What about our private data!?

Door Tweakers user Eloy, zaterdag 22 februari 2014 19:19

Tsja. Het is en blijft natuurlijk een commercieel bedrijf. Geen filantropische instelling. (Niet dat ik het probeer goed te praten, maar de app is niet volledig gemaakt uit liefde voor hun klanten)

Ik denk dat iedereen er beter aan doet om XMPP met OTR te gebruiken, ben je ook niet afhankelijk van een enkele server, zoals het geval is bij Telegram. :)

Door Tweakers user Dreeke fixed, zaterdag 22 februari 2014 20:06

Ik heb even gekeken, maar het lezen klopt, volgens de comments om de contacten te importeren.

Het zenden kan ik niet vinden, welk statement gebruiken ze dan om de contacten te versturen? Op de 3 regels die je geeft wordt alleen een data struct gemaakt, data gecopieerd (of pointers), en een bool gezet.

Wat ze (volgens mij) doen is: de data opslaan in een SQLite database op je telefoon, en alleen als je hebt aangegeven dat je contacten mogen worden geimporteerd(heb ik niet verder uitgezocht).

Door Tweakers user MBV, zaterdag 22 februari 2014 21:09

Ik bedoelde ook 453 (ik had dus 'tot en met' moeten gebruiken, sorry), dat is de 4e regel.
code:
1
ConnectionsManager.Instance.performRpc(req, new RPCRequest.RPCRequestDelegate() {


(technisch gezien loopt die regel heel lang door met een inline class, maar goed)

performRpc staat voor 'voor Remote Procedure Call uit', oftewel: stuur een bericht naar de server en wacht op reactie. De code vanaf regel 457 wordt uitgevoerd zodra de reactie binnen is gekomen: vanaf regel 464 zie je dat de teruggekomen user id's worden omgezet in contacten voor het local cache, en dat zijn dan contacten die bekend zijn binnen Telegram.

Door Tweakers user Eegee, zaterdag 22 februari 2014 21:57

performRpc staat voor 'voor Remote Procedure Call uit', oftewel: stuur een bericht naar de server en wacht op reactie.
En heb je ook verder gekeken welke server? Een RPC-server kan ook lokaal draaien. Ik heb nog niet verder gezocht, maar volgens mij gebruiken ze RPC om met zichzelf te communiceren. En dan bedoel ik intern, dus van het programma naar het programma.

[Reactie gewijzigd op zaterdag 22 februari 2014 21:59]


Door Tweakers user Eegee, zaterdag 22 februari 2014 21:58

sorry, dubbel

[Reactie gewijzigd op zaterdag 22 februari 2014 21:58]


Door Tweakers user MBV, zaterdag 22 februari 2014 22:50

Dat zou vrij dom zijn, android heeft daar standaard mechanismes voor. Ik heb uiteraard gekeken waar android studio me naartoe stuurde voor de definitie, en er wordt de encryptie toegepast die ze op hun site hebben beschreven.

Door Tweakers user Droefsnoet, zaterdag 22 februari 2014 23:10

masauri schreef op zaterdag 22 februari 2014 @ 15:49:
dank je voor je telefoon nummer?
ik zou m der ff uithalen of censureren ;)
inderdaad, want nerds op tweakers.net worden anders platgebeld door jan en alleman!

Door Tweakers user Felyrion, zondag 23 februari 2014 01:36

ik.ben.iemand. schreef op zaterdag 22 februari 2014 @ 19:19:
Tsja. Het is en blijft natuurlijk een commercieel bedrijf. Geen filantropische instelling. (Niet dat ik het probeer goed te praten, maar de app is niet volledig gemaakt uit liefde voor hun klanten)

Ik denk dat iedereen er beter aan doet om XMPP met OTR te gebruiken, ben je ook niet afhankelijk van een enkele server, zoals het geval is bij Telegram. :)
Lees je tenminste eventjes in, Telegram is wel degelijk een non-profit organisatie.

van hun eigen FAQ:
Q: How are you going to make money out of this?

We believe in fast and secure messaging that is also 100% free.

Commercial companies frequently face the need to compromise their values for financial gain. This is why we made Telegram a non-commercial project. Telegram is not intended to bring revenue, it will never sell ads or accept outside investment. It also cannot be sold. We're not building a “user base”, we are building a messenger for the people.

Pavel Durov, who shares our vision, supplied Telegram with a generous donation through his Digital Fortress fund, so we have quite enough money for the time being. If Telegram runs out, we'll invite our users to donate or add non-essential paid options.
Nou moet je het verder maar op hun blauwe ogen geloven, maar ze zijn inderdaad ingeschreven als non-profit organisatie en zijn gefinancierd door het Digital Fortress fund, welke ook geen winstoogmerk kent.

Door Tweakers user incaz, zondag 23 februari 2014 10:21

Bovendien, een onveilige willekeurige app vind ik toch anders dan een onveilige app die het bijna-monopolie van Facebook versterkt. Gaat dus niet slechts om de encryptie of privacy, maar vooral ook om niet teveel macht bij Facebook neer te willen leggen.

Door Tweakers user B00st3r, zondag 23 februari 2014 10:27

Waar een mens zich al niet druk om kan maken ;)

Door Tweakers user WhatsappHack, maandag 24 februari 2014 04:06

incaz schreef op zondag 23 februari 2014 @ 10:21:
Bovendien, een onveilige willekeurige app vind ik toch anders dan een onveilige app die het bijna-monopolie van Facebook versterkt. Gaat dus niet slechts om de encryptie of privacy, maar vooral ook om niet teveel macht bij Facebook neer te willen leggen.
Dan zit je bij WhatsApp op dit moment nog perfect, want die deal is nog lang en breed niet afgerond; en daarna blijft het een zelfstandig bedrijf waarbij, zolang de privacy policy niet wijzigt, je niets te vrezen hebt.

Door Tweakers user Thalaron, maandag 24 februari 2014 05:52

WhatsappHack schreef op maandag 24 februari 2014 @ 04:06:
[...]zolang de privacy policy niet wijzigt, je niets te vrezen hebt.
Dit gaat echter alleen op wanneer je vertrouwen hebt in FaceBook dat zij de policy zelf ook daadwerkelijk honoreren... Ik vertrouw FaceBook daar niet echt mee overigens.

Op mijn werk heb je ook protocollen en richtlijnen. Helaas wijken daar genoeg collega's van af. Oftewel een policy hebben is leuk, maar werken ze er ook daadwerkelijk naar?

Door Tweakers user MBV, maandag 24 februari 2014 09:10

With stupid ^^. De app is niet open source, dus je kan niet zien wat ze opvragen en doorsturen naar Whatsapp. Is dat echt alleen de hash van een telefoonnummer?

Door Tweakers user Mister Advance, maandag 24 februari 2014 09:14

Goed bezig MBV!!!
Bedankt voor je harde werk :)
Waardeer dit soort posts!

Wat mij opviel:
Je kan Telegram op je tablet installeren (refererend naar je mobiele nummer).
Als je dit doet, start Telegram op:

EN LAAD HIJ JE EERDER GEVOERDE GESPREKKEN ZIEN EN AL MIJN CONTACTEN (Die niet op de tablet zelf staan).

Deze moet die toch ergens vandaan halen lijkt me zo :)
Overigens pakt die geen "beveiligde" gesprekken op, dit "lijkt" dus aardig safe?

Persoonlijk wacht ik met smacht: https://heml.is/ af.

[Reactie gewijzigd op maandag 24 februari 2014 09:15]


Door Tweakers user MBV, maandag 24 februari 2014 09:25

RTFM. Dat hij je eerder gevoerde gesprekken laat zien is by design: gesprekhistorie wordt versleuteld op hun server opgeslagen, en na verificatie met een SMS-code wordt een nieuwe client geaccepteerd. En versleutelde gesprekken worden inderdaad niet opgeslagen volgens hun FAQ, dus die kan je niet ergens anders zien.

Met 'al mijn contacten' bedoel je ook contacten van buiten Telegram? Dat is wel vaag, wat kan je daar nou aan hebben?

Door Tweakers user Mister Advance, maandag 24 februari 2014 09:32

Het adres/telefoon boek op mijn tablet is leeg.
Toch kon ik al mijn contacten zien en benaderen op mijn tablet in Telegram (deze lijst laden hij dus mee met telegram.)

Door ik, dinsdag 25 februari 2014 18:41

nou. dit is nou juist precies de reden waarom ik cyanogenmod gebruik

apptoestemmingen kan je zelf aanpassen, dus hier staat locatie,camera,contacten bewerken,bellen,sms verzenden, op UIT,mag die niet van mij

Door Tweakers user MBV, dinsdag 25 februari 2014 19:40

En dat is ook precies de reden dat ik CM op mijn telefoon ga zetten :) Liefst met een modificatie zodat hij logt wat er met die toegang wordt gedaan, beetje afstubben moet niet al te moeilijk zijn :)

Door Jongetje, woensdag 26 februari 2014 08:49

Het zou heel goed kunnen zijn dat de contacten opgeslagen worden zodat je jouw contacten behoudt wanneer je Telegram op een ander toestel installeert en je aanmeldt met het zelfde telefoonnummer. Zou ik geen slecht idee vinden, zolang het encrypted bewaard wordt. Bij Whatsapp mag je al je contacten één voor één opnieuw in je adresboek zetten als je met ze wilt appen.. of toch maar importeren vanuit een server (gmail contacts bijv). Komt dus op hetzelfde neer en zou voor mij geen reden zijn niet over te stappen op Telegram.

Door Tweakers user MBV, woensdag 26 februari 2014 10:26

Dat ben ik helemaal met je eens, voor de Telegram contacten. Maar wat moet telegram met de andere contacten? Trouwens, er zijn veel meer services om je contacten te synchroniseren, standaard staat op mijn telefoon google en samsung synchronisatie.

Nog steeds geen reactie trouwens, ze zullen het wel druk hebben.

Door steven, woensdag 26 februari 2014 15:15

Telegram werkt inderdaad perfect. Helemaal mooi is dat het de Telegram Messenger zowel voor Iphone, Android als Windows is. Probleem is vaak wel nog hoe je Telegram op je pc download. Op http://www.telegrampc.nl wordt hier uitvoering over gesproken.

Reageren is niet meer mogelijk