Secure Internet Live Conferencing Christian Horchert <[email protected]> Frank Becker <[email protected]> Chaostreff Dresden http://www.c3d2.de 2004-03-07, 6. Chemnitzer Linux Tag © Chaostreff Dresden (c3d2) This presentation is protected by the GNU General Public License version 2 or any newer Was ist SILC? Netzwerkprotokoll für authentifizierte und verschlüsselte Live Kommunikation Unterstützt Chat- und Instant Messenger Systeme. /join linuxtag Seite 2 of 30 Agenda ● Geschichte und Zukunft von SILC ● Kommunikationsprotokoll ● SILC-Nutzung ● Software ● Silc Netzwerk Seite 3 of 30 Geschichte/Entwicklung ● entwickelt von Pekka Riikonen, seit '96 ● Entwicklung mehrmals unterbrochen ● 1. Veröffentlichung 2000, ● SILC-Client 1.0 Okt. 2003 ● z. Zt. “Reifung” des Protokolls ● Protokoll specs bei IETF eingereicht, momentan in “draft phase” (wird bald RFC) ● Version 1 von silcd und toolkit wird bald ... Seite 4 of 30 Das Protokoll Seite 5 of 30 Protokoll wichtigste Merkmale: ● alle Nachrichten sind verschlüsselt und authentifiziert ● Schlüssel von Server oder Nutzer verwaltet ● Nachrichten über Server-Netz geschickt ● Dateien mittels sftp (P2P) Seite 6 of 30 Netzwerk Topologie normaler Client Traffic lokale Nutzer Session-Keys joined Channels andere info cached Client Client (unique ID) SILC key exchange Connection Auth Server Client Seite 7 of 30 Netzwerk Topologie Client-Client traffic Client 1 SILC key exchange Connection Auth Client 2 Server pre-shared key Client Seite 8 of 30 Netzwerk Topologie Client Server-Router Traffic, Cell Server Client Server (unique server ID) Client SILC key exchange Connection Auth Router Client Server Backup-Router Seite 9 of 30 Netzwerk Topologie Router-Router Traffic Router Router Router Hybrid Ring Mesh Router Router Router Seite 10 of 30 Paket Format Überblick IP Header TCP Header SILC Header Packet Data session key session or other key HMAC HMAC, integrety ensured SILC payload Seite 11 of 30 SILC Key Exchange (SKE) (1) Initiator sendet seine Methoden (cipher, hash Funktion, HMAC Funktion, Public Key Algorithmus) (2)Antwortender wählt Methoden (3)Diffie-Hellman Schlüsselaustausch zusätzlich Austausch öffentlicher Schlüssel (4)Mutual authentication mode ->: Session key Seite 12 of 30 SILC Verbindungsauthentifizierung ● erfolgt gleich nach SKE ● Autentifizierung der Verbindungsparteien (z.B. Client zu Server) ● basierend auf: Passphrase (packet encrypted) oder Public-Key (Challenge an Client gesendet) ->: authentifizierter Client Seite 13 of 30 Private Nachricht mit Session Keys Client A Server X Server Y Client B Nachricht decrypt & encrypt Nachricht decrypt decrypt & & encrypt encrypt session key SILC Network session key decrypt decrypt & & encrypt encrypt decrypt & encrypt session key Seite 14 of 30 Private Nachricht mit Private Key Client A Server X Server Y Nachricht decrypt & encrypt Client B Nachricht message pass trough SILC Network message pass trough decrypt & encrypt key Seite 15 of 30 Channels ● benannte Gruppe, alle teilnehmenden Clients empfangen die selben Nachrichten ● Channel Namen sind eindeutig, max. 256 Zeichen Seite 16 of 30 ● Channel Nachrichtenzustellung Alle Nachrichten in einer Cell sind verschlüsselt und authentifiziert mit einem Channel key ● Nachrichten zwischen Cells sind mit dem Session Key verschlüsselt ● regelmäßiges Re-keying ● zusätzl.: Key wird neu generiert, wenn Channel gegründet wird oder Client dazu kommt/verläßt ● Private Keys sind möglich(passphrase, publickey) Seite 17 of 30 Channel Nachrichtenzustellung Cell 1 (Channel Key 1) Client Server Client Client Router decrypt encrypt message message Server Cell 2 (Channel Key 2) SILC Network Client Client Server Router decrypt encrypt message message Seite 18 of 30 SILC-Nutzung Seite 19 of 30 SILC-Nutzung: Nicks ● keine eindeutigen Nickname ● keine Nick Services (um Nick wars zu verhindern) ● Authentifiziert und Identifiziert durch Public Key ● Attribute und Present Modi ● andere nützliche Modi – blocking non op msgs – blocking private msgs – marking / blocking bot msgs – reject watching Seite 20 of 30 SILC-Nutzung: Channels ● joining und founding eines channels (Backup vom key!!!) /cmode +f channel ● keine channel services nötig (takeovers sind sehr schwierig) ● kann privat, geheim, moderiert, nur invite, limitiert sein ● channel keys setzten Seite 21 of 30 SILC-Nutzung: Channels mit Geheimnis ● key besorgen per mail, Telefon, ... /JOIN channel /CMODE +k /KEY CHANNEL channelname set secret ● Muss von jedem Client gemacht werden ● => NutzerD (und Server Admin) kann keine Nachrichten mitlesen Seite 22 of 30 SILC-Nutzung: Channel mit Public Channel Keys ● Key per Mail besorgen, /getkey, ... /JOIN channel /CMODE channel +C +pubkeyUserA \ +pubkeyUserB +pubkeyUserC ● NutzerB und NutzerC join w/ /JOIN channel -auth ● => NutzerD (und Server Admin) können nicht mitlesen Seite 23 of 30 SILC-Nutzung: Messaging ● Nachrichten können signiert werden (mit /SMSG) [?] fukami: signed msg, you don't have the key [S] fukami: signed msg, you've got the key ● MIME Nachrichten /SCRIPT LOAD silc-mime.pl /MMSG -CHANNEL channelname path/to/file ● private Nachrichten mit Key schützen Seite 24 of 30 SILC-Nutzung: Absicherung privater Nachrichten ● Shared Secret per Telefon, Mail, Fax... /KEY MSG UserA set secret /KEY MSG UserB set secret ● => gesicherte Kommunikation Seite 25 of 30 SILC-Nutzung: Datei-Transfer ● Dateiaustausch (p2p) mit sftp /FILE SEND path/to/file UserB /FILE ACCEPT UserB /FILE CLOSE (um Session sofort zu beenden) mit -no-listener falls hinter NAT Seite 26 of 30 Programme und Frameworks ● silcd ● silc-client ● silc-toolkit ● Silky ● gaim ● jsilc ● samadhi Seite 27 of 30 SILC Netzwerk ● Verbinde Dich zu einem Server in Deiner Nähe ● silc.silcnet.net macht Round-Robin DNS mit allen SILCNet Servern ● mehrere Server Verbindungen sind möglich Seite 28 of 30 einige Credits ● ● ● ● ● Pekka Riikonen (Hauptentwickler, SILCNet Admin, gaim-Plugin) Timo "cras" Sirainen (Irssi/SILC client) Jochen "c0ffee" Eisinger (SILC plugin/ Silc-Client Maintainer) Toni Willberg (Silky) Giovanni Giacobbi (silcconfig,silclog, silcd bugfixes, RPM Pakete) ● Lubomir "salo" Sedlacik (NetBSD Pakete, Projekt Server Admin) ● Tamas Szerb (Debian Packete) ● ● ● Mika "Bostik" Boström (Man-pages, Fehlersuche) Juha Räsänen (ElGamal Implementierung) Ville Räsänen (Client-teil des STATS-Kommandos, Einige ROBXOdoc Formatierungen, Fehlersuche) ● Patrik Weiskircher (whois Attribute, Fehlersuche) Seite 29 of 30 Links ● SILC-Seite: Anleitungen, FAQs, White Papers, vorkompilierte Pakete von silcd, silc-client (rpm, deb) und vieles mehr: http://silcnet.org ● Irssi-plugin: http://penguin-breeder.org/silc/ ● Silky: http://silky.sf.net ● Ports for NetBSD, FreeBSD, OpenBSD, Darwin Seite 30 of 30