Privacy@Home

From
Jump to navigation Jump to search

Motivation

Mit der zunehmenden Zahl an IoT-Geräten stehen immer mehr Features für den Anwender zur Verfügung, die ihm ein hohes Maß an Komfort ermöglichen. Gleichzeitig sammeln diese IoT-Geräte Anwendungsdaten über den Nutzer, deren Weitergabe oder sogar Erfassung aus Sicht der Privatsphäre bedenklich sein kann. Um einen Kompromiss aus Nutzbarkeit und Datenschutz zu erreichen, wird in dem hier bearbeiteten Thema ein Telefunken XF32B301 Smart-TV mit Firmware-Version 2.32.4.0 im Hinblick auf Inter- und Intranetkommunikation untersucht, sodass im Anschluss passende Maßnahmen zur Kontrolle der Aufrufe im und aus dem Heimnetz getroffen werden können.

in thema 1 ist blabla, in punkt 2 wird das bearbeitet

Setup

Fernseher über Ethernet angeschlossen an Fritzbox 7580, Fritzbox über Ethernet an andere Fritzbox

Erkenntnisse

diese URLs werden aufgerufen, diese Header-Daten übermittelt das passiert, wenn man die Header filtert oder Zugriffe blockiert

Internet

unterteilung nach aktivität vornehmen:

hbbtv für beispielhafte sender

mini app store

webbrowser, https zertifikat verhalten

zuordnung url->funktionalität tabellarisch festhalten

Heimnetz

mediastreamingoptionen dlna

Gegenmaßnahmen

Filterliste verwenden

whitelist blacklist java

import java.util.Scanner;
import java.io.FileWriter;
import java.io.IOException;

// Das Tool generiert je nach Eingabe im selben Verzeichnis eine Black- oder Whitelist fuer einen Telefunken XF32B301 Smart-TV mit Firmware-Version 2.32.4.0. 
public class TelefunkenGenerator {
	
	/* Der Scanner liest die Eingaben des Nutzers in der Kommandozeile. Bei einem "j" erfolgt der Eintrag in die Datei und bei einem "n" nicht.
	 * Sonstige Eingaben zaehlen als unerwartet und sorgen dafuer, dass das Programm beendet wird. */
	private final Scanner scanner = new Scanner(System.in);
	// Der FileWriter schreibt die Domains in eine Datei, sofern auf die Datei schreibend zugegriffen werden kann.
	private FileWriter writer;
	
	/**
	 * In der Main-Methode wird je nach Wunsch des Nutzers eine Blacklist oder Whitelist generiert, die seinen Beduerfnissen entspricht. 
	 * @param args Zu diesem Zweck irrelevante Kommandozeilenparameter
	 */
	public static void main(String[] args) {
		TelefunkenGenerator generator = new TelefunkenGenerator();
		generator.starteTool();
		
		String ersteEingabe = generator.scanner.next();
		if (ersteEingabe.equals("j")) {
			// Blacklist soll generiert werden
			generator.erstelleBlacklist(generator.scanner);
		} else if (ersteEingabe.equals("n")) {
			// Whitelist soll generiert werden
			generator.erstelleWhitelist(generator.scanner);
		} else {
			generator.beenden("Unerwartete Eingabe. Das Programm wird jetzt beendet", generator.scanner);
		}
	}

	/**
	 * Informiert den Nutzer ueber den Zweck des Tools und fragt danach, welche Filterliste erstellt werden soll.
	 */
	private void starteTool() {
		System.out.println("Dieses Tool erstellt fuer Ihren Telefunken Smart-TV eine Black- oder Whitelist, die in eine Fritzbox importiert werden kann.");
		System.out.println("Soll eine Blacklist (j) oder eine Whitelist (n) erstellt werden? [j/n]");
	}

	/**
	 * Diese Methode fuegt der Black-/Whitelist bei der Eingabe "j" die gewuenschten Domains hinzu, sodass diese blockiert/erlaubt werden.
	 * @param frage An den Nutzer gerichtete Frage, welches Feature verboten (Blacklist) / erlaubt (Whitelist) sein soll
	 * @param fqdn Domains, die fuer das betrachtete Feature relevant sind
	 */
	private void hinzufuegen(String frage, String... fqdn) {
		System.out.println(frage+" [j/n]");
		String eingabe = scanner.next(); 
		if (eingabe.equals("j")) {
			// Nutzer hat bestaetigt, dass die Eintraege aus fqdn hinzugefuegt werden sollen
			for (String domain : fqdn) {
				try {
					writer.write(domain+"\n");
				} catch (IOException e) {
					beenden("Es ist ein Problem beim Schreiben der Datei aufgetreten. Das Programm wird jetzt beendet", scanner);
					return;
				}
			}
		} else if (eingabe.equals("n")) {
			// Kein Eintrag wird hinzugefuegt
		} else {
			beenden("Unerwartete Eingabe. Das Programm wird jetzt beendet", writer, scanner);
		}
	}

