De API zelf kan je zien (in testversie) op
https://graph.irail.be/sncb/connections
En dit is net het punt, de data is niet gevoelig: Je krijgt steeds alle vertrekkende treinen voor een bepaalde tijdsperiode, en daar filter je client side een route, station of traject van een voertuig uit. Met andere woorden, niemand weet wat je zoekt.
Maar iedereen kan zien welke pagina's je download? Kan ook met SSL als je gaat fingerprinten op basis van loading times en pagina groottes, gezien het aantal pagina's beperkt is en ze door verschillende inhoud ook licht verschillende groottes hebben.
Het voornaamste gaat erom dat iedereen vrij is om te kiezen hoe hij/zij de data verwerkt en de data zo toegankelijk mogelijk is. Een proxy cache is de eenvoudigste manier om dit systeem te offloaden of versnellen door eender wie wilt, en los van hoe vaak het nog gebruikt wordt, lijkt het me niet zinnig om dit te gaan schrappen en HTTPS te verplichten (waar geen pluspunten tegenover staan in dit geval - er is geen data te beschermen). Cliënts die willen en geen proxy gebruiken gebruiken uiteraard HTTPS (want geen nadeel), zij die een proxy willen gebruiken zouden nadeel ondervinden van HTTPS verplichten en gebruiken dus gewoon HTTP.
Het gaat er vooral om om alles zo open mogelijk te houden, liefst met open standaarden die wijd ondersteund zijn, en niet nodeloos te schrappen "want alles moet over https". Een simpele http proxy is sneller opgezet dan een forward proxy server met self-signed SSL en whatnot. Verder zijn er nog een aantal gevallen waarbij gebruikers automatisch achter een proxy kunnen zitten (bedrijfs- of universiteitsnetwerk). In dit geval heb je automatisch caching, da's gewoon mooi meegenomen.
Ik zie heel goed het privacyprobleem van een bedrijfslogo op een site via HTTP te laden, maar in dit geval is er niets wat HTTPS zou kunnen verbergen (correct me if I'm wrong).
Cliënts kunnen smartphones, browsers, servers, raspberry pi clusters, ... zijn, whatever je kan bedenken.
MITM zie ik in dit geval niet wat er kan misgaan? Foute informatie injecteren oid? dan stuur je de client side algoritmes in de war > geen resultaat > gebruiker zoekt toevlucht tot andere informatiebron. Dan kan je evengoed die SSL verbinding jammen zodat er geen resultaat is. Ik heb zelf eens de hypotetische case uit proberen denken waarbij je iemand op de foute trein probeert te zetten, maar er gebeurt zoveel clientside dat dit niet zou lukken. (client side zal steeds correcte start en eindpunt van route nemen).
HTTPS niet verplichten voor deze API was een bewuste keuze - andere APIs van iRail verplichten HTTPS en dwingen minimum TLS versies af etc, gezien daar gevoelige data verstuurd wordt, maar in dit geval is na een soortgelijke interne discussie besloten dat HTTPS verplichten in dit geval niets toevoegt, en enkel nadelen brengt. Vandaar vind ik ook deze discussies interessant, misschien kan iemand me duidelijk fout tonen (hoe kan jij toch zien wat ik opzoek als je alles inziet, of een attack vector bedenken via MITM). Langs de andere kant hoop ik dat het mensen kan aanzetten om kritisch te blijven denken. HTTPS verplichten is in 99,9% van de gevallen fantastisch, maar in dit geval bijvoorbeeld niet.