	/**
	 * Erstellt im selben Verzeichnis wie dieses Programm eine Blacklist als Textdatei.
	 * @param scanner Wird verwendet, um die Eingaben des Nutzers zu erfahren und passend darauf zu reagieren
	 */
	private void erstelleBlacklist(Scanner scanner) {
		try {
			writer = new FileWriter("Blacklist_" + System.currentTimeMillis() + ".txt");
		} catch (IOException e) {
			beenden("Es ist ein Problem beim Schreiben der Datei aufgetreten. Das Programm wird jetzt beendet", scanner);
			return;
		}

		hinzufuegen("Soll die Nutzung von Online-Features unterbunden werden?",
				"www.portaltv.tv"); // nur wenn beim Anschalten des TVs der Zugriff auf www.portaltv.tv erfolgreich ist, denkt der TV, er sei verbunden mit Internet, ansonsten nicht
		hinzufuegen("Soll der Aufruf der App-Liste, die unter Menu -> Internet -> Smart-TV gefunden werden kann, blockiert werden?",
				"mb100.portaltv.tv"); // fuer Menu -> Internet -> Smart TV muss www.portal.tv und mb100.portaltv.tv aktiviert sein - es wird nämlich mb100.portaltv.tv aufgerufen
		hinzufuegen("Soll die NTP-Zeitsynchronisation verboten werden?",
				"europe.pool.ntp.org",
				"go.microsoft.com",
				"secureclock.playready.microsoft.com");
		hinzufuegen("Sollen Tracking-Webseiten blockiert werden?",
				"de.ioam.de",
				"script.ioam.de",
				"logc406.xiti.com",
				"logc407.xiti.com",
				"www.google-analytics.com",
				"www.googletagmanager.com",
				"79423.analytics.edgekey.net",
				"ma1249-r.analytics.edgesuite.net",
				"ma140-r.analytics.edgesuite.net",
				"de.sitestat.com",
				"tracksrv.zdf.de");
		hinzufuegen("Sollen nicht zwingend notwendige Content Delivery Networks blockiert werden?",
				"maxcdn.bootstrapcdn.com", // für 1-2-3.tv verwendet, aber im Grunde überflüssig
				"cdn-gl.imrworldwide.com");
		
		hinzufuegen("Soll ARD-alpha nicht mehr über das Internet empfangen werden dürfen?",
				"brdashdvbt2-i.akamaihd.net");
		hinzufuegen("Soll 1-2-3.tv nicht mehr über das Internet empfangen werden dürfen?",
				"connect.media-broadcast.com", // die Navigation für freenet connect-Sender
				"freenettvcon07-i.akamaihd.net"); // das eigentliche Hosting der Videodateien
		hinzufuegen("Sollen die HbbTV-Features für den Fernsehsender Das Erste blockiert werden?",
				"itv.ard.de",
				"itv2.ard.de",
				"hbbtv.daserste.de",
				"www.daserste.de",
				"ctv-videos.daserste.de");
		hinzufuegen("Sollen die HbbTV-Features für den Fernsehsender ZDF blockiert werden?",
				"hbbtv.zdf.de",
				"www.zdf.de",
				"epg-image.zdf.de",
				"tvdl.zdf.de");
		hinzufuegen("Sollen die HbbTV-Features für den Fernsehsender rbb Berlin blockiert werden?",
				"hbbtv.rbb-online.de",
				"hbbtv.ardmediathek.de",
				"rbbmediapmdp-a.akamaihd.net",
				"pd.irt.de");
		
		/*hinzufuegen("Sollen Firmware-Updates nicht mehr gesucht und heruntergeladen werden duerfen?",
				"vstlsrv.com"); // Firmware-Update erfolgt ueber FTP, also sinnlos, das zu blockieren in Fritzbox-Filterliste, denn das greift nicht*/
		
		/* Die obige Liste kann bei Bedarf aktualisiert oder hier erweitert werden */

		beenden("Die Blacklist wurde erfolgreich generiert. Das Programm wird jetzt beendet", writer, scanner);
	}

	/**
	 * Erstellt im selben Verzeichnis wie dieses Programm eine Whitelist als Textdatei.
	 * @param scanner Wird verwendet, um die Eingaben des Nutzers zu erfahren und passend darauf zu reagieren
	 */
	private void erstelleWhitelist(Scanner scanner) {
		try {
			writer = new FileWriter("Whitelist_" + System.currentTimeMillis() + ".txt");
		} catch (IOException e) {
			beenden("Es ist ein Problem beim Schreiben der Datei aufgetreten. Das Programm wird jetzt beendet", scanner);
			return;
		}

		hinzufuegen("Soll die Nutzung von Online-Features möglich sein?",
				"www.portaltv.tv");
		hinzufuegen("Soll der Aufruf der App-Liste, die unter Menu -> Internet -> Smart-TV gefunden werden kann, weiterhin funktionieren?",
				"mb100.portaltv.tv");
		hinzufuegen("Soll die NTP-Zeitsynchronisation erlaubt sein?",
				"europe.pool.ntp.org",
				"go.microsoft.com",
				"secureclock.playready.microsoft.com");
		hinzufuegen("Sollen Tracking-Webseiten aufgerufen werden können?",
				"de.ioam.de",
				"script.ioam.de",
				"logc406.xiti.com",
				"logc407.xiti.com",
				"www.google-analytics.com",
				"www.googletagmanager.com",
				"79423.analytics.edgekey.net",
				"ma1249-r.analytics.edgesuite.net",
				"ma140-r.analytics.edgesuite.net",
				"de.sitestat.com",
				"tracksrv.zdf.de");
		hinzufuegen("Sollen nicht zwingend notwendige Content Delivery Networks erlaubt werden?",
				"maxcdn.bootstrapcdn.com", // für 1-2-3.tv verwendet, aber im Grunde überflüssig
				"cdn-gl.imrworldwide.com");
		
		hinzufuegen("Soll ARD-alpha über das Internet empfangen werden dürfen?",
				"brdashdvbt2-i.akamaihd.net");
		hinzufuegen("Soll 1-2-3.tv  über das Internet empfangen werden dürfen?",
				"connect.media-broadcast.com", // die Navigation für freenet connect-Sender
				"freenettvcon07-i.akamaihd.net"); // das eigentliche Hosting der Videodateien
		hinzufuegen("Sollen die HbbTV-Features für den Fernsehsender Das Erste erlaubt werden?",
				"itv.ard.de",
				"itv2.ard.de",
				"hbbtv.daserste.de",
				"www.daserste.de",
				"ctv-videos.daserste.de");
		hinzufuegen("Sollen die HbbTV-Features für den Fernsehsender ZDF erlaubt werden?",
				"hbbtv.zdf.de",
				"www.zdf.de",
				"epg-image.zdf.de",
				"tvdl.zdf.de");
		hinzufuegen("Sollen die HbbTV-Features für den Fernsehsender rbb Berlin erlaubt werden?",
				"hbbtv.rbb-online.de",
				"hbbtv.ardmediathek.de",
				"rbbmediapmdp-a.akamaihd.net",
				"pd.irt.de");

		beenden("Die Whitelist wurde erfolgreich generiert. Das Programm wird jetzt beendet", writer, scanner);
	}

	/**
	 * Beendet die Ausfuehrung des Programms mit einer passenden Ausgabe.
	 * @param ausgabe Text, der dem Nutzer zum Abschluss der Programmausfuehrung mitgeteilt werden soll
	 * @param writer Objekt, das vorhin in eine Datei geschrieben hat und hier geschlossen wird
	 * @param scanner Objekt, das vorhin Nutzereingaben erkannt hat und in einer Hilfsmethode geschlossen wird
	 */
	private void beenden(String ausgabe, FileWriter writer, Scanner scanner) {
		try {
			writer.close();
		} catch (IOException e) {
			beenden("Es ist ein Problem beim Schreiben der Datei aufgetreten. Das Programm wird jetzt beendet", scanner);
			return;
		}
		beenden(ausgabe, scanner);
	}
	/**
	 * Hilfsmethode fuer das Beenden des Programms, die aufgerufen wird, wenn kein FileWriter vorhanden ist, den man schliessen koennte, oder ein Problem mit diesem aufgetreten ist.
	 * @param ausgabe Text, der dem Nutzer zum Abschluss der Programmausfuehrung mitgeteilt wird
	 * @param scanner Objekt, das vorhin Nutzereingaben erkannt hat und hier geschlossen wird
	 */
	private void beenden(String ausgabe, Scanner scanner) {
		System.out.println(ausgabe);
		scanner.close();
		System.exit(-1);
	}
}
Generieren einer Blacklist
Fertig generierte Blacklist

Gastzugang aktivieren

separierung, dann funzt aber medienstreaming nicht mehr Intranet-Kommunikation verbieten

Automatische Suche nach Medienservern im Heimnetzwerk

Netzwerkanwendungen sperren

ftp; zeigen, wie das geht in fritzbox & dass ports angepasst werden müssen

Menüpunkt zum Aktivieren des Gastzugangs in der Fritzbox

Fazit