diff options
author | psyc://loupsycedyglgamf.onion/~lynX <ircs://psyced.org/youbroketheinternet> | 2017-11-15 18:27:21 +0000 |
---|---|---|
committer | psyc://loupsycedyglgamf.onion/~lynX <ircs://psyced.org/youbroketheinternet> | 2017-11-15 18:27:21 +0000 |
commit | 586cee5b5159a4e640eaf8632c9b1217e5fedb77 (patch) | |
tree | 230c46fd2ba4dd8ad5b94fd0265c375b27915f29 | |
parent | 16a776b6a91f0d8565031643c0bb22a4a0cd45d7 (diff) | |
download | presentations-586cee5b5159a4e640eaf8632c9b1217e5fedb77.tar.gz presentations-586cee5b5159a4e640eaf8632c9b1217e5fedb77.zip |
some old secushare slides
-rw-r--r-- | 2013-youbroketheinternet-event/lynx_slides_secushare.pdf (renamed from 2013-youbroketheinternet-event/lynx_slides_youbroketheinternet.pdf) | bin | 262135 -> 262135 bytes | |||
-rw-r--r-- | grothoff/dc10-grothoff-gnunet.pdf (renamed from dc10-grothoff-gnunet.pdf) | bin | 153007 -> 153007 bytes | |||
-rw-r--r-- | grothoff/grothoff_30c3gns.pdf (renamed from grothoff_30c3gns.pdf) | bin | 2013211 -> 2013211 bytes | |||
-rw-r--r-- | grothoff/grothoff_30c3panel.pdf (renamed from grothoff_30c3panel.pdf) | bin | 655317 -> 655317 bytes | |||
-rw-r--r-- | grothoff/grothoff_architecture-of-gnunet_psc2015.pdf (renamed from grothoff_architecture-of-gnunet_psc2015.pdf) | bin | 733448 -> 733448 bytes | |||
-rw-r--r-- | grothoff/grothoff_armstattinit.pdf (renamed from grothoff_armstattinit.pdf) | bin | 360277 -> 360277 bytes | |||
-rw-r--r-- | grothoff/grothoff_bigdata-littledata-nomoredata_tum2017.pdf (renamed from grothoff_bigdata-littledata-nomoredata_tum2017.pdf) | bin | 3055015 -> 3055015 bytes | |||
-rw-r--r-- | grothoff/grothoff_cryptography-in-gnunet_ecc2015.pdf (renamed from grothoff_cryptography-in-gnunet_ecc2015.pdf) | bin | 4085326 -> 4085326 bytes | |||
-rw-r--r-- | grothoff/grothoff_daad2014.pdf (renamed from grothoff_daad2014.pdf) | bin | 1701433 -> 1701433 bytes | |||
-rw-r--r-- | grothoff/grothoff_daghstuhl2014.pdf (renamed from grothoff_daghstuhl2014.pdf) | bin | 4809960 -> 4809960 bytes | |||
-rw-r--r-- | grothoff/grothoff_decentralizing-privacy-reserving-network-applications_snt2017.pdf (renamed from grothoff_decentralizing-privacy-reserving-network-applications_snt2017.pdf) | bin | 2517676 -> 2517676 bytes | |||
-rw-r--r-- | grothoff/grothoff_entropique2015.pdf (renamed from grothoff_entropique2015.pdf) | bin | 5041397 -> 5041397 bytes | |||
-rw-r--r-- | grothoff/grothoff_ghm2013.pdf (renamed from grothoff_ghm2013.pdf) | bin | 451643 -> 451643 bytes | |||
-rw-r--r-- | grothoff/grothoff_ghm2014.pdf (renamed from grothoff_ghm2014.pdf) | bin | 986601 -> 986601 bytes | |||
-rw-r--r-- | grothoff/grothoff_gibu2010.pdf (renamed from grothoff_gibu2010.pdf) | bin | 609244 -> 609244 bytes | |||
-rw-r--r-- | grothoff/grothoff_gns_jcsa2016.pdf (renamed from grothoff_gns_jcsa2016.pdf) | bin | 691526 -> 691526 bytes | |||
-rw-r--r-- | grothoff/grothoff_gns_jhu2016.pdf (renamed from grothoff_gns_jhu2016.pdf) | bin | 1790844 -> 1790844 bytes | |||
-rw-r--r-- | grothoff/grothoff_gns_loria2015.pdf (renamed from grothoff_gns_loria2015.pdf) | bin | 5416540 -> 5416540 bytes | |||
-rw-r--r-- | grothoff/grothoff_gnunet2015.pdf (renamed from grothoff_gnunet2015.pdf) | bin | 8380152 -> 8380152 bytes | |||
-rw-r--r-- | grothoff/grothoff_gnunet2017.pdf (renamed from grothoff_gnunet2017.pdf) | bin | 7991367 -> 7991367 bytes | |||
-rw-r--r-- | grothoff/grothoff_innovation-comlexity-risk-and-trust_mapping2016.pdf (renamed from grothoff_innovation-comlexity-risk-and-trust_mapping2016.pdf) | bin | 3253632 -> 3253632 bytes | |||
-rw-r--r-- | grothoff/grothoff_inria2013.pdf (renamed from grothoff_inria2013.pdf) | bin | 1231955 -> 1231955 bytes | |||
-rw-r--r-- | grothoff/grothoff_inria2013rennes.pdf (renamed from grothoff_inria2013rennes.pdf) | bin | 2093042 -> 2093042 bytes | |||
-rw-r--r-- | grothoff/grothoff_lugcamp2013mhd.pdf (renamed from grothoff_lugcamp2013mhd.pdf) | bin | 111574 -> 111574 bytes | |||
-rw-r--r-- | grothoff/grothoff_lugcamp2015.pdf (renamed from grothoff_lugcamp2015.pdf) | bin | 8437851 -> 8437851 bytes | |||
-rw-r--r-- | grothoff/grothoff_mapping2014.pdf (renamed from grothoff_mapping2014.pdf) | bin | 7165459 -> 7165459 bytes | |||
-rw-r--r-- | grothoff/grothoff_mhd2013gpn.pdf (renamed from grothoff_mhd2013gpn.pdf) | bin | 96085 -> 96085 bytes | |||
-rw-r--r-- | grothoff/grothoff_netwerksicherheit-probleme-und-lösungsansätze_npo2016.pdf (renamed from grothoff_netwerksicherheit-probleme-und-lösungsansätze_npo2016.pdf) | bin | 6325982 -> 6325982 bytes | |||
-rw-r--r-- | grothoff/grothoff_oii2014.pdf (renamed from grothoff_oii2014.pdf) | bin | 1849114 -> 1849114 bytes | |||
-rw-r--r-- | grothoff/grothoff_prism-gnunet-berlin.pdf (renamed from grothoff_prism-gnunet-berlin.pdf) | bin | 1175513 -> 1175513 bytes | |||
-rw-r--r-- | grothoff/grothoff_privacy2009.pdf (renamed from grothoff_privacy2009.pdf) | bin | 772609 -> 772609 bytes | |||
-rw-r--r-- | grothoff/grothoff_rmv608.pdf (renamed from grothoff_rmv608.pdf) | bin | 216596 -> 216596 bytes | |||
-rw-r--r-- | grothoff/grothoff_slides-87-httpbis.pdf (renamed from grothoff_slides-87-httpbis.pdf) | bin | 656775 -> 656775 bytes | |||
-rw-r--r-- | grothoff/grothoff_social-networks-vs-security-and-privacy_bfh2017.pdf (renamed from grothoff_social-networks-vs-security-and-privacy_bfh2017.pdf) | bin | 1363667 -> 1363667 bytes | |||
-rw-r--r-- | grothoff/grothoff_the-gnu-name-system-a-pki-for-social-movements-in-the-age-of-universal-surveillance_-ccc2017ch.pdf (renamed from grothoff_the-gnu-name-system-a-pki-for-social-movements-in-the-age-of-universal-surveillance_-ccc2017ch.pdf) | bin | 1343312 -> 1343312 bytes | |||
-rw-r--r-- | grothoff/grothoff_towards-secure-name-resolution-on-the-internet_ndss2017slides.pdf (renamed from grothoff_towards-secure-name-resolution-on-the-internet_ndss2017slides.pdf) | bin | 495677 -> 495677 bytes | |||
-rw-r--r-- | grothoff/grothoff_tsvwg2015.pdf (renamed from grothoff_tsvwg2015.pdf) | bin | 3331452 -> 3331452 bytes | |||
-rw-r--r-- | grothoff/grothoff_tue2015.pdf (renamed from grothoff_tue2015.pdf) | bin | 5551019 -> 5551019 bytes | |||
-rw-r--r-- | grothoff/grothoff_uva2013.pdf (renamed from grothoff_uva2013.pdf) | bin | 1200167 -> 1200167 bytes | |||
-rw-r--r-- | secushare-old-html/2011-CBase.slides.html | 297 | ||||
-rw-r--r-- | secushare-old-html/2011-CCCamp.slides.html | 262 | ||||
-rw-r--r-- | secushare-old-html/2011-FSW.slides.html | 152 | ||||
-rw-r--r-- | secushare-old-html/2012-02-Cbase.slides.html | 369 | ||||
-rw-r--r-- | secushare-old-html/2012-08-MOCA.slides.html | 375 | ||||
-rw-r--r-- | secushare-old-html/2012-11-digiyards.slides.pht | 450 | ||||
-rw-r--r-- | secushare-old-html/2012-Easterhegg.slides.html | 169 | ||||
-rw-r--r-- | secushare-old-html/2012-UnlikeUs.slides.html | 147 | ||||
-rw-r--r-- | secushare-old-html/UI/.thumbnails/greensquares.jpg.png | bin | 0 -> 15538 bytes | |||
-rw-r--r-- | secushare-old-html/UI/.thumbnails/squares.jpg.png | bin | 0 -> 20809 bytes | |||
-rw-r--r-- | secushare-old-html/UI/blank.gif | bin | 0 -> 49 bytes | |||
-rw-r--r-- | secushare-old-html/UI/dark/pretty.css | 117 | ||||
-rw-r--r-- | secushare-old-html/UI/darken.png | bin | 0 -> 124 bytes | |||
-rw-r--r-- | secushare-old-html/UI/framing.css | 23 | ||||
-rw-r--r-- | secushare-old-html/UI/greensquares.jpg | bin | 0 -> 248804 bytes | |||
-rw-r--r-- | secushare-old-html/UI/iepngfix.htc | 42 | ||||
-rw-r--r-- | secushare-old-html/UI/lite/pretty.css | 114 | ||||
-rw-r--r-- | secushare-old-html/UI/opera.css | 7 | ||||
-rw-r--r-- | secushare-old-html/UI/outline.css | 15 | ||||
-rw-r--r-- | secushare-old-html/UI/pretty.css | 117 | ||||
-rw-r--r-- | secushare-old-html/UI/print.css | 1 | ||||
-rw-r--r-- | secushare-old-html/UI/s5-core.css | 9 | ||||
-rw-r--r-- | secushare-old-html/UI/slides.css | 3 | ||||
-rw-r--r-- | secushare-old-html/UI/slides.js | 552 | ||||
-rw-r--r-- | secushare-old-html/UI/squares.jpg | bin | 0 -> 299681 bytes | |||
-rw-r--r-- | secushare-old-html/UI/stars_bg.jpg | bin | 0 -> 24180 bytes | |||
-rw-r--r-- | secushare-old-html/img/cloud.png | bin | 0 -> 34743 bytes | |||
-rw-r--r-- | secushare-old-html/img/gfx-cloud.png | bin | 0 -> 42480 bytes | |||
-rw-r--r-- | secushare-old-html/img/gfx-multicast.png | bin | 0 -> 44836 bytes | |||
-rw-r--r-- | secushare-old-html/img/gfx-unicast.png | bin | 0 -> 37027 bytes | |||
-rw-r--r-- | secushare-old-html/img/gfx.odg | bin | 0 -> 15871 bytes | |||
-rw-r--r-- | secushare-old-html/img/gfx.png | bin | 0 -> 210165 bytes | |||
-rw-r--r-- | secushare-old-html/img/gfx.svg | 910 | ||||
-rw-r--r-- | secushare-old-html/img/multicast.png | bin | 0 -> 89121 bytes | |||
-rwxr-xr-x | secushare-old-html/img/phase0.jpeg | bin | 0 -> 58638 bytes | |||
-rwxr-xr-x | secushare-old-html/img/phase1.jpeg | bin | 0 -> 60026 bytes | |||
-rwxr-xr-x | secushare-old-html/img/phase2.jpeg | bin | 0 -> 67018 bytes | |||
-rwxr-xr-x | secushare-old-html/img/phase3.jpeg | bin | 0 -> 89626 bytes | |||
-rw-r--r-- | secushare-old-html/img/secushare-0444.png | bin | 0 -> 26484 bytes | |||
-rw-r--r-- | secushare-old-html/img/unicast.png | bin | 0 -> 61442 bytes | |||
-rw-r--r-- | secushare-old-latex/.init.el | 61 | ||||
-rw-r--r-- | secushare-old-latex/.setup | 73 | ||||
-rw-r--r-- | secushare-old-latex/.setup-back | 9 | ||||
-rw-r--r-- | secushare-old-latex/30c3-slides.README | 7 | ||||
-rw-r--r-- | secushare-old-latex/Makefile | 27 | ||||
-rw-r--r-- | secushare-old-latex/abbrevs | 23 | ||||
-rw-r--r-- | secushare-old-latex/abstract | 20 | ||||
-rw-r--r-- | secushare-old-latex/arch | 203 | ||||
-rw-r--r-- | secushare-old-latex/arch.dia | bin | 0 -> 2194 bytes | |||
-rw-r--r-- | secushare-old-latex/arch.png | bin | 0 -> 13291 bytes | |||
-rw-r--r-- | secushare-old-latex/clients | 116 | ||||
-rw-r--r-- | secushare-old-latex/conclusion | 37 | ||||
-rw-r--r-- | secushare-old-latex/context.dia | bin | 0 -> 1882 bytes | |||
-rw-r--r-- | secushare-old-latex/context.png | bin | 0 -> 9812 bytes | |||
-rw-r--r-- | secushare-old-latex/gnunet-h.png | bin | 0 -> 40591 bytes | |||
-rw-r--r-- | secushare-old-latex/gnunet.dia | bin | 0 -> 4404 bytes | |||
-rw-r--r-- | secushare-old-latex/gnunet.png | bin | 0 -> 38946 bytes | |||
-rw-r--r-- | secushare-old-latex/impl | 392 | ||||
-rw-r--r-- | secushare-old-latex/intro | 25 | ||||
-rw-r--r-- | secushare-old-latex/ref.bib | 116 | ||||
-rw-r--r-- | secushare-old-latex/req | 129 | ||||
-rw-r--r-- | secushare-old-latex/secushare | 56 | ||||
-rw-r--r-- | secushare-old-latex/secushare.pdf | bin | 0 -> 377023 bytes | |||
-rw-r--r-- | secushare-old-latex/shot-irssyc.png | bin | 0 -> 3796 bytes | |||
-rw-r--r-- | secushare-old-latex/shot-secushare.png | bin | 0 -> 34831 bytes | |||
-rw-r--r-- | secushare-old-latex/slides.pdf | bin | 0 -> 424193 bytes | |||
-rw-r--r-- | secushare-old-latex/syntax | 46 | ||||
-rw-r--r-- | secushare-old-orgmode/2012-29C3.slides.org | 168 | ||||
-rw-r--r-- | secushare-old-orgmode/2012-SIGINT.slides.org | 168 | ||||
-rw-r--r-- | secushare-old-orgmode/2012-SIGINT.slides.pdf | bin | 0 -> 209268 bytes | |||
-rw-r--r-- | secushare-old-orgmode/2012-eth0.slides.org | 168 | ||||
-rw-r--r-- | secushare-old-orgmode/slides.org | 318 |
111 files changed, 6293 insertions, 0 deletions
diff --git a/2013-youbroketheinternet-event/lynx_slides_youbroketheinternet.pdf b/2013-youbroketheinternet-event/lynx_slides_secushare.pdf index 53777e7..53777e7 100644 --- a/2013-youbroketheinternet-event/lynx_slides_youbroketheinternet.pdf +++ b/2013-youbroketheinternet-event/lynx_slides_secushare.pdf | |||
Binary files differ | |||
diff --git a/dc10-grothoff-gnunet.pdf b/grothoff/dc10-grothoff-gnunet.pdf index 465540f..465540f 100644 --- a/dc10-grothoff-gnunet.pdf +++ b/grothoff/dc10-grothoff-gnunet.pdf | |||
Binary files differ | |||
diff --git a/grothoff_30c3gns.pdf b/grothoff/grothoff_30c3gns.pdf index a6b6002..a6b6002 100644 --- a/grothoff_30c3gns.pdf +++ b/grothoff/grothoff_30c3gns.pdf | |||
Binary files differ | |||
diff --git a/grothoff_30c3panel.pdf b/grothoff/grothoff_30c3panel.pdf index 97c2c3e..97c2c3e 100644 --- a/grothoff_30c3panel.pdf +++ b/grothoff/grothoff_30c3panel.pdf | |||
Binary files differ | |||
diff --git a/grothoff_architecture-of-gnunet_psc2015.pdf b/grothoff/grothoff_architecture-of-gnunet_psc2015.pdf index 3188a61..3188a61 100644 --- a/grothoff_architecture-of-gnunet_psc2015.pdf +++ b/grothoff/grothoff_architecture-of-gnunet_psc2015.pdf | |||
Binary files differ | |||
diff --git a/grothoff_armstattinit.pdf b/grothoff/grothoff_armstattinit.pdf index 142e189..142e189 100644 --- a/grothoff_armstattinit.pdf +++ b/grothoff/grothoff_armstattinit.pdf | |||
Binary files differ | |||
diff --git a/grothoff_bigdata-littledata-nomoredata_tum2017.pdf b/grothoff/grothoff_bigdata-littledata-nomoredata_tum2017.pdf index 44d280b..44d280b 100644 --- a/grothoff_bigdata-littledata-nomoredata_tum2017.pdf +++ b/grothoff/grothoff_bigdata-littledata-nomoredata_tum2017.pdf | |||
Binary files differ | |||
diff --git a/grothoff_cryptography-in-gnunet_ecc2015.pdf b/grothoff/grothoff_cryptography-in-gnunet_ecc2015.pdf index fc83d25..fc83d25 100644 --- a/grothoff_cryptography-in-gnunet_ecc2015.pdf +++ b/grothoff/grothoff_cryptography-in-gnunet_ecc2015.pdf | |||
Binary files differ | |||
diff --git a/grothoff_daad2014.pdf b/grothoff/grothoff_daad2014.pdf index cdd2093..cdd2093 100644 --- a/grothoff_daad2014.pdf +++ b/grothoff/grothoff_daad2014.pdf | |||
Binary files differ | |||
diff --git a/grothoff_daghstuhl2014.pdf b/grothoff/grothoff_daghstuhl2014.pdf index 2ee5b66..2ee5b66 100644 --- a/grothoff_daghstuhl2014.pdf +++ b/grothoff/grothoff_daghstuhl2014.pdf | |||
Binary files differ | |||
diff --git a/grothoff_decentralizing-privacy-reserving-network-applications_snt2017.pdf b/grothoff/grothoff_decentralizing-privacy-reserving-network-applications_snt2017.pdf index 5442fc8..5442fc8 100644 --- a/grothoff_decentralizing-privacy-reserving-network-applications_snt2017.pdf +++ b/grothoff/grothoff_decentralizing-privacy-reserving-network-applications_snt2017.pdf | |||
Binary files differ | |||
diff --git a/grothoff_entropique2015.pdf b/grothoff/grothoff_entropique2015.pdf index e54a7b4..e54a7b4 100644 --- a/grothoff_entropique2015.pdf +++ b/grothoff/grothoff_entropique2015.pdf | |||
Binary files differ | |||
diff --git a/grothoff_ghm2013.pdf b/grothoff/grothoff_ghm2013.pdf index dc03a25..dc03a25 100644 --- a/grothoff_ghm2013.pdf +++ b/grothoff/grothoff_ghm2013.pdf | |||
Binary files differ | |||
diff --git a/grothoff_ghm2014.pdf b/grothoff/grothoff_ghm2014.pdf index fb38ace..fb38ace 100644 --- a/grothoff_ghm2014.pdf +++ b/grothoff/grothoff_ghm2014.pdf | |||
Binary files differ | |||
diff --git a/grothoff_gibu2010.pdf b/grothoff/grothoff_gibu2010.pdf index 54f2ad2..54f2ad2 100644 --- a/grothoff_gibu2010.pdf +++ b/grothoff/grothoff_gibu2010.pdf | |||
Binary files differ | |||
diff --git a/grothoff_gns_jcsa2016.pdf b/grothoff/grothoff_gns_jcsa2016.pdf index 2b6d335..2b6d335 100644 --- a/grothoff_gns_jcsa2016.pdf +++ b/grothoff/grothoff_gns_jcsa2016.pdf | |||
Binary files differ | |||
diff --git a/grothoff_gns_jhu2016.pdf b/grothoff/grothoff_gns_jhu2016.pdf index 492827e..492827e 100644 --- a/grothoff_gns_jhu2016.pdf +++ b/grothoff/grothoff_gns_jhu2016.pdf | |||
Binary files differ | |||
diff --git a/grothoff_gns_loria2015.pdf b/grothoff/grothoff_gns_loria2015.pdf index 2549386..2549386 100644 --- a/grothoff_gns_loria2015.pdf +++ b/grothoff/grothoff_gns_loria2015.pdf | |||
Binary files differ | |||
diff --git a/grothoff_gnunet2015.pdf b/grothoff/grothoff_gnunet2015.pdf index 259a5be..259a5be 100644 --- a/grothoff_gnunet2015.pdf +++ b/grothoff/grothoff_gnunet2015.pdf | |||
Binary files differ | |||
diff --git a/grothoff_gnunet2017.pdf b/grothoff/grothoff_gnunet2017.pdf index 3ebe570..3ebe570 100644 --- a/grothoff_gnunet2017.pdf +++ b/grothoff/grothoff_gnunet2017.pdf | |||
Binary files differ | |||
diff --git a/grothoff_innovation-comlexity-risk-and-trust_mapping2016.pdf b/grothoff/grothoff_innovation-comlexity-risk-and-trust_mapping2016.pdf index c1e2ecd..c1e2ecd 100644 --- a/grothoff_innovation-comlexity-risk-and-trust_mapping2016.pdf +++ b/grothoff/grothoff_innovation-comlexity-risk-and-trust_mapping2016.pdf | |||
Binary files differ | |||
diff --git a/grothoff_inria2013.pdf b/grothoff/grothoff_inria2013.pdf index 09c9791..09c9791 100644 --- a/grothoff_inria2013.pdf +++ b/grothoff/grothoff_inria2013.pdf | |||
Binary files differ | |||
diff --git a/grothoff_inria2013rennes.pdf b/grothoff/grothoff_inria2013rennes.pdf index fdbb213..fdbb213 100644 --- a/grothoff_inria2013rennes.pdf +++ b/grothoff/grothoff_inria2013rennes.pdf | |||
Binary files differ | |||
diff --git a/grothoff_lugcamp2013mhd.pdf b/grothoff/grothoff_lugcamp2013mhd.pdf index 9555eb3..9555eb3 100644 --- a/grothoff_lugcamp2013mhd.pdf +++ b/grothoff/grothoff_lugcamp2013mhd.pdf | |||
Binary files differ | |||
diff --git a/grothoff_lugcamp2015.pdf b/grothoff/grothoff_lugcamp2015.pdf index d214f3f..d214f3f 100644 --- a/grothoff_lugcamp2015.pdf +++ b/grothoff/grothoff_lugcamp2015.pdf | |||
Binary files differ | |||
diff --git a/grothoff_mapping2014.pdf b/grothoff/grothoff_mapping2014.pdf index 4c96561..4c96561 100644 --- a/grothoff_mapping2014.pdf +++ b/grothoff/grothoff_mapping2014.pdf | |||
Binary files differ | |||
diff --git a/grothoff_mhd2013gpn.pdf b/grothoff/grothoff_mhd2013gpn.pdf index bfc8aea..bfc8aea 100644 --- a/grothoff_mhd2013gpn.pdf +++ b/grothoff/grothoff_mhd2013gpn.pdf | |||
Binary files differ | |||
diff --git a/grothoff_netwerksicherheit-probleme-und-lösungsansätze_npo2016.pdf b/grothoff/grothoff_netwerksicherheit-probleme-und-lösungsansätze_npo2016.pdf index c0621d6..c0621d6 100644 --- a/grothoff_netwerksicherheit-probleme-und-lösungsansätze_npo2016.pdf +++ b/grothoff/grothoff_netwerksicherheit-probleme-und-lösungsansätze_npo2016.pdf | |||
Binary files differ | |||
diff --git a/grothoff_oii2014.pdf b/grothoff/grothoff_oii2014.pdf index 9d1e4f8..9d1e4f8 100644 --- a/grothoff_oii2014.pdf +++ b/grothoff/grothoff_oii2014.pdf | |||
Binary files differ | |||
diff --git a/grothoff_prism-gnunet-berlin.pdf b/grothoff/grothoff_prism-gnunet-berlin.pdf index 2b9da26..2b9da26 100644 --- a/grothoff_prism-gnunet-berlin.pdf +++ b/grothoff/grothoff_prism-gnunet-berlin.pdf | |||
Binary files differ | |||
diff --git a/grothoff_privacy2009.pdf b/grothoff/grothoff_privacy2009.pdf index 1f24389..1f24389 100644 --- a/grothoff_privacy2009.pdf +++ b/grothoff/grothoff_privacy2009.pdf | |||
Binary files differ | |||
diff --git a/grothoff_rmv608.pdf b/grothoff/grothoff_rmv608.pdf index b51b8c4..b51b8c4 100644 --- a/grothoff_rmv608.pdf +++ b/grothoff/grothoff_rmv608.pdf | |||
Binary files differ | |||
diff --git a/grothoff_slides-87-httpbis.pdf b/grothoff/grothoff_slides-87-httpbis.pdf index f5f31e4..f5f31e4 100644 --- a/grothoff_slides-87-httpbis.pdf +++ b/grothoff/grothoff_slides-87-httpbis.pdf | |||
Binary files differ | |||
diff --git a/grothoff_social-networks-vs-security-and-privacy_bfh2017.pdf b/grothoff/grothoff_social-networks-vs-security-and-privacy_bfh2017.pdf index cdca61c..cdca61c 100644 --- a/grothoff_social-networks-vs-security-and-privacy_bfh2017.pdf +++ b/grothoff/grothoff_social-networks-vs-security-and-privacy_bfh2017.pdf | |||
Binary files differ | |||
diff --git a/grothoff_the-gnu-name-system-a-pki-for-social-movements-in-the-age-of-universal-surveillance_-ccc2017ch.pdf b/grothoff/grothoff_the-gnu-name-system-a-pki-for-social-movements-in-the-age-of-universal-surveillance_-ccc2017ch.pdf index 861d717..861d717 100644 --- a/grothoff_the-gnu-name-system-a-pki-for-social-movements-in-the-age-of-universal-surveillance_-ccc2017ch.pdf +++ b/grothoff/grothoff_the-gnu-name-system-a-pki-for-social-movements-in-the-age-of-universal-surveillance_-ccc2017ch.pdf | |||
Binary files differ | |||
diff --git a/grothoff_towards-secure-name-resolution-on-the-internet_ndss2017slides.pdf b/grothoff/grothoff_towards-secure-name-resolution-on-the-internet_ndss2017slides.pdf index 3bee5b4..3bee5b4 100644 --- a/grothoff_towards-secure-name-resolution-on-the-internet_ndss2017slides.pdf +++ b/grothoff/grothoff_towards-secure-name-resolution-on-the-internet_ndss2017slides.pdf | |||
Binary files differ | |||
diff --git a/grothoff_tsvwg2015.pdf b/grothoff/grothoff_tsvwg2015.pdf index d9cd213..d9cd213 100644 --- a/grothoff_tsvwg2015.pdf +++ b/grothoff/grothoff_tsvwg2015.pdf | |||
Binary files differ | |||
diff --git a/grothoff_tue2015.pdf b/grothoff/grothoff_tue2015.pdf index f2c0caf..f2c0caf 100644 --- a/grothoff_tue2015.pdf +++ b/grothoff/grothoff_tue2015.pdf | |||
Binary files differ | |||
diff --git a/grothoff_uva2013.pdf b/grothoff/grothoff_uva2013.pdf index f3258a2..f3258a2 100644 --- a/grothoff_uva2013.pdf +++ b/grothoff/grothoff_uva2013.pdf | |||
Binary files differ | |||
diff --git a/secushare-old-html/2011-CBase.slides.html b/secushare-old-html/2011-CBase.slides.html new file mode 100644 index 0000000..2e169ff --- /dev/null +++ b/secushare-old-html/2011-CBase.slides.html | |||
@@ -0,0 +1,297 @@ | |||
1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" | ||
2 | "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> | ||
3 | |||
4 | <html xmlns="http://www.w3.org/1999/xhtml"> | ||
5 | <head> | ||
6 | <meta name="presdate" content="20111228" /> | ||
7 | <title>Scalable & Paranoid: Secure Share</title> | ||
8 | <!-- metadata --> | ||
9 | <meta name="generator" content="S5" /> | ||
10 | <meta name="version" content="S5 1.1" /> | ||
11 | <meta name="author" content="Carlo v. Loesch" /> | ||
12 | <meta name="company" content="symlynX.com" /> | ||
13 | <!-- configuration parameters --> | ||
14 | <meta name="defaultView" content="slideshow" /> | ||
15 | <meta name="controlVis" content="hidden" /> | ||
16 | <!-- style sheet links --> | ||
17 | <link rel="stylesheet" href="http://www.psyc.eu/papers/ui/psyced/slides.css" type="text/css" media="projection" id="slideProj" /> | ||
18 | <link rel="stylesheet" href="http://www.psyc.eu/papers/ui/psyced/outline.css" type="text/css" media="screen" id="outlineStyle" /> | ||
19 | <link rel="stylesheet" href="http://www.psyc.eu/papers/ui/psyced/print.css" type="text/css" media="print" id="slidePrint" /> | ||
20 | <link rel="stylesheet" href="http://www.psyc.eu/papers/ui/psyced/opera.css" type="text/css" media="projection" id="operaFix" /> | ||
21 | <!-- S5 JS --> | ||
22 | <script src="http://www.psyc.eu/papers/ui/psyced/slides.js" type="text/javascript"></script> | ||
23 | </head> | ||
24 | <body> | ||
25 | |||
26 | <div class="layout"> | ||
27 | <div id="controls"><!-- DO NOT EDIT --></div> | ||
28 | <div id="currentSlide"><!-- DO NOT EDIT --></div> | ||
29 | <div id="header"></div> | ||
30 | <div id="footer"> | ||
31 | Scalable & Paranoid: Secure Share | ||
32 | </div> | ||
33 | |||
34 | </div> | ||
35 | |||
36 | |||
37 | <div class="presentation"> | ||
38 | |||
39 | <div class="slide"> | ||
40 | <h2>Scalable & Paranoid: Secure Share</h2> | ||
41 | <ul> | ||
42 | <li>Carlo v. Loesch (symlynX)</li> | ||
43 | <li>Gabor Toth (PSYC)</li> | ||
44 | <li>Mathias Baumann (PSYC)</li> | ||
45 | </ul> | ||
46 | </div> | ||
47 | |||
48 | <div class="slide"> | ||
49 | <h1>A Perfectionist's Social Network</h1> | ||
50 | <h2>Overview of the Talk</h2> | ||
51 | <ul> | ||
52 | <li>Attack Vectors against Servers & VMs</li> | ||
53 | <li>How Much Privacy Is Enough?</li> | ||
54 | <li>Social Onion Routing</li> | ||
55 | <li>More Desired Features</li> | ||
56 | <li>Architecture, Protocols</li> | ||
57 | <li>How to Beat Faceboogle</li> | ||
58 | <li>The 'Secure Share' App</li> | ||
59 | </ul> | ||
60 | </div> | ||
61 | |||
62 | <div class="slide"> | ||
63 | <h2>Why am I talking here?</h2> | ||
64 | <ul class="incremental"> | ||
65 | <li>20 years of messaging & chat protocol design</li> | ||
66 | <li>/me etc.</li> | ||
67 | <li>PSYC: federated & multicasting</li> | ||
68 | <li>then Jabber came</li> | ||
69 | <li>PSYC good for business, open source delayed</li> | ||
70 | <li>back then servers were reliable</li> | ||
71 | </ul> | ||
72 | </div> | ||
73 | |||
74 | <div class="slide"> | ||
75 | <h1>Don't Trust Servers</h1> | ||
76 | <h2>Hardware Servers are vulnerable</h2> | ||
77 | <ul class="incremental"> | ||
78 | <li>client/server architecture: data resides on servers</li> | ||
79 | <li>federation: data visible on even more servers</li> | ||
80 | <li>memory access via bus sniffing</li> | ||
81 | <li>no shutdown necessary</li> | ||
82 | <li>automated memory image analysis proven</li> | ||
83 | <li>eat-inside or take-away</li> | ||
84 | </ul> | ||
85 | </div> | ||
86 | |||
87 | <div class="slide"> | ||
88 | <h1>Don't Trust Virtual Machines</h1> | ||
89 | <h2>Commodity Servers are VMs</h2> | ||
90 | <ul class="incremental"> | ||
91 | <li>vulnerable cryptography</li> | ||
92 | <li>memory can be monitored</li> | ||
93 | <li>controlling system accessible by observers</li> | ||
94 | <li>automated monitoring of federated social networks</li> | ||
95 | <li>anti-terror legislation possible</li> | ||
96 | <li>even if <em>your</em> server is at home</li> | ||
97 | </ul> | ||
98 | </div> | ||
99 | |||
100 | <div class="slide"> | ||
101 | <h1>Privacy vs. Paranoia</h1> | ||
102 | <h2>How Much Privacy Is Enough? 1/2</h2> | ||
103 | <ul class="incremental"> | ||
104 | <li>just to the intended recipients (e2e encryption)</li> | ||
105 | <li>packet size padding (unobservability)</li> | ||
106 | <li>flexible number of anonymization hops</li> | ||
107 | <li>optional intentional delay</li> | ||
108 | </ul> | ||
109 | </div> | ||
110 | |||
111 | <div class="slide"> | ||
112 | <h1>Privacy vs. Paranoia</h1> | ||
113 | <h2>How Much Privacy Is Enough? 2/2</h2> | ||
114 | <ul class="incremental"> | ||
115 | <li>forward secrecy</li> | ||
116 | <li>deniability (a log is no proof of nothing)</li> | ||
117 | <li>private subscription lists (not on a server)</li> | ||
118 | <li>robust and resilient against attacks</li> | ||
119 | </ul> | ||
120 | </div> | ||
121 | |||
122 | <div class="slide"> | ||
123 | <h1>It's A Question Of Trust</h1> | ||
124 | <h2>Social Onion Routing</h2> | ||
125 | <ul class="incremental"> | ||
126 | <li>trust relationship between nodes</li> | ||
127 | <li>multihop provides anonymization</li> | ||
128 | <li>motivation to provide "servers" as fast routers</li> | ||
129 | <li>"P2P" a lot faster over servers</li> | ||
130 | <li>servers agnostically maintain messages (and data)</li> | ||
131 | <!-- li>irony: role switch between servers and routers</li --> | ||
132 | </ul> | ||
133 | </div> | ||
134 | |||
135 | <div class="slide"> | ||
136 | <h1>Portability & Acceptance</h1> | ||
137 | <h2>Lightweight Daemon</h2> | ||
138 | <ul class="incremental"> | ||
139 | <li>personal devices and home routers</li> | ||
140 | <li>lightweight for embedded and mobile</li> | ||
141 | <li>lightweight for background daemon use</li> | ||
142 | <li>compiled language</li> | ||
143 | <li>more likely to get included in OS distros</li> | ||
144 | </ul> | ||
145 | </div> | ||
146 | |||
147 | <div class="slide"> | ||
148 | <h1>Architecture</h1> | ||
149 | <h2>Technology</h2> | ||
150 | <ul class="incremental"> | ||
151 | <li>"Enhanced" P2P with servers as agnostic routers</li> | ||
152 | <li>GNUnet as a framework, lots of privacy</li> | ||
153 | <li>TUM, learned from I2P, Freenet...</li> | ||
154 | <li>social graph discovery instead of DHT</li> | ||
155 | <li>no file sharing, no big traffic</li> | ||
156 | <li>PSYC on top</li> | ||
157 | <!-- <li>Multicast distribution for scalability (later)</li> --> | ||
158 | </ul> | ||
159 | </div> | ||
160 | |||
161 | <div class="slide"> | ||
162 | <h1>PSYC vs XML and JSON</h1> | ||
163 | |||
164 | <ul class="incremental"> | ||
165 | <li>extensible: semantically rich</li> | ||
166 | <li>binary/encrypted data capable</li> | ||
167 | <li>efficient as a binary format</li> | ||
168 | </ul> | ||
169 | <p/> | ||
170 | |||
171 | <table class="smaller" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"> | ||
172 | <caption></caption> | ||
173 | <colgroup><col class="left" /></colgroup> | ||
174 | <colgroup><col class="right" /><col class="right" /><col class="center" /></colgroup><colgroup><col class="right" /><col class="right" /></colgroup><colgroup><col class="right" /><col class="right" /><col class="right" /></colgroup> | ||
175 | <thead> | ||
176 | <tr><th scope="col" class="left"></th><th scope="col" class="right">libpsyc<br/>regular</th><th scope="col" class="center">libpsyc<br/>compact</th><th scope="col" class="right">json-c</th><th scope="col" class="right">json-glib</th><th scope="col" class="right">libxml sax</th><th scope="col" class="right">libxml</th><th scope="col" class="right">rapidxml</th></tr> | ||
177 | |||
178 | </thead> | ||
179 | <tbody> | ||
180 | <tr><td class="left">presence</td><td class="right">236</td><td class="center">122</td><td class="right">2463</td><td class="right">10016</td><td class="right">4997</td><td class="right">7557</td><td class="right">1719</td></tr> | ||
181 | <tr><td class="left">chat msg</td><td class="right">295</td><td class="center">258</td><td class="right">2147</td><td class="right">9526</td><td class="right">5911</td><td class="right">8999</td><td class="right">1850</td></tr> | ||
182 | |||
183 | <tr><td class="left">activity</td><td class="right">353</td><td class="center">279</td><td class="right">4666</td><td class="right">16327</td><td class="right">13357</td><td class="right">28858</td><td class="right">4356</td></tr> | ||
184 | </tbody> | ||
185 | </table> | ||
186 | |||
187 | </div> | ||
188 | |||
189 | <div class="slide"> | ||
190 | <h1>One Too Many</h1> | ||
191 | <h2>Multicasting for Scalability</h2> | ||
192 | <ul class="incremental"> | ||
193 | <li>social interactions are one-to-many or many-to-many</li> | ||
194 | <li>round robin distribution is slow (SMTP)</li> | ||
195 | <li>IP Multicast doesn't do the job (router table overflow)</li> | ||
196 | <li>HTTP is one-to-one, query/response</li> | ||
197 | <li>XMPP has a trust issue (says the XSF)</li> | ||
198 | <li>IRC and NNTP do/did multicast, but had other problems</li> | ||
199 | </ul> | ||
200 | </div> | ||
201 | |||
202 | <div class="slide"> | ||
203 | <h1>Flexibility</h1> | ||
204 | <h2>Framework Architecture</h2> | ||
205 | <ul class="incremental"> | ||
206 | <li>a truly private communications backend</li> | ||
207 | <li>social applications to be built on top</li> | ||
208 | <li>emulations of the 'open standards' possible</li> | ||
209 | <li>OStatus, WebID, RDF, even the Twitter API</li> | ||
210 | <li>optional modules for XMPP, IRC available</li> | ||
211 | <li>Activity Streams</li> | ||
212 | </ul> | ||
213 | </div> | ||
214 | |||
215 | <div class="slide"> | ||
216 | <h1>Dissemination</h1> | ||
217 | <h2>Hard to beat Faceboogle</h2> | ||
218 | <ul class="incremental"> | ||
219 | <li>since we need to go onto every computer anyway..</li> | ||
220 | <li>offer something Faceboogle can't provide?</li> | ||
221 | <li>exchanging files between friends sucks</li> | ||
222 | <li>USB sticks, e-mail, file hosters, skype, MSN, DropBox (brrr!)</li> | ||
223 | <li>WTF is 'Secure Share' ?</li> | ||
224 | </ul> | ||
225 | </div> | ||
226 | |||
227 | <div class="slide"> | ||
228 | <h1>Desktop Integration</h1> | ||
229 | <h2>'Secure Share' Function</h2> | ||
230 | <ul class="incremental"> | ||
231 | <li>right mouse button click (context menu)</li> | ||
232 | <li>share a file to a channel of subscribers</li> | ||
233 | <li>appears in their file system soon</li> | ||
234 | <li>realtime or delayed notification</li> | ||
235 | <li>no permission dialogs</li> | ||
236 | <li>shipped by default in your free OS?</li> | ||
237 | </ul> | ||
238 | </div> | ||
239 | |||
240 | <!-- | ||
241 | |||
242 | --> | ||
243 | |||
244 | <div class="slide"> | ||
245 | <h1>If you like what we do</h1> | ||
246 | <h2>We need support</h2> | ||
247 | <ul> | ||
248 | <li>Manpower</li> | ||
249 | <li>Alliances</li> | ||
250 | <li>Finances</li> | ||
251 | <li>Publicity</li> | ||
252 | </ul> | ||
253 | <br/> | ||
254 | Check by: secushare.org<br/> | ||
255 | Thank you.<br/> | ||
256 | </div> | ||
257 | |||
258 | <div class="slide"> | ||
259 | <h1>Cross That Bridge As We Get There?</h1> | ||
260 | <h2>Let's just get started with something!</h2> | ||
261 | <ul class="incremental"> | ||
262 | <li>The Mediocre is the Enemy of the Good</li> | ||
263 | <li>Historic Examples:</li> | ||
264 | <li>HTTP.. HTTP/NG?, SPDY!?</li> | ||
265 | <li>SMTP.. What? Faceboogle!?</li> | ||
266 | <li>XML.. What? JSON!?</li> | ||
267 | <!-- li>SQL..</li --> | ||
268 | </ul> | ||
269 | </div> | ||
270 | |||
271 | <div class="slide"> | ||
272 | <h1>End-to-end Encryption in the Browser?</h1> | ||
273 | <h2>isn't possible by design of the web.</h2> | ||
274 | See the 'end2end' page on the website for details. | ||
275 | </div> | ||
276 | |||
277 | <div class="slide"> | ||
278 | <h1>One Too Many (XMPP)</h1> | ||
279 | <h2>Multicasting with XMPP?</h2> | ||
280 | <ul class="incremental"> | ||
281 | <li>70% of S2S XMPP messages is presence updates (5 years ago)</li> | ||
282 | <li>XMPP has limited support for one-to-many communications</li> | ||
283 | <li>XMPP can be improved, but: trust problem with multicast</li> | ||
284 | </ul> | ||
285 | </div> | ||
286 | |||
287 | <div class="slide"> | ||
288 | <h1>One Too Many (HTTP)</h1> | ||
289 | <h2>Multicasting with HTTP?</h2> | ||
290 | <ul class="incremental"> | ||
291 | <li>fundamentally feasible</li> | ||
292 | <li>unnatural: HTTP is not bidirectional</li> | ||
293 | <li>requires trust in a federated architecture</li> | ||
294 | </ul> | ||
295 | </div> | ||
296 | |||
297 | </html> | ||
diff --git a/secushare-old-html/2011-CCCamp.slides.html b/secushare-old-html/2011-CCCamp.slides.html new file mode 100644 index 0000000..ce6fbfc --- /dev/null +++ b/secushare-old-html/2011-CCCamp.slides.html | |||
@@ -0,0 +1,262 @@ | |||
1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" | ||
2 | "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> | ||
3 | |||
4 | <html xmlns="http://www.w3.org/1999/xhtml"> | ||
5 | <head> | ||
6 | <title>Scalable & Paranoid: Secure Share</title> | ||
7 | <!-- metadata --> | ||
8 | <meta name="generator" content="S5" /> | ||
9 | <meta name="version" content="S5 1.1" /> | ||
10 | <meta name="presdate" content="20110814" /> | ||
11 | <meta name="author" content="Carlo v. Loesch" /> | ||
12 | <meta name="company" content="symlynX.com" /> | ||
13 | <!-- configuration parameters --> | ||
14 | <meta name="defaultView" content="slideshow" /> | ||
15 | <meta name="controlVis" content="hidden" /> | ||
16 | <!-- style sheet links --> | ||
17 | <link rel="stylesheet" href="http://www.psyc.eu/papers/ui/psyced/slides.css" type="text/css" media="projection" id="slideProj" /> | ||
18 | <link rel="stylesheet" href="http://www.psyc.eu/papers/ui/psyced/outline.css" type="text/css" media="screen" id="outlineStyle" /> | ||
19 | <link rel="stylesheet" href="http://www.psyc.eu/papers/ui/psyced/print.css" type="text/css" media="print" id="slidePrint" /> | ||
20 | <link rel="stylesheet" href="http://www.psyc.eu/papers/ui/psyced/opera.css" type="text/css" media="projection" id="operaFix" /> | ||
21 | <!-- S5 JS --> | ||
22 | <script src="http://www.psyc.eu/papers/ui/psyced/slides.js" type="text/javascript"></script> | ||
23 | </head> | ||
24 | <body> | ||
25 | |||
26 | <div class="layout"> | ||
27 | <div id="controls"><!-- DO NOT EDIT --></div> | ||
28 | <div id="currentSlide"><!-- DO NOT EDIT --></div> | ||
29 | <div id="header"></div> | ||
30 | <div id="footer"> | ||
31 | Scalable & Paranoid: Secure Share | ||
32 | </div> | ||
33 | |||
34 | </div> | ||
35 | |||
36 | |||
37 | <div class="presentation"> | ||
38 | |||
39 | <div class="slide"> | ||
40 | <h2>Scalable & Paranoid: Secure Share</h2> | ||
41 | <ul> | ||
42 | <li>Carlo v. Loesch (symlynX)</li> | ||
43 | <li>Gabor Toth (PSYC)</li> | ||
44 | <li>Mathias Baumann (PSYC)</li> | ||
45 | </ul> | ||
46 | </div> | ||
47 | |||
48 | <div class="slide"> | ||
49 | <h1>A Perfectionist's Social Network</h1> | ||
50 | <h2>Overview of the Talk</h2> | ||
51 | <ul> | ||
52 | <li>Safety of Virtual Machines</li> | ||
53 | <li>How Much Privacy Is Enough?</li> | ||
54 | <li>Social Onion Routing</li> | ||
55 | <li>More Desired Features</li> | ||
56 | <li>Architecture, Protocols</li> | ||
57 | <li>How to Beat Faceboogle</li> | ||
58 | <li>The 'Secure Share' App</li> | ||
59 | </ul> | ||
60 | </div> | ||
61 | |||
62 | <div class="slide"> | ||
63 | <h1>Don't Trust Virtual Machines</h1> | ||
64 | <h2>Commodity Servers are VMs</h2> | ||
65 | <ul class="incremental"> | ||
66 | <li>vulnerable cryptography</li> | ||
67 | <li>memory can be monitored</li> | ||
68 | <li>controlling system accessible by observers</li> | ||
69 | <li>automated monitoring of federated social networks</li> | ||
70 | <li>anti-terror legislation possible</li> | ||
71 | <li>even if <em>your</em> server is at home</li> | ||
72 | </ul> | ||
73 | </div> | ||
74 | |||
75 | <div class="slide"> | ||
76 | <h1>Privacy vs. Paranoia</h1> | ||
77 | <h2>How Much Privacy Is Enough? 1/2</h2> | ||
78 | <ul class="incremental"> | ||
79 | <li>just to the intended recipients (e2e encryption)</li> | ||
80 | <li>packet size padding (unobservability)</li> | ||
81 | <li>flexible number of anonymization hops</li> | ||
82 | <li>optional intentional delay</li> | ||
83 | </ul> | ||
84 | </div> | ||
85 | |||
86 | <div class="slide"> | ||
87 | <h1>Privacy vs. Paranoia</h1> | ||
88 | <h2>How Much Privacy Is Enough? 2/2</h2> | ||
89 | <ul class="incremental"> | ||
90 | <li>forward secrecy</li> | ||
91 | <li>deniability (a log is no proof of nothing)</li> | ||
92 | <li>private subscription lists (not on a server)</li> | ||
93 | <li>robust and resilient against attacks</li> | ||
94 | </ul> | ||
95 | </div> | ||
96 | |||
97 | <div class="slide"> | ||
98 | <h1>It's A Question Of Trust</h1> | ||
99 | <h2>Social Onion Routing</h2> | ||
100 | <ul class="incremental"> | ||
101 | <li>trust relationship between nodes</li> | ||
102 | <li>multihop provides anonymization</li> | ||
103 | <li>motivation to provide "servers" as fast routers</li> | ||
104 | <li>"P2P" a lot faster over servers</li> | ||
105 | <li>irony: role switch between servers and routers</li> | ||
106 | </ul> | ||
107 | </div> | ||
108 | |||
109 | <div class="slide"> | ||
110 | <h1>Portability & Acceptance</h1> | ||
111 | <h2>Lightweight Daemon</h2> | ||
112 | <ul class="incremental"> | ||
113 | <li>personal devices and home routers</li> | ||
114 | <li>lightweight for embedded and mobile</li> | ||
115 | <li>lightweight for background daemon use</li> | ||
116 | <li>compiled language</li> | ||
117 | <li>more likely to get included in OS distros</li> | ||
118 | </ul> | ||
119 | </div> | ||
120 | |||
121 | <div class="slide"> | ||
122 | <h1>Architecture</h1> | ||
123 | <h2>Technology</h2> | ||
124 | <ul class="incremental"> | ||
125 | <li>looking for the best framework...</li> | ||
126 | <li>GnuNet, Maidsafe, A3 or Tonika?</li> | ||
127 | <li>socially enhanced DHT?</li> | ||
128 | <li>payload syntax: efficient, binary capable, extensible</li> | ||
129 | <li>Multicast distribution for scalability (later)</li> | ||
130 | </ul> | ||
131 | </div> | ||
132 | |||
133 | <div class="slide"> | ||
134 | <h1>Flexibility</h1> | ||
135 | <h2>Framework Architecture</h2> | ||
136 | <ul class="incremental"> | ||
137 | <li>a truly private messaging backend</li> | ||
138 | <li>social applications to be built on top</li> | ||
139 | <li>emulations of the 'open standards' possible</li> | ||
140 | <li>OStatus, WebID, RDF, even the Twitter API</li> | ||
141 | <li>optional modules for XMPP, IRC?</li> | ||
142 | <li>Activity Streams</li> | ||
143 | </ul> | ||
144 | </div> | ||
145 | |||
146 | <div class="slide"> | ||
147 | <h1>Dissemination</h1> | ||
148 | <h2>Hard to beat Faceboogle</h2> | ||
149 | <ul class="incremental"> | ||
150 | <li>since we need to go onto every computer anyway..</li> | ||
151 | <li>offer something Faceboogle can't provide?</li> | ||
152 | <li>exchanging files between friends sucks</li> | ||
153 | <li>USB sticks, e-mail, file hosters, skype, MSN</li> | ||
154 | <li>WTF is 'Secure Share' ?</li> | ||
155 | </ul> | ||
156 | </div> | ||
157 | |||
158 | <div class="slide"> | ||
159 | <h1>Desktop Integration</h1> | ||
160 | <h2>'Secure Share' Function</h2> | ||
161 | <ul class="incremental"> | ||
162 | <li>right mouse button click (context menu)</li> | ||
163 | <li>share a file to a channel of subscribers</li> | ||
164 | <li>appears in their file system soon</li> | ||
165 | <li>realtime or delayed notification</li> | ||
166 | <li>no permission dialogs</li> | ||
167 | <li>shipped by default in your free OS?</li> | ||
168 | </ul> | ||
169 | </div> | ||
170 | |||
171 | <!-- | ||
172 | |||
173 | <div class="slide"> | ||
174 | <h1>One Too Many</h1> | ||
175 | <h2>Multicasting for Scalability</h2> | ||
176 | <ul class="incremental"> | ||
177 | <li>social interactions are one-to-many or many-to-many</li> | ||
178 | <li>HTTP is one-to-one</li> | ||
179 | <li>round robin distribution is slow (SMTP)</li> | ||
180 | <li>IP Multicast doesn't do the job (router table overflow)</li> | ||
181 | <li>IRC and NNTP do/did multicast, but had other problems</li> | ||
182 | </ul> | ||
183 | </div> | ||
184 | |||
185 | <div class="slide"> | ||
186 | <h1>One Too Many</h1> | ||
187 | <h2>Multicasting with XMPP?</h2> | ||
188 | <ul class="incremental"> | ||
189 | <li>70% of S2S XMPP messages is presence updates (5 years ago)</li> | ||
190 | <li>XMPP has limited support for one-to-many communications</li> | ||
191 | <li>XMPP can be improved, but: trust problem with multicast</li> | ||
192 | </ul> | ||
193 | </div> | ||
194 | |||
195 | <div class="slide"> | ||
196 | <h1>One Too Many</h1> | ||
197 | <h2>Multicasting with HTTP?</h2> | ||
198 | <ul class="incremental"> | ||
199 | <li>fundamentally feasible</li> | ||
200 | <li>unnatural: HTTP is not bidirectional</li> | ||
201 | <li>requires trust in a federated architecture</li> | ||
202 | </ul> | ||
203 | </div> | ||
204 | |||
205 | <div class="slide"> | ||
206 | <h1>Possible Solution Part 1</h1> | ||
207 | <h2>New Architecture?</h2> | ||
208 | <ul class="incremental"> | ||
209 | <li>"Enhanced" P2P with servers as agnostic routers</li> | ||
210 | <li>Options: GNUnet, Maidsafe, A3, Tonika</li> | ||
211 | <li>Less possibly: I2P, Diaspora</li> | ||
212 | <li>Features: Unobservability, End-To-End ...</li> | ||
213 | <li>What's missing?</li> | ||
214 | </ul> | ||
215 | </div> | ||
216 | |||
217 | <div class="slide"> | ||
218 | <h1>Possible Solution Part 2</h1> | ||
219 | <h2>Things to add on top</h2> | ||
220 | <ul class="incremental"> | ||
221 | <li>multicast routing option</li> | ||
222 | <li>social trust metrics</li> | ||
223 | <li>... applied for routing</li> | ||
224 | <li>flexible payload syntax</li> | ||
225 | <li>standard formats may be portable</li> | ||
226 | <li>web interface still likely</li> | ||
227 | </ul> | ||
228 | </div> | ||
229 | |||
230 | --> | ||
231 | |||
232 | <!-- div class="slide"> | ||
233 | </div --> | ||
234 | |||
235 | <div class="slide"> | ||
236 | <h1>If you like what we do</h1> | ||
237 | <h2>We need support</h2> | ||
238 | <ul> | ||
239 | <li>Manpower</li> | ||
240 | <li>Alliances</li> | ||
241 | <li>Finances</li> | ||
242 | <li>Publicity</li> | ||
243 | </ul> | ||
244 | <br/> | ||
245 | <br/> | ||
246 | Thank you.<br/> | ||
247 | </div> | ||
248 | |||
249 | <div class="slide"> | ||
250 | <h1>Cross That Bridge As We Get There?</h1> | ||
251 | <h2>Let's just get started with something!</h2> | ||
252 | <ul class="incremental"> | ||
253 | <li>The Mediocre is the Enemy of the Good</li> | ||
254 | <li>Historic Examples:</li> | ||
255 | <li>HTTP.. HTTP/NG?, SPDY!?</li> | ||
256 | <li>SMTP.. What? Faceboogle!?</li> | ||
257 | <li>XML.. What? JSON!?</li> | ||
258 | <!-- li>SQL..</li --> | ||
259 | </ul> | ||
260 | </div> | ||
261 | |||
262 | </html> | ||
diff --git a/secushare-old-html/2011-FSW.slides.html b/secushare-old-html/2011-FSW.slides.html new file mode 100644 index 0000000..72a39a7 --- /dev/null +++ b/secushare-old-html/2011-FSW.slides.html | |||
@@ -0,0 +1,152 @@ | |||
1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" | ||
2 | "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> | ||
3 | |||
4 | <html xmlns="http://www.w3.org/1999/xhtml"> | ||
5 | <head> | ||
6 | <title>Scalability & Paranoia in a Decentralized Social Network</title> | ||
7 | <!-- metadata --> | ||
8 | <meta name="generator" content="S5" /> | ||
9 | <meta name="version" content="S5 1.1" /> | ||
10 | <meta name="presdate" content="20110600" /> | ||
11 | <meta name="author" content="Carlo v. Loesch" /> | ||
12 | <meta name="company" content="symlynX.com" /> | ||
13 | <!-- configuration parameters --> | ||
14 | <meta name="defaultView" content="slideshow" /> | ||
15 | <meta name="controlVis" content="hidden" /> | ||
16 | <!-- style sheet links --> | ||
17 | <link rel="stylesheet" href="http://www.psyc.eu/papers/ui/psyced/slides.css" type="text/css" media="projection" id="slideProj" /> | ||
18 | <link rel="stylesheet" href="http://www.psyc.eu/papers/ui/psyced/outline.css" type="text/css" media="screen" id="outlineStyle" /> | ||
19 | <link rel="stylesheet" href="http://www.psyc.eu/papers/ui/psyced/print.css" type="text/css" media="print" id="slidePrint" /> | ||
20 | <link rel="stylesheet" href="http://www.psyc.eu/papers/ui/psyced/opera.css" type="text/css" media="projection" id="operaFix" /> | ||
21 | <!-- S5 JS --> | ||
22 | <script src="http://www.psyc.eu/papers/ui/psyced/slides.js" type="text/javascript"></script> | ||
23 | </head> | ||
24 | <body> | ||
25 | |||
26 | <div class="layout"> | ||
27 | <div id="controls"><!-- DO NOT EDIT --></div> | ||
28 | <div id="currentSlide"><!-- DO NOT EDIT --></div> | ||
29 | <div id="header"></div> | ||
30 | <div id="footer"> | ||
31 | Scalability & Paranoia in a Decentralized Social Network | ||
32 | </div> | ||
33 | |||
34 | </div> | ||
35 | |||
36 | |||
37 | <div class="presentation"> | ||
38 | |||
39 | <div class="slide"> | ||
40 | <h2>Scalability & Paranoia in a Decentralized Social Network</h2> | ||
41 | <ul> | ||
42 | <li>Carlo v. Loesch (symlynX)<br/> | ||
43 | <li>Gabor Toth (PSYC)<br/> | ||
44 | <li>Mathias Baumann (PSYC)<br/> | ||
45 | </ul> | ||
46 | </div> | ||
47 | |||
48 | |||
49 | <div class="slide"> | ||
50 | <h1>Pitfall: Start With Something</h1> | ||
51 | <h2>Cross That Bridge As We Get There?</h2> | ||
52 | <ul class="incremental"> | ||
53 | <li>Let's just get started with something!</li> | ||
54 | <li>Pitfall! Historic Examples:</li> | ||
55 | <li>HTTP! HTTP/NG?, SPDY!?</li> | ||
56 | <li>IRC! ...? XMPP!?</li> | ||
57 | <li>XMPP! ...? JSON!?</li> | ||
58 | </ul> | ||
59 | </div> | ||
60 | |||
61 | <div class="slide"> | ||
62 | <h1>One Too Many</h1> | ||
63 | <h2>Multicasting for Scalability</h2> | ||
64 | <ul class="incremental"> | ||
65 | <li>social interactions are one-to-many or many-to-many</li> | ||
66 | <li>HTTP is one-to-one</li> | ||
67 | <li>round robin distribution is slow (SMTP)</li> | ||
68 | <li>IP Multicast doesn't do the job (router table overflow)</li> | ||
69 | <li>IRC and NNTP do/did multicast, but had other problems</li> | ||
70 | </ul> | ||
71 | </div> | ||
72 | |||
73 | <div class="slide"> | ||
74 | <h1>One Too Many</h1> | ||
75 | <h2>Multicasting with XMPP?</h2> | ||
76 | <ul class="incremental"> | ||
77 | <li>70% of S2S XMPP messages is presence updates (5 years ago)</li> | ||
78 | <li>XMPP has limited support for one-to-many communications</li> | ||
79 | <li>XMPP can be improved, but: trust problem with multicast</li> | ||
80 | </ul> | ||
81 | </div> | ||
82 | |||
83 | <div class="slide"> | ||
84 | <h1>One Too Many</h1> | ||
85 | <h2>Multicasting with HTTP?</h2> | ||
86 | <ul class="incremental"> | ||
87 | <li>fundamentally feasible</li> | ||
88 | <li>unnatural: HTTP is not bidirectional</li> | ||
89 | <li>requires trust in a federated architecture</li> | ||
90 | </ul> | ||
91 | </div> | ||
92 | |||
93 | <div class="slide"> | ||
94 | <h1>Don't Trust Virtual Machines</h1> | ||
95 | <h2>Commodity Servers are VMs</h2> | ||
96 | <ul class="incremental"> | ||
97 | <li>vulnerable cryptography</li> | ||
98 | <li>controlling system accessible by observers</li> | ||
99 | <li>memory can be monitored</li> | ||
100 | <li>automated monitoring of the FSW</li> | ||
101 | <li>anti-terror legislation possible</li> | ||
102 | </ul> | ||
103 | </div> | ||
104 | |||
105 | <div class="slide"> | ||
106 | <h1>Privacy vs. Paranoia</h1> | ||
107 | <h2>How Much Privacy Is Enough?</h2> | ||
108 | <ul class="incremental"> | ||
109 | <li>just to the intended recipients (e2e encryption)</li> | ||
110 | <li>packet size padding (unobservability)</li> | ||
111 | <li>forward secrecy</li> | ||
112 | <li>private subscription lists (not on a server)</li> | ||
113 | <li>robust and resilient against attacks</li> | ||
114 | </ul> | ||
115 | </div> | ||
116 | |||
117 | <div class="slide"> | ||
118 | <h1>Our Conclusion</h1> | ||
119 | <h2>For the web to become seriously social, it needs a native, open and free | ||
120 | backbone technology that enables communication beyond the one-to-one scenario.</h2> | ||
121 | </div> | ||
122 | |||
123 | <div class="slide"> | ||
124 | <h1>Possible Solution Part 1</h1> | ||
125 | <h2>New Architecture?</h2> | ||
126 | <ul class="incremental"> | ||
127 | <li>"Enhanced" P2P with servers as agnostic routers</li> | ||
128 | <li>Options: GNUnet, Maidsafe, A3, Tonika</li> | ||
129 | <li>Less possibly: I2P, Diaspora</li> | ||
130 | <li>Features: Unobservability, End-To-End ...</li> | ||
131 | <li>What's missing?</li> | ||
132 | </ul> | ||
133 | </div> | ||
134 | |||
135 | <div class="slide"> | ||
136 | <h1>Possible Solution Part 2</h1> | ||
137 | <h2>Things to add on top</h2> | ||
138 | <ul class="incremental"> | ||
139 | <li>multicast routing option</li> | ||
140 | <li>social trust metrics</li> | ||
141 | <li>... applied for routing</li> | ||
142 | <li>flexible payload syntax</li> | ||
143 | <li>standard formats may be portable</li> | ||
144 | <li>web interface still likely</li> | ||
145 | </ul> | ||
146 | </div> | ||
147 | |||
148 | <!-- div class="slide"> | ||
149 | <h3>Thank you.<br/>Questions? Other points of view?</h3> | ||
150 | </div --> | ||
151 | |||
152 | </html> | ||
diff --git a/secushare-old-html/2012-02-Cbase.slides.html b/secushare-old-html/2012-02-Cbase.slides.html new file mode 100644 index 0000000..063ea81 --- /dev/null +++ b/secushare-old-html/2012-02-Cbase.slides.html | |||
@@ -0,0 +1,369 @@ | |||
1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" | ||
2 | "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> | ||
3 | |||
4 | <!-- | ||
5 | |||
6 | TODO: political slide about Facebook owning and selling your | ||
7 | pictures and stuffs you upload!!? | ||
8 | |||
9 | TODO: add a slide about private usefulness as noted by codethief | ||
10 | (syncing, managing your stuff) | ||
11 | |||
12 | --> | ||
13 | |||
14 | <html xmlns="http://www.w3.org/1999/xhtml"> | ||
15 | <head> | ||
16 | <title>Re-Invent the Internet with Secure Share</title> | ||
17 | <meta name="presdate" content="20120201" /> | ||
18 | <!-- metadata --> | ||
19 | <meta name="generator" content="S5" /> | ||
20 | <meta name="version" content="S5 1.1" /> | ||
21 | <meta name="author" content="Carlo v. Loesch" /> | ||
22 | <meta name="company" content="symlynX.com" /> | ||
23 | <!-- configuration parameters --> | ||
24 | <meta name="defaultView" content="slideshow" /> | ||
25 | <meta name="controlVis" content="hidden" /> | ||
26 | <!-- style sheet links --> | ||
27 | <link rel="stylesheet" href="UI/slides.css" type="text/css" media="projection" id="slideProj" /> | ||
28 | <link rel="stylesheet" href="UI/outline.css" type="text/css" media="screen" id="outlineStyle" /> | ||
29 | <link rel="stylesheet" href="UI/print.css" type="text/css" media="print" id="slidePrint" /> | ||
30 | <link rel="stylesheet" href="UI/opera.css" type="text/css" media="projection" id="operaFix" /> | ||
31 | <!-- S5 JS --> | ||
32 | <script src="UI/slides.js" type="text/javascript"></script> | ||
33 | </head> | ||
34 | <body> | ||
35 | |||
36 | <div class="layout"> | ||
37 | <div id="controls"><!-- DO NOT EDIT --></div> | ||
38 | <div id="currentSlide"><!-- DO NOT EDIT --></div> | ||
39 | <div id="header"></div> | ||
40 | <div id="footer"> | ||
41 | secushare: A Framework for ReInventing the Internet | ||
42 | </div> | ||
43 | </div> | ||
44 | |||
45 | <div id="between"> </div> | ||
46 | |||
47 | <!-- div id="logo"> | ||
48 | <img src="img/oXoXo-077.png" /> | ||
49 | </div --> | ||
50 | |||
51 | <div class="presentation"> | ||
52 | |||
53 | <div class="slide"> | ||
54 | <img style="padding: 80px" src="img/secushare-0444.png" /> | ||
55 | </div> | ||
56 | |||
57 | <div class="slide"> | ||
58 | <img class="framed" src="img/phase0.jpeg" /> | ||
59 | </div> | ||
60 | <div class="slide"> | ||
61 | <img class="framed" src="img/phase1.jpeg" /> | ||
62 | </div> | ||
63 | <div class="slide"> | ||
64 | <img class="framed" src="img/phase2.jpeg" /> | ||
65 | </div> | ||
66 | <div class="slide"> | ||
67 | <img class="framed" src="img/phase3.jpeg" /> | ||
68 | </div> | ||
69 | |||
70 | <div class="slide"> | ||
71 | <h1>ReInventing the Internet?</h1> | ||
72 | <h2>Overview of the Talk</h2> | ||
73 | <ul> | ||
74 | <li>Attack Vectors against Servers & VMs</li> | ||
75 | <li>How Much Privacy Is Enough?</li> | ||
76 | <li>Social Onion Routing</li> | ||
77 | <li>More Desired Features</li> | ||
78 | <li>Architecture, Protocols</li> | ||
79 | <li>How to Beat Faceboogle</li> | ||
80 | <li>The 'Secure Share' App</li> | ||
81 | </ul> | ||
82 | </div> | ||
83 | |||
84 | <div class="slide"> | ||
85 | <h1>About carlo von lynX</h1> | ||
86 | <h2>Why am I talking here?</h2> | ||
87 | <ul class="incremental"> | ||
88 | <li>20 years of messaging & chat protocol design</li> | ||
89 | <li>/me etc.</li> | ||
90 | <li>PSYC: federated & multicasting</li> | ||
91 | <li>then Jabber came</li> | ||
92 | <li>PSYC good for business, open source delayed</li> | ||
93 | <li>back then, servers were reliable</li> | ||
94 | </ul> | ||
95 | </div> | ||
96 | |||
97 | <div class="slide"> | ||
98 | <h1>Don't Trust Servers</h1> | ||
99 | <h2>Hardware Servers are vulnerable</h2> | ||
100 | <ul class="incremental"> | ||
101 | <li>client/server architecture: data resides on servers</li> | ||
102 | <li>federation: data visible on even more servers</li> | ||
103 | <li>memory access via bus sniffing</li> | ||
104 | <li>no shutdown necessary</li> | ||
105 | <li>automated memory image analysis proven</li> | ||
106 | <li>eat-inside or take-away</li> | ||
107 | </ul> | ||
108 | </div> | ||
109 | |||
110 | <div class="slide"> | ||
111 | <h1>Don't Trust Virtual Machines</h1> | ||
112 | <h2>Commodity Servers are VMs</h2> | ||
113 | <ul class="incremental"> | ||
114 | <li>vulnerable cryptography</li> | ||
115 | <li>memory can be monitored</li> | ||
116 | <li>controlling system accessible by observers</li> | ||
117 | <li>automated monitoring of federated social networks</li> | ||
118 | <li>anti-terror legislation possible</li> | ||
119 | <li>even if <em>your</em> server is at home</li> | ||
120 | </ul> | ||
121 | </div> | ||
122 | |||
123 | <div class="slide"> | ||
124 | <h1>Privacy vs. Paranoia</h1> | ||
125 | <h2>How Much Privacy Is Enough? 1/2</h2> | ||
126 | <ul class="incremental"> | ||
127 | <li>just to the intended recipients (e2e encryption)</li> | ||
128 | <li>packet size padding (unobservability)</li> | ||
129 | <li>flexible number of anonymization hops</li> | ||
130 | <li>optional intentional delay</li> | ||
131 | </ul> | ||
132 | </div> | ||
133 | |||
134 | <div class="slide"> | ||
135 | <h1>Privacy vs. Paranoia</h1> | ||
136 | <h2>How Much Privacy Is Enough? 2/2</h2> | ||
137 | <ul class="incremental"> | ||
138 | <li>forward secrecy</li> | ||
139 | <li>deniability (a log is no proof of nothing)</li> | ||
140 | <li>private subscription lists (not on a server)</li> | ||
141 | <li>robust and resilient against attacks</li> | ||
142 | </ul> | ||
143 | </div> | ||
144 | |||
145 | <div class="slide"> | ||
146 | <h1>It's A Question Of Trust</h1> | ||
147 | <h2>Social Onion Routing</h2> | ||
148 | <ul class="incremental"> | ||
149 | <li>trust relationship between nodes</li> | ||
150 | <li>multihop provides anonymization</li> | ||
151 | <li>motivation to provide "servers" as fast routers</li> | ||
152 | <li>my server is me, so you can trust my server</li> | ||
153 | <li>"P2P" a lot faster over servers</li> | ||
154 | <li>servers agnostically maintain messages (and data)</li> | ||
155 | <!-- li>irony: role switch between servers and routers</li --> | ||
156 | </ul> | ||
157 | </div> | ||
158 | |||
159 | <div class="slide"> | ||
160 | <h1>Portability & Acceptance</h1> | ||
161 | <h2>Lightweight Daemon</h2> | ||
162 | <ul class="incremental"> | ||
163 | <li>personal devices and home routers</li> | ||
164 | <li>lightweight for embedded and mobile</li> | ||
165 | <li>lightweight for background daemon use</li> | ||
166 | <li>compiled language</li> | ||
167 | <li>more likely to get included in OS distros</li> | ||
168 | </ul> | ||
169 | </div> | ||
170 | |||
171 | <div class="slide"> | ||
172 | <h1>Architecture</h1> | ||
173 | <h2>Technology</h2> | ||
174 | <ul class="incremental"> | ||
175 | <li>"Enhanced" P2P with servers as agnostic routers</li> | ||
176 | <li>GNUnet as a framework: privacy, VPN, meshnet</li> | ||
177 | <li>TUM, learned from I2P, Freenet...</li> | ||
178 | <li>social graph discovery instead of DHT</li> | ||
179 | <li>no file sharing, no big traffic</li> | ||
180 | <li>PSYC on top</li> | ||
181 | <!-- <li>Multicast distribution for scalability (later)</li> --> | ||
182 | </ul> | ||
183 | </div> | ||
184 | |||
185 | <div class="slide"> | ||
186 | <h1>PSYC vs XML and JSON</h1> | ||
187 | |||
188 | <ul class="incremental"> | ||
189 | <li>extensible: semantically rich</li> | ||
190 | <li>binary/encrypted data capable</li> | ||
191 | <li>efficient as a binary format</li> | ||
192 | <li>table shows parsing speed in milliseconds:</li> | ||
193 | </ul> | ||
194 | <p/> | ||
195 | |||
196 | <table class="smaller" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"> | ||
197 | <caption></caption> | ||
198 | <colgroup><col class="left" /></colgroup> | ||
199 | <colgroup><col class="right" /><col class="right" /></colgroup><colgroup><col class="right" /><col class="right" /></colgroup><colgroup><col class="right" /><col class="right" /><col class="right" /><col class="right" /></colgroup> | ||
200 | <thead> | ||
201 | <tr><th scope="col" class="left"></th><th scope="col" class="right">libpsyc<br/>regular</th><th scope="col" class="center">libpsyc<br/>compact</th><th scope="col" class="right">json-c</th><th scope="col" class="right">json-glib</th><th scope="col" class="right">libxml sax</th><th scope="col" class="right">libxml</th><th scope="col" class="right">rapidxml</th></tr> | ||
202 | </thead> | ||
203 | <tbody> | ||
204 | <tr><td class="left">presence</td><td class="right">236</td><td class="right">122</td><td class="right">2463</td><td class="right">10016</td><td class="right">4997</td><td class="right">7557</td><td class="right">1719</td></tr> | ||
205 | <tr><td class="left">chat msg</td><td class="right">295</td><td class="right">258</td><td class="right">2147</td><td class="right">9526</td><td class="right">5911</td><td class="right">8999</td><td class="right">1850</td></tr> | ||
206 | <tr><td class="left">activity</td><td class="right">353</td><td class="right">279</td><td class="right">4666</td><td class="right">16327</td><td class="right">13357</td><td class="right">28858</td><td class="right">4356</td></tr> | ||
207 | </tbody> | ||
208 | </table> | ||
209 | |||
210 | </div> | ||
211 | |||
212 | <div class="slide"> | ||
213 | <h1>One Too Many</h1> | ||
214 | <h2>Multicasting for Scalability</h2> | ||
215 | <ul class="incremental"> | ||
216 | <li>social = one-to-many | many-to-many</li> | ||
217 | <li>round robin distribution = slow (SMTP)</li> | ||
218 | <li>HTTP is one-to-one, query/response</li> | ||
219 | <li>IP Multicast fails (router table overflow)</li> | ||
220 | <li>IRC and NNTP do/did multicast, but have other problems</li> | ||
221 | <li>XMPP has a trust issue (says the XSF)</li> | ||
222 | </ul> | ||
223 | </div> | ||
224 | |||
225 | <div class="slide"> | ||
226 | <h1>Flexibility</h1> | ||
227 | <h2>Framework Architecture</h2> | ||
228 | <ul class="incremental"> | ||
229 | <li>a truly private communications backend</li> | ||
230 | <li>social applications to be built on top</li> | ||
231 | <li>emulations of the 'open standards' possible</li> | ||
232 | <li>OStatus, WebID, RDF, even the Twitter API</li> | ||
233 | <li>optional modules for XMPP, IRC available</li> | ||
234 | <li>Activity Streams</li> | ||
235 | </ul> | ||
236 | </div> | ||
237 | |||
238 | <div class="slide"> | ||
239 | <h1>Dissemination</h1> | ||
240 | <h2>Hard to beat Faceboogle</h2> | ||
241 | <ul class="incremental"> | ||
242 | <li>since we need to go onto every computer anyway..</li> | ||
243 | <li>offer something Faceboogle can't provide?</li> | ||
244 | <li>exchanging files between friends sucks</li> | ||
245 | <li>USB sticks, e-mail, file hosters, skype, MSN, DropBox (brrr!)</li> | ||
246 | <li>WTF is 'Secure Share' ?</li> | ||
247 | </ul> | ||
248 | </div> | ||
249 | |||
250 | <div class="slide"> | ||
251 | <h1>Desktop Integration</h1> | ||
252 | <h2>'Secure Share' Function</h2> | ||
253 | <ul class="incremental"> | ||
254 | <li>right mouse button click (context menu)</li> | ||
255 | <li>share a file to a channel of subscribers</li> | ||
256 | <li>appears in their file system soon</li> | ||
257 | <li>realtime or delayed notification</li> | ||
258 | <li>no permission dialogs</li> | ||
259 | <li>shipped by default in your free OS?</li> | ||
260 | </ul> | ||
261 | </div> | ||
262 | |||
263 | <div class="slide"> | ||
264 | <h1>Secure Share Feature Set</h1> | ||
265 | <h2>Features of Prototype Edition</h2> | ||
266 | <ul> | ||
267 | <li>Messaging, Subscriptions, Status Update</li> | ||
268 | <li>File Exchange, VPN, Software Distribution</li> | ||
269 | </ul> | ||
270 | <h2>Later Features</h2> | ||
271 | <ul> | ||
272 | <li>Group Communications, Social Network Features</li> | ||
273 | <li>Media Support: Photo Albums, Videos, Music</li> | ||
274 | <li>Extension API for Custom Social Apps</li> | ||
275 | <li>Realtime Streaming</li> | ||
276 | </ul> | ||
277 | </div> | ||
278 | |||
279 | <div class="slide"> | ||
280 | <img class="framed" src="img/phase0.jpeg" /> | ||
281 | </div> | ||
282 | <div class="slide"> | ||
283 | <img class="framed" src="img/phase1.jpeg" /> | ||
284 | </div> | ||
285 | <div class="slide"> | ||
286 | <img class="framed" src="img/phase2.jpeg" /> | ||
287 | </div> | ||
288 | <div class="slide"> | ||
289 | <img class="framed" src="img/phase3.jpeg" /> | ||
290 | </div> | ||
291 | |||
292 | <!-- | ||
293 | |||
294 | --> | ||
295 | |||
296 | <div class="slide"> | ||
297 | <h1>Secure Share</h1> | ||
298 | <h2>Who's involved?</h2> | ||
299 | <ul> | ||
300 | <li>Carlo v. Loesch (secushare.org)</li> | ||
301 | <li>Gabor Toth (secushare.org)</li> | ||
302 | <li>Mathias Baumann (PSYC)</li> | ||
303 | <li>Daniel Reusche (Social Swarm)</li> | ||
304 | </ul> | ||
305 | </div> | ||
306 | |||
307 | <div class="slide"> | ||
308 | <h1>If you like what we do</h1> | ||
309 | <h2>We need support</h2> | ||
310 | <img align="right" src="img/oXoXo-380.png" /> | ||
311 | <ul> | ||
312 | <li>Manpower</li> | ||
313 | <li>Alliances</li> | ||
314 | <li>Finances</li> | ||
315 | <li>Publicity</li> | ||
316 | </ul> | ||
317 | <br/> | ||
318 | Check by: secushare.org<br/> | ||
319 | Thank you.<br/> | ||
320 | </div> | ||
321 | |||
322 | <div class="slide"> | ||
323 | <h1>A bad idea whose time has come?</h1> | ||
324 | <h2>End-to-end Encryption in the Browser!!1!11</h2> | ||
325 | <br/> | ||
326 | <ul class="incremental"> | ||
327 | <li>User interface comes from the server. | ||
328 | <li>Web browser does what the server says. | ||
329 | <li>Server corrupted? It can steal your data. | ||
330 | <li>Only static install helps. Still: | ||
331 | <li>Bad cryptography, bad script signing. | ||
332 | <li>So you might aswell go for the real thing... | ||
333 | </ul> | ||
334 | </div> | ||
335 | |||
336 | <div class="slide"> | ||
337 | <h1>One Too Many (XMPP)</h1> | ||
338 | <h2>Multicasting with XMPP?</h2> | ||
339 | <ul class="incremental"> | ||
340 | <li>70% of S2S XMPP messages is presence updates (5 years ago)</li> | ||
341 | <li>XMPP has limited support for one-to-many communications</li> | ||
342 | <li>XMPP can be improved, but: trust problem with multicast</li> | ||
343 | </ul> | ||
344 | </div> | ||
345 | |||
346 | <div class="slide"> | ||
347 | <h1>One Too Many (HTTP)</h1> | ||
348 | <h2>Multicasting with HTTP?</h2> | ||
349 | <ul class="incremental"> | ||
350 | <li>fundamentally feasible</li> | ||
351 | <li>unnatural: HTTP is not bidirectional</li> | ||
352 | <li>requires trust in a federated architecture</li> | ||
353 | </ul> | ||
354 | </div> | ||
355 | |||
356 | <div class="slide"> | ||
357 | <h1>Cross That Bridge As We Get There?</h1> | ||
358 | <h2>Let's just get started with something!</h2> | ||
359 | <ul class="incremental"> | ||
360 | <li>The Mediocre is the Enemy of the Good</li> | ||
361 | <li>Historic Examples:</li> | ||
362 | <li>HTTP.. HTTP/NG?, SPDY!?</li> | ||
363 | <li>SMTP.. What? Faceboogle!?</li> | ||
364 | <li>XML.. What? JSON!?</li> | ||
365 | <!-- li>SQL..</li --> | ||
366 | </ul> | ||
367 | </div> | ||
368 | |||
369 | </html> | ||
diff --git a/secushare-old-html/2012-08-MOCA.slides.html b/secushare-old-html/2012-08-MOCA.slides.html new file mode 100644 index 0000000..14b6813 --- /dev/null +++ b/secushare-old-html/2012-08-MOCA.slides.html | |||
@@ -0,0 +1,375 @@ | |||
1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" | ||
2 | "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> | ||
3 | |||
4 | <!-- | ||
5 | |||
6 | TODO: political slide about Facebook owning and selling your | ||
7 | pictures and stuffs you upload!!? | ||
8 | |||
9 | TODO: add a slide about private usefulness as noted by codethief | ||
10 | (syncing, managing your stuff) | ||
11 | |||
12 | --> | ||
13 | |||
14 | <html xmlns="http://www.w3.org/1999/xhtml"> | ||
15 | <head> | ||
16 | <title>Re-Invent the Internet with Secure Share</title> | ||
17 | <meta name="presdate" content="20120201" /> | ||
18 | <!-- metadata --> | ||
19 | <meta name="generator" content="S5" /> | ||
20 | <meta name="version" content="S5 1.1" /> | ||
21 | <meta name="author" content="Carlo v. Loesch" /> | ||
22 | <meta name="company" content="symlynX.com" /> | ||
23 | <!-- configuration parameters --> | ||
24 | <meta name="defaultView" content="slideshow" /> | ||
25 | <meta name="controlVis" content="hidden" /> | ||
26 | <!-- style sheet links --> | ||
27 | <link rel="stylesheet" href="UI/slides.css" type="text/css" media="projection" id="slideProj" /> | ||
28 | <link rel="stylesheet" href="UI/outline.css" type="text/css" media="screen" id="outlineStyle" /> | ||
29 | <link rel="stylesheet" href="UI/print.css" type="text/css" media="print" id="slidePrint" /> | ||
30 | <link rel="stylesheet" href="UI/opera.css" type="text/css" media="projection" id="operaFix" /> | ||
31 | <!-- S5 JS --> | ||
32 | <script src="UI/slides.js" type="text/javascript"></script> | ||
33 | </head> | ||
34 | <body> | ||
35 | |||
36 | <div class="layout"> | ||
37 | <div id="controls"><!-- DO NOT EDIT --></div> | ||
38 | <div id="currentSlide"><!-- DO NOT EDIT --></div> | ||
39 | <div id="header"></div> | ||
40 | <div id="footer"> | ||
41 | secushare: A Framework for ReInventing the Internet | ||
42 | </div> | ||
43 | </div> | ||
44 | |||
45 | <div id="between"> </div> | ||
46 | |||
47 | <!-- div id="logo"> | ||
48 | <img src="img/oXoXo-077.png" /> | ||
49 | </div --> | ||
50 | |||
51 | <div class="presentation"> | ||
52 | |||
53 | <div class="slide"> | ||
54 | <img style="padding: 80px" src="img/secushare-0444.png" /> | ||
55 | </div> | ||
56 | |||
57 | <div class="slide"> | ||
58 | <img class="framed" src="img/phase0.jpeg" /> | ||
59 | </div> | ||
60 | <div class="slide"> | ||
61 | <img class="framed" src="img/phase1.jpeg" /> | ||
62 | </div> | ||
63 | <div class="slide"> | ||
64 | <img class="framed" src="img/phase2.jpeg" /> | ||
65 | </div> | ||
66 | <div class="slide"> | ||
67 | <img class="framed" src="img/phase3.jpeg" /> | ||
68 | </div> | ||
69 | |||
70 | <div class="slide"> | ||
71 | <h1>ReInventing the Internet?</h1> | ||
72 | <h2>Overview of the Talk</h2> | ||
73 | <ul> | ||
74 | <li>Attack Vectors against Servers & VMs</li> | ||
75 | <li>How Much Privacy Is Enough?</li> | ||
76 | <li>Social Onion Routing</li> | ||
77 | <li>More Desired Features</li> | ||
78 | <li>Architecture, Protocols</li> | ||
79 | <li>How to Beat Faceboogle</li> | ||
80 | <li>The 'Secure Share' App</li> | ||
81 | </ul> | ||
82 | </div> | ||
83 | |||
84 | <div class="slide"> | ||
85 | <h1>About carlo von lynX</h1> | ||
86 | <h2>Why am I talking here?</h2> | ||
87 | <ul class="incremental"> | ||
88 | <li>20 years of messaging & chat protocol design</li> | ||
89 | <li>/me etc.</li> | ||
90 | <li>PSYC: federated & multicasting</li> | ||
91 | <li>then Jabber came</li> | ||
92 | <li>PSYC good for business, open source delayed</li> | ||
93 | <li>back then, servers were reliable</li> | ||
94 | </ul> | ||
95 | </div> | ||
96 | |||
97 | <div class="slide"> | ||
98 | <h1>Don't Trust Servers</h1> | ||
99 | <h2>Hardware Servers are vulnerable</h2> | ||
100 | <ul class="incremental"> | ||
101 | <li>client/server architecture: data resides on servers</li> | ||
102 | <li>federation: data visible on even more servers</li> | ||
103 | <li>memory access via bus sniffing</li> | ||
104 | <li>no shutdown necessary</li> | ||
105 | <li>automated memory image analysis proven</li> | ||
106 | <li>eat-inside or take-away</li> | ||
107 | </ul> | ||
108 | </div> | ||
109 | |||
110 | <div class="slide"> | ||
111 | <h1>Don't Trust Virtual Machines</h1> | ||
112 | <h2>Commodity Servers are VMs</h2> | ||
113 | <ul class="incremental"> | ||
114 | <li>vulnerable cryptography</li> | ||
115 | <li>memory can be monitored</li> | ||
116 | <li>controlling system accessible by observers</li> | ||
117 | <li>automated monitoring of federated social networks</li> | ||
118 | <li>anti-terror legislation possible</li> | ||
119 | <li>even if <em>your</em> server is at home</li> | ||
120 | </ul> | ||
121 | </div> | ||
122 | |||
123 | <div class="slide"> | ||
124 | <h1>Privacy vs. Paranoia</h1> | ||
125 | <h2>How Much Privacy Is Enough? 1/2</h2> | ||
126 | <ul class="incremental"> | ||
127 | <li>just to the intended recipients (e2e encryption)</li> | ||
128 | <li>packet size padding (unobservability)</li> | ||
129 | <li>flexible number of anonymization hops</li> | ||
130 | <li>optional intentional delay</li> | ||
131 | </ul> | ||
132 | </div> | ||
133 | |||
134 | <div class="slide"> | ||
135 | <h1>Privacy vs. Paranoia</h1> | ||
136 | <h2>How Much Privacy Is Enough? 2/2</h2> | ||
137 | <ul class="incremental"> | ||
138 | <li>forward secrecy</li> | ||
139 | <li>deniability (a log is no proof of nothing)</li> | ||
140 | <li>private subscription lists (not on a server)</li> | ||
141 | <li>robust and resilient against attacks</li> | ||
142 | </ul> | ||
143 | </div> | ||
144 | |||
145 | <div class="slide"> | ||
146 | <h1>It's A Question Of Trust</h1> | ||
147 | <h2>Social Onion Routing</h2> | ||
148 | <ul class="incremental"> | ||
149 | <li>trust relationship between nodes</li> | ||
150 | <li>multihop provides anonymization</li> | ||
151 | <li>motivation to provide "servers" as fast routers</li> | ||
152 | <li>my server is me, so you can trust my server</li> | ||
153 | <li>"P2P" a lot faster over servers</li> | ||
154 | <li>servers agnostically maintain messages (and data)</li> | ||
155 | <!-- li>irony: role switch between servers and routers</li --> | ||
156 | </ul> | ||
157 | </div> | ||
158 | |||
159 | <div class="slide"> | ||
160 | <h1>Portability & Acceptance</h1> | ||
161 | <h2>Lightweight Daemon</h2> | ||
162 | <ul class="incremental"> | ||
163 | <li>personal devices and home routers</li> | ||
164 | <li>lightweight for embedded and mobile</li> | ||
165 | <li>lightweight for background daemon use</li> | ||
166 | <li>compiled language</li> | ||
167 | <li>more likely to get included in OS distros</li> | ||
168 | </ul> | ||
169 | </div> | ||
170 | |||
171 | <div class="slide"> | ||
172 | <h1>Architecture</h1> | ||
173 | <h2>Technology</h2> | ||
174 | <ul class="incremental"> | ||
175 | <li>"Enhanced" P2P with servers as agnostic routers</li> | ||
176 | <li>GNUnet as a framework: privacy, VPN, meshnet</li> | ||
177 | <li>TUM, learned from I2P, Freenet...</li> | ||
178 | <li>social graph discovery instead of DHT</li> | ||
179 | <li>no file sharing, no big traffic</li> | ||
180 | <li>PSYC on top</li> | ||
181 | <!-- <li>Multicast distribution for scalability (later)</li> --> | ||
182 | </ul> | ||
183 | </div> | ||
184 | |||
185 | <div class="slide"> | ||
186 | <h1>PSYC vs XML and JSON</h1> | ||
187 | |||
188 | <ul class="incremental"> | ||
189 | <li>extensible: semantically rich</li> | ||
190 | <li>binary/encrypted data capable</li> | ||
191 | <li>efficient as a binary format</li> | ||
192 | <li>table shows parsing speed in milliseconds:</li> | ||
193 | </ul> | ||
194 | <p/> | ||
195 | |||
196 | <table class="smaller" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"> | ||
197 | <caption></caption> | ||
198 | <colgroup><col class="left" /></colgroup> | ||
199 | <colgroup><col class="right" /><col class="right" /></colgroup><colgroup><col class="right" /><col class="right" /></colgroup><colgroup><col class="right" /><col class="right" /><col class="right" /><col class="right" /></colgroup> | ||
200 | <thead> | ||
201 | <tr><th scope="col" class="left"></th><th scope="col" class="right">libpsyc<br/>regular</th><th scope="col" class="center">libpsyc<br/>compact</th><th scope="col" class="right">json-c</th><th scope="col" class="right">json-glib</th><th scope="col" class="right">libxml sax</th><th scope="col" class="right">libxml</th><th scope="col" class="right">rapidxml</th></tr> | ||
202 | </thead> | ||
203 | <tbody> | ||
204 | <tr><td class="left">presence</td><td class="right">236</td><td class="right">122</td><td class="right">2463</td><td class="right">10016</td><td class="right">4997</td><td class="right">7557</td><td class="right">1719</td></tr> | ||
205 | <tr><td class="left">chat msg</td><td class="right">295</td><td class="right">258</td><td class="right">2147</td><td class="right">9526</td><td class="right">5911</td><td class="right">8999</td><td class="right">1850</td></tr> | ||
206 | <tr><td class="left">activity</td><td class="right">353</td><td class="right">279</td><td class="right">4666</td><td class="right">16327</td><td class="right">13357</td><td class="right">28858</td><td class="right">4356</td></tr> | ||
207 | </tbody> | ||
208 | </table> | ||
209 | |||
210 | </div> | ||
211 | |||
212 | <div class="slide"> | ||
213 | <h1>One Too Many</h1> | ||
214 | <h2>Multicasting for Scalability</h2> | ||
215 | <ul class="incremental"> | ||
216 | <li>social = one-to-many | many-to-many</li> | ||
217 | <li>round robin distribution = slow (SMTP)</li> | ||
218 | <li>HTTP is one-to-one, query/response</li> | ||
219 | <li>IP Multicast fails (router table overflow)</li> | ||
220 | <li>IRC and NNTP do/did multicast, but have other problems</li> | ||
221 | <li>XMPP has a trust issue (says the XSF)</li> | ||
222 | </ul> | ||
223 | </div> | ||
224 | |||
225 | <div class="slide"> | ||
226 | <h1>Flexibility</h1> | ||
227 | <h2>Framework Architecture</h2> | ||
228 | <ul class="incremental"> | ||
229 | <li>a truly private communications backend</li> | ||
230 | <li>social applications to be built on top</li> | ||
231 | <li>emulations of the 'open standards' possible</li> | ||
232 | <li>OStatus, WebID, RDF, even the Twitter API</li> | ||
233 | <li>optional modules for XMPP, IRC available</li> | ||
234 | <li>Activity Streams</li> | ||
235 | </ul> | ||
236 | </div> | ||
237 | |||
238 | <div class="slide"> | ||
239 | <h1>Dissemination</h1> | ||
240 | <h2>Hard to beat Faceboogle</h2> | ||
241 | <ul class="incremental"> | ||
242 | <li>since we need to go onto every computer anyway..</li> | ||
243 | <li>offer something Faceboogle can't provide?</li> | ||
244 | <li>exchanging files between friends sucks</li> | ||
245 | <li>USB sticks, e-mail, file hosters, skype, MSN, DropBox (brrr!)</li> | ||
246 | <li>WTF is 'Secure Share' ?</li> | ||
247 | </ul> | ||
248 | </div> | ||
249 | |||
250 | <div class="slide"> | ||
251 | <h1>Desktop Integration</h1> | ||
252 | <h2>'Secure Share' Function</h2> | ||
253 | <ul class="incremental"> | ||
254 | <li>right mouse button click (context menu)</li> | ||
255 | <li>share a file to a channel of subscribers</li> | ||
256 | <li>appears in their file system soon</li> | ||
257 | <li>realtime or delayed notification</li> | ||
258 | <li>no permission dialogs</li> | ||
259 | <li>shipped by default in your free OS?</li> | ||
260 | </ul> | ||
261 | </div> | ||
262 | |||
263 | <div class="slide"> | ||
264 | <h1>Secure Share Feature Set</h1> | ||
265 | <h2>Features of Prototype Edition</h2> | ||
266 | <ul> | ||
267 | <li>Messaging, Subscriptions, Status Update</li> | ||
268 | <li>File Exchange, VPN, Software Distribution</li> | ||
269 | </ul> | ||
270 | <h2>Later Features</h2> | ||
271 | <ul> | ||
272 | <li>Group Communications, Social Network Features</li> | ||
273 | <li>Media Support: Photo Albums, Videos, Music</li> | ||
274 | <li>Extension API for Custom Social Apps</li> | ||
275 | <li>Realtime Streaming</li> | ||
276 | </ul> | ||
277 | </div> | ||
278 | |||
279 | <div class="slide"> | ||
280 | <img class="framed" src="img/phase0.jpeg" /> | ||
281 | </div> | ||
282 | <div class="slide"> | ||
283 | <img class="framed" src="img/phase1.jpeg" /> | ||
284 | </div> | ||
285 | <div class="slide"> | ||
286 | <img class="framed" src="img/phase2.jpeg" /> | ||
287 | </div> | ||
288 | <div class="slide"> | ||
289 | <img class="framed" src="img/phase3.jpeg" /> | ||
290 | </div> | ||
291 | |||
292 | <!-- | ||
293 | |||
294 | --> | ||
295 | |||
296 | <div class="slide"> | ||
297 | <h1>Secure Share - the Team</h1> | ||
298 | <h2>Who's involved?</h2> | ||
299 | <ul> | ||
300 | <li>Gabor Toth (secushare.org)</li> | ||
301 | <li>Carlo von lynX (PSYC, secushare)</li> | ||
302 | <!-- li>Mathias Baumann (PSYC)</li --> | ||
303 | <li>Daniel Reusche (secushare, Unlike Us)</li> | ||
304 | <li>duy (secushare)</li> | ||
305 | <li>hellekin (lorea, FSF, GNU social)</li> | ||
306 | </ul> | ||
307 | <br/> | ||
308 | with support from Wau Holland Foundation (CCC), | ||
309 | TU München (GNUnet), Institute of Network Cultures | ||
310 | (Unlike Us) and Mr Stallman (FSF*) | ||
311 | </div> | ||
312 | |||
313 | <div class="slide"> | ||
314 | <h1>If you like what we do</h1> | ||
315 | <h2>We need support</h2> | ||
316 | <img align="right" src="img/oXoXo-380.png" /> | ||
317 | <ul> | ||
318 | <li>Manpower</li> | ||
319 | <li>Alliances</li> | ||
320 | <li>Finances</li> | ||
321 | <li>Publicity</li> | ||
322 | </ul> | ||
323 | <br/> | ||
324 | Check by: secushare.org<br/> | ||
325 | Thank you.<br/> | ||
326 | </div> | ||
327 | |||
328 | <div class="slide"> | ||
329 | <h1>A bad idea whose time has come?</h1> | ||
330 | <h2>End-to-end Encryption in the Browser!!1!11</h2> | ||
331 | <br/> | ||
332 | <ul class="incremental"> | ||
333 | <li>User interface comes from the server. | ||
334 | <li>Web browser does what the server says. | ||
335 | <li>Server corrupted? It can steal your data. | ||
336 | <li>Only static install helps. Still: | ||
337 | <li>Bad cryptography, bad script signing. | ||
338 | <li>So you might aswell go for the real thing... | ||
339 | </ul> | ||
340 | </div> | ||
341 | |||
342 | <div class="slide"> | ||
343 | <h1>One Too Many (XMPP)</h1> | ||
344 | <h2>Multicasting with XMPP?</h2> | ||
345 | <ul class="incremental"> | ||
346 | <li>70% of S2S XMPP messages is presence updates (5 years ago)</li> | ||
347 | <li>XMPP has limited support for one-to-many communications</li> | ||
348 | <li>XMPP can be improved, but: trust problem with multicast</li> | ||
349 | </ul> | ||
350 | </div> | ||
351 | |||
352 | <div class="slide"> | ||
353 | <h1>One Too Many (HTTP)</h1> | ||
354 | <h2>Multicasting with HTTP?</h2> | ||
355 | <ul class="incremental"> | ||
356 | <li>fundamentally feasible</li> | ||
357 | <li>unnatural: HTTP is not bidirectional</li> | ||
358 | <li>requires trust in a federated architecture</li> | ||
359 | </ul> | ||
360 | </div> | ||
361 | |||
362 | <div class="slide"> | ||
363 | <h1>Cross That Bridge As We Get There?</h1> | ||
364 | <h2>Let's just get started with something!</h2> | ||
365 | <ul class="incremental"> | ||
366 | <li>The Mediocre is the Enemy of the Good</li> | ||
367 | <li>Historic Examples:</li> | ||
368 | <li>HTTP.. HTTP/NG?, SPDY!?</li> | ||
369 | <li>SMTP.. What? Faceboogle!?</li> | ||
370 | <li>XML.. What? JSON!?</li> | ||
371 | <!-- li>SQL..</li --> | ||
372 | </ul> | ||
373 | </div> | ||
374 | |||
375 | </html> | ||
diff --git a/secushare-old-html/2012-11-digiyards.slides.pht b/secushare-old-html/2012-11-digiyards.slides.pht new file mode 100644 index 0000000..97fd221 --- /dev/null +++ b/secushare-old-html/2012-11-digiyards.slides.pht | |||
@@ -0,0 +1,450 @@ | |||
1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" | ||
2 | "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> | ||
3 | |||
4 | #if 0 | ||
5 | |||
6 | TODO: don't show broken fonts | ||
7 | |||
8 | TODO: political slide about Facebook owning and selling your | ||
9 | pictures and stuffs you upload!!? | ||
10 | |||
11 | private usefulness added to 'later features' | ||
12 | |||
13 | #endif | ||
14 | |||
15 | <html xmlns="http://www.w3.org/1999/xhtml"> | ||
16 | <head> | ||
17 | <title>Re-Invent the Internet with Secure Share</title> | ||
18 | <meta name="presdate" content="20120201" /> | ||
19 | <!-- metadata --> | ||
20 | <meta name="generator" content="S5" /> | ||
21 | <meta name="version" content="S5 1.1" /> | ||
22 | <meta name="author" content="Carlo v. Loesch" /> | ||
23 | <meta name="company" content="symlynX.com" /> | ||
24 | <!-- configuration parameters --> | ||
25 | <meta name="defaultView" content="slideshow" /> | ||
26 | <meta name="controlVis" content="hidden" /> | ||
27 | <!-- style sheet links --> | ||
28 | <link rel="stylesheet" href="UI/slides.css" type="text/css" media="projection" id="slideProj" /> | ||
29 | <link rel="stylesheet" href="UI/outline.css" type="text/css" media="screen" id="outlineStyle" /> | ||
30 | <link rel="stylesheet" href="UI/print.css" type="text/css" media="print" id="slidePrint" /> | ||
31 | <link rel="stylesheet" href="UI/opera.css" type="text/css" media="projection" id="operaFix" /> | ||
32 | <!-- S5 JS --> | ||
33 | <script src="UI/slides.js" type="text/javascript"></script> | ||
34 | </head> | ||
35 | <body> | ||
36 | |||
37 | <div class="layout"> | ||
38 | <div id="controls"><!-- DO NOT EDIT --></div> | ||
39 | <div id="currentSlide"><!-- DO NOT EDIT --></div> | ||
40 | <div id="header"></div> | ||
41 | <div id="footer"> | ||
42 | secushare: A Framework for ReInventing the Internet | ||
43 | </div> | ||
44 | </div> | ||
45 | |||
46 | <div id="between"> </div> | ||
47 | |||
48 | <!-- div id="logo"><img src="img/oXoXo-077.png" /></div --> | ||
49 | |||
50 | <div class="presentation"> | ||
51 | |||
52 | <div class="slide"> | ||
53 | <img style="padding: 80px" src="img/secushare-0444.png" /> | ||
54 | </div> | ||
55 | |||
56 | <div class="slide"> | ||
57 | <h1>ReInventing the Internet?</h1> | ||
58 | <h2>Overview of the Talk</h2> | ||
59 | <ul> | ||
60 | # <li>Attack Vectors against Servers & VMs</li> | ||
61 | <li>Internet, you #fail!</li> | ||
62 | <li>How Much Privacy Is Enough?</li> | ||
63 | <li>Social Onion Routing</li> | ||
64 | # <li>More Desired Features</li> | ||
65 | <li>Architecture, Protocols</li> | ||
66 | <li>How to Beat Faceboogle</li> | ||
67 | <li>The 'Secure Share' App</li> | ||
68 | </ul> | ||
69 | </div> | ||
70 | |||
71 | <div class="slide"> | ||
72 | <img class="framed" src="img/phase0.jpeg" /> | ||
73 | </div> | ||
74 | |||
75 | <div class="slide"> | ||
76 | <h1>A New Net</h1> | ||
77 | <h2>Hello Internet, You Fail!</h2> | ||
78 | <ul class="incremental"> | ||
79 | <li>messaging? exchanging files?</li> | ||
80 | <li>secrecy of correspondence (Briefgeheimnis)</li> | ||
81 | <li>copyright > basic civil rights?</li> | ||
82 | <li>priorities?</li> | ||
83 | <li>technologies?</li> | ||
84 | <li>just let computers talk to each other??!?</li> | ||
85 | </ul> | ||
86 | </div> | ||
87 | |||
88 | <div class="slide"> | ||
89 | <h1>A New Net</h1> | ||
90 | <h2>NAT my ass!</h2> | ||
91 | <ul class="incremental"> | ||
92 | <li>internet protocol address scarcity</li> | ||
93 | <li>dynamic IP address = anonymity?</li> | ||
94 | <li>service provider = position of power?</li> | ||
95 | <li>upgrade to IPv6</li> | ||
96 | <li>a way to find out the current address</li> | ||
97 | </ul> | ||
98 | </div> | ||
99 | |||
100 | <div class="slide"> | ||
101 | <h1>A New Net</h1> | ||
102 | <h2>ADSL my ass!</h2> | ||
103 | <ul class="incremental"> | ||
104 | <li>Asymmetric Digital Subscriber Line</li> | ||
105 | <li>1:3 (lite), 1:24</li> | ||
106 | <li>technical reason: "crosstalk"</li> | ||
107 | <li>marketing reason: consumer vs business</li> | ||
108 | <li>no home servers.. ToS</li> | ||
109 | <li>regulatory intervention?</li> | ||
110 | </ul> | ||
111 | </div> | ||
112 | |||
113 | <div class="slide"> | ||
114 | <h1>A New Net</h1> | ||
115 | <h2>peer-to-peer (P2P)</h2> | ||
116 | <ul class="incremental"> | ||
117 | <li>P2P deals with it</li> | ||
118 | <li>but without help from servers!</li> | ||
119 | <li>censorship resistant!</li> | ||
120 | <li>protect privacy</li> | ||
121 | <li>end-to-end encryption</li> | ||
122 | <li>free software</li> | ||
123 | </ul> | ||
124 | </div> | ||
125 | |||
126 | #if 0 | ||
127 | <div class="slide"> | ||
128 | <img class="framed" src="img/phase1.jpeg" /> | ||
129 | </div> | ||
130 | <div class="slide"> | ||
131 | <img class="framed" src="img/phase2.jpeg" /> | ||
132 | </div> | ||
133 | <div class="slide"> | ||
134 | <img class="framed" src="img/phase3.jpeg" /> | ||
135 | </div> | ||
136 | #endif | ||
137 | |||
138 | <div class="slide"> | ||
139 | <h1>Privacy vs. Paranoia</h1> | ||
140 | <h2>How Much Privacy Is Enough? 1/2</h2> | ||
141 | <ul class="uncremental"> | ||
142 | <li>just to the intended recipients (e2e encryption)</li> | ||
143 | <li>packet size padding (unobservability)</li> | ||
144 | <li>flexible number of anonymization hops</li> | ||
145 | <li>optional intentional delay</li> | ||
146 | </ul> | ||
147 | </div> | ||
148 | |||
149 | <div class="slide"> | ||
150 | <h1>Privacy vs. Paranoia</h1> | ||
151 | <h2>How Much Privacy Is Enough? 2/2</h2> | ||
152 | <ul class="uncremental"> | ||
153 | <li>forward secrecy</li> | ||
154 | <li>deniability (a log is no proof of nothing)</li> | ||
155 | <li>private subscription lists (not on a server)</li> | ||
156 | <li>robust and resilient against attacks</li> | ||
157 | </ul> | ||
158 | </div> | ||
159 | |||
160 | <div class="slide"> | ||
161 | <h1>One Too Many</h1> | ||
162 | <h2>Multicasting for Scalability</h2> | ||
163 | <ul class="uncremental"> | ||
164 | <li>social = one-to-many | many-to-many</li> | ||
165 | <li>70% of S2S XMPP messages is presence updates (5 years ago)</li> | ||
166 | <li>round robin distribution = slow (SMTP, XMPP, OStatus)</li> | ||
167 | <li>multicast = distribution trees</li> | ||
168 | <!-- li>HTTP is one-to-one, query/response, not bidirectional</li> | ||
169 | <li>IP Multicast fails (router table overflow)</li> | ||
170 | <li>IRC and NNTP do/did multicast, but have other problems</li> | ||
171 | <li>XMPP has a trust issue (says the XSF)</li --> | ||
172 | <li>Bittorrent: from files to life streams?</li> | ||
173 | </ul> | ||
174 | </div> | ||
175 | |||
176 | <div class="slide"> | ||
177 | <h1>It's A Question Of Trust</h1> | ||
178 | <h2>Social Onion Routing</h2> | ||
179 | <ul class="uncremental"> | ||
180 | <li>trust relationship between nodes</li> | ||
181 | <li>multihop provides anonymization</li> | ||
182 | <li>motivation to provide "servers" as fast routers</li> | ||
183 | <li>my server is me, so you can trust my server</li> | ||
184 | <li>"P2P" a lot faster over servers</li> | ||
185 | <li>servers agnostically maintain messages (and data)</li> | ||
186 | <!-- li>irony: role switch between servers and routers</li --> | ||
187 | <li>embed multicast trees into the onion routing</li> | ||
188 | </ul> | ||
189 | </div> | ||
190 | |||
191 | <div class="slide"> | ||
192 | <h1>Portability & Acceptance</h1> | ||
193 | <h2>Lightweight Daemon</h2> | ||
194 | <ul class="uncremental"> | ||
195 | <li>personal devices and home routers</li> | ||
196 | <li>lightweight for embedded and mobile</li> | ||
197 | <li>lightweight for background daemon use</li> | ||
198 | <li>compiled language</li> | ||
199 | <li>more likely to get included in OS distros</li> | ||
200 | </ul> | ||
201 | </div> | ||
202 | |||
203 | <div class="slide"> | ||
204 | <h1>Architecture</h1> | ||
205 | <h2>Technology</h2> | ||
206 | <ul class="uncremental"> | ||
207 | <li>"Enhanced" P2P with servers as agnostic routers</li> | ||
208 | <li>GNUnet as a framework: privacy, VPN, meshnet</li> | ||
209 | <li>TUM, learned from I2P, Freenet...</li> | ||
210 | # <li>social graph discovery instead of DHT</li> | ||
211 | <li>no file sharing, no big traffic</li> | ||
212 | <li>PSYC on top</li> | ||
213 | <!-- <li>Multicast distribution for scalability (later)</li> --> | ||
214 | </ul> | ||
215 | </div> | ||
216 | |||
217 | <div class="slide"> | ||
218 | <h1>PSYC vs XML and JSON</h1> | ||
219 | |||
220 | <ul class="uncremental"> | ||
221 | <li>extensible: semantically rich</li> | ||
222 | <li>binary/encrypted data capable</li> | ||
223 | <li>efficient as a binary format</li> | ||
224 | <li>table shows parsing speed in milliseconds:</li> | ||
225 | </ul> | ||
226 | <p/> | ||
227 | |||
228 | <table class="smaller" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"> | ||
229 | <caption></caption> | ||
230 | <colgroup><col class="left" /></colgroup> | ||
231 | <colgroup><col class="right" /><col class="right" /></colgroup><colgroup><col class="right" /><col class="right" /></colgroup><colgroup><col class="right" /><col class="right" /><col class="right" /><col class="right" /></colgroup> | ||
232 | <thead> | ||
233 | <tr><th scope="col" class="left"></th><th scope="col" class="right">libpsyc<br/>regular</th><th scope="col" class="center">libpsyc<br/>compact</th><th scope="col" class="right">json-c</th><th scope="col" class="right">json-glib</th><th scope="col" class="right">libxml sax</th><th scope="col" class="right">libxml</th><th scope="col" class="right">rapidxml</th></tr> | ||
234 | </thead> | ||
235 | <tbody> | ||
236 | <tr><td class="left">presence</td><td class="right">236</td><td class="right">122</td><td class="right">2463</td><td class="right">10016</td><td class="right">4997</td><td class="right">7557</td><td class="right">1719</td></tr> | ||
237 | <tr><td class="left">chat msg</td><td class="right">295</td><td class="right">258</td><td class="right">2147</td><td class="right">9526</td><td class="right">5911</td><td class="right">8999</td><td class="right">1850</td></tr> | ||
238 | <tr><td class="left">activity</td><td class="right">353</td><td class="right">279</td><td class="right">4666</td><td class="right">16327</td><td class="right">13357</td><td class="right">28858</td><td class="right">4356</td></tr> | ||
239 | </tbody> | ||
240 | </table> | ||
241 | |||
242 | </div> | ||
243 | |||
244 | ## skipped: a truly private communications backend | ||
245 | |||
246 | <div class="slide"> | ||
247 | <h1>Dissemination</h1> | ||
248 | <h2>Hard to beat Faceboogle</h2> | ||
249 | <ul class="incremental"> | ||
250 | <li>since we need to go onto every computer anyway..</li> | ||
251 | <li>offer something Faceboogle can't provide?</li> | ||
252 | <li>exchanging files between friends sucks</li> | ||
253 | <li>USB sticks, e-mail, file hosters, skype, MSN, Dropbox (brrr!)</li> | ||
254 | <li>So why is it called 'Secure Share' ?</li> | ||
255 | </ul> | ||
256 | </div> | ||
257 | |||
258 | <div class="slide"> | ||
259 | <h1>Desktop Integration</h1> | ||
260 | <h2>'Secure Share' Function</h2> | ||
261 | <ul class="incremental"> | ||
262 | <li>right mouse button click (context menu)</li> | ||
263 | <li>share a file to a channel of subscribers</li> | ||
264 | <li>appears in their file system soon</li> | ||
265 | <li>realtime or delayed notification</li> | ||
266 | <li>no permission dialogs</li> | ||
267 | <li>shipped with your free operating system?</li> | ||
268 | </ul> | ||
269 | </div> | ||
270 | |||
271 | <div class="slide"> | ||
272 | <h1>Secure Share Feature Set</h1> | ||
273 | <h2>1.0 Features</h2> | ||
274 | <ul class="incremental"> | ||
275 | <li>messaging</li> | ||
276 | <li>subscription channels</li> | ||
277 | <li>status updates</li> | ||
278 | <li>file exchange</li> | ||
279 | <li>VPN (virtual private networking)</li> | ||
280 | <li>software distribution</li> | ||
281 | </ul> | ||
282 | </div> | ||
283 | |||
284 | <div class="slide"> | ||
285 | <h1>Secure Share Feature Set</h1> | ||
286 | <h2>Later Features</h2> | ||
287 | <ul> | ||
288 | <li>Personal Use: Syncing Private Stuff</li> | ||
289 | <li>Group Communications, Social Network Features</li> | ||
290 | <li>Media Support: Photo Albums, Videos, Music</li> | ||
291 | <li>Extension API for Custom Social Apps</li> | ||
292 | <li>Realtime Streaming</li> | ||
293 | </ul> | ||
294 | </div> | ||
295 | |||
296 | <div class="slide"> | ||
297 | <img class="framed" src="img/phase0.jpeg" /> | ||
298 | </div> | ||
299 | <div class="slide"> | ||
300 | <img class="framed" src="img/phase1.jpeg" /> | ||
301 | </div> | ||
302 | <div class="slide"> | ||
303 | <img class="framed" src="img/phase2.jpeg" /> | ||
304 | </div> | ||
305 | <div class="slide"> | ||
306 | <img class="framed" src="img/phase3.jpeg" /> | ||
307 | </div> | ||
308 | |||
309 | <div class="slide"> | ||
310 | <h1>Secure Share - the Team</h1> | ||
311 | <h2>Who's involved?</h2> | ||
312 | <ul> | ||
313 | <li>Gabor Toth (secushare.org)</li> | ||
314 | <li>Carlo von lynX (PSYC, secushare)</li> | ||
315 | # <!-- li>Mathias Baumann (PSYC)</li --> | ||
316 | <li>Daniel Reusche (secushare, Unlike Us)</li> | ||
317 | <li>hellekin (lorea, FSF, GNU social)</li> | ||
318 | </ul> | ||
319 | <br/> | ||
320 | with support from Wau Holland Foundation (CCC), | ||
321 | TU München (GNUnet), Institute of Network Cultures | ||
322 | (Unlike Us) and Mr Stallman (Free Software Foundations) | ||
323 | </div> | ||
324 | |||
325 | <div class="slide"> | ||
326 | <h1>If you like what we do</h1> | ||
327 | <h2>We need support</h2> | ||
328 | <img align="right" src="img/oXoXo-380.png" /> | ||
329 | <ul> | ||
330 | <li>Manpower</li> | ||
331 | <li>Alliances</li> | ||
332 | <li>Finances</li> | ||
333 | <li>Publicity</li> | ||
334 | </ul> | ||
335 | <br/> | ||
336 | Check by: secushare.org<br/> | ||
337 | Thank you.<br/> | ||
338 | </div> | ||
339 | |||
340 | <div class="slide"> | ||
341 | <img class="gfx" src="img/gfx-unicast.png" width="600" height="500"/> | ||
342 | </div> | ||
343 | <div class="slide"> | ||
344 | <img class="gfx" src="img/gfx-cloud.png" width="600" height="500"/> | ||
345 | </div> | ||
346 | <div class="slide"> | ||
347 | <img class="gfx" src="img/gfx-multicast.png" width="600" height="500"/> | ||
348 | </div> | ||
349 | |||
350 | <div class="slide"> | ||
351 | <h1>Don't Trust Servers</h1> | ||
352 | <h2>Hardware Servers are vulnerable</h2> | ||
353 | <ul class="uncremental"> | ||
354 | <li>client/server architecture: data resides on servers</li> | ||
355 | <li>federation: data visible on even more servers</li> | ||
356 | <li>memory access via bus sniffing</li> | ||
357 | <li>no shutdown necessary</li> | ||
358 | <li>automated memory image analysis proven</li> | ||
359 | <li>eat-inside or take-away</li> | ||
360 | </ul> | ||
361 | </div> | ||
362 | |||
363 | <div class="slide"> | ||
364 | <h1>Don't Trust Virtual Machines</h1> | ||
365 | <!--h2>Commodity Servers are VMs</h2--> | ||
366 | <ul class="uncremental"> | ||
367 | <li>my own server for 8 euros a month</li> | ||
368 | <li>vulnerable cryptography</li> | ||
369 | <li>memory can be monitored</li> | ||
370 | <li>controlling system accessible by observers</li> | ||
371 | <li>automated monitoring of federated social networks</li> | ||
372 | <li>anti-terror legislation possible</li> | ||
373 | <li>even if <em>your</em> box is at home</li> | ||
374 | </ul> | ||
375 | </div> | ||
376 | |||
377 | <div class="slide"> | ||
378 | <h1>A bad idea whose time has come?</h1> | ||
379 | <h2>End-to-end Encryption in the Browser!!1!11</h2> | ||
380 | <br/> | ||
381 | <ul class="uncremental"> | ||
382 | <li>User interface comes from the server. | ||
383 | <li>Web browser does what the server says. | ||
384 | <li>Server corrupted? It can steal your data. | ||
385 | <li>Only static install helps. Still: | ||
386 | <li>Bad cryptography, bad script signing. | ||
387 | <li>So you might aswell go for the real thing... | ||
388 | </ul> | ||
389 | </div> | ||
390 | |||
391 | <div class="slide"> | ||
392 | <h1>One Too Many (XMPP)</h1> | ||
393 | <h2>Multicasting with XMPP?</h2> | ||
394 | <ul class="uncremental"> | ||
395 | <li>70% of S2S XMPP messages is presence updates (5 years ago)</li> | ||
396 | <li>XMPP has limited support for one-to-many communications</li> | ||
397 | <li>XMPP can be improved, but: trust problem with multicast</li> | ||
398 | </ul> | ||
399 | </div> | ||
400 | |||
401 | <div class="slide"> | ||
402 | <h1>One Too Many (HTTP)</h1> | ||
403 | <h2>Multicasting with HTTP?</h2> | ||
404 | <ul class="uncremental"> | ||
405 | <li>fundamentally feasible</li> | ||
406 | <li>unnatural: HTTP is not bidirectional</li> | ||
407 | <li>requires trust in a federated architecture</li> | ||
408 | </ul> | ||
409 | </div> | ||
410 | |||
411 | <div class="slide"> | ||
412 | <h1>Cross That Bridge As We Get There?</h1> | ||
413 | <h2>Let's just get started with something!</h2> | ||
414 | <ul class="uncremental"> | ||
415 | <li>The Mediocre is the Enemy of the Good</li> | ||
416 | <li>Historic Examples:</li> | ||
417 | <li>HTTP.. HTTP/NG?, SPDY!?</li> | ||
418 | <li>SMTP.. What? Faceboogle!?</li> | ||
419 | <li>XML.. What? JSON!?</li> | ||
420 | <!-- li>SQL..</li --> | ||
421 | </ul> | ||
422 | </div> | ||
423 | |||
424 | <div class="slide"> | ||
425 | <h1>Flexibility</h1> | ||
426 | <h2>Framework Architecture</h2> | ||
427 | <ul class="uncremental"> | ||
428 | <li>a truly private communications backend</li> | ||
429 | <li>social applications to be built on top</li> | ||
430 | <li>emulations of the 'open standards' possible</li> | ||
431 | <li>OStatus, WebID, RDF, even the Twitter API</li> | ||
432 | <li>optional modules for XMPP, IRC available</li> | ||
433 | <li>Activity Streams</li> | ||
434 | </ul> | ||
435 | </div> | ||
436 | |||
437 | <div class="slide"> | ||
438 | <h1>About carlo von lynX</h1> | ||
439 | <h2>Why am I talking here?</h2> | ||
440 | <ul class="uncremental"> | ||
441 | <li>20 years of messaging & chat protocol design</li> | ||
442 | <li>/me etc.</li> | ||
443 | <li>PSYC: federated & multicasting</li> | ||
444 | <li>then Jabber came</li> | ||
445 | <li>PSYC good for business, open source delayed</li> | ||
446 | <li>back then, servers were reliable</li> | ||
447 | </ul> | ||
448 | </div> | ||
449 | |||
450 | </html> | ||
diff --git a/secushare-old-html/2012-Easterhegg.slides.html b/secushare-old-html/2012-Easterhegg.slides.html new file mode 100644 index 0000000..b901e29 --- /dev/null +++ b/secushare-old-html/2012-Easterhegg.slides.html | |||
@@ -0,0 +1,169 @@ | |||
1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" | ||
2 | "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> | ||
3 | |||
4 | <html xmlns="http://www.w3.org/1999/xhtml"> | ||
5 | <head> | ||
6 | <title>Re-Invent the Internet with Secure Share</title> | ||
7 | <meta name="presdate" content="20120201" /> | ||
8 | <!-- metadata --> | ||
9 | <meta name="generator" content="S5" /> | ||
10 | <meta name="version" content="S5 1.1" /> | ||
11 | <meta name="author" content="Carlo v. Loesch" /> | ||
12 | <meta name="company" content="symlynX.com" /> | ||
13 | <!-- configuration parameters --> | ||
14 | <meta name="defaultView" content="slideshow" /> | ||
15 | <meta name="controlVis" content="hidden" /> | ||
16 | <!-- style sheet links --> | ||
17 | <link rel="stylesheet" href="UI/slides.css" type="text/css" media="projection" id="slideProj" /> | ||
18 | <link rel="stylesheet" href="UI/outline.css" type="text/css" media="screen" id="outlineStyle" /> | ||
19 | <link rel="stylesheet" href="UI/print.css" type="text/css" media="print" id="slidePrint" /> | ||
20 | <link rel="stylesheet" href="UI/opera.css" type="text/css" media="projection" id="operaFix" /> | ||
21 | <!-- S5 JS --> | ||
22 | <script src="UI/slides.js" type="text/javascript"></script> | ||
23 | </head> | ||
24 | <body> | ||
25 | |||
26 | <div class="layout"> | ||
27 | <div id="controls"><!-- DO NOT EDIT --></div> | ||
28 | <div id="currentSlide"><!-- DO NOT EDIT --></div> | ||
29 | <div id="header"></div> | ||
30 | <div id="footer"> | ||
31 | secushare: A Framework for ReInventing the Internet | ||
32 | </div> | ||
33 | </div> | ||
34 | |||
35 | <div id="between"> </div> | ||
36 | |||
37 | <div class="presentation"> | ||
38 | |||
39 | <div class="slide"> | ||
40 | <img style="padding: 80px" src="img/secushare-0444.png" /> | ||
41 | </div> | ||
42 | |||
43 | <div class="slide"> | ||
44 | <img class="gfx" src="img/gfx-unicast.png" width="600" height="500"/> | ||
45 | </div> | ||
46 | <div class="slide"> | ||
47 | <img class="gfx" src="img/gfx-cloud.png" width="600" height="500"/> | ||
48 | </div> | ||
49 | <div class="slide"> | ||
50 | <img class="gfx" src="img/gfx-multicast.png" width="600" height="500"/> | ||
51 | </div> | ||
52 | |||
53 | <div class="slide"> | ||
54 | <h1>One Too Many</h1> | ||
55 | <h2>Multicasting for Scalability</h2> | ||
56 | <ul class="uncremental"> | ||
57 | <li>social = one-to-many | many-to-many</li> | ||
58 | <li>70% of S2S XMPP messages is presence updates (5 years ago)</li> | ||
59 | <li>round robin distribution = slow (SMTP, XMPP, OStatus)</li> | ||
60 | <li>multicast = distribution trees</li> | ||
61 | <!-- li>HTTP is one-to-one, query/response, not bidirectional</li> | ||
62 | <li>XMPP has a trust issue (says the XSF)</li --> | ||
63 | <li>Bittorrent: from files to life streams?</li> | ||
64 | </ul> | ||
65 | </div> | ||
66 | |||
67 | <div class="slide"> | ||
68 | <h1>Don't Trust Servers</h1> | ||
69 | <h2>Servers are vulnerable</h2> | ||
70 | <ul class="uncremental"> | ||
71 | <li>client/server architecture: data resides on servers</li> | ||
72 | <li>federation: data visible on even more servers</li> | ||
73 | <li>memory access via bus sniffing</li> | ||
74 | <li>no shutdown necessary</li> | ||
75 | <li>automated memory image analysis proven</li> | ||
76 | </ul> | ||
77 | </div> | ||
78 | |||
79 | <div class="slide"> | ||
80 | <h1>Don't Trust Virtual Machines</h1> | ||
81 | <!--h2>Commodity Servers are VMs</h2--> | ||
82 | <ul class="uncremental"> | ||
83 | <li>my own server for 8 euros a month</li> | ||
84 | <li>vulnerable cryptography</li> | ||
85 | <li>memory can be monitored</li> | ||
86 | <li>controlling system accessible by observers</li> | ||
87 | <li>automated monitoring of federated social networks</li> | ||
88 | <li>anti-terror legislation possible</li> | ||
89 | <li>even if <em>your</em> box is at home</li> | ||
90 | </ul> | ||
91 | </div> | ||
92 | |||
93 | <div class="slide"> | ||
94 | <h1>Technologies</h1> | ||
95 | <ul class="uncremental"> | ||
96 | <li>GNUnet as a framework: routing and crypto</li> | ||
97 | <li>TUM, learned from I2P, Freenet...</li> | ||
98 | <li>"Enhanced" P2P with servers as agnostic routers</li> | ||
99 | <li>PSYC on top for trust relations and</li> | ||
100 | <li>friend discovery over social graph instead of DHT</li> | ||
101 | <li>no file sharing, no big traffic</li> | ||
102 | </ul> | ||
103 | |||
104 | <div class="slide"> | ||
105 | <h1>Privacy vs. Paranoia</h1> | ||
106 | <ul class="uncremental"> | ||
107 | <li>just to the intended recipients (e2e encryption)</li> | ||
108 | <li>packet size padding (unobservability)</li> | ||
109 | <li>flexible number of anonymization hops</li> | ||
110 | <li>optional intentional delay</li> | ||
111 | <li>forward secrecy</li> | ||
112 | <li>deniability (a log is no proof of nothing)</li> | ||
113 | <li>private subscription lists (not on a server)</li> | ||
114 | </ul> | ||
115 | </div> | ||
116 | |||
117 | <div class="slide"> | ||
118 | <h1>It's A Question Of Trust</h1> | ||
119 | <h2>Social Onion Routing</h2> | ||
120 | <ul class="uncremental"> | ||
121 | <li>trust relationship between nodes</li> | ||
122 | <li>multihop provides anonymization</li> | ||
123 | <li>motivation to provide "servers" as fast routers</li> | ||
124 | <li>my server is me, so you can trust my server</li> | ||
125 | <li>"P2P" a lot faster over servers</li> | ||
126 | <li>servers agnostically maintain messages (and data)</li> | ||
127 | <li>embed multicast trees into the onion routing</li> | ||
128 | </ul> | ||
129 | </div> | ||
130 | |||
131 | <div class="slide"> | ||
132 | <h1>Dissemination</h1> | ||
133 | <h2>Hard to beat Faceboogle</h2> | ||
134 | <ul class="uncremental"> | ||
135 | <li>since we need to go onto every computer anyway..</li> | ||
136 | <li>offer something Faceboogle can't provide?</li> | ||
137 | <li>exchanging files between friends sucks</li> | ||
138 | <li>USB sticks, e-mail, file hosters, skype, MSN, DropBox (brrr!)</li> | ||
139 | <li>WTF is 'Secure Share' ?</li> | ||
140 | </ul> | ||
141 | </div> | ||
142 | |||
143 | <div class="slide"> | ||
144 | <h1>A bad idea whose time has come?</h1> | ||
145 | <h2>End-to-end Encryption in the Browser!!1!11</h2> | ||
146 | <ul class="uncremental"> | ||
147 | <li>User interface comes from the server. | ||
148 | <li>Web browser does what the server says. | ||
149 | <li>Server corrupted? It can steal your data. | ||
150 | <li>Only static install helps. Still: | ||
151 | <li>Bad cryptography, bad script signing. | ||
152 | <li>So you might aswell go for the real thing... | ||
153 | </ul> | ||
154 | </div> | ||
155 | |||
156 | <div class="slide"> | ||
157 | <h1>Secure Share</h1> | ||
158 | <h2>Who's involved?</h2> | ||
159 | <ul> | ||
160 | <li>Carlo v. Lynx</li> | ||
161 | <li>Gabor Toth</li> | ||
162 | <li>Mathias Baumann</li> | ||
163 | <li>Daniel Reusche</li> | ||
164 | <li>secushare.org</li> | ||
165 | </ul> | ||
166 | </div> | ||
167 | |||
168 | |||
169 | </html> | ||
diff --git a/secushare-old-html/2012-UnlikeUs.slides.html b/secushare-old-html/2012-UnlikeUs.slides.html new file mode 100644 index 0000000..de7b6d5 --- /dev/null +++ b/secushare-old-html/2012-UnlikeUs.slides.html | |||
@@ -0,0 +1,147 @@ | |||
1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" | ||
2 | "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> | ||
3 | |||
4 | <!-- don't delete this file.. it is not generated by anything else! --> | ||
5 | |||
6 | <html xmlns="http://www.w3.org/1999/xhtml"> | ||
7 | <head> | ||
8 | <title>Re-Invent the Internet with Secure Share</title> | ||
9 | <meta name="presdate" content="20120201" /> | ||
10 | <!-- metadata --> | ||
11 | <meta name="generator" content="S5" /> | ||
12 | <meta name="version" content="S5 1.1" /> | ||
13 | <meta name="author" content="Carlo v. Loesch" /> | ||
14 | <meta name="company" content="symlynX.com" /> | ||
15 | <!-- configuration parameters --> | ||
16 | <meta name="defaultView" content="slideshow" /> | ||
17 | <meta name="controlVis" content="hidden" /> | ||
18 | <!-- style sheet links --> | ||
19 | <link rel="stylesheet" href="UI/slides.css" type="text/css" media="projection" id="slideProj" /> | ||
20 | <link rel="stylesheet" href="UI/outline.css" type="text/css" media="screen" id="outlineStyle" /> | ||
21 | <link rel="stylesheet" href="UI/print.css" type="text/css" media="print" id="slidePrint" /> | ||
22 | <link rel="stylesheet" href="UI/opera.css" type="text/css" media="projection" id="operaFix" /> | ||
23 | <!-- S5 JS --> | ||
24 | <script src="UI/slides.js" type="text/javascript"></script> | ||
25 | </head> | ||
26 | <body> | ||
27 | |||
28 | <div class="layout"> | ||
29 | <div id="controls"><!-- DO NOT EDIT --></div> | ||
30 | <div id="currentSlide"><!-- DO NOT EDIT --></div> | ||
31 | <div id="header"></div> | ||
32 | <div id="footer"> | ||
33 | secushare: A Framework for ReInventing the Internet | ||
34 | </div> | ||
35 | </div> | ||
36 | |||
37 | <div id="between"> </div> | ||
38 | |||
39 | <div class="presentation"> | ||
40 | |||
41 | <div class="slide"> | ||
42 | <img style="padding: 80px" src="img/secushare-0444.png" /> | ||
43 | </div> | ||
44 | |||
45 | <div class="slide"> | ||
46 | <img class="gfx" src="img/gfx-unicast.png" width="600" height="500"/> | ||
47 | </div> | ||
48 | <div class="slide"> | ||
49 | <img class="gfx" src="img/gfx-cloud.png" width="600" height="500"/> | ||
50 | </div> | ||
51 | <div class="slide"> | ||
52 | <img class="gfx" src="img/gfx-multicast.png" width="600" height="500"/> | ||
53 | </div> | ||
54 | |||
55 | <div class="slide"> | ||
56 | <h1>One Too Many</h1> | ||
57 | <h2>Multicasting for Scalability</h2> | ||
58 | <ul class="uncremental"> | ||
59 | <li>social = one-to-many | many-to-many</li> | ||
60 | <li>70% of S2S XMPP messages is presence updates (5 years ago)</li> | ||
61 | <li>round robin distribution = slow (SMTP, XMPP, OStatus)</li> | ||
62 | <li>multicast = distribution trees</li> | ||
63 | <!-- li>HTTP is one-to-one, query/response, not bidirectional</li> | ||
64 | <li>XMPP has a trust issue (says the XSF)</li --> | ||
65 | <li>Bittorrent: from files to life streams?</li> | ||
66 | </ul> | ||
67 | </div> | ||
68 | |||
69 | <div class="slide"> | ||
70 | <h1>Don't Trust Servers</h1> | ||
71 | <h2>Servers are vulnerable</h2> | ||
72 | <ul class="uncremental"> | ||
73 | <li>client/server architecture: data resides on servers</li> | ||
74 | <li>federation: data visible on even more servers</li> | ||
75 | <li>memory access via bus sniffing</li> | ||
76 | <li>no shutdown necessary</li> | ||
77 | <li>automated memory image analysis proven</li> | ||
78 | </ul> | ||
79 | </div> | ||
80 | |||
81 | <div class="slide"> | ||
82 | <h1>Don't Trust Virtual Machines</h1> | ||
83 | <!--h2>Commodity Servers are VMs</h2--> | ||
84 | <ul class="uncremental"> | ||
85 | <li>my own server for 8 euros a month</li> | ||
86 | <li>vulnerable cryptography</li> | ||
87 | <li>memory can be monitored</li> | ||
88 | <li>controlling system accessible by observers</li> | ||
89 | <li>automated monitoring of federated social networks</li> | ||
90 | <li>anti-terror legislation possible</li> | ||
91 | <li>even if <em>your</em> box is at home</li> | ||
92 | </ul> | ||
93 | </div> | ||
94 | |||
95 | <div class="slide"> | ||
96 | <h1>Privacy vs. Paranoia</h1> | ||
97 | <ul class="uncremental"> | ||
98 | <li>just to the intended recipients (e2e encryption)</li> | ||
99 | <li>packet size padding (unobservability)</li> | ||
100 | <li>flexible number of anonymization hops</li> | ||
101 | <li>optional intentional delay</li> | ||
102 | <li>forward secrecy</li> | ||
103 | <li>deniability (a log is no proof of nothing)</li> | ||
104 | <li>private subscription lists (not on a server)</li> | ||
105 | </ul> | ||
106 | </div> | ||
107 | |||
108 | <div class="slide"> | ||
109 | <h1>It's A Question Of Trust</h1> | ||
110 | <h2>Social Onion Routing</h2> | ||
111 | <ul class="uncremental"> | ||
112 | <li>trust relationship between nodes</li> | ||
113 | <li>multihop provides anonymization</li> | ||
114 | <li>motivation to provide "servers" as fast routers</li> | ||
115 | <li>my server is me, so you can trust my server</li> | ||
116 | <li>"P2P" a lot faster over servers</li> | ||
117 | <li>servers agnostically maintain messages (and data)</li> | ||
118 | <li>embed multicast trees into the onion routing</li> | ||
119 | </ul> | ||
120 | </div> | ||
121 | |||
122 | <div class="slide"> | ||
123 | <h1>A bad idea whose time has come?</h1> | ||
124 | <h2>End-to-end Encryption in the Browser!!1!11</h2> | ||
125 | <ul class="uncremental"> | ||
126 | <li>User interface comes from the server. | ||
127 | <li>Web browser does what the server says. | ||
128 | <li>Server corrupted? It can steal your data. | ||
129 | <li>Only static install helps. Still: | ||
130 | <li>Bad cryptography, bad script signing. | ||
131 | <li>So you might aswell go for the real thing... | ||
132 | </ul> | ||
133 | </div> | ||
134 | |||
135 | <div class="slide"> | ||
136 | <h1>Cross That Bridge As We Get There?</h1> | ||
137 | <h2>Let's just get started with the low hanging fruit!</h2> | ||
138 | <ul class="uncremental"> | ||
139 | <li>The Mediocre is the Enemy of the Good</li> | ||
140 | <li>Historic Examples:</li> | ||
141 | <li>HTTP.. AJAX, XMLSocket, HTTP/NG?, SPDY!?</li> | ||
142 | <li>SMTP.. What? Faceboogle!?</li> | ||
143 | <li>XML.. What? JSON!?</li> | ||
144 | </ul> | ||
145 | </div> | ||
146 | |||
147 | </html> | ||
diff --git a/secushare-old-html/UI/.thumbnails/greensquares.jpg.png b/secushare-old-html/UI/.thumbnails/greensquares.jpg.png new file mode 100644 index 0000000..815fc04 --- /dev/null +++ b/secushare-old-html/UI/.thumbnails/greensquares.jpg.png | |||
Binary files differ | |||
diff --git a/secushare-old-html/UI/.thumbnails/squares.jpg.png b/secushare-old-html/UI/.thumbnails/squares.jpg.png new file mode 100644 index 0000000..78b4383 --- /dev/null +++ b/secushare-old-html/UI/.thumbnails/squares.jpg.png | |||
Binary files differ | |||
diff --git a/secushare-old-html/UI/blank.gif b/secushare-old-html/UI/blank.gif new file mode 100644 index 0000000..75b945d --- /dev/null +++ b/secushare-old-html/UI/blank.gif | |||
Binary files differ | |||
diff --git a/secushare-old-html/UI/dark/pretty.css b/secushare-old-html/UI/dark/pretty.css new file mode 100644 index 0000000..34b4192 --- /dev/null +++ b/secushare-old-html/UI/dark/pretty.css | |||
@@ -0,0 +1,117 @@ | |||
1 | /* psyced! */ | ||
2 | |||
3 | body { | ||
4 | background: #000 url(stars_bg.jpg) 0% 0 no-repeat; color: #bbb; | ||
5 | font-size: 2em; font-family: Ubuntu, DejaVu Sans, Verdana, Helvetica; | ||
6 | /* font-family: Sawasdee; font-weight: bold; */ | ||
7 | } | ||
8 | :link, :visited {text-decoration: none; color: #f80;} | ||
9 | #controls :active {color: #88A !important;} | ||
10 | #controls :focus {outline: 1px dotted #227;} | ||
11 | h1, h2, h3, h4 { font-size: 100%; margin: 0; padding: 0; font-weight: inherit;} | ||
12 | ul, pre {margin: 0; line-height: 1em;} | ||
13 | html, body {margin: 0; padding: 0;} | ||
14 | |||
15 | blockquote, q {font-style: italic;} | ||
16 | blockquote {padding: 0 2em 0.5em; margin: 0 1.5em 0.5em; text-align: center; font-size: 1em;} | ||
17 | blockquote p {margin: 0;} | ||
18 | blockquote i {font-style: normal;} | ||
19 | blockquote b {display: block; margin-top: 0.5em; font-weight: normal; font-size: smaller; font-style: normal;} | ||
20 | blockquote b i {font-style: italic;} | ||
21 | |||
22 | kbd {font-weight: bold; font-size: 1em;} | ||
23 | sup {font-size: smaller; line-height: 1px;} | ||
24 | |||
25 | .slide code {padding: 2px 0.25em; font-weight: bold; color: #533;} | ||
26 | .slide code.bad, code del {color: red;} | ||
27 | .slide code.old {color: silver;} | ||
28 | .slide pre {padding: .5em; margin: 1.3em; | ||
29 | color: #3f3; background: #000; font-size: 70%;} | ||
30 | .slide pre code {display: block;} | ||
31 | .slide ul {margin-left: 5%; margin-right: 7%; list-style: disc;} | ||
32 | .slide li {margin-top: 0.75em; margin-right: 0;} | ||
33 | .slide ul ul {line-height: 1;} | ||
34 | .slide ul ul li {margin: .2em; font-size: 85%; list-style: square;} | ||
35 | .slide img.leader {display: block; margin: 0 auto;} | ||
36 | #micro { font-size: 44%; } | ||
37 | |||
38 | div#header, div#footer { | ||
39 | background: #000 /* url(bobot.png) repeat-x */; color: #bbb; | ||
40 | } | ||
41 | div#header { | ||
42 | background: #000 /* url(botop.png) 100% repeat-x */; | ||
43 | line-height: 1px; | ||
44 | } | ||
45 | div#footer {font-size: 0.5em; font-weight: bold; | ||
46 | padding: 0 10px; text-transform: uppercase} | ||
47 | #footer h1, #footer h2 {display: block; padding: 0 1em;} | ||
48 | #footer h2 {font-style: italic;} | ||
49 | |||
50 | div.long {font-size: 0.75em;} | ||
51 | h1 abbr {font-variant: small-caps;} | ||
52 | |||
53 | .slide h1 {position: absolute; top: 0; left: 0; z-index: 1; | ||
54 | margin: 0; padding: 10px 0 0 10px; white-space: nowrap; | ||
55 | font-family: Impact, Ubuntu, DejaVu Sans, Verdana, Helvetica, sans-serif; | ||
56 | font-weight: normal; text-transform: uppercase; color: #eee; } | ||
57 | .slide h2 { color: #3f3; } | ||
58 | .slide h3 { color: #fff; font-size: 130%;} | ||
59 | .slide h4 { color: #3f3; font-size: 80%; } | ||
60 | small { color: #f34; } | ||
61 | |||
62 | #slide0 {padding-top: 3.5em; font-size: 90%;} | ||
63 | #slide0 h1 {position: static; margin: 1em 0 0; padding: 0; | ||
64 | font: bold 1.5em serif; white-space: normal; | ||
65 | text-transform: none; color: #999; background: transparent;} | ||
66 | #slide0 h2 {font: bold italic 1em; margin: 0.25em;} | ||
67 | #slide0 h3 {margin-top: 1.5em; font-size: 1.2em;} | ||
68 | #slide0 h4 {margin-top: 0; font-size: 1em;} | ||
69 | |||
70 | div#controls {position: absolute; left: 50%; bottom: 0; | ||
71 | width: 50%; | ||
72 | text-align: right; font: bold 0.9em;} | ||
73 | html>body div#controls {position: fixed; padding: 0 0 1em 0; | ||
74 | top: auto;} | ||
75 | div#controls form {position: absolute; bottom: 0; right: 0; width: 100%; | ||
76 | margin: 0; padding: 0;} | ||
77 | #controls #navLinks a {padding: 0; margin: 0 0.5em; | ||
78 | border: none; color: #3f3; cursor: pointer;} | ||
79 | #controls #navList {height: 1em;} | ||
80 | #controls #navList #jumplist {position: absolute; bottom: 0; right: 0; background: #000; color: #3f3;} | ||
81 | |||
82 | #currentSlide { text-align: center; font-size: 0.5em; | ||
83 | background: #333; color: #fff;} | ||
84 | |||
85 | ul.urls {list-style: none; display: inline; margin: 0;} | ||
86 | .urls li {display: inline; margin: 0;} | ||
87 | .note {display: none;} | ||
88 | .external {border-bottom: 1px dotted gray;} | ||
89 | html>body .external {border-bottom: none;} | ||
90 | .external:after {content: " \274F"; font-size: smaller; color: #77B;} | ||
91 | |||
92 | .incremental, .incremental *, .incremental *:after {color: #222; visibility: visible;} | ||
93 | img.incremental {visibility: hidden;} | ||
94 | .slide .current {color: #fff;} | ||
95 | |||
96 | |||
97 | /* diagnostics | ||
98 | li:after {content: " [" attr(class) "]"; color: #F88;} | ||
99 | |||
100 | .slide { opacity: 0.8; } | ||
101 | */ | ||
102 | |||
103 | .smaller {font-size: 70%; line-height: .9em; color: #f34; } | ||
104 | |||
105 | #logo { position: absolute; right: 10px; bottom: 40px; z-index: 7; } | ||
106 | |||
107 | |||
108 | #between { background-color: black; position: absolute; opacity: 0.4; | ||
109 | width: 100%; height: 100%; z-index: 2; } | ||
110 | |||
111 | .framed { opacity: 0.6; border: 3px solid black; } | ||
112 | .indented { margin-left: 100px; border: 3px solid black; } | ||
113 | .gfx { opacity: 0.8; border: 3px solid black; padding: 20px; | ||
114 | background-color: #9cf; margin-left: 40px; } | ||
115 | |||
116 | .left { text-align: left; } | ||
117 | .right { text-align: right; } | ||
diff --git a/secushare-old-html/UI/darken.png b/secushare-old-html/UI/darken.png new file mode 100644 index 0000000..7a5fb18 --- /dev/null +++ b/secushare-old-html/UI/darken.png | |||
Binary files differ | |||
diff --git a/secushare-old-html/UI/framing.css b/secushare-old-html/UI/framing.css new file mode 100644 index 0000000..917976f --- /dev/null +++ b/secushare-old-html/UI/framing.css | |||
@@ -0,0 +1,23 @@ | |||
1 | /* The following styles size, place, and layer the slide components. | ||
2 | Edit these if you want to change the overall slide layout. | ||
3 | The commented lines can be uncommented (and modified, if necessary) | ||
4 | to help you with the rearrangement process. */ | ||
5 | |||
6 | /* target = 1024x768 */ | ||
7 | |||
8 | div#header, div#footer, .slide {width: 100%; top: 0; left: 0;} | ||
9 | div#header {top: 0; height: 50px; z-index: 1;} | ||
10 | div#footer {top: auto; bottom: 0; height: 50; z-index: 5;} | ||
11 | .slide {top: 0; width: 80%; padding: 3.5em 4% 4%; z-index: 2; list-style: none;} | ||
12 | div#controls {left: 50%; bottom: 0; width: 50%; z-index: 100;} | ||
13 | div#controls form {position: absolute; bottom: 0; right: 0; width: 100%; | ||
14 | margin: 0;} | ||
15 | #currentSlide {position: absolute; width: 12%; right: 0; bottom: 0; z-index: 10;} | ||
16 | html>body #currentSlide {position: fixed;} | ||
17 | |||
18 | /* | ||
19 | div#header {background: #FCC;} | ||
20 | div#footer {background: #CCF;} | ||
21 | div#controls {background: #BBD;} | ||
22 | div#currentSlide {background: #FFC;} | ||
23 | */ | ||
diff --git a/secushare-old-html/UI/greensquares.jpg b/secushare-old-html/UI/greensquares.jpg new file mode 100644 index 0000000..b6ef139 --- /dev/null +++ b/secushare-old-html/UI/greensquares.jpg | |||
Binary files differ | |||
diff --git a/secushare-old-html/UI/iepngfix.htc b/secushare-old-html/UI/iepngfix.htc new file mode 100644 index 0000000..0d17262 --- /dev/null +++ b/secushare-old-html/UI/iepngfix.htc | |||
@@ -0,0 +1,42 @@ | |||
1 | <public:component> | ||
2 | <public:attach event="onpropertychange" onevent="doFix()" /> | ||
3 | |||
4 | <script> | ||
5 | |||
6 | // IE5.5+ PNG Alpha Fix v1.0 by Angus Turnbull http://www.twinhelix.com | ||
7 | // Free usage permitted as long as this notice remains intact. | ||
8 | |||
9 | // This must be a path to a blank image. That's all the configuration you need here. | ||
10 | var blankImg = 'blank.gif'; | ||
11 | |||
12 | var f = 'DXImageTransform.Microsoft.AlphaImageLoader'; | ||
13 | |||
14 | function filt(s, m) { | ||
15 | if (filters[f]) { | ||
16 | filters[f].enabled = s ? true : false; | ||
17 | if (s) with (filters[f]) { src = s; sizingMethod = m } | ||
18 | } else if (s) style.filter = 'progid:'+f+'(src="'+s+'",sizingMethod="'+m+'")'; | ||
19 | } | ||
20 | |||
21 | function doFix() { | ||
22 | if ((parseFloat(navigator.userAgent.match(/MSIE (\S+)/)[1]) < 5.5) || | ||
23 | (event && !/(background|src)/.test(event.propertyName))) return; | ||
24 | |||
25 | if (tagName == 'IMG') { | ||
26 | if ((/\.png$/i).test(src)) { | ||
27 | filt(src, 'image'); // was 'scale' | ||
28 | src = blankImg; | ||
29 | } else if (src.indexOf(blankImg) < 0) filt(); | ||
30 | } else if (style.backgroundImage) { | ||
31 | if (style.backgroundImage.match(/^url[("']+(.*\.png)[)"']+$/i)) { | ||
32 | var s = RegExp.$1; | ||
33 | style.backgroundImage = ''; | ||
34 | filt(s, 'crop'); | ||
35 | } else filt(); | ||
36 | } | ||
37 | } | ||
38 | |||
39 | doFix(); | ||
40 | |||
41 | </script> | ||
42 | </public:component> | ||
diff --git a/secushare-old-html/UI/lite/pretty.css b/secushare-old-html/UI/lite/pretty.css new file mode 100644 index 0000000..580bdcf --- /dev/null +++ b/secushare-old-html/UI/lite/pretty.css | |||
@@ -0,0 +1,114 @@ | |||
1 | /* psyced! */ | ||
2 | |||
3 | body { background: #789; /* url(stars_bg.jpg) 0% 0 no-repeat; */ color: #000; | ||
4 | font-size: 2em; font-family: Ubuntu, DejaVu Sans, Verdana, Helvetica; font-weight: bold; } | ||
5 | :link, :visited {text-decoration: none; color: #f80;} | ||
6 | #controls :active {color: #88A !important;} | ||
7 | #controls :focus {outline: 1px dotted #227;} | ||
8 | h1, h2, h3, h4 { font-size: 100%; margin: 0; padding: 0; font-weight: inherit;} | ||
9 | ul, pre {margin: 0; line-height: 1em;} | ||
10 | html, body {margin: 0; padding: 0;} | ||
11 | |||
12 | blockquote, q {font-style: italic;} | ||
13 | blockquote {padding: 0 2em 0.5em; margin: 0 1.5em 0.5em; text-align: center; font-size: 1em;} | ||
14 | blockquote p {margin: 0;} | ||
15 | blockquote i {font-style: normal;} | ||
16 | blockquote b {display: block; margin-top: 0.5em; font-weight: normal; font-size: smaller; font-style: normal;} | ||
17 | blockquote b i {font-style: italic;} | ||
18 | |||
19 | kbd {font-weight: bold; font-size: 1em;} | ||
20 | sup {font-size: smaller; line-height: 1px;} | ||
21 | |||
22 | .slide code {padding: 2px 0.25em; font-weight: bold; color: #533;} | ||
23 | .slide code.bad, code del {color: red;} | ||
24 | .slide code.old {color: silver;} | ||
25 | .slide pre {padding: .5em; margin: 1.3em; | ||
26 | color: #3f3; background: #000; font-size: 70%;} | ||
27 | .slide pre code {display: block;} | ||
28 | .slide ul {margin-left: 5%; margin-right: 7%; list-style: disc;} | ||
29 | .slide li {margin-top: 0.75em; margin-right: 0;} | ||
30 | .slide ul ul {line-height: 1;} | ||
31 | .slide ul ul li {margin: .2em; font-size: 85%; list-style: square;} | ||
32 | .slide img.leader {display: block; margin: 0 auto;} | ||
33 | #micro { font-size: 44%; } | ||
34 | |||
35 | div#header, div#footer { | ||
36 | background: #000 /* url(bobot.png) repeat-x */; color: #bbb; | ||
37 | } | ||
38 | div#header { | ||
39 | background: #000 /* url(botop.png) 100% repeat-x */; | ||
40 | line-height: 1px; | ||
41 | } | ||
42 | div#footer {font-size: 0.5em; font-weight: bold; | ||
43 | padding: 0 10px; text-transform: uppercase} | ||
44 | #footer h1, #footer h2 {display: block; padding: 0 1em;} | ||
45 | #footer h2 {font-style: italic;} | ||
46 | |||
47 | div.long {font-size: 0.75em;} | ||
48 | h1 abbr {font-variant: small-caps;} | ||
49 | |||
50 | .slide h1 {position: absolute; top: 0; left: 0; z-index: 1; | ||
51 | margin: 0; padding: 10px 0 0 10px; white-space: nowrap; | ||
52 | font-family: Impact, Ubuntu, DejaVu Sans, Verdana, Helvetica, sans-serif; | ||
53 | font-weight: normal; text-transform: uppercase; color: #eee; } | ||
54 | .slide h2 { color: #3f3; } | ||
55 | .slide h3 { color: #fff; font-size: 130%;} | ||
56 | .slide h4 { color: #3f3; font-size: 80%; } | ||
57 | small { color: #f34; } | ||
58 | |||
59 | #slide0 {padding-top: 3.5em; font-size: 90%;} | ||
60 | #slide0 h1 {position: static; margin: 1em 0 0; padding: 0; | ||
61 | font: bold 1.5em serif; white-space: normal; | ||
62 | text-transform: none; color: #999; background: transparent;} | ||
63 | #slide0 h2 {font: bold italic 1em; margin: 0.25em;} | ||
64 | #slide0 h3 {margin-top: 1.5em; font-size: 1.2em;} | ||
65 | #slide0 h4 {margin-top: 0; font-size: 1em;} | ||
66 | |||
67 | div#controls {position: absolute; left: 50%; bottom: 0; | ||
68 | width: 50%; | ||
69 | text-align: right; font: bold 0.9em;} | ||
70 | html>body div#controls {position: fixed; padding: 0 0 1em 0; | ||
71 | top: auto;} | ||
72 | div#controls form {position: absolute; bottom: 0; right: 0; width: 100%; | ||
73 | margin: 0; padding: 0;} | ||
74 | #controls #navLinks a {padding: 0; margin: 0 0.5em; | ||
75 | border: none; color: #3f3; cursor: pointer;} | ||
76 | #controls #navList {height: 1em;} | ||
77 | #controls #navList #jumplist {position: absolute; bottom: 0; right: 0; background: #000; color: #3f3;} | ||
78 | |||
79 | #currentSlide { text-align: center; font-size: 0.5em; | ||
80 | background: #333; color: #fff;} | ||
81 | |||
82 | ul.urls {list-style: none; display: inline; margin: 0;} | ||
83 | .urls li {display: inline; margin: 0;} | ||
84 | .note {display: none;} | ||
85 | .external {border-bottom: 1px dotted gray;} | ||
86 | html>body .external {border-bottom: none;} | ||
87 | .external:after {content: " \274F"; font-size: smaller; color: #77B;} | ||
88 | |||
89 | .incremental, .incremental *, .incremental *:after {color: #222; visibility: visible;} | ||
90 | img.incremental {visibility: hidden;} | ||
91 | .slide .current {color: #fff;} | ||
92 | |||
93 | |||
94 | /* diagnostics | ||
95 | li:after {content: " [" attr(class) "]"; color: #F88;} | ||
96 | |||
97 | .slide { opacity: 0.8; } | ||
98 | */ | ||
99 | |||
100 | .smaller {font-size: 70%; line-height: .9em; color: #ff0; } | ||
101 | |||
102 | #logo { position: absolute; right: 10px; bottom: 40px; z-index: 7; } | ||
103 | |||
104 | |||
105 | #between { background-color: black; position: absolute; opacity: 0.4; | ||
106 | width: 100%; height: 100%; z-index: 2; } | ||
107 | |||
108 | .framed { border: 3px solid black; } | ||
109 | .indented { margin-left: 100px; border: 3px solid black; } | ||
110 | .gfx { opacity: 0.8; border: 3px solid black; padding: 20px; | ||
111 | background-color: #9cf; margin-left: 40px; } | ||
112 | |||
113 | .left { text-align: left; } | ||
114 | .right { text-align: right; } | ||
diff --git a/secushare-old-html/UI/opera.css b/secushare-old-html/UI/opera.css new file mode 100644 index 0000000..9e9d2a3 --- /dev/null +++ b/secushare-old-html/UI/opera.css | |||
@@ -0,0 +1,7 @@ | |||
1 | /* DO NOT CHANGE THESE unless you really want to break Opera Show */ | ||
2 | .slide { | ||
3 | visibility: visible !important; | ||
4 | position: static !important; | ||
5 | page-break-before: always; | ||
6 | } | ||
7 | #slide0 {page-break-before: avoid;} | ||
diff --git a/secushare-old-html/UI/outline.css b/secushare-old-html/UI/outline.css new file mode 100644 index 0000000..62db519 --- /dev/null +++ b/secushare-old-html/UI/outline.css | |||
@@ -0,0 +1,15 @@ | |||
1 | /* don't change this unless you want the layout stuff to show up in the outline view! */ | ||
2 | |||
3 | .layout div, #footer *, #controlForm * {display: none;} | ||
4 | #footer, #controls, #controlForm, #navLinks, #toggle { | ||
5 | display: block; visibility: visible; margin: 0; padding: 0;} | ||
6 | #toggle {float: right; padding: 0.5em;} | ||
7 | html>body #toggle {position: fixed; top: 0; right: 0;} | ||
8 | |||
9 | /* making the outline look pretty-ish */ | ||
10 | |||
11 | #slide0 h1, #slide0 h2, #slide0 h3, #slide0 h4 {border: none; margin: 0;} | ||
12 | #slide0 h1 {padding-top: 1.5em;} | ||
13 | .slide h1 {margin: 1.5em 0 0; padding-top: 0.25em; | ||
14 | border-top: 1px solid #888; border-bottom: 1px solid #AAA;} | ||
15 | #toggle {border: 1px solid; border-width: 0 0 1px 1px; background: #FFF;} | ||
diff --git a/secushare-old-html/UI/pretty.css b/secushare-old-html/UI/pretty.css new file mode 100644 index 0000000..34b4192 --- /dev/null +++ b/secushare-old-html/UI/pretty.css | |||
@@ -0,0 +1,117 @@ | |||
1 | /* psyced! */ | ||
2 | |||
3 | body { | ||
4 | background: #000 url(stars_bg.jpg) 0% 0 no-repeat; color: #bbb; | ||
5 | font-size: 2em; font-family: Ubuntu, DejaVu Sans, Verdana, Helvetica; | ||
6 | /* font-family: Sawasdee; font-weight: bold; */ | ||
7 | } | ||
8 | :link, :visited {text-decoration: none; color: #f80;} | ||
9 | #controls :active {color: #88A !important;} | ||
10 | #controls :focus {outline: 1px dotted #227;} | ||
11 | h1, h2, h3, h4 { font-size: 100%; margin: 0; padding: 0; font-weight: inherit;} | ||
12 | ul, pre {margin: 0; line-height: 1em;} | ||
13 | html, body {margin: 0; padding: 0;} | ||
14 | |||
15 | blockquote, q {font-style: italic;} | ||
16 | blockquote {padding: 0 2em 0.5em; margin: 0 1.5em 0.5em; text-align: center; font-size: 1em;} | ||
17 | blockquote p {margin: 0;} | ||
18 | blockquote i {font-style: normal;} | ||
19 | blockquote b {display: block; margin-top: 0.5em; font-weight: normal; font-size: smaller; font-style: normal;} | ||
20 | blockquote b i {font-style: italic;} | ||
21 | |||
22 | kbd {font-weight: bold; font-size: 1em;} | ||
23 | sup {font-size: smaller; line-height: 1px;} | ||
24 | |||
25 | .slide code {padding: 2px 0.25em; font-weight: bold; color: #533;} | ||
26 | .slide code.bad, code del {color: red;} | ||
27 | .slide code.old {color: silver;} | ||
28 | .slide pre {padding: .5em; margin: 1.3em; | ||
29 | color: #3f3; background: #000; font-size: 70%;} | ||
30 | .slide pre code {display: block;} | ||
31 | .slide ul {margin-left: 5%; margin-right: 7%; list-style: disc;} | ||
32 | .slide li {margin-top: 0.75em; margin-right: 0;} | ||
33 | .slide ul ul {line-height: 1;} | ||
34 | .slide ul ul li {margin: .2em; font-size: 85%; list-style: square;} | ||
35 | .slide img.leader {display: block; margin: 0 auto;} | ||
36 | #micro { font-size: 44%; } | ||
37 | |||
38 | div#header, div#footer { | ||
39 | background: #000 /* url(bobot.png) repeat-x */; color: #bbb; | ||
40 | } | ||
41 | div#header { | ||
42 | background: #000 /* url(botop.png) 100% repeat-x */; | ||
43 | line-height: 1px; | ||
44 | } | ||
45 | div#footer {font-size: 0.5em; font-weight: bold; | ||
46 | padding: 0 10px; text-transform: uppercase} | ||
47 | #footer h1, #footer h2 {display: block; padding: 0 1em;} | ||
48 | #footer h2 {font-style: italic;} | ||
49 | |||
50 | div.long {font-size: 0.75em;} | ||
51 | h1 abbr {font-variant: small-caps;} | ||
52 | |||
53 | .slide h1 {position: absolute; top: 0; left: 0; z-index: 1; | ||
54 | margin: 0; padding: 10px 0 0 10px; white-space: nowrap; | ||
55 | font-family: Impact, Ubuntu, DejaVu Sans, Verdana, Helvetica, sans-serif; | ||
56 | font-weight: normal; text-transform: uppercase; color: #eee; } | ||
57 | .slide h2 { color: #3f3; } | ||
58 | .slide h3 { color: #fff; font-size: 130%;} | ||
59 | .slide h4 { color: #3f3; font-size: 80%; } | ||
60 | small { color: #f34; } | ||
61 | |||
62 | #slide0 {padding-top: 3.5em; font-size: 90%;} | ||
63 | #slide0 h1 {position: static; margin: 1em 0 0; padding: 0; | ||
64 | font: bold 1.5em serif; white-space: normal; | ||
65 | text-transform: none; color: #999; background: transparent;} | ||
66 | #slide0 h2 {font: bold italic 1em; margin: 0.25em;} | ||
67 | #slide0 h3 {margin-top: 1.5em; font-size: 1.2em;} | ||
68 | #slide0 h4 {margin-top: 0; font-size: 1em;} | ||
69 | |||
70 | div#controls {position: absolute; left: 50%; bottom: 0; | ||
71 | width: 50%; | ||
72 | text-align: right; font: bold 0.9em;} | ||
73 | html>body div#controls {position: fixed; padding: 0 0 1em 0; | ||
74 | top: auto;} | ||
75 | div#controls form {position: absolute; bottom: 0; right: 0; width: 100%; | ||
76 | margin: 0; padding: 0;} | ||
77 | #controls #navLinks a {padding: 0; margin: 0 0.5em; | ||
78 | border: none; color: #3f3; cursor: pointer;} | ||
79 | #controls #navList {height: 1em;} | ||
80 | #controls #navList #jumplist {position: absolute; bottom: 0; right: 0; background: #000; color: #3f3;} | ||
81 | |||
82 | #currentSlide { text-align: center; font-size: 0.5em; | ||
83 | background: #333; color: #fff;} | ||
84 | |||
85 | ul.urls {list-style: none; display: inline; margin: 0;} | ||
86 | .urls li {display: inline; margin: 0;} | ||
87 | .note {display: none;} | ||
88 | .external {border-bottom: 1px dotted gray;} | ||
89 | html>body .external {border-bottom: none;} | ||
90 | .external:after {content: " \274F"; font-size: smaller; color: #77B;} | ||
91 | |||
92 | .incremental, .incremental *, .incremental *:after {color: #222; visibility: visible;} | ||
93 | img.incremental {visibility: hidden;} | ||
94 | .slide .current {color: #fff;} | ||
95 | |||
96 | |||
97 | /* diagnostics | ||
98 | li:after {content: " [" attr(class) "]"; color: #F88;} | ||
99 | |||
100 | .slide { opacity: 0.8; } | ||
101 | */ | ||
102 | |||
103 | .smaller {font-size: 70%; line-height: .9em; color: #f34; } | ||
104 | |||
105 | #logo { position: absolute; right: 10px; bottom: 40px; z-index: 7; } | ||
106 | |||
107 | |||
108 | #between { background-color: black; position: absolute; opacity: 0.4; | ||
109 | width: 100%; height: 100%; z-index: 2; } | ||
110 | |||
111 | .framed { opacity: 0.6; border: 3px solid black; } | ||
112 | .indented { margin-left: 100px; border: 3px solid black; } | ||
113 | .gfx { opacity: 0.8; border: 3px solid black; padding: 20px; | ||
114 | background-color: #9cf; margin-left: 40px; } | ||
115 | |||
116 | .left { text-align: left; } | ||
117 | .right { text-align: right; } | ||
diff --git a/secushare-old-html/UI/print.css b/secushare-old-html/UI/print.css new file mode 100644 index 0000000..e7a71d1 --- /dev/null +++ b/secushare-old-html/UI/print.css | |||
@@ -0,0 +1 @@ | |||
/* The following rule is necessary to have all slides appear in print! DO NOT REMOVE IT! */ .slide, ul {page-break-inside: avoid; visibility: visible !important;} h1 {page-break-after: avoid;} body {font-size: 12pt; background: white;} * {color: black;} #slide0 h1 {font-size: 200%; border: none; margin: 0.5em 0 0.25em;} #slide0 h3 {margin: 0; padding: 0;} #slide0 h4 {margin: 0 0 0.5em; padding: 0;} #slide0 {margin-bottom: 3em;} h1 {border-top: 2pt solid gray; border-bottom: 1px dotted silver;} .extra {background: transparent !important;} div.extra, pre.extra, .example {font-size: 10pt; color: #333;} ul.extra a {font-weight: bold;} p.example {display: none;} #header {display: none;} #footer h1 {margin: 0; border-bottom: 1px solid; color: gray; font-style: italic;} #footer h2, #controls {display: none;} /* The following rule keeps the layout stuff out of print. Remove at your own risk! */ .layout, .layout * {display: none !important;} \ No newline at end of file | |||
diff --git a/secushare-old-html/UI/s5-core.css b/secushare-old-html/UI/s5-core.css new file mode 100644 index 0000000..86444e0 --- /dev/null +++ b/secushare-old-html/UI/s5-core.css | |||
@@ -0,0 +1,9 @@ | |||
1 | /* Do not edit or override these styles! The system will likely break if you do. */ | ||
2 | |||
3 | div#header, div#footer, div#controls, .slide {position: absolute;} | ||
4 | html>body div#header, html>body div#footer, | ||
5 | html>body div#controls, html>body .slide {position: fixed;} | ||
6 | .handout {display: none;} | ||
7 | .layout {display: block;} | ||
8 | .slide, .hideme, .incremental {visibility: hidden;} | ||
9 | #slide0 {visibility: visible;} | ||
diff --git a/secushare-old-html/UI/slides.css b/secushare-old-html/UI/slides.css new file mode 100644 index 0000000..1027f03 --- /dev/null +++ b/secushare-old-html/UI/slides.css | |||
@@ -0,0 +1,3 @@ | |||
1 | @import url(s5-core.css); /* required to make the slide show run at all */ | ||
2 | @import url(framing.css); /* sets basic placement and size of slide components */ | ||
3 | @import url(pretty.css); /* stuff that makes the slides look better than blah */ | ||
diff --git a/secushare-old-html/UI/slides.js b/secushare-old-html/UI/slides.js new file mode 100644 index 0000000..07f40ff --- /dev/null +++ b/secushare-old-html/UI/slides.js | |||
@@ -0,0 +1,552 @@ | |||
1 | // S5 v1.1 slides.js -- released into the Public Domain | ||
2 | // | ||
3 | // Please see http://www.meyerweb.com/eric/tools/s5/credits.html for information | ||
4 | // about all the wonderful and talented contributors to this code! | ||
5 | |||
6 | var undef; | ||
7 | var slideCSS = ''; | ||
8 | var snum = 0; | ||
9 | var smax = 1; | ||
10 | var incpos = 0; | ||
11 | var number = undef; | ||
12 | var s5mode = true; | ||
13 | var defaultView = 'slideshow'; | ||
14 | var controlVis = 'visible'; | ||
15 | |||
16 | var isIE = navigator.appName == 'Microsoft Internet Explorer' ? 1 : 0; | ||
17 | var isOp = navigator.userAgent.indexOf('Opera') > -1 ? 1 : 0; | ||
18 | var isGe = navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('Safari') < 1 ? 1 : 0; | ||
19 | |||
20 | function hasClass(object, className) { | ||
21 | if (!object.className) return false; | ||
22 | return (object.className.search('(^|\\s)' + className + '(\\s|$)') != -1); | ||
23 | } | ||
24 | |||
25 | function hasValue(object, value) { | ||
26 | if (!object) return false; | ||
27 | return (object.search('(^|\\s)' + value + '(\\s|$)') != -1); | ||
28 | } | ||
29 | |||
30 | function removeClass(object,className) { | ||
31 | if (!object) return; | ||
32 | object.className = object.className.replace(new RegExp('(^|\\s)'+className+'(\\s|$)'), RegExp.$1+RegExp.$2); | ||
33 | } | ||
34 | |||
35 | function addClass(object,className) { | ||
36 | if (!object || hasClass(object, className)) return; | ||
37 | if (object.className) { | ||
38 | object.className += ' '+className; | ||
39 | } else { | ||
40 | object.className = className; | ||
41 | } | ||
42 | } | ||
43 | |||
44 | function GetElementsWithClassName(elementName,className) { | ||
45 | var allElements = document.getElementsByTagName(elementName); | ||
46 | var elemColl = new Array(); | ||
47 | for (var i = 0; i< allElements.length; i++) { | ||
48 | if (hasClass(allElements[i], className)) { | ||
49 | elemColl[elemColl.length] = allElements[i]; | ||
50 | } | ||
51 | } | ||
52 | return elemColl; | ||
53 | } | ||
54 | |||
55 | function isParentOrSelf(element, id) { | ||
56 | if (element == null || element.nodeName=='BODY') return false; | ||
57 | else if (element.id == id) return true; | ||
58 | else return isParentOrSelf(element.parentNode, id); | ||
59 | } | ||
60 | |||
61 | function nodeValue(node) { | ||
62 | var result = ""; | ||
63 | if (node.nodeType == 1) { | ||
64 | var children = node.childNodes; | ||
65 | for (var i = 0; i < children.length; ++i) { | ||
66 | result += nodeValue(children[i]); | ||
67 | } | ||
68 | } | ||
69 | else if (node.nodeType == 3) { | ||
70 | result = node.nodeValue; | ||
71 | } | ||
72 | return(result); | ||
73 | } | ||
74 | |||
75 | function slideLabel() { | ||
76 | var slideColl = GetElementsWithClassName('*','slide'); | ||
77 | var list = document.getElementById('jumplist'); | ||
78 | smax = slideColl.length; | ||
79 | for (var n = 0; n < smax; n++) { | ||
80 | var obj = slideColl[n]; | ||
81 | |||
82 | var did = 'slide' + n.toString(); | ||
83 | obj.setAttribute('id',did); | ||
84 | if (isOp) continue; | ||
85 | |||
86 | var otext = ''; | ||
87 | var menu = obj.firstChild; | ||
88 | if (!menu) continue; // to cope with empty slides | ||
89 | while (menu && menu.nodeType == 3) { | ||
90 | menu = menu.nextSibling; | ||
91 | } | ||
92 | if (!menu) continue; // to cope with slides with only text nodes | ||
93 | |||
94 | var menunodes = menu.childNodes; | ||
95 | for (var o = 0; o < menunodes.length; o++) { | ||
96 | otext += nodeValue(menunodes[o]); | ||
97 | } | ||
98 | list.options[list.length] = new Option(n + ' : ' + otext, n); | ||
99 | } | ||
100 | } | ||
101 | |||
102 | function currentSlide() { | ||
103 | var cs; | ||
104 | if (document.getElementById) { | ||
105 | cs = document.getElementById('currentSlide'); | ||
106 | } else { | ||
107 | cs = document.currentSlide; | ||
108 | } | ||
109 | cs.innerHTML = '<span id="csHere">' + snum + '<\/span> ' + | ||
110 | '<span id="csSep">\/<\/span> ' + | ||
111 | '<span id="csTotal">' + (smax-1) + '<\/span>'; | ||
112 | if (snum == 0) { | ||
113 | cs.style.visibility = 'hidden'; | ||
114 | } else { | ||
115 | cs.style.visibility = 'visible'; | ||
116 | } | ||
117 | } | ||
118 | |||
119 | function go(step) { | ||
120 | if (document.getElementById('slideProj').disabled || step == 0) return; | ||
121 | var jl = document.getElementById('jumplist'); | ||
122 | var cid = 'slide' + snum; | ||
123 | var ce = document.getElementById(cid); | ||
124 | if (incrementals[snum].length > 0) { | ||
125 | for (var i = 0; i < incrementals[snum].length; i++) { | ||
126 | removeClass(incrementals[snum][i], 'current'); | ||
127 | removeClass(incrementals[snum][i], 'incremental'); | ||
128 | } | ||
129 | } | ||
130 | if (step != 'j') { | ||
131 | snum += step; | ||
132 | lmax = smax - 1; | ||
133 | if (snum > lmax) snum = lmax; | ||
134 | if (snum < 0) snum = 0; | ||
135 | } else | ||
136 | snum = parseInt(jl.value); | ||
137 | var nid = 'slide' + snum; | ||
138 | var ne = document.getElementById(nid); | ||
139 | if (!ne) { | ||
140 | ne = document.getElementById('slide0'); | ||
141 | snum = 0; | ||
142 | } | ||
143 | if (step < 0) {incpos = incrementals[snum].length} else {incpos = 0;} | ||
144 | if (incrementals[snum].length > 0 && incpos == 0) { | ||
145 | for (var i = 0; i < incrementals[snum].length; i++) { | ||
146 | if (hasClass(incrementals[snum][i], 'current')) | ||
147 | incpos = i + 1; | ||
148 | else | ||
149 | addClass(incrementals[snum][i], 'incremental'); | ||
150 | } | ||
151 | } | ||
152 | if (incrementals[snum].length > 0 && incpos > 0) | ||
153 | addClass(incrementals[snum][incpos - 1], 'current'); | ||
154 | ce.style.visibility = 'hidden'; | ||
155 | ne.style.visibility = 'visible'; | ||
156 | jl.selectedIndex = snum; | ||
157 | currentSlide(); | ||
158 | number = 0; | ||
159 | } | ||
160 | |||
161 | function goTo(target) { | ||
162 | if (target >= smax || target == snum) return; | ||
163 | go(target - snum); | ||
164 | } | ||
165 | |||
166 | function subgo(step) { | ||
167 | if (step > 0) { | ||
168 | removeClass(incrementals[snum][incpos - 1],'current'); | ||
169 | removeClass(incrementals[snum][incpos], 'incremental'); | ||
170 | addClass(incrementals[snum][incpos],'current'); | ||
171 | incpos++; | ||
172 | } else { | ||
173 | incpos--; | ||
174 | removeClass(incrementals[snum][incpos],'current'); | ||
175 | addClass(incrementals[snum][incpos], 'incremental'); | ||
176 | addClass(incrementals[snum][incpos - 1],'current'); | ||
177 | } | ||
178 | } | ||
179 | |||
180 | function toggle() { | ||
181 | var slideColl = GetElementsWithClassName('*','slide'); | ||
182 | var slides = document.getElementById('slideProj'); | ||
183 | var outline = document.getElementById('outlineStyle'); | ||
184 | if (!slides.disabled) { | ||
185 | slides.disabled = true; | ||
186 | outline.disabled = false; | ||
187 | s5mode = false; | ||
188 | fontSize('1em'); | ||
189 | for (var n = 0; n < smax; n++) { | ||
190 | var slide = slideColl[n]; | ||
191 | slide.style.visibility = 'visible'; | ||
192 | } | ||
193 | } else { | ||
194 | slides.disabled = false; | ||
195 | outline.disabled = true; | ||
196 | s5mode = true; | ||
197 | fontScale(); | ||
198 | for (var n = 0; n < smax; n++) { | ||
199 | var slide = slideColl[n]; | ||
200 | slide.style.visibility = 'hidden'; | ||
201 | } | ||
202 | slideColl[snum].style.visibility = 'visible'; | ||
203 | } | ||
204 | } | ||
205 | |||
206 | function showHide(action) { | ||
207 | var obj = GetElementsWithClassName('*','hideme')[0]; | ||
208 | switch (action) { | ||
209 | case 's': obj.style.visibility = 'visible'; break; | ||
210 | case 'h': obj.style.visibility = 'hidden'; break; | ||
211 | case 'k': | ||
212 | if (obj.style.visibility != 'visible') { | ||
213 | obj.style.visibility = 'visible'; | ||
214 | } else { | ||
215 | obj.style.visibility = 'hidden'; | ||
216 | } | ||
217 | break; | ||
218 | } | ||
219 | } | ||
220 | |||
221 | // 'keys' code adapted from MozPoint (http://mozpoint.mozdev.org/) | ||
222 | function keys(key) { | ||
223 | if (!key) { | ||
224 | key = event; | ||
225 | key.which = key.keyCode; | ||
226 | } | ||
227 | if (key.which == 84) { | ||
228 | toggle(); | ||
229 | return; | ||
230 | } | ||
231 | if (s5mode) { | ||
232 | switch (key.which) { | ||
233 | case 10: // return | ||
234 | case 13: // enter | ||
235 | if (window.event && isParentOrSelf(window.event.srcElement, 'controls')) return; | ||
236 | if (key.target && isParentOrSelf(key.target, 'controls')) return; | ||
237 | if(number != undef) { | ||
238 | goTo(number); | ||
239 | break; | ||
240 | } | ||
241 | case 32: // spacebar | ||
242 | case 34: // page down | ||
243 | case 39: // rightkey | ||
244 | case 40: // downkey | ||
245 | if(number != undef) { | ||
246 | go(number); | ||
247 | } else if (!incrementals[snum] || incpos >= incrementals[snum].length) { | ||
248 | go(1); | ||
249 | } else { | ||
250 | subgo(1); | ||
251 | } | ||
252 | break; | ||
253 | case 33: // page up | ||
254 | case 37: // leftkey | ||
255 | case 38: // upkey | ||
256 | if(number != undef) { | ||
257 | go(-1 * number); | ||
258 | } else if (!incrementals[snum] || incpos <= 0) { | ||
259 | go(-1); | ||
260 | } else { | ||
261 | subgo(-1); | ||
262 | } | ||
263 | break; | ||
264 | case 36: // home | ||
265 | goTo(0); | ||
266 | break; | ||
267 | case 35: // end | ||
268 | goTo(smax-1); | ||
269 | break; | ||
270 | case 67: // c | ||
271 | showHide('k'); | ||
272 | break; | ||
273 | } | ||
274 | if (key.which < 48 || key.which > 57) { | ||
275 | number = undef; | ||
276 | } else { | ||
277 | if (window.event && isParentOrSelf(window.event.srcElement, 'controls')) return; | ||
278 | if (key.target && isParentOrSelf(key.target, 'controls')) return; | ||
279 | number = (((number != undef) ? number : 0) * 10) + (key.which - 48); | ||
280 | } | ||
281 | } | ||
282 | return false; | ||
283 | } | ||
284 | |||
285 | function clicker(e) { | ||
286 | number = undef; | ||
287 | var target; | ||
288 | if (window.event) { | ||
289 | target = window.event.srcElement; | ||
290 | e = window.event; | ||
291 | } else target = e.target; | ||
292 | if (target.getAttribute('href') != null || hasValue(target.rel, 'external') || isParentOrSelf(target, 'controls') || isParentOrSelf(target,'embed') || isParentOrSelf(target,'object')) return true; | ||
293 | if (!e.which || e.which == 1) { | ||
294 | if (!incrementals[snum] || incpos >= incrementals[snum].length) { | ||
295 | go(1); | ||
296 | } else { | ||
297 | subgo(1); | ||
298 | } | ||
299 | } | ||
300 | } | ||
301 | |||
302 | function findSlide(hash) { | ||
303 | var target = null; | ||
304 | var slides = GetElementsWithClassName('*','slide'); | ||
305 | for (var i = 0; i < slides.length; i++) { | ||
306 | var targetSlide = slides[i]; | ||
307 | if ( (targetSlide.name && targetSlide.name == hash) | ||
308 | || (targetSlide.id && targetSlide.id == hash) ) { | ||
309 | target = targetSlide; | ||
310 | break; | ||
311 | } | ||
312 | } | ||
313 | while(target != null && target.nodeName != 'BODY') { | ||
314 | if (hasClass(target, 'slide')) { | ||
315 | return parseInt(target.id.slice(5)); | ||
316 | } | ||
317 | target = target.parentNode; | ||
318 | } | ||
319 | return null; | ||
320 | } | ||
321 | |||
322 | function slideJump() { | ||
323 | if (window.location.hash == null) return; | ||
324 | var sregex = /^#slide(\d+)$/; | ||
325 | var matches = sregex.exec(window.location.hash); | ||
326 | var dest = null; | ||
327 | if (matches != null) { | ||
328 | dest = parseInt(matches[1]); | ||
329 | } else { | ||
330 | dest = findSlide(window.location.hash.slice(1)); | ||
331 | } | ||
332 | if (dest != null) | ||
333 | go(dest - snum); | ||
334 | } | ||
335 | |||
336 | function fixLinks() { | ||
337 | var thisUri = window.location.href; | ||
338 | thisUri = thisUri.slice(0, thisUri.length - window.location.hash.length); | ||
339 | var aelements = document.getElementsByTagName('A'); | ||
340 | for (var i = 0; i < aelements.length; i++) { | ||
341 | var a = aelements[i].href; | ||
342 | var slideID = a.match('\#slide[0-9]{1,2}'); | ||
343 | if ((slideID) && (slideID[0].slice(0,1) == '#')) { | ||
344 | var dest = findSlide(slideID[0].slice(1)); | ||
345 | if (dest != null) { | ||
346 | if (aelements[i].addEventListener) { | ||
347 | aelements[i].addEventListener("click", new Function("e", | ||
348 | "if (document.getElementById('slideProj').disabled) return;" + | ||
349 | "go("+dest+" - snum); " + | ||
350 | "if (e.preventDefault) e.preventDefault();"), true); | ||
351 | } else if (aelements[i].attachEvent) { | ||
352 | aelements[i].attachEvent("onclick", new Function("", | ||
353 | "if (document.getElementById('slideProj').disabled) return;" + | ||
354 | "go("+dest+" - snum); " + | ||
355 | "event.returnValue = false;")); | ||
356 | } | ||
357 | } | ||
358 | } | ||
359 | } | ||
360 | } | ||
361 | |||
362 | function externalLinks() { | ||
363 | if (!document.getElementsByTagName) return; | ||
364 | var anchors = document.getElementsByTagName('a'); | ||
365 | for (var i=0; i<anchors.length; i++) { | ||
366 | var anchor = anchors[i]; | ||
367 | if (anchor.getAttribute('href') && hasValue(anchor.rel, 'external')) { | ||
368 | anchor.target = '_blank'; | ||
369 | addClass(anchor,'external'); | ||
370 | } | ||
371 | } | ||
372 | } | ||
373 | |||
374 | function createControls() { | ||
375 | var controlsDiv = document.getElementById("controls"); | ||
376 | if (!controlsDiv) return; | ||
377 | var hider = ' onmouseover="showHide(\'s\');" onmouseout="showHide(\'h\');"'; | ||
378 | var hideDiv, hideList = ''; | ||
379 | if (controlVis == 'hidden') { | ||
380 | hideDiv = hider; | ||
381 | } else { | ||
382 | hideList = hider; | ||
383 | } | ||
384 | controlsDiv.innerHTML = '<form action="#" id="controlForm"' + hideDiv + '>' + | ||
385 | '<div id="navLinks">' + | ||
386 | '<a accesskey="t" id="toggle" href="javascript:toggle();">Ø<\/a>' + | ||
387 | '<a accesskey="z" id="prev" href="javascript:go(-1);">«<\/a>' + | ||
388 | '<a accesskey="x" id="next" href="javascript:go(1);">»<\/a>' + | ||
389 | '<div id="navList"' + hideList + '><select id="jumplist" onchange="go(\'j\');"><\/select><\/div>' + | ||
390 | '<\/div><\/form>'; | ||
391 | if (controlVis == 'hidden') { | ||
392 | var hidden = document.getElementById('navLinks'); | ||
393 | } else { | ||
394 | var hidden = document.getElementById('jumplist'); | ||
395 | } | ||
396 | addClass(hidden,'hideme'); | ||
397 | } | ||
398 | |||
399 | function fontScale() { // causes layout problems in FireFox that get fixed if browser's Reload is used; same may be true of other Gecko-based browsers | ||
400 | if (!s5mode) return false; | ||
401 | var vScale = 22; // both yield 32 (after rounding) at 1024x768 | ||
402 | var hScale = 32; // perhaps should auto-calculate based on theme's declared value? | ||
403 | if (window.innerHeight) { | ||
404 | var vSize = window.innerHeight; | ||
405 | var hSize = window.innerWidth; | ||
406 | } else if (document.documentElement.clientHeight) { | ||
407 | var vSize = document.documentElement.clientHeight; | ||
408 | var hSize = document.documentElement.clientWidth; | ||
409 | } else if (document.body.clientHeight) { | ||
410 | var vSize = document.body.clientHeight; | ||
411 | var hSize = document.body.clientWidth; | ||
412 | } else { | ||
413 | var vSize = 700; // assuming 1024x768, minus chrome and such | ||
414 | var hSize = 1024; // these do not account for kiosk mode or Opera Show | ||
415 | } | ||
416 | var newSize = Math.min(Math.round(vSize/vScale),Math.round(hSize/hScale)); | ||
417 | fontSize(newSize + 'px'); | ||
418 | if (isGe) { // hack to counter incremental reflow bugs | ||
419 | var obj = document.getElementsByTagName('body')[0]; | ||
420 | obj.style.display = 'none'; | ||
421 | obj.style.display = 'block'; | ||
422 | } | ||
423 | } | ||
424 | |||
425 | function fontSize(value) { | ||
426 | if (!(s5ss = document.getElementById('s5ss'))) { | ||
427 | if (!isIE) { | ||
428 | document.getElementsByTagName('head')[0].appendChild(s5ss = document.createElement('style')); | ||
429 | s5ss.setAttribute('media','screen, projection'); | ||
430 | s5ss.setAttribute('id','s5ss'); | ||
431 | } else { | ||
432 | document.createStyleSheet(); | ||
433 | document.s5ss = document.styleSheets[document.styleSheets.length - 1]; | ||
434 | } | ||
435 | } | ||
436 | if (!isIE) { | ||
437 | while (s5ss.lastChild) s5ss.removeChild(s5ss.lastChild); | ||
438 | s5ss.appendChild(document.createTextNode('body {font-size: ' + value + ' !important;}')); | ||
439 | } else { | ||
440 | document.s5ss.addRule('body','font-size: ' + value + ' !important;'); | ||
441 | } | ||
442 | } | ||
443 | |||
444 | function notOperaFix() { | ||
445 | slideCSS = document.getElementById('slideProj').href; | ||
446 | var slides = document.getElementById('slideProj'); | ||
447 | var outline = document.getElementById('outlineStyle'); | ||
448 | slides.setAttribute('media','screen'); | ||
449 | outline.disabled = true; | ||
450 | if (isGe) { | ||
451 | slides.setAttribute('href','null'); // Gecko fix | ||
452 | slides.setAttribute('href',slideCSS); // Gecko fix | ||
453 | } | ||
454 | if (isIE && document.styleSheets && document.styleSheets[0]) { | ||
455 | document.styleSheets[0].addRule('img', 'behavior: url(ui/default/iepngfix.htc)'); | ||
456 | document.styleSheets[0].addRule('div', 'behavior: url(ui/default/iepngfix.htc)'); | ||
457 | document.styleSheets[0].addRule('.slide', 'behavior: url(ui/default/iepngfix.htc)'); | ||
458 | } | ||
459 | } | ||
460 | |||
461 | function getIncrementals(obj) { | ||
462 | var incrementals = new Array(); | ||
463 | if (!obj) | ||
464 | return incrementals; | ||
465 | var children = obj.childNodes; | ||
466 | for (var i = 0; i < children.length; i++) { | ||
467 | var child = children[i]; | ||
468 | if (hasClass(child, 'incremental')) { | ||
469 | if (child.nodeName == 'OL' || child.nodeName == 'UL') { | ||
470 | removeClass(child, 'incremental'); | ||
471 | for (var j = 0; j < child.childNodes.length; j++) { | ||
472 | if (child.childNodes[j].nodeType == 1) { | ||
473 | addClass(child.childNodes[j], 'incremental'); | ||
474 | } | ||
475 | } | ||
476 | } else { | ||
477 | incrementals[incrementals.length] = child; | ||
478 | removeClass(child,'incremental'); | ||
479 | } | ||
480 | } | ||
481 | if (hasClass(child, 'show-first')) { | ||
482 | if (child.nodeName == 'OL' || child.nodeName == 'UL') { | ||
483 | removeClass(child, 'show-first'); | ||
484 | if (child.childNodes[isGe].nodeType == 1) { | ||
485 | removeClass(child.childNodes[isGe], 'incremental'); | ||
486 | } | ||
487 | } else { | ||
488 | incrementals[incrementals.length] = child; | ||
489 | } | ||
490 | } | ||
491 | incrementals = incrementals.concat(getIncrementals(child)); | ||
492 | } | ||
493 | return incrementals; | ||
494 | } | ||
495 | |||
496 | function createIncrementals() { | ||
497 | var incrementals = new Array(); | ||
498 | for (var i = 0; i < smax; i++) { | ||
499 | incrementals[i] = getIncrementals(document.getElementById('slide'+i)); | ||
500 | } | ||
501 | return incrementals; | ||
502 | } | ||
503 | |||
504 | function defaultCheck() { | ||
505 | var allMetas = document.getElementsByTagName('meta'); | ||
506 | for (var i = 0; i< allMetas.length; i++) { | ||
507 | if (allMetas[i].name == 'defaultView') { | ||
508 | defaultView = allMetas[i].content; | ||
509 | } | ||
510 | if (allMetas[i].name == 'controlVis') { | ||
511 | controlVis = allMetas[i].content; | ||
512 | } | ||
513 | } | ||
514 | } | ||
515 | |||
516 | // Key trap fix, new function body for trap() | ||
517 | function trap(e) { | ||
518 | if (!e) { | ||
519 | e = event; | ||
520 | e.which = e.keyCode; | ||
521 | } | ||
522 | try { | ||
523 | modifierKey = e.ctrlKey || e.altKey || e.metaKey; | ||
524 | } | ||
525 | catch(e) { | ||
526 | modifierKey = false; | ||
527 | } | ||
528 | return modifierKey || e.which == 0; | ||
529 | } | ||
530 | |||
531 | function startup() { | ||
532 | defaultCheck(); | ||
533 | if (!isOp) createControls(); | ||
534 | slideLabel(); | ||
535 | fixLinks(); | ||
536 | externalLinks(); | ||
537 | fontScale(); | ||
538 | if (!isOp) { | ||
539 | notOperaFix(); | ||
540 | incrementals = createIncrementals(); | ||
541 | slideJump(); | ||
542 | if (defaultView == 'outline') { | ||
543 | toggle(); | ||
544 | } | ||
545 | document.onkeyup = keys; | ||
546 | document.onkeypress = trap; | ||
547 | document.onclick = clicker; | ||
548 | } | ||
549 | } | ||
550 | |||
551 | window.onload = startup; | ||
552 | window.onresize = function(){setTimeout('fontScale()', 50);} \ No newline at end of file | ||
diff --git a/secushare-old-html/UI/squares.jpg b/secushare-old-html/UI/squares.jpg new file mode 100644 index 0000000..cef1508 --- /dev/null +++ b/secushare-old-html/UI/squares.jpg | |||
Binary files differ | |||
diff --git a/secushare-old-html/UI/stars_bg.jpg b/secushare-old-html/UI/stars_bg.jpg new file mode 100644 index 0000000..189c332 --- /dev/null +++ b/secushare-old-html/UI/stars_bg.jpg | |||
Binary files differ | |||
diff --git a/secushare-old-html/img/cloud.png b/secushare-old-html/img/cloud.png new file mode 100644 index 0000000..8aa81a6 --- /dev/null +++ b/secushare-old-html/img/cloud.png | |||
Binary files differ | |||
diff --git a/secushare-old-html/img/gfx-cloud.png b/secushare-old-html/img/gfx-cloud.png new file mode 100644 index 0000000..914bf8f --- /dev/null +++ b/secushare-old-html/img/gfx-cloud.png | |||
Binary files differ | |||
diff --git a/secushare-old-html/img/gfx-multicast.png b/secushare-old-html/img/gfx-multicast.png new file mode 100644 index 0000000..a63b76d --- /dev/null +++ b/secushare-old-html/img/gfx-multicast.png | |||
Binary files differ | |||
diff --git a/secushare-old-html/img/gfx-unicast.png b/secushare-old-html/img/gfx-unicast.png new file mode 100644 index 0000000..d7c1763 --- /dev/null +++ b/secushare-old-html/img/gfx-unicast.png | |||
Binary files differ | |||
diff --git a/secushare-old-html/img/gfx.odg b/secushare-old-html/img/gfx.odg new file mode 100644 index 0000000..bfad080 --- /dev/null +++ b/secushare-old-html/img/gfx.odg | |||
Binary files differ | |||
diff --git a/secushare-old-html/img/gfx.png b/secushare-old-html/img/gfx.png new file mode 100644 index 0000000..30cfff4 --- /dev/null +++ b/secushare-old-html/img/gfx.png | |||
Binary files differ | |||
diff --git a/secushare-old-html/img/gfx.svg b/secushare-old-html/img/gfx.svg new file mode 100644 index 0000000..f95cc76 --- /dev/null +++ b/secushare-old-html/img/gfx.svg | |||
@@ -0,0 +1,910 @@ | |||
1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
2 | <svg | ||
3 | xmlns:dc="http://purl.org/dc/elements/1.1/" | ||
4 | xmlns:cc="http://creativecommons.org/ns#" | ||
5 | xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | ||
6 | xmlns:svg="http://www.w3.org/2000/svg" | ||
7 | xmlns="http://www.w3.org/2000/svg" | ||
8 | xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||
9 | xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||
10 | version="1.2" | ||
11 | viewBox="0 0 21000 29700" | ||
12 | preserveAspectRatio="xMidYMid" | ||
13 | fill-rule="evenodd" | ||
14 | clip-path="url(#presentation_clip_path)" | ||
15 | stroke-width="28.222" | ||
16 | stroke-linejoin="round" | ||
17 | xml:space="preserve" | ||
18 | id="svg2" | ||
19 | inkscape:version="0.48.3.1 r9886" | ||
20 | width="100%" | ||
21 | height="100%" | ||
22 | sodipodi:docname="gfx.svg" | ||
23 | inkscape:export-filename="/home/dan/wiki/Papers/img/gfx.png" | ||
24 | inkscape:export-xdpi="15" | ||
25 | inkscape:export-ydpi="15"><metadata | ||
26 | id="metadata836"><rdf:RDF><cc:Work | ||
27 | rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type | ||
28 | rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview | ||
29 | pagecolor="#ffffff" | ||
30 | bordercolor="#666666" | ||
31 | borderopacity="1" | ||
32 | objecttolerance="10" | ||
33 | gridtolerance="10" | ||
34 | guidetolerance="10" | ||
35 | inkscape:pageopacity="0" | ||
36 | inkscape:pageshadow="2" | ||
37 | inkscape:window-width="1598" | ||
38 | inkscape:window-height="879" | ||
39 | id="namedview834" | ||
40 | showgrid="false" | ||
41 | inkscape:zoom="0.16" | ||
42 | inkscape:cx="4415.5351" | ||
43 | inkscape:cy="6482.1508" | ||
44 | inkscape:window-x="0" | ||
45 | inkscape:window-y="19" | ||
46 | inkscape:window-maximized="0" | ||
47 | inkscape:current-layer="id1" /> | ||
48 | <defs | ||
49 | id="defs4"> | ||
50 | <clipPath | ||
51 | id="presentation_clip_path" | ||
52 | clipPathUnits="userSpaceOnUse"> | ||
53 | <rect | ||
54 | x="0" | ||
55 | y="0" | ||
56 | width="21000" | ||
57 | height="29700" | ||
58 | id="rect7" /> | ||
59 | </clipPath> | ||
60 | |||
61 | |||
62 | |||
63 | |||
64 | |||
65 | |||
66 | |||
67 | |||
68 | |||
69 | |||
70 | |||
71 | |||
72 | |||
73 | |||
74 | |||
75 | |||
76 | |||
77 | |||
78 | |||
79 | |||
80 | |||
81 | |||
82 | |||
83 | |||
84 | |||
85 | |||
86 | |||
87 | |||
88 | |||
89 | |||
90 | |||
91 | |||
92 | |||
93 | |||
94 | |||
95 | |||
96 | |||
97 | |||
98 | |||
99 | |||
100 | |||
101 | |||
102 | |||
103 | |||
104 | </defs> | ||
105 | <defs | ||
106 | id="defs9"> | ||
107 | <font | ||
108 | id="EmbeddedFont_1" | ||
109 | horiz-adv-x="2048"> | ||
110 | <font-face | ||
111 | font-family="Sawasdee embedded" | ||
112 | units-per-em="2048" | ||
113 | font-weight="normal" | ||
114 | font-style="normal" | ||
115 | ascent="2196" | ||
116 | descent="847" | ||
117 | id="font-face12" /> | ||
118 | <missing-glyph | ||
119 | horiz-adv-x="2048" | ||
120 | d="M 0,0 L 2047,0 2047,2047 0,2047 0,0 Z" | ||
121 | id="missing-glyph14" /> | ||
122 | <glyph | ||
123 | unicode="y" | ||
124 | horiz-adv-x="875" | ||
125 | d="M 36,1014 L 128,1014 477,119 818,1014 914,1014 331,-521 235,-521 432,-2 36,1014 Z" | ||
126 | id="glyph16" /> | ||
127 | <glyph | ||
128 | unicode="w" | ||
129 | horiz-adv-x="1536" | ||
130 | d="M 36,1014 L 134,1014 466,221 806,1032 1147,221 1471,1014 1567,1014 1147,-17 803,793 463,-17 36,1014 Z" | ||
131 | id="glyph18" /> | ||
132 | <glyph | ||
133 | unicode="v" | ||
134 | horiz-adv-x="875" | ||
135 | d="M 36,1014 L 132,1014 474,203 814,1014 914,1014 477,-30 36,1014 Z" | ||
136 | id="glyph20" /> | ||
137 | <glyph | ||
138 | unicode="t" | ||
139 | horiz-adv-x="477" | ||
140 | d="M 258,0 L 168,0 168,925 79,925 79,1014 168,1014 168,1254 258,1254 258,1014 538,1014 508,925 258,925 258,0 Z" | ||
141 | id="glyph22" /> | ||
142 | <glyph | ||
143 | unicode="s" | ||
144 | horiz-adv-x="663" | ||
145 | d="M 709,835 L 626,806 C 612,851 588,885 555,909 522,932 486,944 448,944 404,944 367,930 336,902 305,874 289,836 289,788 289,763 296,740 310,719 324,698 342,681 365,668 388,655 414,641 443,627 472,613 501,600 531,588 561,576 591,561 620,543 649,525 674,506 697,485 720,464 738,438 752,405 766,372 773,336 773,295 773,202 740,127 674,70 608,12 531,-17 444,-17 406,-17 370,-11 335,2 300,14 268,32 239,56 210,80 185,112 164,152 143,192 130,238 124,289 L 213,302 C 222,226 249,169 293,130 336,91 387,72 446,72 508,72 563,93 611,135 659,176 683,230 683,295 683,331 674,363 656,391 638,418 615,441 587,458 558,475 527,492 492,507 457,522 423,538 388,554 353,570 322,588 294,607 265,626 242,651 224,682 206,713 197,748 197,788 197,863 222,922 272,966 321,1010 380,1032 448,1032 504,1032 556,1015 605,982 654,948 688,899 709,835 Z" | ||
146 | id="glyph24" /> | ||
147 | <glyph | ||
148 | unicode="r" | ||
149 | horiz-adv-x="504" | ||
150 | d="M 143,1014 L 239,1014 C 252,970 258,925 258,880 L 258,754 C 273,805 309,859 365,914 421,969 477,1008 534,1030 L 634,959 C 575,959 517,938 459,897 400,856 352,801 315,733 277,664 258,594 258,521 L 258,0 168,0 168,880 C 168,937 160,982 143,1014 Z" | ||
151 | id="glyph26" /> | ||
152 | <glyph | ||
153 | unicode="p" | ||
154 | horiz-adv-x="980" | ||
155 | d="M 143,1014 L 239,1014 C 252,970 258,925 258,880 L 258,754 C 283,824 333,888 408,945 483,1002 558,1030 634,1030 719,1030 796,1006 867,959 938,911 993,847 1034,767 1074,687 1094,601 1094,508 1094,415 1074,328 1034,248 993,167 938,103 867,56 796,9 719,-15 634,-15 557,-15 481,13 407,68 332,123 283,187 258,260 L 258,-448 168,-448 168,880 C 168,937 160,982 143,1014 Z M 369,814 C 295,730 258,628 258,508 258,388 295,286 369,201 443,116 531,74 634,74 735,74 823,117 898,202 973,287 1010,389 1010,508 1010,628 973,730 898,814 823,898 735,940 634,940 531,940 443,898 369,814 Z" | ||
156 | id="glyph28" /> | ||
157 | <glyph | ||
158 | unicode="o" | ||
159 | horiz-adv-x="1033" | ||
160 | d="M 643,1030 C 713,1030 780,1016 844,989 908,962 963,925 1010,878 1057,831 1094,776 1121,711 1148,646 1162,579 1162,508 1162,437 1148,369 1121,304 1094,239 1057,184 1010,138 963,91 908,54 844,27 780,-1 713,-15 643,-15 500,-15 377,36 276,138 175,240 124,363 124,508 124,603 147,690 194,771 240,851 303,914 383,961 462,1007 549,1030 643,1030 Z M 213,508 C 213,389 255,287 340,202 424,117 526,74 645,74 764,74 866,117 951,202 1035,287 1077,389 1077,508 1077,627 1035,728 951,813 866,898 764,940 645,940 526,940 424,898 340,813 255,728 213,627 213,508 Z" | ||
161 | id="glyph30" /> | ||
162 | <glyph | ||
163 | unicode="n" | ||
164 | horiz-adv-x="795" | ||
165 | d="M 143,1014 L 239,1014 C 252,970 258,925 258,880 L 258,728 C 295,811 346,883 411,942 476,1001 539,1030 600,1030 668,1030 726,1011 773,973 820,935 854,886 875,827 896,768 906,701 906,626 L 906,0 818,0 818,626 C 818,663 815,698 808,732 801,766 789,799 774,832 759,865 736,891 706,911 675,930 639,940 598,940 559,940 518,925 476,894 433,863 397,826 366,782 335,737 309,690 289,640 268,590 258,546 258,508 L 258,0 168,0 168,880 C 168,937 160,982 143,1014 Z" | ||
166 | id="glyph32" /> | ||
167 | <glyph | ||
168 | unicode="m" | ||
169 | horiz-adv-x="1298" | ||
170 | d="M 143,1014 L 239,1014 C 252,970 258,925 258,880 L 258,734 C 290,813 336,882 396,941 456,1000 513,1030 566,1030 645,1030 709,1003 757,948 805,893 835,821 848,734 881,815 926,885 983,942 1039,999 1094,1027 1149,1027 1212,1027 1265,1008 1309,969 1352,930 1384,881 1403,822 1422,763 1431,697 1431,624 L 1431,0 1341,0 1341,624 C 1341,660 1338,695 1332,729 1326,763 1316,796 1303,829 1289,862 1269,888 1242,908 1215,928 1184,938 1147,938 1102,938 1056,913 1007,863 958,812 919,753 888,685 857,617 842,557 842,504 L 842,0 752,0 752,626 C 752,663 749,698 743,732 737,766 727,799 714,832 701,865 681,891 654,911 627,930 594,940 557,940 516,940 471,916 424,868 376,820 336,762 305,694 274,626 258,564 258,508 L 258,0 168,0 168,880 C 168,937 160,982 143,1014 Z" | ||
171 | id="glyph34" /> | ||
172 | <glyph | ||
173 | unicode="h" | ||
174 | horiz-adv-x="768" | ||
175 | d="M 168,0 L 168,1493 258,1493 258,726 C 293,807 343,878 409,939 475,1000 539,1030 600,1030 668,1030 726,1011 773,973 820,935 854,886 875,827 896,768 906,701 906,626 L 906,0 818,0 818,626 C 818,663 815,698 808,732 801,766 789,799 774,832 759,865 736,891 706,911 675,930 639,940 598,940 559,940 518,925 476,894 433,863 397,826 366,782 335,737 309,690 289,640 268,590 258,546 258,508 L 258,0 168,0 Z" | ||
176 | id="glyph36" /> | ||
177 | <glyph | ||
178 | unicode="e" | ||
179 | horiz-adv-x="927" | ||
180 | d="M 222,593 L 959,593 C 940,694 896,777 827,842 758,907 678,940 589,940 500,940 422,907 353,842 284,777 240,694 222,593 Z M 1057,508 L 208,508 C 208,389 245,287 320,204 395,121 483,79 585,79 652,79 718,97 783,133 848,169 897,217 931,278 L 1010,233 C 969,160 909,101 830,55 751,8 669,-15 585,-15 500,-15 423,9 352,56 281,103 225,167 185,248 144,328 124,415 124,508 124,601 145,687 186,767 227,847 283,911 355,959 426,1006 504,1030 589,1030 669,1030 744,1009 813,966 882,923 937,865 980,792 1023,719 1048,640 1055,553 L 1057,508 Z" | ||
181 | id="glyph38" /> | ||
182 | <glyph | ||
183 | unicode="a" | ||
184 | horiz-adv-x="821" | ||
185 | d="M 920,0 L 824,0 C 812,38 806,83 806,134 L 806,213 C 758,146 701,91 634,48 567,5 496,-17 421,-17 367,-17 319,-8 277,9 234,26 201,48 176,76 151,105 133,135 120,166 107,198 101,231 101,263 101,298 106,329 117,358 127,387 140,411 157,432 173,452 195,471 222,487 249,503 275,517 300,527 325,538 356,547 393,554 430,562 463,568 490,571 517,575 551,577 592,577 633,577 665,577 689,577 712,577 742,577 779,577 L 806,577 C 803,688 770,777 709,843 647,909 576,942 495,942 448,942 402,930 357,905 312,880 272,844 239,797 L 168,844 C 209,907 258,954 315,985 372,1016 432,1032 495,1032 546,1032 595,1022 642,1002 689,981 731,953 768,916 805,879 836,831 859,773 882,715 894,651 895,581 L 895,134 C 895,76 903,31 920,0 Z M 421,72 C 498,72 572,98 644,149 716,200 770,259 806,325 L 806,512 C 775,512 749,512 728,512 707,512 678,512 642,512 605,512 574,510 549,507 524,504 494,500 461,493 427,486 398,478 375,470 352,462 328,451 303,438 278,425 257,410 242,394 227,378 214,359 205,337 195,315 190,290 190,264 190,216 210,171 250,132 290,92 347,72 421,72 Z" | ||
186 | id="glyph40" /> | ||
187 | <glyph | ||
188 | unicode="W" | ||
189 | horiz-adv-x="1906" | ||
190 | d="M 25,1493 L 114,1493 553,258 983,1511 1412,258 1847,1493 1943,1493 1412,-17 985,1229 557,-17 25,1493 Z" | ||
191 | id="glyph42" /> | ||
192 | <glyph | ||
193 | unicode="P" | ||
194 | horiz-adv-x="927" | ||
195 | d="M 168,0 L 168,1495 698,1495 C 805,1495 896,1456 971,1379 1046,1302 1083,1209 1083,1100 1083,990 1046,896 972,818 897,740 807,701 701,701 L 258,701 258,0 168,0 Z M 258,795 L 701,795 C 780,795 849,825 906,884 963,943 991,1015 991,1100 991,1185 962,1257 905,1317 848,1376 779,1406 698,1406 L 258,1406 258,795 Z" | ||
196 | id="glyph44" /> | ||
197 | <glyph | ||
198 | unicode="D" | ||
199 | horiz-adv-x="1086" | ||
200 | d="M 258,90 L 468,90 C 590,90 702,119 805,176 907,233 988,312 1048,413 1107,514 1137,624 1137,745 1137,867 1107,979 1048,1080 988,1181 907,1260 805,1317 702,1374 590,1403 468,1403 L 258,1403 258,90 Z M 168,0 L 168,1493 468,1493 C 571,1493 669,1474 762,1435 855,1396 936,1344 1004,1278 1072,1211 1126,1132 1166,1039 1206,946 1226,848 1226,745 1226,608 1192,482 1124,368 1056,253 964,163 848,98 732,33 605,0 468,0 L 168,0 Z" | ||
201 | id="glyph46" /> | ||
202 | <glyph | ||
203 | unicode="C" | ||
204 | horiz-adv-x="1377" | ||
205 | d="M 1417,346 L 1489,297 C 1420,202 1332,127 1225,72 1118,17 1003,-11 880,-11 777,-11 679,9 586,49 493,89 412,143 345,211 278,279 224,360 184,454 144,548 124,647 124,750 124,853 144,952 184,1046 224,1140 278,1221 345,1289 412,1357 493,1411 586,1451 679,1491 777,1511 880,1511 1003,1511 1117,1483 1224,1428 1331,1372 1419,1296 1489,1200 L 1417,1147 C 1355,1230 1277,1296 1184,1345 1090,1393 989,1417 880,1417 759,1417 647,1387 545,1327 442,1267 361,1186 302,1083 243,980 213,867 213,745 213,654 231,568 266,485 301,402 348,331 407,271 466,211 537,163 620,128 703,92 789,74 880,74 989,74 1090,98 1184,147 1277,196 1355,262 1417,346 Z" | ||
206 | id="glyph48" /> | ||
207 | <glyph | ||
208 | unicode=" " | ||
209 | horiz-adv-x="714" | ||
210 | id="glyph50" /> | ||
211 | </font> | ||
212 | </defs> | ||
213 | <g | ||
214 | id="id2" | ||
215 | class="Master_Slide" | ||
216 | clip-path="url(#presentation_clip_path)"> | ||
217 | <g | ||
218 | id="bg-id2" | ||
219 | visibility="visible" | ||
220 | class="Background"> | ||
221 | <rect | ||
222 | fill="none" | ||
223 | stroke="none" | ||
224 | x="0" | ||
225 | y="0" | ||
226 | width="21000" | ||
227 | height="29700" | ||
228 | id="rect54" /> | ||
229 | </g> | ||
230 | <g | ||
231 | id="bo-id2" | ||
232 | visibility="visible" | ||
233 | class="BackgroundObjects" /> | ||
234 | </g> | ||
235 | <g | ||
236 | id="id1" | ||
237 | class="Slide" | ||
238 | visibility="visible" | ||
239 | clip-path="url(#presentation_clip_path)"> | ||
240 | |||
241 | |||
242 | <g | ||
243 | class="com.sun.star.drawing.LineShape" | ||
244 | id="g78" | ||
245 | transform="translate(283.47087,-175.88835)"> | ||
246 | <g | ||
247 | id="g80"> | ||
248 | <path | ||
249 | d="m 5006,3149 358,-274" | ||
250 | id="path82" | ||
251 | inkscape:connector-curvature="0" | ||
252 | style="fill:none;stroke:#000000" /> | ||
253 | <path | ||
254 | d="m 4911,3033 -1,-50 -306,475 538,-173 -46,-13 -46,-22 -43,-31 -37,-39 -30,-46 -19,-50 -10,-51 z" | ||
255 | id="path84" | ||
256 | inkscape:connector-curvature="0" | ||
257 | style="fill:#000000;stroke:none" /> | ||
258 | <path | ||
259 | d="m 5459,2991 1,50 306,-475 -538,173 46,13 46,22 43,31 37,39 30,46 19,50 10,51 z" | ||
260 | id="path86" | ||
261 | inkscape:connector-curvature="0" | ||
262 | style="fill:#000000;stroke:none" /> | ||
263 | </g> | ||
264 | </g> | ||
265 | <g | ||
266 | class="com.sun.star.drawing.LineShape" | ||
267 | id="g88" | ||
268 | transform="translate(274.00388,79.549513)"> | ||
269 | <g | ||
270 | id="g90"> | ||
271 | <path | ||
272 | d="m 4974,4621 1019,546" | ||
273 | id="path92" | ||
274 | inkscape:connector-curvature="0" | ||
275 | style="fill:none;stroke:#000000" /> | ||
276 | <path | ||
277 | d="m 5041,4486 45,-21 -559,-83 379,419 -7,-47 2,-51 10,-52 20,-50 30,-46 38,-38 42,-31 z" | ||
278 | id="path94" | ||
279 | inkscape:connector-curvature="0" | ||
280 | style="fill:#000000;stroke:none" /> | ||
281 | <path | ||
282 | d="m 5926,5302 -45,21 559,83 -379,-419 7,47 -2,51 -10,52 -20,50 -30,46 -38,38 -42,31 z" | ||
283 | id="path96" | ||
284 | inkscape:connector-curvature="0" | ||
285 | style="fill:#000000;stroke:none" /> | ||
286 | </g> | ||
287 | </g> | ||
288 | <g | ||
289 | class="com.sun.star.drawing.LineShape" | ||
290 | id="g98" | ||
291 | transform="translate(-92.67767,-177.40485)"> | ||
292 | <g | ||
293 | id="g100"> | ||
294 | <path | ||
295 | d="m 2137,2846 503,332" | ||
296 | id="path102" | ||
297 | inkscape:connector-curvature="0" | ||
298 | style="fill:none;stroke:#000000" /> | ||
299 | <path | ||
300 | d="m 2216,2717 47,-16 -549,-135 339,452 -3,-47 6,-51 15,-50 25,-49 34,-43 41,-34 45,-27 z" | ||
301 | id="path104" | ||
302 | inkscape:connector-curvature="0" | ||
303 | style="fill:#000000;stroke:none" /> | ||
304 | <path | ||
305 | d="m 2561,3307 -47,16 549,135 -339,-452 3,47 -6,51 -15,50 -25,49 -34,43 -41,34 -45,27 z" | ||
306 | id="path106" | ||
307 | inkscape:connector-curvature="0" | ||
308 | style="fill:#000000;stroke:none" /> | ||
309 | </g> | ||
310 | </g> | ||
311 | <g | ||
312 | class="com.sun.star.drawing.LineShape" | ||
313 | id="g108" | ||
314 | transform="translate(141.42134,-4808.3261)"> | ||
315 | <g | ||
316 | id="g110"> | ||
317 | <path | ||
318 | d="m 2977,15801 2376,385" | ||
319 | id="path112" | ||
320 | inkscape:connector-curvature="0" | ||
321 | style="fill:none;stroke:#000000" /> | ||
322 | <path | ||
323 | d="m 2997,15652 36,-35 -556,103 495,273 -22,-42 -15,-49 -8,-52 3,-54 13,-53 24,-49 30,-42 z" | ||
324 | id="path114" | ||
325 | inkscape:connector-curvature="0" | ||
326 | style="fill:#000000;stroke:none" /> | ||
327 | <path | ||
328 | d="m 5333,16335 -36,35 556,-103 -495,-273 22,42 15,49 8,52 -3,54 -13,53 -24,49 -30,42 z" | ||
329 | id="path116" | ||
330 | inkscape:connector-curvature="0" | ||
331 | style="fill:#000000;stroke:none" /> | ||
332 | </g> | ||
333 | </g> | ||
334 | <g | ||
335 | class="com.sun.star.drawing.LineShape" | ||
336 | id="g118" | ||
337 | transform="translate(141.42134,-4808.3261)"> | ||
338 | <g | ||
339 | id="g120"> | ||
340 | <path | ||
341 | d="m 1873,16590 -249,2185" | ||
342 | id="path122" | ||
343 | inkscape:connector-curvature="0" | ||
344 | style="fill:none;stroke:#000000" /> | ||
345 | <path | ||
346 | d="m 2024,16602 36,34 -130,-550 -249,507 42,-24 48,-17 51,-10 55,0 53,11 49,21 45,28 z" | ||
347 | id="path124" | ||
348 | inkscape:connector-curvature="0" | ||
349 | style="fill:#000000;stroke:none" /> | ||
350 | <path | ||
351 | d="m 1473,18763 -36,-34 130,550 249,-507 -42,24 -48,17 -51,10 -55,0 -53,-11 -49,-21 -45,-28 z" | ||
352 | id="path126" | ||
353 | inkscape:connector-curvature="0" | ||
354 | style="fill:#000000;stroke:none" /> | ||
355 | </g> | ||
356 | </g> | ||
357 | <g | ||
358 | class="com.sun.star.drawing.LineShape" | ||
359 | id="g128" | ||
360 | transform="translate(141.42134,-4808.3261)"> | ||
361 | <g | ||
362 | id="g130"> | ||
363 | <path | ||
364 | d="m 2437,19816 3548,-71" | ||
365 | id="path132" | ||
366 | inkscape:connector-curvature="0" | ||
367 | style="fill:none;stroke:#000000" /> | ||
368 | <path | ||
369 | d="m 2429,19665 29,-40 -528,202 536,179 -29,-38 -24,-45 -17,-50 -7,-54 4,-54 14,-52 22,-48 z" | ||
370 | id="path134" | ||
371 | inkscape:connector-curvature="0" | ||
372 | style="fill:#000000;stroke:none" /> | ||
373 | <path | ||
374 | d="m 5993,19896 -29,40 528,-202 -536,-179 29,38 24,45 17,50 7,54 -4,54 -14,52 -22,48 z" | ||
375 | id="path136" | ||
376 | inkscape:connector-curvature="0" | ||
377 | style="fill:#000000;stroke:none" /> | ||
378 | </g> | ||
379 | </g> | ||
380 | <g | ||
381 | class="com.sun.star.drawing.LineShape" | ||
382 | id="g138" | ||
383 | transform="translate(141.42134,-4808.3261)"> | ||
384 | <g | ||
385 | id="g140"> | ||
386 | <path | ||
387 | d="m 6566,17225 217,1462" | ||
388 | id="path142" | ||
389 | inkscape:connector-curvature="0" | ||
390 | style="fill:none;stroke:#000000" /> | ||
391 | <path | ||
392 | d="m 6715,17199 43,24 -266,-499 -110,554 33,-34 42,-29 47,-23 53,-13 54,-4 54,8 50,16 z" | ||
393 | id="path144" | ||
394 | inkscape:connector-curvature="0" | ||
395 | style="fill:#000000;stroke:none" /> | ||
396 | <path | ||
397 | d="m 6634,18713 -43,-24 266,499 110,-554 -33,34 -42,29 -47,23 -53,13 -54,4 -54,-8 -50,-16 z" | ||
398 | id="path146" | ||
399 | inkscape:connector-curvature="0" | ||
400 | style="fill:#000000;stroke:none" /> | ||
401 | </g> | ||
402 | </g> | ||
403 | <g | ||
404 | class="com.sun.star.drawing.LineShape" | ||
405 | id="g148" | ||
406 | transform="translate(141.42134,-4808.3261)"> | ||
407 | <g | ||
408 | id="g150"> | ||
409 | <path | ||
410 | d="m 2689,16312 3500,2829" | ||
411 | id="path152" | ||
412 | inkscape:connector-curvature="0" | ||
413 | style="fill:none;stroke:#000000" /> | ||
414 | <path | ||
415 | d="m 2780,16192 49,-12 -534,-187 294,483 2,-48 11,-50 19,-49 30,-45 37,-40 45,-30 47,-22 z" | ||
416 | id="path154" | ||
417 | inkscape:connector-curvature="0" | ||
418 | style="fill:#000000;stroke:none" /> | ||
419 | <path | ||
420 | d="m 6098,19261 -49,12 534,187 -294,-483 -2,48 -11,50 -19,49 -30,45 -37,40 -45,30 -47,22 z" | ||
421 | id="path156" | ||
422 | inkscape:connector-curvature="0" | ||
423 | style="fill:#000000;stroke:none" /> | ||
424 | </g> | ||
425 | </g> | ||
426 | <g | ||
427 | class="com.sun.star.drawing.LineShape" | ||
428 | id="g158" | ||
429 | transform="matrix(0.99936666,-0.03558474,0.03558474,0.99936666,-498.25376,-4655.1623)"> | ||
430 | <g | ||
431 | id="g160"> | ||
432 | <path | ||
433 | d="M 2356,19095 5610,16999" | ||
434 | id="path162" | ||
435 | inkscape:connector-curvature="0" | ||
436 | style="fill:none;stroke:#000000" /> | ||
437 | <path | ||
438 | d="m 2271,18971 3,-49 -344,448 551,-128 -45,-17 -44,-26 -40,-34 -35,-42 -25,-48 -15,-52 -6,-52 z" | ||
439 | id="path164" | ||
440 | inkscape:connector-curvature="0" | ||
441 | style="fill:#000000;stroke:none" /> | ||
442 | <path | ||
443 | d="m 5695,17123 -3,49 344,-448 -551,128 45,17 44,26 40,34 35,42 25,48 15,52 6,52 z" | ||
444 | id="path166" | ||
445 | inkscape:connector-curvature="0" | ||
446 | style="fill:#000000;stroke:none" /> | ||
447 | </g> | ||
448 | </g> | ||
449 | |||
450 | |||
451 | |||
452 | |||
453 | <g | ||
454 | class="com.sun.star.drawing.CustomShape" | ||
455 | id="g294" | ||
456 | transform="matrix(2.2392824,0,0,2.1897111,-4646.4546,-4903.9283)"> | ||
457 | <g | ||
458 | id="g296"> | ||
459 | <path | ||
460 | d="m 3823,3687 c 194,0 343,148 343,342 0,194 -149,343 -343,343 -194,0 -342,-149 -342,-343 0,-194 148,-342 342,-342 z m -342,0 0,0 z m 686,687 0,0 z" | ||
461 | id="path298" | ||
462 | inkscape:connector-curvature="0" | ||
463 | style="fill:#000000;stroke:none" /> | ||
464 | <path | ||
465 | d="m 3823,3687 c 194,0 343,148 343,342 0,194 -149,343 -343,343 -194,0 -342,-149 -342,-343 0,-194 148,-342 342,-342" | ||
466 | id="path300" | ||
467 | inkscape:connector-curvature="0" | ||
468 | style="fill:none;stroke:#000000" /> | ||
469 | <path | ||
470 | style="fill:none;stroke:none" | ||
471 | d="m 3482,3687 686,0 0,687 -686,0 z" | ||
472 | id="rect302" | ||
473 | inkscape:connector-curvature="0" /> | ||
474 | </g> | ||
475 | </g> | ||
476 | <g | ||
477 | class="com.sun.star.drawing.LineShape" | ||
478 | id="g304" | ||
479 | transform="translate(-114.90485,88.388348)"> | ||
480 | <g | ||
481 | id="g306"> | ||
482 | <path | ||
483 | d="m 2397,4990 311,-221" | ||
484 | id="path308" | ||
485 | inkscape:connector-curvature="0" | ||
486 | style="fill:none;stroke:#000000" /> | ||
487 | <path | ||
488 | d="m 2306,4870 1,-49 -322,464 544,-154 -46,-15 -45,-24 -42,-32 -36,-40 -28,-47 -17,-51 -9,-52 z" | ||
489 | id="path310" | ||
490 | inkscape:connector-curvature="0" | ||
491 | style="fill:#000000;stroke:none" /> | ||
492 | <path | ||
493 | d="m 2799,4889 -1,49 322,-464 -544,154 46,15 45,24 42,32 36,40 28,47 17,51 9,52 z" | ||
494 | id="path312" | ||
495 | inkscape:connector-curvature="0" | ||
496 | style="fill:#000000;stroke:none" /> | ||
497 | </g> | ||
498 | </g> | ||
499 | |||
500 | |||
501 | |||
502 | |||
503 | |||
504 | |||
505 | |||
506 | |||
507 | |||
508 | |||
509 | |||
510 | |||
511 | |||
512 | |||
513 | |||
514 | |||
515 | |||
516 | |||
517 | <g | ||
518 | class="com.sun.star.drawing.LineShape" | ||
519 | id="g494" | ||
520 | transform="translate(-10634.114,4796.562)"> | ||
521 | <g | ||
522 | id="g496"> | ||
523 | <path | ||
524 | d="m 15589,22270 2376,385" | ||
525 | id="path498" | ||
526 | inkscape:connector-curvature="0" | ||
527 | style="fill:none;stroke:#000000" /> | ||
528 | <path | ||
529 | d="m 15609,22121 36,-35 -556,103 495,273 -22,-42 -15,-49 -8,-52 3,-54 13,-53 24,-49 30,-42 z" | ||
530 | id="path500" | ||
531 | inkscape:connector-curvature="0" | ||
532 | style="fill:#000000;stroke:none" /> | ||
533 | <path | ||
534 | d="m 17945,22804 -36,35 556,-103 -495,-273 22,42 15,49 8,52 -3,54 -13,53 -24,49 -30,42 z" | ||
535 | id="path502" | ||
536 | inkscape:connector-curvature="0" | ||
537 | style="fill:#000000;stroke:none" /> | ||
538 | </g> | ||
539 | </g> | ||
540 | |||
541 | <g | ||
542 | class="com.sun.star.drawing.LineShape" | ||
543 | id="g514" | ||
544 | transform="translate(-10352.55,4341.6985)"> | ||
545 | <g | ||
546 | id="g516"> | ||
547 | <path | ||
548 | d="m 12174,24362 3548,-71" | ||
549 | id="path518" | ||
550 | inkscape:connector-curvature="0" | ||
551 | style="fill:none;stroke:#000000" /> | ||
552 | <path | ||
553 | d="m 12166,24211 29,-40 -528,202 536,179 -29,-38 -24,-45 -17,-50 -7,-54 4,-54 14,-52 22,-48 z" | ||
554 | id="path520" | ||
555 | inkscape:connector-curvature="0" | ||
556 | style="fill:#000000;stroke:none" /> | ||
557 | <path | ||
558 | d="m 15730,24442 -29,40 528,-202 -536,-179 29,38 24,45 17,50 7,54 -4,54 -14,52 -22,48 z" | ||
559 | id="path522" | ||
560 | inkscape:connector-curvature="0" | ||
561 | style="fill:#000000;stroke:none" /> | ||
562 | </g> | ||
563 | </g> | ||
564 | |||
565 | <g | ||
566 | class="com.sun.star.drawing.LineShape" | ||
567 | id="g534" | ||
568 | transform="matrix(0.89781219,0.44037856,-0.44037856,0.89781219,494.9455,544.55462)"> | ||
569 | <g | ||
570 | id="g536"> | ||
571 | <path | ||
572 | d="m 15247,21205 482,-701" | ||
573 | id="path538" | ||
574 | inkscape:connector-curvature="0" | ||
575 | style="fill:none;stroke:#000000" /> | ||
576 | <path | ||
577 | d="m 15120,21124 -16,-48 -144,547 458,-331 -47,2 -51,-7 -50,-15 -48,-26 -42,-35 -34,-42 -26,-45 z" | ||
578 | id="path540" | ||
579 | inkscape:connector-curvature="0" | ||
580 | style="fill:#000000;stroke:none" /> | ||
581 | <path | ||
582 | d="m 15856,20585 16,48 144,-547 -458,331 47,-2 51,7 50,15 48,26 42,35 34,42 26,45 z" | ||
583 | id="path542" | ||
584 | inkscape:connector-curvature="0" | ||
585 | style="fill:#000000;stroke:none" /> | ||
586 | </g> | ||
587 | </g> | ||
588 | |||
589 | <path | ||
590 | d="m 2809.8643,25046.642 c 30,0 53,22 53,52 0,30 -23,53 -53,53 -30,0 -52,-23 -52,-53 0,-30 22,-52 52,-52" | ||
591 | id="path560" | ||
592 | inkscape:connector-curvature="0" | ||
593 | style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:28.22200012;stroke-miterlimit:4;stroke-dasharray:none" | ||
594 | inkscape:transform-center-x="-127.625" | ||
595 | inkscape:transform-center-y="-0.5" /> | ||
596 | <path | ||
597 | d="m 3828.6738,22396.083 c 23.0103,19.249 26.5357,50.88 7.2869,73.891 -19.2489,23.01 -51.6478,25.893 -74.6581,6.645 -23.0104,-19.249 -25.1274,-51.006 -5.8785,-74.017 19.249,-23.01 50.2393,-25.768 73.2497,-6.519" | ||
598 | id="path570" | ||
599 | inkscape:connector-curvature="0" | ||
600 | style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:28.22200012" /><path | ||
601 | style="fill:none;stroke:none" | ||
602 | d="m 4299.5064,22989.725 71.7748,78.002 -78.0026,71.775 -71.7747,-78.003 z" | ||
603 | id="rect572" | ||
604 | inkscape:connector-curvature="0" /> | ||
605 | <path | ||
606 | d="m 6040.8856,28577.062 c 30,0 53,22 53,52 0,30 -23,53 -53,53 -30,0 -52,-23 -52,-53 0,-30 22,-52 52,-52 z m -52,0 0,0 z m 106,106 0,0 z" | ||
607 | id="path578" | ||
608 | style="fill:#000000;fill-opacity:0.89800002;stroke:#ffffff;stroke-opacity:0.89800002" | ||
609 | inkscape:connector-curvature="0" /><path | ||
610 | d="m 6040.8856,28577.062 c 30,0 53,22 53,52 0,30 -23,53 -53,53 -30,0 -52,-23 -52,-53 0,-30 22,-52 52,-52" | ||
611 | id="path580" | ||
612 | style="fill:#000000;stroke:#000000" | ||
613 | inkscape:connector-curvature="0" /> | ||
614 | |||
615 | <g | ||
616 | class="com.sun.star.drawing.CustomShape" | ||
617 | id="g594" | ||
618 | transform="translate(-10559.114,4684.062)"> | ||
619 | <g | ||
620 | id="g596"> | ||
621 | <path | ||
622 | d="m 14415,21796 c 170,0 301,131 301,301 0,170 -131,301 -301,301 -170,0 -301,-131 -301,-301 0,-170 131,-301 301,-301 z m -301,0 0,0 z m 603,603 0,0 z" | ||
623 | id="path598" | ||
624 | inkscape:connector-curvature="0" | ||
625 | style="fill:#000000;stroke:none" /> | ||
626 | <path | ||
627 | d="m 14415,21796 c 170,0 301,131 301,301 0,170 -131,301 -301,301 -170,0 -301,-131 -301,-301 0,-170 131,-301 301,-301" | ||
628 | id="path600" | ||
629 | inkscape:connector-curvature="0" | ||
630 | style="fill:none;stroke:#000000" /> | ||
631 | <path | ||
632 | style="fill:none;stroke:none" | ||
633 | d="m 14114,21796 603,0 0,603 -603,0 z" | ||
634 | id="rect602" | ||
635 | inkscape:connector-curvature="0" /> | ||
636 | </g> | ||
637 | </g> | ||
638 | |||
639 | |||
640 | |||
641 | <g | ||
642 | class="com.sun.star.drawing.LineShape" | ||
643 | id="g634" | ||
644 | transform="matrix(0.91574356,0.40176329,-0.40176329,0.91574356,-640.71883,906.69003)"> | ||
645 | <g | ||
646 | id="g636"> | ||
647 | <path | ||
648 | d="m 14437,20866 78,-1354" | ||
649 | id="path638" | ||
650 | inkscape:connector-curvature="0" | ||
651 | style="fill:none;stroke:#000000" /> | ||
652 | <path | ||
653 | d="m 14286,20862 -38,-32 160,542 220,-520 -40,26 -47,20 -51,13 -54,2 -54,-7 -50,-19 -46,-25 z" | ||
654 | id="path640" | ||
655 | inkscape:connector-curvature="0" | ||
656 | style="fill:#000000;stroke:none" /> | ||
657 | <path | ||
658 | d="m 14666,19516 38,32 -160,-542 -220,520 40,-26 47,-20 51,-13 54,-2 54,7 50,19 46,25 z" | ||
659 | id="path642" | ||
660 | inkscape:connector-curvature="0" | ||
661 | style="fill:#000000;stroke:none" /> | ||
662 | </g> | ||
663 | </g> | ||
664 | <path | ||
665 | d="m 5147.2606,23860.062 c 30,0 53,22 53,52 0,30 -23,53 -53,53 -30,0 -52,-23 -52,-53 0,-30 22,-52 52,-52" | ||
666 | id="path650" | ||
667 | inkscape:connector-curvature="0" | ||
668 | style="fill:#000000;fill-opacity:1;stroke:#000000" /><path | ||
669 | style="fill:none;stroke:none" | ||
670 | d="m 5096.2606,23861.062 106,0 0,106 -106,0 z" | ||
671 | id="rect652" | ||
672 | inkscape:connector-curvature="0" /> | ||
673 | <path | ||
674 | d="m 8066.8856,27503.062 c 30,0 53,22 53,52 0,30 -23,53 -53,53 -30,0 -52,-23 -52,-53 0,-30 22,-52 52,-52" | ||
675 | id="path660" | ||
676 | inkscape:connector-curvature="0" | ||
677 | style="fill:#000000;fill-opacity:1;stroke:#000000" /><path | ||
678 | style="fill:none;stroke:none" | ||
679 | d="m 8190.8856,27504.062 106,0 0,106 -106,0 z" | ||
680 | id="rect662" | ||
681 | inkscape:connector-curvature="0" /> | ||
682 | |||
683 | |||
684 | |||
685 | <g | ||
686 | id="g3168" | ||
687 | transform="matrix(0.82206161,0.56939854,-0.56939854,0.82206161,15254.873,2237.0373)"><g | ||
688 | transform="translate(-10359.114,4384.062)" | ||
689 | id="g604" | ||
690 | class="com.sun.star.drawing.CustomShape"> | ||
691 | <g | ||
692 | id="g606"> | ||
693 | <path | ||
694 | style="fill:#000000;stroke:none" | ||
695 | inkscape:connector-curvature="0" | ||
696 | id="path608" | ||
697 | d="m 16354,19273 c 170,0 301,131 301,301 0,170 -131,301 -301,301 -170,0 -301,-131 -301,-301 0,-170 131,-301 301,-301 z m -301,0 0,0 z m 603,603 0,0 z" /> | ||
698 | <path | ||
699 | style="fill:none;stroke:#000000" | ||
700 | inkscape:connector-curvature="0" | ||
701 | id="path610" | ||
702 | d="m 16354,19273 c 170,0 301,131 301,301 0,170 -131,301 -301,301 -170,0 -301,-131 -301,-301 0,-170 131,-301 301,-301" /> | ||
703 | <path | ||
704 | inkscape:connector-curvature="0" | ||
705 | id="rect612" | ||
706 | d="m 16053,19273 603,0 0,603 -603,0 z" | ||
707 | style="fill:none;stroke:none" /> | ||
708 | </g> | ||
709 | </g><g | ||
710 | transform="translate(-10359.114,4384.062)" | ||
711 | id="g614" | ||
712 | class="com.sun.star.drawing.LineShape"> | ||
713 | <g | ||
714 | id="g616"> | ||
715 | <path | ||
716 | style="fill:none;stroke:#000000" | ||
717 | inkscape:connector-curvature="0" | ||
718 | id="path618" | ||
719 | d="m 16437,18366 78,-1354" /> | ||
720 | <path | ||
721 | style="fill:#000000;stroke:none" | ||
722 | inkscape:connector-curvature="0" | ||
723 | id="path620" | ||
724 | d="m 16286,18362 -38,-32 160,542 220,-520 -40,26 -47,20 -51,13 -54,2 -54,-7 -50,-19 -46,-25 z" /> | ||
725 | <path | ||
726 | style="fill:#000000;stroke:none" | ||
727 | inkscape:connector-curvature="0" | ||
728 | id="path622" | ||
729 | d="m 16666,17016 38,32 -160,-542 -220,520 40,-26 47,-20 51,-13 54,-2 54,7 50,19 46,25 z" /> | ||
730 | </g> | ||
731 | </g><g | ||
732 | transform="translate(-10359.114,4384.062)" | ||
733 | id="g626"> | ||
734 | |||
735 | <path | ||
736 | d="m 16549.125,16118.75 c 30,0 53,22 53,52 0,30 -23,53 -53,53 -30,0 -52,-23 -52,-53 0,-30 22,-52 52,-52" | ||
737 | id="path630" | ||
738 | inkscape:connector-curvature="0" | ||
739 | style="fill:#000000;fill-opacity:1;stroke:#000000" /> | ||
740 | <path | ||
741 | style="fill:none;stroke:none" | ||
742 | d="m 16485.625,16060.375 106,0 0,106 -106,0 z" | ||
743 | id="rect632" | ||
744 | inkscape:connector-curvature="0" /> | ||
745 | </g><g | ||
746 | transform="translate(-10359.114,4384.062)" | ||
747 | id="g664" | ||
748 | class="com.sun.star.drawing.LineShape"> | ||
749 | <g | ||
750 | id="g666"> | ||
751 | <path | ||
752 | style="fill:none;stroke:#000000" | ||
753 | inkscape:connector-curvature="0" | ||
754 | id="path668" | ||
755 | d="m 17013,18643 496,-1045" /> | ||
756 | <path | ||
757 | style="fill:#000000;stroke:none" | ||
758 | inkscape:connector-curvature="0" | ||
759 | id="path670" | ||
760 | d="m 16874,18583 -23,-44 -56,562 401,-399 -47,9 -52,1 -51,-7 -52,-18 -47,-27 -40,-36 -33,-41 z" /> | ||
761 | <path | ||
762 | style="fill:#000000;stroke:none" | ||
763 | inkscape:connector-curvature="0" | ||
764 | id="path672" | ||
765 | d="m 17648,17658 23,44 56,-562 -401,399 47,-9 52,-1 51,7 52,18 47,27 40,36 33,41 z" /> | ||
766 | </g> | ||
767 | </g><path | ||
768 | style="fill:#000000;fill-opacity:1;stroke:#000000" | ||
769 | inkscape:connector-curvature="0" | ||
770 | id="path680" | ||
771 | d="m 7522.2606,21175.687 c 30,0 53,22 53,52 0,30 -23,53 -53,53 -30,0 -52,-23 -52,-53 0,-30 22,-52 52,-52" /><path | ||
772 | inkscape:connector-curvature="0" | ||
773 | id="rect682" | ||
774 | d="m 7411.8856,21061.062 106,0 0,106 -106,0 z" | ||
775 | style="fill:none;stroke:none" /><g | ||
776 | transform="translate(-10359.114,4384.062)" | ||
777 | id="g684" | ||
778 | class="com.sun.star.drawing.LineShape"> | ||
779 | <g | ||
780 | id="g686"> | ||
781 | <path | ||
782 | style="fill:none;stroke:#000000" | ||
783 | inkscape:connector-curvature="0" | ||
784 | id="path688" | ||
785 | d="m 17493,19014 626,-537" /> | ||
786 | <path | ||
787 | style="fill:#000000;stroke:none" | ||
788 | inkscape:connector-curvature="0" | ||
789 | id="path690" | ||
790 | d="m 17391,18903 -3,-50 -279,492 528,-203 -47,-10 -47,-20 -45,-28 -39,-37 -32,-44 -22,-49 -14,-51 z" /> | ||
791 | <path | ||
792 | style="fill:#000000;stroke:none" | ||
793 | inkscape:connector-curvature="0" | ||
794 | id="path692" | ||
795 | d="m 18221,18588 3,50 279,-492 -528,203 47,10 47,20 45,28 39,37 32,44 22,49 14,51 z" /> | ||
796 | </g> | ||
797 | </g><path | ||
798 | style="fill:#000000;fill-opacity:1;stroke:#000000" | ||
799 | inkscape:connector-curvature="0" | ||
800 | id="path700" | ||
801 | d="m 8463.8856,22261.062 c 30,0 53,22 53,52 0,30 -23,53 -53,53 -30,0 -52,-23 -52,-53 0,-30 22,-52 52,-52" /><path | ||
802 | inkscape:connector-curvature="0" | ||
803 | id="rect702" | ||
804 | d="m 8412.8856,22262.062 106,0 0,106 -106,0 z" | ||
805 | style="fill:none;stroke:none" /></g> | ||
806 | |||
807 | |||
808 | |||
809 | |||
810 | |||
811 | |||
812 | |||
813 | |||
814 | |||
815 | |||
816 | |||
817 | |||
818 | |||
819 | <path | ||
820 | d="m 6544.7753,11486.084 c 30,0 53,22 53,52 0,30 -23,53 -53,53 -30,0 -52,-23 -52,-53 0,-30 22,-52 52,-52" | ||
821 | id="path570-4" | ||
822 | inkscape:connector-curvature="0" | ||
823 | style="fill:#000000;fill-opacity:1;stroke:#000000" /><path | ||
824 | style="fill:none;stroke:none" | ||
825 | d="m 6392.8873,11575.381 106,0 0,106 -106,0 z" | ||
826 | id="rect572-0" | ||
827 | inkscape:connector-curvature="0" /><path | ||
828 | d="m 7052.8903,14905.654 c 30,0 53,22 53,52 0,30 -23,53 -53,53 -30,0 -52,-23 -52,-53 0,-30 22,-52 52,-52" | ||
829 | id="path570-49" | ||
830 | inkscape:connector-curvature="0" | ||
831 | style="fill:#000000;fill-opacity:1;stroke:#000000" /><path | ||
832 | d="m 1689.0118,14947.538 c 30,0 53,22 53,52 0,30 -23,53 -53,53 -30,0 -52,-23 -52,-53 0,-30 22,-52 52,-52" | ||
833 | id="path570-49-3" | ||
834 | inkscape:connector-curvature="0" | ||
835 | style="fill:#000000;fill-opacity:1;stroke:#000000" /><path | ||
836 | d="m 2061.1582,10827.411 c 30,0 53,22 53,52 0,30 -23,53 -53,53 -30,0 -52,-23 -52,-53 0,-30 22,-52 52,-52" | ||
837 | id="path570-49-6" | ||
838 | inkscape:connector-curvature="0" | ||
839 | style="fill:#000000;fill-opacity:1;stroke:#000000" /><path | ||
840 | d="m 6270.2107,2191.6942 c 30,0 53,22 53,52 0,30 -23,53 -53,53 -30,0 -52,-23 -52,-53 0,-30 22,-52 52,-52" | ||
841 | id="path570-49-8" | ||
842 | inkscape:connector-curvature="0" | ||
843 | style="fill:#000000;fill-opacity:1;stroke:#000000" /><path | ||
844 | d="m 6915.033,5538.6612 c 30,0 53,22 53,52 0,30 -23,53 -53,53 -30,0 -52,-23 -52,-53 0,-30 22,-52 52,-52" | ||
845 | id="path570-49-33" | ||
846 | inkscape:connector-curvature="0" | ||
847 | style="fill:#000000;fill-opacity:1;stroke:#000000" /><path | ||
848 | d="m 1379.6777,2195.0952 c 30,0 53,22 53,52 0,30 -23,53 -53,53 -30,0 -52,-23 -52,-53 0,-30 22,-52 52,-52" | ||
849 | id="path570-49-9" | ||
850 | inkscape:connector-curvature="0" | ||
851 | style="fill:#000000;fill-opacity:1;stroke:#000000" /><path | ||
852 | d="m 1647.0951,5435.8882 c 30,0 53,22 53,52 0,30 -23,53 -53,53 -30,0 -52,-23 -52,-53 0,-30 22,-52 52,-52" | ||
853 | id="path570-49-82" | ||
854 | inkscape:connector-curvature="0" | ||
855 | style="fill:#000000;fill-opacity:1;stroke:#000000" /><path | ||
856 | d="m 1002.7798,28654.636 c 30,0 53,22 53,52 0,30 -23,53 -53,53 -29.99995,0 -51.99995,-23 -51.99995,-53 0,-30 22,-52 51.99995,-52" | ||
857 | id="path560-3" | ||
858 | inkscape:connector-curvature="0" | ||
859 | style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:28.22200012;stroke-miterlimit:4;stroke-dasharray:none" | ||
860 | inkscape:transform-center-x="-127.625" | ||
861 | inkscape:transform-center-y="-0.5" /><g | ||
862 | class="com.sun.star.drawing.LineShape" | ||
863 | id="g544-4" | ||
864 | transform="matrix(0.9999931,0.00371577,-0.00371577,0.9999931,-10281.165,4533.9206)"><g | ||
865 | id="g546-3"><path | ||
866 | d="m 12092,23639 1347,-877" | ||
867 | id="path548-1" | ||
868 | inkscape:connector-curvature="0" | ||
869 | style="fill:none;stroke:#000000" /><path | ||
870 | d="m 12006,23516 3,-50 -342,450 550,-131 -45,-16 -44,-26 -40,-34 -35,-42 -26,-48 -15,-51 -6,-52 z" | ||
871 | id="path550-0" | ||
872 | inkscape:connector-curvature="0" | ||
873 | style="fill:#000000;stroke:none" /><path | ||
874 | d="m 13525,22885 -3,50 342,-450 -550,131 45,16 44,26 40,34 35,42 26,48 15,51 6,52 z" | ||
875 | id="path552-1" | ||
876 | inkscape:connector-curvature="0" | ||
877 | style="fill:#000000;stroke:none" /></g></g><g | ||
878 | class="com.sun.star.drawing.LineShape" | ||
879 | id="g494-5" | ||
880 | transform="matrix(0.31545167,-0.94894164,0.94894164,0.31545167,-24709.757,35697.819)"><g | ||
881 | id="g496-5"><path | ||
882 | d="m 15589,22270 2376,385" | ||
883 | id="path498-2" | ||
884 | inkscape:connector-curvature="0" | ||
885 | style="fill:none;stroke:#000000" /><path | ||
886 | d="m 15609,22121 36,-35 -556,103 495,273 -22,-42 -15,-49 -8,-52 3,-54 13,-53 24,-49 30,-42 z" | ||
887 | id="path500-8" | ||
888 | inkscape:connector-curvature="0" | ||
889 | style="fill:#000000;stroke:none" /><path | ||
890 | d="m 17945,22804 -36,35 556,-103 -495,-273 22,42 15,49 8,52 -3,54 -13,53 -24,49 -30,42 z" | ||
891 | id="path502-1" | ||
892 | inkscape:connector-curvature="0" | ||
893 | style="fill:#000000;stroke:none" /></g></g><g | ||
894 | class="com.sun.star.drawing.LineShape" | ||
895 | id="g634-9" | ||
896 | transform="matrix(0.95363238,0.30097391,-0.30097391,0.95363238,-4410.732,157.65584)"><g | ||
897 | id="g636-8"><path | ||
898 | d="m 14437,20866 78,-1354" | ||
899 | id="path638-4" | ||
900 | inkscape:connector-curvature="0" | ||
901 | style="fill:none;stroke:#000000" /><path | ||
902 | d="m 14286,20862 -38,-32 160,542 220,-520 -40,26 -47,20 -51,13 -54,2 -54,-7 -50,-19 -46,-25 z" | ||
903 | id="path640-3" | ||
904 | inkscape:connector-curvature="0" | ||
905 | style="fill:#000000;stroke:none" /><path | ||
906 | d="m 14666,19516 38,32 -160,-542 -220,520 40,-26 47,-20 51,-13 54,-2 54,7 50,19 46,25 z" | ||
907 | id="path642-8" | ||
908 | inkscape:connector-curvature="0" | ||
909 | style="fill:#000000;stroke:none" /></g></g></g> | ||
910 | </svg> \ No newline at end of file | ||
diff --git a/secushare-old-html/img/multicast.png b/secushare-old-html/img/multicast.png new file mode 100644 index 0000000..8dc3982 --- /dev/null +++ b/secushare-old-html/img/multicast.png | |||
Binary files differ | |||
diff --git a/secushare-old-html/img/phase0.jpeg b/secushare-old-html/img/phase0.jpeg new file mode 100755 index 0000000..620e1e6 --- /dev/null +++ b/secushare-old-html/img/phase0.jpeg | |||
Binary files differ | |||
diff --git a/secushare-old-html/img/phase1.jpeg b/secushare-old-html/img/phase1.jpeg new file mode 100755 index 0000000..044591e --- /dev/null +++ b/secushare-old-html/img/phase1.jpeg | |||
Binary files differ | |||
diff --git a/secushare-old-html/img/phase2.jpeg b/secushare-old-html/img/phase2.jpeg new file mode 100755 index 0000000..e143b2e --- /dev/null +++ b/secushare-old-html/img/phase2.jpeg | |||
Binary files differ | |||
diff --git a/secushare-old-html/img/phase3.jpeg b/secushare-old-html/img/phase3.jpeg new file mode 100755 index 0000000..4240590 --- /dev/null +++ b/secushare-old-html/img/phase3.jpeg | |||
Binary files differ | |||
diff --git a/secushare-old-html/img/secushare-0444.png b/secushare-old-html/img/secushare-0444.png new file mode 100644 index 0000000..51f55b3 --- /dev/null +++ b/secushare-old-html/img/secushare-0444.png | |||
Binary files differ | |||
diff --git a/secushare-old-html/img/unicast.png b/secushare-old-html/img/unicast.png new file mode 100644 index 0000000..96c6534 --- /dev/null +++ b/secushare-old-html/img/unicast.png | |||
Binary files differ | |||
diff --git a/secushare-old-latex/.init.el b/secushare-old-latex/.init.el new file mode 100644 index 0000000..178ed00 --- /dev/null +++ b/secushare-old-latex/.init.el | |||
@@ -0,0 +1,61 @@ | |||
1 | (setq load-path (cons "~/.emacs.d/lisp" load-path)) | ||
2 | |||
3 | (setq org-export-latex-verbatim-wrap (quote ( | ||
4 | "\\begin{src} | ||
5 | " . "\\end{src} | ||
6 | " | ||
7 | )) | ||
8 | org-export-allow-BIND t | ||
9 | org-export-headline-levels 6 | ||
10 | org-export-latex-classes (quote ( | ||
11 | ("book-nopart" "\\documentclass[12pt,a4paper]{book}" | ||
12 | ("\\chapter{%s}" . "\\chapter*{%s}") | ||
13 | ("\\section{%s}" . "\\section*{%s}") | ||
14 | ("\\subsection{%s}" . "\\subsection*{%s}") | ||
15 | ("\\subsubsection{%s}" . "\\subsubsection*{%s}") | ||
16 | ("\\paragraph{%s}" . "\\paragraph*{%s}") | ||
17 | ("\\subparagraph{%s}" . "\\subparagraph*{%s}")) | ||
18 | ("book-nopart-oneside" "\\documentclass[12pt,a4paper,oneside]{book}" | ||
19 | ("\\chapter{%s}" . "\\chapter*{%s}") | ||
20 | ("\\section{%s}" . "\\section*{%s}") | ||
21 | ("\\subsection{%s}" . "\\subsection*{%s}") | ||
22 | ("\\subsubsection{%s}" . "\\subsubsection*{%s}") | ||
23 | ("\\paragraph{%s}" . "\\paragraph*{%s}") | ||
24 | ("\\subparagraph{%s}" . "\\subparagraph*{%s}")) | ||
25 | ("report-nopart" "\\documentclass[12pt,a4paper]{report}" | ||
26 | ("\\chapter{%s}" . "\\chapter*{%s}") | ||
27 | ("\\section{%s}" . "\\section*{%s}") | ||
28 | ("\\subsection{%s}" . "\\subsection*{%s}") | ||
29 | ("\\subsubsection{%s}" . "\\subsubsection*{%s}") | ||
30 | ("\\paragraph{%s}" . "\\paragraph*{%s}") | ||
31 | ("\\subparagraph{%s}" . "\\subparagraph*{%s}")) | ||
32 | ("article" "\\documentclass[12pt]{article}" | ||
33 | ("\\section{%s}" . "\\section*{%s}") | ||
34 | ("\\subsection{%s}" . "\\subsection*{%s}") | ||
35 | ("\\subsubsection{%s}" . "\\subsubsection*{%s}") | ||
36 | ("\\paragraph{%s}" . "\\paragraph*{%s}") | ||
37 | ("\\subparagraph{%s}" . "\\subparagraph*{%s}")) | ||
38 | ("report" "\\documentclass[12pt]{report}" | ||
39 | ("\\part{%s}" . "\\part*{%s}") | ||
40 | ("\\chapter{%s}" . "\\chapter*{%s}") | ||
41 | ("\\section{%s}" . "\\section*{%s}") | ||
42 | ("\\subsection{%s}" . "\\subsection*{%s}") | ||
43 | ("\\subsubsection{%s}" . "\\subsubsection*{%s}")) | ||
44 | ("book" "\\documentclass[12pt,a4paper,oneside]{book}" | ||
45 | ("\\part{%s}" . "\\part*{%s}") | ||
46 | ("\\chapter{%s}" . "\\chapter*{%s}") | ||
47 | ("\\section{%s}" . "\\section*{%s}") | ||
48 | ("\\subsection{%s}" . "\\subsection*{%s}") | ||
49 | ("\\subsubsection{%s}" . "\\subsubsection*{%s}")) | ||
50 | ("beamer" "\\documentclass{beamer}" org-beamer-sectioning) | ||
51 | )) | ||
52 | |||
53 | org-latex-to-pdf-process (quote ( | ||
54 | "pdflatex -interaction nonstopmode -output-directory %o %f" | ||
55 | "bibtex `basename %b`" | ||
56 | "pdflatex -interaction nonstopmode -output-directory %o %f" | ||
57 | "pdflatex -interaction nonstopmode -output-directory %o %f" | ||
58 | )) | ||
59 | ) | ||
60 | |||
61 | (require 'psyc nil 'noerror) | ||
diff --git a/secushare-old-latex/.setup b/secushare-old-latex/.setup new file mode 100644 index 0000000..01e509f --- /dev/null +++ b/secushare-old-latex/.setup | |||
@@ -0,0 +1,73 @@ | |||
1 | #+OPTIONS: toc:nil num:t timestamp:nil author:t H:6 ^:{} | ||
2 | #+BIND: org-export-latex-title-command "" | ||
3 | |||
4 | #+LaTeX_CLASS: book-nopart | ||
5 | #+LaTeX_HEADER: \usepackage{datetime} | ||
6 | #+LaTeX_HEADER: \usepackage{titlesec} | ||
7 | #+LaTeX_HEADER: \usepackage{parskip} | ||
8 | #+LaTeX_HEADER: \usepackage{fancyvrb} | ||
9 | #+LaTeX_HEADER: \usepackage[bookmarks]{hyperref} | ||
10 | |||
11 | #+LaTeX_HEADER: \usepackage{fancyhdr} | ||
12 | #+LaTeX_HEADER: \pagestyle{fancy} | ||
13 | #+LaTeX_HEADER: \fancyhf{} | ||
14 | |||
15 | #+LaTeX_HEADER: \fancyhead[RO, LE] {\thepage} | ||
16 | #+LaTeX_HEADER: \fancyhead[RE]{\textit{\nouppercase{\leftmark}}} | ||
17 | #+LaTeX_HEADER: \fancyhead[LO]{\textit{\nouppercase{\rightmark}}} | ||
18 | |||
19 | #+LaTeX_HEADER: \renewcommand{\chaptermark}[1]{\markboth{\thechapter.\ #1}{}} | ||
20 | #+LaTeX_HEADER: \renewcommand{\sectionmark}[1]{\markright{\thesection.\ #1}{}} | ||
21 | |||
22 | #+LaTeX_HEADER: \fancypagestyle{plain}{% | ||
23 | #+LaTeX_HEADER: \fancyhf{} % clear all header and footer fields | ||
24 | #+LaTeX_HEADER: \fancyfoot[C]{\bfseries \thepage} % except the center | ||
25 | #+LaTeX_HEADER: \renewcommand{\headrulewidth}{0pt} | ||
26 | #+LaTeX_HEADER: \renewcommand{\footrulewidth}{0pt}} | ||
27 | |||
28 | #+LaTeX_HEADER: \usepackage{color} | ||
29 | #+LaTeX_HEADER: \definecolor{blue}{rgb}{0,0,0.5} | ||
30 | #+LaTeX_HEADER: \definecolor{src}{rgb}{0.95,0.95,0.95} | ||
31 | #+LaTeX_HEADER: \hypersetup{colorlinks,linkcolor=blue,urlcolor=blue,citecolor=blue,filecolor=blue} | ||
32 | |||
33 | ##+LaTeX_HEADER: \usepackage{listings} | ||
34 | ##+LaTeX_HEADER: \lstnewenvironment{src}[1][]% | ||
35 | ##+LaTeX_HEADER: {\minipage{\linewidth} | ||
36 | ##+LaTeX_HEADER: \lstset{basicstyle=\ttfamily\footnotesize, | ||
37 | ##+LaTeX_HEADER: backgroundcolor=\color{src}}} | ||
38 | ##+LaTeX_HEADER: {\endminipage} | ||
39 | |||
40 | #+LaTeX_HEADER: \usepackage{listings} | ||
41 | #+LaTeX_HEADER: \lstnewenvironment{src}[1][]% | ||
42 | #+LaTeX_HEADER: {\lstset{basicstyle=\ttfamily\footnotesize}}{} | ||
43 | |||
44 | #+LaTeX_HEADER: \usepackage{biblatex} | ||
45 | #+LaTeX_HEADER: \bibliography{ref}{} | ||
46 | |||
47 | #+LaTeX_HEADER: \makeatletter | ||
48 | |||
49 | #+LaTeX_HEADER: \renewcommand{\@makechapterhead}[1]{% | ||
50 | #+LaTeX_HEADER: \vspace*{50\p@}% | ||
51 | #+LaTeX_HEADER: {\parindent \z@ \raggedright \normalfont | ||
52 | #+LaTeX_HEADER: \interlinepenalty\@M | ||
53 | #+LaTeX_HEADER: \ifnum \c@secnumdepth >\m@ne | ||
54 | #+LaTeX_HEADER: \if@mainmatter | ||
55 | #+LaTeX_HEADER: \Huge\bfseries \thechapter.\ | ||
56 | ##+LaTeX_HEADER: \huge\bfseries \@chapapp\space \thechapter | ||
57 | ##+LaTeX_HEADER: \par\nobreak | ||
58 | ##+LaTeX_HEADER: \vskip 20\p@ | ||
59 | #+LaTeX_HEADER: \fi | ||
60 | #+LaTeX_HEADER: \fi | ||
61 | #+LaTeX_HEADER: \Huge \bfseries #1\par\nobreak | ||
62 | #+LaTeX_HEADER: \vskip 40\p@ | ||
63 | #+LaTeX_HEADER: }} | ||
64 | |||
65 | #+LaTeX_HEADER: \renewcommand\section{% | ||
66 | #+LaTeX_HEADER: \@startsection% | ||
67 | #+LaTeX_HEADER: {section}{\if@mainmatter 1 \else 10 \fi}{\z@}% | ||
68 | #+LaTeX_HEADER: {-3.5ex \@plus -1ex \@minus -.2ex}% | ||
69 | #+LaTeX_HEADER: {2.3ex \@plus.2ex}% | ||
70 | #+LaTeX_HEADER: {\normalfont\Large\bfseries} | ||
71 | #+LaTeX_HEADER: } | ||
72 | |||
73 | #+LaTeX_HEADER: \makeatother | ||
diff --git a/secushare-old-latex/.setup-back b/secushare-old-latex/.setup-back new file mode 100644 index 0000000..0bad779 --- /dev/null +++ b/secushare-old-latex/.setup-back | |||
@@ -0,0 +1,9 @@ | |||
1 | #+BEGIN_LaTeX | ||
2 | \makeatletter | ||
3 | \renewcommand{\@makechapterhead}[1]{% | ||
4 | \vspace*{50 pt}% | ||
5 | {\setlength{\parindent}{0pt} \raggedright \normalfont | ||
6 | \bfseries\Huge#1 | ||
7 | \par\nobreak\vspace{40 pt}}} | ||
8 | \makeatother | ||
9 | #+END_LaTeX | ||
diff --git a/secushare-old-latex/30c3-slides.README b/secushare-old-latex/30c3-slides.README new file mode 100644 index 0000000..9cb6b55 --- /dev/null +++ b/secushare-old-latex/30c3-slides.README | |||
@@ -0,0 +1,7 @@ | |||
1 | For 30c3 slides see separate tg-rp repository. | ||
2 | |||
3 | Needs: apt-get install graphviz | ||
4 | |||
5 | sdedit is a binary jar blob that creates graphics, | ||
6 | but it isn't necessary for the slides. | ||
7 | |||
diff --git a/secushare-old-latex/Makefile b/secushare-old-latex/Makefile new file mode 100644 index 0000000..d84236e --- /dev/null +++ b/secushare-old-latex/Makefile | |||
@@ -0,0 +1,27 @@ | |||
1 | org = secushare | ||
2 | |||
3 | ORG_PATH = /usr/share/emacs/site-lisp/org-mode | ||
4 | INIT = (add-to-list 'load-path \"${ORG_PATH}\") (load-file \".init.el\") | ||
5 | |||
6 | all: pdf | ||
7 | |||
8 | pdf: FORCE | ||
9 | for f in ${org}; do \ | ||
10 | e="$$e (find-file \"$$f\") (org-mode) (org-export-as-pdf org-export-headline-levels)"; \ | ||
11 | done; \ | ||
12 | emacs -Q --batch --eval "(progn ${INIT} $$e)" | ||
13 | |||
14 | |||
15 | html: FORCE | ||
16 | for f in ${org}; do \ | ||
17 | e="$$e (find-file \"$$f\") (org-mode) (org-export-as-html-batch)"; \ | ||
18 | done; \ | ||
19 | emacs -Q --batch --eval "(progn ${INIT} $$e)" | ||
20 | |||
21 | latex: FORCE | ||
22 | for f in ${org}; do \ | ||
23 | e="$$e (find-file \"$$f\") (org-mode) (org-export-as-latex-batch)"; \ | ||
24 | done; \ | ||
25 | emacs -Q --batch --eval "(progn ${INIT} $$e)" | ||
26 | |||
27 | FORCE: | ||
diff --git a/secushare-old-latex/abbrevs b/secushare-old-latex/abbrevs new file mode 100644 index 0000000..d74b485 --- /dev/null +++ b/secushare-old-latex/abbrevs | |||
@@ -0,0 +1,23 @@ | |||
1 | |||
2 | * Abbreviations | ||
3 | |||
4 | | ABNF | Augmented Backus-Naur Form | | ||
5 | | DHT | Distributed Hash Table | | ||
6 | | DNS | Domain Name System | | ||
7 | | DV | Distance Vector (routing protocol) | | ||
8 | | F2F | Friend-to-Friend (network architecture) | | ||
9 | | GUI | Graphical User Interface | | ||
10 | | HTTP | Hypertext Transfer Protocol | | ||
11 | | OTR | Off-the-Record Messaging | | ||
12 | | P2P | Peer-to-Peer (network architecture) | | ||
13 | | PGP | Pretty Good Privacy | | ||
14 | | PSYC | Protocol for SYnchronous Conferencing | | ||
15 | | QML | Qt Modeling Language | | ||
16 | | SHA | Secure Hash Algorithm | | ||
17 | | SMTP | Simple Mail Transfer Protocol | | ||
18 | | TCP | Transmission Control Protocol | | ||
19 | | UDP | User Datagram Protocol | | ||
20 | | UI | User Interface | | ||
21 | | URI | Uniform Resource Identifier | | ||
22 | | XML | Extensible Markup Language | | ||
23 | | XMPP | Extensible Messaging and Presence Protocol | | ||
diff --git a/secushare-old-latex/abstract b/secushare-old-latex/abstract new file mode 100644 index 0000000..9eef5a9 --- /dev/null +++ b/secushare-old-latex/abstract | |||
@@ -0,0 +1,20 @@ | |||
1 | * Abstract | ||
2 | |||
3 | The motivation of the work presented here is the need for social interactions | ||
4 | over the internet in a scalable and privacy protecting manner. We have examined | ||
5 | existing systems from this aspect and have come to the conclusion that they do | ||
6 | not provide enough privacy or do not scale well enough for our requirements. We | ||
7 | suggest a peer-to-peer (P2P) architecture for this use and present a social | ||
8 | network based on the GNUnet P2P framework -- which provides the lower layers of | ||
9 | the network -- extended with messaging and social semantics by the PSYC | ||
10 | protocol. | ||
11 | |||
12 | Components of the system we have implemented are a service for the GNUnet | ||
13 | framework providing social semantics and messaging functionality, a client API | ||
14 | enabling application developers to write applications for the network with less | ||
15 | effort, and client applications providing messaging, contact lists and profiles. | ||
16 | |||
17 | The implementation is in a prototype stage, basic functionality, such as person | ||
18 | identities, friendship establishment and messaging in channels already work, | ||
19 | but further work is needed to enhance the functionality of the system and | ||
20 | improve the usability of the user interface. | ||
diff --git a/secushare-old-latex/arch b/secushare-old-latex/arch new file mode 100644 index 0000000..2a8fe4b --- /dev/null +++ b/secushare-old-latex/arch | |||
@@ -0,0 +1,203 @@ | |||
1 | * Architecture | ||
2 | |||
3 | Secure Share intends to implement a scalable P2P social network enabling | ||
4 | real-time one-to-one, one-to-many and many-to-many message distribution for | ||
5 | applications using the network while fulfilling the privacy requirements | ||
6 | described in the previous chapter. | ||
7 | |||
8 | It provides private and group messaging, status updates and profiles in the | ||
9 | first prototype version, while keeping the protocol extensible allowing various | ||
10 | social applications to be built on top later. | ||
11 | |||
12 | By combining PSYC with a P2P network architecture we get an efficient and | ||
13 | extensible protocol provided by PSYC and security and privacy properties | ||
14 | provided by the underlying P2P network. | ||
15 | |||
16 | ** P2P network architecture | ||
17 | |||
18 | Many P2P networks use an architecture where nodes connect to arbitrary peers, no | ||
19 | trust relation exists between them. A problem with this approach is that some | ||
20 | nodes could use more resources of the network than they contribute to it | ||
21 | (freeloaders), which can be alleviated by applying an economic model in the | ||
22 | network. For instance GNUnet uses an excess-based economy: a node when idle does | ||
23 | favors for free, but when busy it only works for nodes it likes and charges them | ||
24 | for favors they request, which they can pay back by doing a favor in return. | ||
25 | |||
26 | Another problem that could arise in this architecture are malicious nodes who | ||
27 | can perform various active attacks, including blocking access to parts of the | ||
28 | network, or returning false information to certain requests. These can be | ||
29 | avoided to some extent by randomized routing and by making it harder to create | ||
30 | new identities in the network. | ||
31 | |||
32 | A different approach we use is a friend-to-friend (F2F) architecture where nodes | ||
33 | only connect to friendly peers whom they trust. This has the advantage that it | ||
34 | avoids many attacks involving malicious nodes in the network. An attacker has to | ||
35 | infiltrate a user's social circle to perform a successful attack, which is much | ||
36 | harder. By adding a trust level metric to social connections we can further | ||
37 | differentiate between more and less trusted nodes in the network. | ||
38 | |||
39 | Also, a F2F architecture gives better incentives to participants in the network: | ||
40 | users help their friends by forwarding packets for them instead of random | ||
41 | strangers. Nodes with high bandwidth and no connection restrictions -- | ||
42 | e.g. server machines in data centers -- can improve throughput and connectivity | ||
43 | in the network by serving their owner's social circle. | ||
44 | |||
45 | Other systems based on a F2F architecture include Freenet \cite{dark-freenet}, | ||
46 | Drac \cite{drac}, Tonika, and GNUnet has a F2F mode as well. | ||
47 | |||
48 | ** Structure of the network | ||
49 | |||
50 | Another aspect of P2P networks is whether they're structured or not. In | ||
51 | structured networks the structure of the network is predefined, the node ID | ||
52 | determines the position of the node in the network, this information is enough | ||
53 | to be able to route packets to their destination. Often a distributed hash table | ||
54 | (DHT) is used in structured P2P networks which provides hash table functionality | ||
55 | distributed over many nodes in the network. | ||
56 | |||
57 | A different approach is an unstructured network like the Internet, where | ||
58 | arbitrary nodes can connect, no structure is imposed upon the nodes. In this | ||
59 | case a routing table is needed to be able to route a packet to its destination. | ||
60 | |||
61 | A social network could be built purely using a DHT, LifeSocial \cite{lifesocial} | ||
62 | is an example of such a network. In this case every shared status message, image | ||
63 | or document would become an entry in the DHT, and a profile consists of a | ||
64 | collection of links to other DHT entries. To ensure only the intended recipients | ||
65 | have access to private data, DHT entries are encrypted with a symmetric key, | ||
66 | which is attached to the entry encrypted with every user's public key who should | ||
67 | have access to the entry. This means that there's no forward secrecy in this | ||
68 | network, if a user's private key is compromised all these entries can still be | ||
69 | decrypted with that key. Even if noticed in time, re-encrypting all entries | ||
70 | affected by a compromised key is quite a costly operation when the number of | ||
71 | entries become larger after using the system over the years. | ||
72 | |||
73 | For our case either an unstructured network is suitable, or a structured network | ||
74 | where the structure is only used for routing, and not for storing user data in a | ||
75 | DHT. In our architecture data is pushed once to recipients who store it locally | ||
76 | as long as they need it, which means all profile data, messages and received | ||
77 | files are all available locally -- even offline -- and can be viewed and | ||
78 | searched using local tools on the personal device. | ||
79 | |||
80 | ** Software components | ||
81 | |||
82 | In a P2P network every user runs the P2P software on their devices, so it's | ||
83 | important that it is multi-platform, lightweight, and written in a compiled | ||
84 | language, so we can easily run it on all popular desktop platforms and small | ||
85 | devices as well, including plug computers, home routers, and even smartphones. | ||
86 | |||
87 | In our case the P2P software runs as a daemon -- a background process -- on the | ||
88 | local machine or on another device on the network. Client applications connect | ||
89 | to this daemon and integrate into the desktop or mobile GUI environment running | ||
90 | on the system. | ||
91 | |||
92 | Server machines, home routers and plug computers act as intermediary nodes in the | ||
93 | system, helping their owners' social network by forwarding packets for them. | ||
94 | |||
95 | Mobile phones require a different approach. Continuous network usage would drain | ||
96 | the battery quite fast, so we'll have to minimize it by disabling packet | ||
97 | forwarding for mobile nodes and connecting only to a trusted node with good | ||
98 | connectivity -- e.g. a server machine or a plug computer at home -- which would | ||
99 | forward the necessary packets for the mobile node. | ||
100 | |||
101 | ** Peer-to-peer framework | ||
102 | |||
103 | We have examined various P2P systems looking for an implementation that can | ||
104 | serve as a basis for our social messaging platform. The criteria for a suitable | ||
105 | P2P framework was: | ||
106 | |||
107 | - Free/libre/open-source software. | ||
108 | - Multi-platform, lightweight and written in a compiled language. | ||
109 | - Implements and provides an API for essential P2P features such as | ||
110 | bootstrapping, addressing, routing, encryption and NAT traversal. | ||
111 | |||
112 | We have found GNUnet to be the most promising implementation out there | ||
113 | satisfying these requirements. It is a modular P2P framework written in C, | ||
114 | providing an API for essential P2P functionalities. It supports advanced NAT | ||
115 | (Network Address Translation) traversal, which enables contacting nodes without | ||
116 | a public IP address typically found in home or corporate networks. Furthermore | ||
117 | it has several transport mechanisms with automatic transport selection, | ||
118 | including TCP, UDP, HTTP(S), SMTP and ad-hoc WiFi mesh networks. It also | ||
119 | provides various routing schemes and a distributed hash table. | ||
120 | |||
121 | It has three operation modes: in P2P mode it makes connections with any peer in | ||
122 | the network, in friend-to-friend (F2F) mode only trusted nodes are connected, | ||
123 | and in mixed mode a minimum number of trusted nodes are required to be connected | ||
124 | at all times. | ||
125 | |||
126 | GNUnet currently has two options for routing packets in the network: the | ||
127 | distance vector and the mesh service. | ||
128 | |||
129 | The distance vector (DV) service uses a fish-eye bounded distance vector | ||
130 | protocol \cite{gnunet-decrouting}, which builds a routing table by gossiping | ||
131 | about neighboring peers within a limited number of hops distance. It is a | ||
132 | link-state routing protocol with improved efficiency: nodes only know about the | ||
133 | state of a local neighborhood, and link state of nodes close to each other are | ||
134 | updated more often than of nodes multiple hops away. The DV service also | ||
135 | provides onion routing of packets through multiple hops, which improves network | ||
136 | connectivity by connecting two peers behind NAT through an intermediary hop, and | ||
137 | makes it harder for an observer to determine who is talking to whom. | ||
138 | |||
139 | The mesh service creates tunnels through several hops and supports multicast as | ||
140 | well. Initial routes to recipients are discovered using the DHT. It is still | ||
141 | being heavily worked on by the GNUnet team, for instance encryption is missing | ||
142 | and has to be implemented for the multicast groups in order to make it useful | ||
143 | for our purpose. | ||
144 | |||
145 | These routing methods only support delivery of packets to connected nodes, in | ||
146 | order to provide offline messaging, we'll need a store-and-forward mechanism in | ||
147 | the network. This can be implemented by storing encrypted packets on more stable | ||
148 | nodes in the network, until the recipient comes back online. | ||
149 | |||
150 | #+BEGIN_COMMENT | ||
151 | GNUnet's DHT component can be used for facilitating the bootstrapping process by | ||
152 | storing user public key to current node ID mappings in the DHT. This allows | ||
153 | peers offline for a longer period to look up the current node of a contact | ||
154 | in order to re-establish connection to the network, or it can be used to publish | ||
155 | addresses of nodes hosting public groups or providing a public news feed. | ||
156 | #+END_COMMENT | ||
157 | |||
158 | GNUnet also has an anonymous file sharing component which uses a DHT together | ||
159 | with the GNUnet Anonymity Protocol (GAP). For our use case -- transferring files | ||
160 | between friends -- this is not needed, instead we transfer files just like other | ||
161 | messages, using PSYC's multicast distribution channels. As the PSYC packet | ||
162 | syntax supports binary data without any encoding, this causes no additional | ||
163 | overhead. In order to transfer files, we would have to split them up into | ||
164 | smaller fragments, as the maximum packet size supported by GNUnet is 64KB. | ||
165 | |||
166 | #+CAPTION: Components and message flow in GNUnet | ||
167 | #+LABEL: fig:arch | ||
168 | #+ATTR_LaTeX: width=8.2cm placement=[h!] | ||
169 | [[./gnunet.png]] | ||
170 | |||
171 | ** Messaging daemon | ||
172 | |||
173 | GNUnet's modular architecture allows us to extend it with a service that | ||
174 | implements a messaging protocol, manages the connections between people, and | ||
175 | provides a local client interface. This service -- called psycd -- uses the PSYC | ||
176 | protocol for communication with both other peers and local clients. | ||
177 | |||
178 | Psycd sends messages through GNUnet core, which encrypts the message and passes | ||
179 | it to the modular transport system, sending packets through one of its transport | ||
180 | plugins. | ||
181 | |||
182 | In our prototype we use direct connections to peers. Users manually add their | ||
183 | friends by exchanging hello messages, which contain their public key and current | ||
184 | addresses. For the prototype version the focus was on the implementation of the | ||
185 | messaging daemon, and we intend to work on the underlying routing mechanism in | ||
186 | future versions. | ||
187 | |||
188 | See figure \ref{fig:arch} for an illustration of the components used in the | ||
189 | system. Dotted parts are not existing yet, only planned. The arrows depict the | ||
190 | flow of messages between components. | ||
191 | |||
192 | ** Functionality | ||
193 | |||
194 | One of the core concepts of PSYC is programmable channels with their own | ||
195 | subscription lists. Using this combined with custom user interfaces makes it | ||
196 | possible to implement the usual functionality found in centralized and federated | ||
197 | social networks, like private and group messages, status updates, photo and link | ||
198 | sharing, as well as features not found in those networks, like sharing of files | ||
199 | and custom content, or real-time notifications for custom events. | ||
200 | |||
201 | As Secure Share runs on the users' own device and stores all incoming messages | ||
202 | and data locally, this enables offline usage and local search in the data | ||
203 | received from subscribed friends or groups. | ||
diff --git a/secushare-old-latex/arch.dia b/secushare-old-latex/arch.dia new file mode 100644 index 0000000..a68937b --- /dev/null +++ b/secushare-old-latex/arch.dia | |||
Binary files differ | |||
diff --git a/secushare-old-latex/arch.png b/secushare-old-latex/arch.png new file mode 100644 index 0000000..07afd34 --- /dev/null +++ b/secushare-old-latex/arch.png | |||
Binary files differ | |||
diff --git a/secushare-old-latex/clients b/secushare-old-latex/clients new file mode 100644 index 0000000..13da29d --- /dev/null +++ b/secushare-old-latex/clients | |||
@@ -0,0 +1,116 @@ | |||
1 | |||
2 | * Clients | ||
3 | |||
4 | Clients implement a user interface for interacting with the PSYC network. They | ||
5 | connect to the PSYC daemon and link with a person entity. After successful | ||
6 | linking they receive all the packets destined for that person and can send | ||
7 | packets originating from the person. In the current implementation of psycd no | ||
8 | authentication is required for linking, so it's only suitable for localhost use, | ||
9 | later we'll provide password authentication as well. | ||
10 | |||
11 | We have developed a client library -- called libpsycclient -- providing a simple | ||
12 | API for clients. It implements the core logic used by clients to interact with | ||
13 | the PSYC network. It allows clients to establish a connection to psycd, so they | ||
14 | can send and receive packets for their person entity. Clients can define | ||
15 | callback functions for handling incoming packets and various events, | ||
16 | e.g. handling linking and unlinking or adding and removing aliases. The library | ||
17 | also provides various commands used in clients, such as entering and leaving | ||
18 | contexts, sending messages, setting aliases, or querying and manipulating the | ||
19 | context state. | ||
20 | |||
21 | By using the client library, implementing new clients is much simpler. With the | ||
22 | library providing all the underlying logic, client developers can focus on the | ||
23 | GUI, implementing message display and UI elements performing various commands | ||
24 | provided by the library. | ||
25 | |||
26 | ** Desktop clients | ||
27 | |||
28 | #+CAPTION: irssyc, a text-based client | ||
29 | #+LABEL: fig:irssyc | ||
30 | #+ATTR_LaTeX: width=14cm placement=[t!] | ||
31 | [[./shot-irssyc-gray.png]] | ||
32 | |||
33 | #+CAPTION: secushare, a GUI client | ||
34 | #+LABEL: fig:secushare | ||
35 | #+ATTR_LaTeX: width=14cm placement=[ht] | ||
36 | [[./shot-secushare.png]] | ||
37 | |||
38 | We have implemented two clients so far: a text-based client and one with a | ||
39 | graphical user interface (GUI). | ||
40 | |||
41 | The text-based client, irssyc (figure \ref{fig:irssyc}), is implemented in C as | ||
42 | a module for Irssi, a popular chat client. It is more suited for advanced users | ||
43 | and for development and testing purposes. It shows each subscribed channel in | ||
44 | one of its windows and provides access to commands implemented by the client | ||
45 | library. | ||
46 | |||
47 | The GUI client, secushare (figure \ref{fig:secushare}), is implemented using Qt | ||
48 | in C++. It uses Qt's relatively new declarative user interface (UI) description | ||
49 | language, QML. The C++ part of the application implements data models used by | ||
50 | QML components to display data -- such as the contact list or messages in a | ||
51 | channel -- and provides access to the commands implemented by the client library | ||
52 | from QML. | ||
53 | |||
54 | The reasons for choosing Qt were its extensive platform support and its | ||
55 | declarative UI description language, QML, which makes it easier to accomplish a | ||
56 | complex but still consistent user interface with good usability. | ||
57 | |||
58 | Qt supports most desktop operating systems -- including Windows, Linux and Mac | ||
59 | OS X -- and a couple of mobile platforms as well: Maemo, MeeGo, Windows Mobile | ||
60 | and Symbian. Recently it has been ported to Android as well, and there's an iOS | ||
61 | port being developed, too. | ||
62 | |||
63 | ** Web interface | ||
64 | |||
65 | We have plans for developing a web interface as well, which allows remote access | ||
66 | of a node installed on a plug computer or server machine. This is useful in case | ||
67 | the user does not have a device available that runs a full node with the whole | ||
68 | software stack. The web interface will be a PSYC client written in JavaScript, | ||
69 | communicating with psycd via WebSocket. This way we only need minimal | ||
70 | enhancements on the server side, as the client is pretty much like a desktop | ||
71 | client in this case, only the connection to psycd is implemented | ||
72 | differently. Now that JavaScript typed arrays are available in most modern | ||
73 | browsers, parsing of binary packets are possible now purely in JavaScript. | ||
74 | |||
75 | ** Mobile clients | ||
76 | |||
77 | As all components of GNUnet are written in C, it is possible to port it to | ||
78 | smartphone platforms. Problem with this approach, however, is that continuous | ||
79 | network traffic drains the battery really soon, so we'll have to take measures | ||
80 | to reduce network traffic. If the mobile node connects only to one trusted node | ||
81 | -- e.g. hosted on a server or plug computer in the user's home -- which forwards | ||
82 | the necessary packets for the mobile node, this significantly reduces network | ||
83 | traffic, as the mobile node does not have to take part in any routing scheme, | ||
84 | which usually means continuous traffic, even if it's low volume. | ||
85 | |||
86 | Another approach is to only implement a client application for mobile devices | ||
87 | which connects to a remote psycd on a trusted node over a TLS connection. This, | ||
88 | however, requires users to set up a server or a plug computer at home and | ||
89 | configure their firewall or NAT box to allow connections to the PSYC | ||
90 | daemon. Advantage of the full node approach is that GNUnet already takes care of | ||
91 | NAT traversal, it does not need to deal with (dynamic) DNS and TLS certificates. | ||
92 | |||
93 | ** Extensibility | ||
94 | |||
95 | Extensibility via custom applications is an important aspect of the system. We | ||
96 | have two different approaches to achieve this. | ||
97 | |||
98 | *** Channel API | ||
99 | |||
100 | Channels can have an interface type defined in an =_interface= state | ||
101 | variable. The default view is a chat interface, and we're planning to provide a | ||
102 | few other built-in types in the secushare GUI client, e.g. a microblogging | ||
103 | interface with status updates. | ||
104 | |||
105 | We intend to enable developers to write custom applications on top of channels, | ||
106 | which will run in a sandboxed QML or HTML view inside the client, using a | ||
107 | JavaScript API for sending and receiving packets for the channel. This approach | ||
108 | does not expose any private user data to the applications, as they only have | ||
109 | access to the channel they're running in, and nothing else. | ||
110 | |||
111 | *** Client API | ||
112 | |||
113 | For more complex tasks custom client applications have to be built using the | ||
114 | libpsycclient C library. This approach allows full access to user data and | ||
115 | messages for the application, thus users should be careful what client | ||
116 | applications they install on their machine. | ||
diff --git a/secushare-old-latex/conclusion b/secushare-old-latex/conclusion new file mode 100644 index 0000000..f102b32 --- /dev/null +++ b/secushare-old-latex/conclusion | |||
@@ -0,0 +1,37 @@ | |||
1 | * Conclusion and Future Work | ||
2 | |||
3 | The implementation of Secure Share contributes to the efforts of creating a | ||
4 | privacy protecting peer-to-peer social network. The client API provided as a | ||
5 | library allows for creating various client applications right away, while the | ||
6 | lower layers of the system are worked out. | ||
7 | |||
8 | By implementing psycd as a service for the GNUnet framework, it allows us to | ||
9 | benefit from GNUnet's modular architecture, which can be extended with new or | ||
10 | improved routing schemes in future versions. The DV and mesh service are areas | ||
11 | which need improvement. We need to have proper multicast message distribution in | ||
12 | the network, and the mesh service is a promising candidate for that. It | ||
13 | implements multicast groups, but group encryption still has to be implemented | ||
14 | for this service. Thus improvements on the routing level are necessary to make | ||
15 | the system really scalable and privacy protecting. | ||
16 | |||
17 | As the implementation is still in a prototype stage, further work is needed to | ||
18 | enhance the functionality of the system. Areas that need more work are: | ||
19 | |||
20 | - improve the functionality and usability of the user interface, e.g. add | ||
21 | dialogs for friendship establishment, and add different interfaces for different | ||
22 | types of channels, e.g. status updates. | ||
23 | - implement dedicated groups independent of person entities | ||
24 | - user identities should be decoupled from node identities by assigning separate | ||
25 | keys to users, so they have a master key and subkeys for their devices | ||
26 | - file transfer over PSYC, this requires splitting large packets into smaller | ||
27 | fragments and reassembling them when receiving | ||
28 | - add UNIX socket support to psycd, as currently only TCP sockets are supported | ||
29 | for clients | ||
30 | - TLS sockets could be added later as well to enable secure connection to a | ||
31 | remote node in case a local installation is not available | ||
32 | - make the system work on mobile devices -- this could be done either via | ||
33 | setting up a GNUnet node on the device or via establishing a TLS connection to | ||
34 | a remote node; this also requires developing a user interface specifically | ||
35 | designed for mobile devices | ||
36 | - implement a web interface | ||
37 | - implement testing using the GNUnet testing library | ||
diff --git a/secushare-old-latex/context.dia b/secushare-old-latex/context.dia new file mode 100644 index 0000000..f70fa0c --- /dev/null +++ b/secushare-old-latex/context.dia | |||
Binary files differ | |||
diff --git a/secushare-old-latex/context.png b/secushare-old-latex/context.png new file mode 100644 index 0000000..6efd6b8 --- /dev/null +++ b/secushare-old-latex/context.png | |||
Binary files differ | |||
diff --git a/secushare-old-latex/gnunet-h.png b/secushare-old-latex/gnunet-h.png new file mode 100644 index 0000000..ac97aaa --- /dev/null +++ b/secushare-old-latex/gnunet-h.png | |||
Binary files differ | |||
diff --git a/secushare-old-latex/gnunet.dia b/secushare-old-latex/gnunet.dia new file mode 100644 index 0000000..e498ff6 --- /dev/null +++ b/secushare-old-latex/gnunet.dia | |||
Binary files differ | |||
diff --git a/secushare-old-latex/gnunet.png b/secushare-old-latex/gnunet.png new file mode 100644 index 0000000..57fce5e --- /dev/null +++ b/secushare-old-latex/gnunet.png | |||
Binary files differ | |||
diff --git a/secushare-old-latex/impl b/secushare-old-latex/impl new file mode 100644 index 0000000..3dbb2b9 --- /dev/null +++ b/secushare-old-latex/impl | |||
@@ -0,0 +1,392 @@ | |||
1 | * Implementation | ||
2 | |||
3 | This chapter describes core concepts in PSYC, how they are applied in a | ||
4 | peer-to-peer context and what changes we had to make to the federated PSYC | ||
5 | \cite{psyc-paper} protocol to make it work in a peer-to-peer network. | ||
6 | |||
7 | Federated PSYC is the existing implementation of the PSYC protocol designed for | ||
8 | a federated architecture. It is implemented as a stand-alone daemon process | ||
9 | written in the LPC language. | ||
10 | |||
11 | P2P PSYC is the new implementation we have developed and the one we use in | ||
12 | Secure Share. The messaging daemon -- called psycd -- is implemented in C as a | ||
13 | service in the GNUnet framework. It uses GNUnet libraries for communication with | ||
14 | the rest of GNUnet, and libpsyc for the parsing and rendering of PSYC packets. | ||
15 | It stores data in an SQLite database. | ||
16 | |||
17 | ** Syntax | ||
18 | |||
19 | PSYC is a text-based protocol with length prefixes for binary data, which makes | ||
20 | it possible to transmit any kind of content in PSYC packets efficiently while | ||
21 | keeping the protocol extensible. Its syntax is described in [[#syntax][Appendix 1]]. | ||
22 | |||
23 | An example packet looks like this: | ||
24 | |||
25 | #+BEGIN_SRC psyc | ||
26 | :_context psyc://J61VSCQA:g/#test | ||
27 | :_source_relay psyc://I0GCD93U:g/ | ||
28 | 70 | ||
29 | =_simple_var value | ||
30 | :_binary_var 5 value | ||
31 | _method_name | ||
32 | Packet | ||
33 | body | ||
34 | here. | ||
35 | | | ||
36 | #+END_SRC | ||
37 | |||
38 | A packet contains a routing header, followed by the length of the rest of the packet, | ||
39 | context state modifiers, the method name and the packet body. | ||
40 | |||
41 | ** Identifiers | ||
42 | |||
43 | In federated PSYC a server is identified by its DNS domain name. A server hosts | ||
44 | person and group entities, each of which can manage several channels. Uniforms | ||
45 | serve as identifiers for entities or channels, described with a URI (Uniform | ||
46 | Resource Identifier) syntax: | ||
47 | |||
48 | : psyc://host[:port[transport]][/[entity-type]entity[#channel]] | ||
49 | : psyc://example.net/~alice#friends | ||
50 | |||
51 | In peer-to-peer PSYC DNS is not employed, a public key is used instead to | ||
52 | identify node, person or group. GNUnet uses a SHA-512 hash of the public key as | ||
53 | node identifiers, we use a similar method for identifying entities. The | ||
54 | ASCII-encoded version of this hash becomes the host part of the uniform, with no | ||
55 | port number and 'g' as transport identifier: | ||
56 | |||
57 | : psyc://pubkey-hash:g[/[entity-type]entity[#channel]] | ||
58 | : psyc://I0GC...L29G:g/#friends | ||
59 | |||
60 | As these identifiers are very long and not user-friendly, they can be aliased to | ||
61 | shorter nicknames. The aliases are only used in client applications, they do not | ||
62 | appear on the protocol level. | ||
63 | |||
64 | In the prototype version GNUnet's host keys are used for identifying person | ||
65 | entities as well, this simplification allows only one person per node. A more | ||
66 | elaborate identification scheme is to be implemented later. | ||
67 | |||
68 | Each user will have a master key which serves as the identifier of the person, | ||
69 | its purpose is to sign subkeys used by various devices of the person. If a | ||
70 | subkey gets compromised, the master key can be used to prune messages sent with | ||
71 | the compromised key. | ||
72 | |||
73 | These subkeys are assigned to person entities. A GNUnet node can host one or | ||
74 | more entities. When using the distance vector transport, node and entity IDs are | ||
75 | added to the DV routing table, and nodes gossip about available peers and | ||
76 | entities in a local neighborhood up to a limited number of hops away, in the | ||
77 | social circle of users. When using the mesh service, user ID to current node ID | ||
78 | mappings are stored in the DHT. | ||
79 | |||
80 | ** Circuits | ||
81 | |||
82 | A circuit is a virtual connection between two PSYC nodes, packets are sent and | ||
83 | received over circuits. When sending packets the circuit type is determined by | ||
84 | the transport specified in the target uniform. | ||
85 | |||
86 | In federated PSYC we had TCP, UDP and TLS transports. In P2P PSYC psycd | ||
87 | implements two circuit types so far: TCP circuits for local clients and GNUnet | ||
88 | circuits for remote peers. Unix sockets, TLS and possibly UDP circuits are | ||
89 | planned for later. | ||
90 | |||
91 | ** Contacting peers | ||
92 | |||
93 | In federated PSYC it was enough to know the uniform of a person or group to | ||
94 | establish contact. The uniform contains the host name, port number and transport | ||
95 | method, which is all the information needed to establish connection to the | ||
96 | remote entity. | ||
97 | |||
98 | When using PSYC over P2P, two nodes have to know each other's public key and | ||
99 | know how to reach the node associated with the public key. GNUnet introduces | ||
100 | nodes to each other using hello messages which contain a public key and various | ||
101 | transport methods and addresses which can be used to establish contact with the | ||
102 | node. In case of the DV transport a hello message contains the identifier of | ||
103 | another node through which it can be reached. The DV routing protocol gossips | ||
104 | about connected nodes and entities in the network so they become reachable by | ||
105 | their social network. | ||
106 | |||
107 | When two users want to talk to each other, they should have received a hello | ||
108 | message from the other party beforehand. When using the DV transport they might | ||
109 | already know about each other if they are connected through common friends and | ||
110 | received a gossip message about the other node. If they are on the same network | ||
111 | they would discover each other through IPv4 broadcast or IPv6 multicast, or when | ||
112 | using the WLAN transport a WiFi mesh network is created from the present | ||
113 | nodes. Otherwise a hello message can be exchanged manually between users, using | ||
114 | e.g. email or a USB stick. When sending a hello message over an insecure channel | ||
115 | it should be encrypted using a shared secret in order to maintain | ||
116 | confidentiality and integrity of the information contained within. Usually it's | ||
117 | enough to exchange hello messages manually once when establishing connection for | ||
118 | the first time, after that more stable, longer running nodes would be available | ||
119 | to bootstrap a reconnecting node. | ||
120 | |||
121 | When connection is established between two users, they set appropriate trust | ||
122 | levels for each other -- which can be used in routing decisions in the network -- | ||
123 | and they subscribe one or more channels of the other party. | ||
124 | |||
125 | ** Entities | ||
126 | |||
127 | Entities are addressable objects in the PSYC network. Entity types include place | ||
128 | entities which are used for group communication or news feeds, and person | ||
129 | entities which can make friendships between each other and subscribe to other | ||
130 | entities. Each entity manages one or more channels with different subscription | ||
131 | lists. | ||
132 | |||
133 | Psycd implements person entities enabling clients to link to their entity, send | ||
134 | and receive messages and manage membership of various channels. It also has a | ||
135 | simple implementation of place entities providing dedicated group messaging. | ||
136 | |||
137 | ** Multicast contexts | ||
138 | |||
139 | PSYC uses multicast contexts for efficient distribution of messages. A context | ||
140 | is managed by the context master at the top of the distribution tree. Context | ||
141 | members send packets to the context master which distributes them to context | ||
142 | slaves on the next level in the multicast tree, which distribute them further | ||
143 | down the tree. Figure 4.1 shows such a tree. | ||
144 | |||
145 | #+CAPTION: Multicast context distribution tree | ||
146 | [[./context.png]] | ||
147 | |||
148 | Entities manage multiple channels, each of which is a separate multicast context | ||
149 | having different membership and multicast distribution tree. Social | ||
150 | interactions, such as status updates, group and private messaging can be modeled | ||
151 | using these channels. An entity manages membership of its channels, in case of a | ||
152 | person entity this could be used to create different circles of friends using a | ||
153 | channel for each of them, or provide different channels for various topics to | ||
154 | which interested friends -- or if desired anyone who can contact the person -- | ||
155 | can subscribe to. Ad-hoc group and private chats with friends can be modeled as | ||
156 | well with channels of a person entity. | ||
157 | |||
158 | Federated PSYC only implemented manually configured multicast distribution trees | ||
159 | so far, this should be made fully automatic in the peer-to-peer version. When | ||
160 | multicast routing is added, every node becomes a multicast routing hop serving | ||
161 | several multicast contexts. A node can join a multicast context at any other | ||
162 | node already a member of that particular context. By adding encryption to | ||
163 | multicast contexts any node can help in the multicast routing process without | ||
164 | being able to decrypt message contents. This way receiving packets for a | ||
165 | multicast context does not necessarily mean that the given node can decrypt the | ||
166 | packets sent to it. In its simplest implementation multicast encryption involves | ||
167 | a symmetric key distributed by the context master to all the members which has | ||
168 | to be changed periodically, and when a member joins or leaves. | ||
169 | |||
170 | In \cite{hordes} Hordes, an anonymity protocol based on IP multicast is | ||
171 | suggested. While we're not using IP multicast, part of their analysis could be | ||
172 | applied to application-level multicast implemented in a P2P network. | ||
173 | |||
174 | The prototype does not implement actual multicast yet, multicast contexts are | ||
175 | modeled but messages to contexts are distributed to each member by unicast. | ||
176 | |||
177 | ** Distributed state | ||
178 | |||
179 | PSYC has the concept of distributed state, a set of key-value pairs -- state | ||
180 | variables -- are assigned to each multicast context and distributed to every | ||
181 | member. It is used to model profile data, context membership, or any other data | ||
182 | related to a context. Advantage of this approach is that it avoids unnecessary | ||
183 | request-response operations as members have an up-to-date version of the state | ||
184 | data most of the time, and allows local browsing of profiles of contacts, even | ||
185 | offline. We have implemented distributed state for P2P PSYC in psycd -- a feature | ||
186 | federated PSYC has long planned for but still lacked. | ||
187 | |||
188 | Context state is kept in sync using state modifiers provided by the PSYC syntax. | ||
189 | A state modifier adds, removes or modifies a state variable. State changes are | ||
190 | distributed to context members only once, which means it is very bandwidth | ||
191 | efficient. Using state modifiers require reliable, in-order delivery of | ||
192 | packets. Packet loss can be detected with the help of a =_counter= variable in | ||
193 | the routing header of packets. As the name suggests, it is a counter incremented | ||
194 | by one for every packet sent to the context. When there's a missed packet, a | ||
195 | node can re-request it from its parent node in the multicast distribution | ||
196 | tree. After a node has joined a context, a full state synchronization is | ||
197 | necessary to bring the node up-to-date. | ||
198 | |||
199 | Syntax of a state modifier in Augmented Backus-Naur Form (ABNF): | ||
200 | |||
201 | #+BEGIN_SRC abnf | ||
202 | entity-modifier = operator variable entity-arg | ||
203 | entity-arg = simple-arg / binary-arg / LF | ||
204 | |||
205 | operator = "=" / ":" / "+" / "-" / "?" / "!" / "@" | ||
206 | variable = 1*kwchar | ||
207 | simple-arg = HTAB text-data LF | ||
208 | binary-arg = SP length HTAB binary-data LF | ||
209 | length = 1*DIGIT | ||
210 | binary-data = *OCTET | ||
211 | #+END_SRC | ||
212 | |||
213 | Operators: | ||
214 | - =:= (set) -- set variable just for the current packet, state is not modified | ||
215 | - ~=~ (assign) -- assign value to state variable | ||
216 | - =+= (augment) -- concatenate string or add list/dictionary element, depending | ||
217 | on type | ||
218 | - =-= (diminish) -- remove list or dictionary element | ||
219 | - =@= (update) -- update an item in a list or dictionary | ||
220 | - =?= alone on a line: request state synchronization, all state variables are | ||
221 | returned in the response | ||
222 | - ~=~ alone on a line: reset state, i.e. remove all previously stored state | ||
223 | variables | ||
224 | - the rest of the operators are reserved for future use | ||
225 | |||
226 | *** Syntax changes | ||
227 | |||
228 | The state implementation involved some syntax changes: we have added a | ||
229 | dictionary type in order to be able to store key-value pairs in a state | ||
230 | variable, and modified the list syntax to make it consistent with the new | ||
231 | dictionary syntax, allowing us to specify types for list elements as well. We | ||
232 | have also added a new update modifier, which allows for updating individual list | ||
233 | and dictionary elements. | ||
234 | |||
235 | These syntax changes were necessary to represent more complex data structures, | ||
236 | such as context members or alias mappings. | ||
237 | |||
238 | *** List syntax | ||
239 | |||
240 | A list is a list of ordered elements. Its syntax in ABNF is specified as the | ||
241 | following: | ||
242 | |||
243 | #+BEGIN_SRC abnf | ||
244 | list = [ default-type ] *list-elem | ||
245 | list-sep = "|" | ||
246 | list-elem = list-sep [ "=" type ] [ SP list-value ] | ||
247 | list-elem =/ list-sep "=" type ":" ] [ length ] [ SP *OCTET ] | ||
248 | list-value = %x00-7B / %x7D-FF ; any byte except "|" | ||
249 | #+END_SRC | ||
250 | |||
251 | Examples: | ||
252 | #+BEGIN_SRC psyc | ||
253 | =_list_one _type| elem1| elem2| elem3 | ||
254 | =_list_two |=_type1 elem1|=_type2 elem2|=_type3 elem3 | ||
255 | #+END_SRC | ||
256 | |||
257 | **** Inserting list elements | ||
258 | |||
259 | For inserting values before a specified index the =+= operator is used. Index of | ||
260 | the first element is 1, index of the last is -1. 0 means the end of the list, | ||
261 | which is the default if the index is omitted. | ||
262 | |||
263 | Syntax of the value part: | ||
264 | #+BEGIN_SRC abnf | ||
265 | list-insert = [ list-index SP ] list | ||
266 | list-index = "#" 1*DIGIT | ||
267 | #+END_SRC | ||
268 | |||
269 | #+LaTeX: \pagebreak | ||
270 | |||
271 | Example: | ||
272 | #+BEGIN_SRC psyc | ||
273 | +_list_fruits | banana| mango | ||
274 | +_list_fruits #0 | banana| mango | ||
275 | #+END_SRC | ||
276 | |||
277 | **** Removing list elements | ||
278 | |||
279 | For removing elements the =-= operator is used. Parameters are the start index | ||
280 | which defaults to -1, and the amount of elements to be removed which defaults to 1. | ||
281 | |||
282 | Syntax of the value part: | ||
283 | #+BEGIN_SRC abnf | ||
284 | list-remove = ( list-index SP uint | list-index | uint ) | ||
285 | #+END_SRC | ||
286 | |||
287 | Example: | ||
288 | #+BEGIN_SRC psyc | ||
289 | -_list_fruits #1 | ||
290 | -_list_fruits #1 1 | ||
291 | #+END_SRC | ||
292 | |||
293 | *** Dictionary syntax | ||
294 | |||
295 | A dictionary is a set of key-value pairs. Its syntax specified in ABNF is: | ||
296 | |||
297 | #+BEGIN_SRC abnf | ||
298 | dict = [ type ] *dict-item | ||
299 | dict-item = dict-item-key dict-item-value | ||
300 | dict-item-key = "{" ( dict-key / length SP *OCTET) "}" | ||
301 | dict-item-value = type [ SP dict-value ] | ||
302 | dict-item-value =/ [ length ] [ ":" type ] [ SP *OCTET ] | ||
303 | dict-key = %x00-7C / %x7E-FF ; any byte except "{" | ||
304 | dict-value = %x00-7A / %x7C-FF ; any byte except "}" | ||
305 | #+END_SRC | ||
306 | |||
307 | =type= is the default type for elements which do not have a type specified. | ||
308 | |||
309 | Examples: | ||
310 | #+BEGIN_SRC psyc | ||
311 | =_dict_one _type{4 key1}6 value1{key2} value2{key3}6 value3 | ||
312 | =_dict_two {4 key1}=_type1:6 val1{key2}=_type2 val2{key3}6 val3 | ||
313 | |||
314 | =_dict_avatars _picture{alice}3 \o/{bob}7 \oXoXo/ | ||
315 | #+END_SRC | ||
316 | |||
317 | The =struct= type can be used to define dictionary values with less | ||
318 | repetition. The structure is first defined once, then used for one or all | ||
319 | elements. It works like a C struct, a list of types are defined in a specific | ||
320 | order, after that we don't have to specify the types again when specifying the values. | ||
321 | |||
322 | #+BEGIN_SRC psyc | ||
323 | =_struct_member |=_nick|=_picture | ||
324 | =_dict_members _struct_member{13 psyc://alice/}12 | alice| \o/ | ||
325 | =_dict_members {psyc://alice/}=_struct_member | alice| \o/ | ||
326 | #+END_SRC | ||
327 | |||
328 | **** Adding dictionary entries | ||
329 | |||
330 | The =+= operator is used for adding entries to an existing dictionary. The syntax | ||
331 | is equivalent to the initial assignment of entries. If a key already exists in | ||
332 | the dictionary, its value is overwritten. | ||
333 | |||
334 | **** Removing entries from a dictionary | ||
335 | |||
336 | The =-= operator is used for removing entries, syntax is the same as assignment | ||
337 | but only the keys are listed. | ||
338 | |||
339 | Example, removing 2 entries: | ||
340 | #+BEGIN_SRC psyc | ||
341 | -_dict_members {psyc://alice/}{psyc://bob/} | ||
342 | #+END_SRC | ||
343 | |||
344 | *** Update syntax | ||
345 | |||
346 | For updating specific entries in a list or dictionary the =@= operator is used. It | ||
347 | has the following syntax: | ||
348 | |||
349 | #+BEGIN_SRC abnf | ||
350 | update = 1*index SP op [ type ] [ ":" length] [SP value] | ||
351 | index = ( dict-item-key / index-list / index-struct ) | ||
352 | index-list = "#" 1*DIGIT | ||
353 | index-struct = "." type | ||
354 | #+END_SRC | ||
355 | |||
356 | Examples: | ||
357 | #+BEGIN_SRC psyc | ||
358 | @_list_gallery #-1 =_picture:7 \oXoXo/ | ||
359 | @_list_gallery #-1 =:7 \oXoXo/ | ||
360 | @_list_fruits #1 = pear | ||
361 | @_list_prices #2 =_int 1000 | ||
362 | |||
363 | @_dict_gallery {alice} =_picture:7 \oXoXo/ | ||
364 | @_dict_gallery {alice} =:7 \oXoXo/ | ||
365 | @_dict_members {psyc://alice/}._nick = Alice | ||
366 | @_dict_members {psyc://bob/}._nick + Bob | ||
367 | @_dict_members {psyc://foo/}._int_score + 2 | ||
368 | #+END_SRC | ||
369 | |||
370 | ** Storage | ||
371 | |||
372 | Incoming and outgoing packets, state variables and channel configuration are | ||
373 | stored in an SQLite database. This allows for persistent storage of context | ||
374 | state as well, which is restored after a restart of the node. Packets are stored | ||
375 | for two purposes: it provides a message history for contexts and it can be used | ||
376 | later to resend lost packets to nodes requesting it. | ||
377 | |||
378 | SQLite is used mainly because of its efficient memory handling and wide platform | ||
379 | support. | ||
380 | |||
381 | The database consists of two tables with the following schema: | ||
382 | - *contexts* (*uni* blob primary key, *state* blob, *config* blob, | ||
383 | *created* timestamp default current_timestamp) | ||
384 | - *packets* (*context* blob, *source* blob, *target* blob, *counter* unsigned int, | ||
385 | *fragment* unsigned int, *packet* blob, | ||
386 | *created* timestamp default current_timestamp,\\ | ||
387 | *primary key* (context, source, target, counter, fragment)) | ||
388 | |||
389 | We store information about subscribed and hosted contexts in these tables. | ||
390 | The contexts table is used for storing configuration and state of contexts, | ||
391 | whereas the packets table is for storing packet history. All this information | ||
392 | is stored in PSYC packet format in the database. | ||
diff --git a/secushare-old-latex/intro b/secushare-old-latex/intro new file mode 100644 index 0000000..06a0e72 --- /dev/null +++ b/secushare-old-latex/intro | |||
@@ -0,0 +1,25 @@ | |||
1 | * Introduction | ||
2 | |||
3 | The Internet is getting more and more centralized with users' personal data | ||
4 | hosted on servers of large service providers, which involves serious privacy | ||
5 | concerns. As in most cases these systems do not provide end-to-end | ||
6 | confidentiality, server operators have full access to user data and users are | ||
7 | often unaware of how much data is stored about them or with whom their data is | ||
8 | shared with. Such systems include email and instant messaging services like | ||
9 | GMail and GTalk, social network services like Facebook, Google+ and Twitter, or | ||
10 | file storage and sharing services like Dropbox. | ||
11 | |||
12 | It is possible to implement social sharing and messaging in a privacy protecting | ||
13 | way. Chapter 2 describes previous attempts at this by federated social networks, | ||
14 | problems with that approach and our requirements for secure communication. | ||
15 | |||
16 | We suggest a peer-to-peer architecture as a better basis for a social network | ||
17 | system in Chapter 3. We show how social interactions would work in such | ||
18 | a network while maintaining privacy of users. | ||
19 | |||
20 | In Chapter 4 we introduce core concepts of PSYC and show how we integrated it | ||
21 | with P2P technology provided by the GNUnet framework, and tell more about | ||
22 | implementation details of the prototype of Secure Share. | ||
23 | |||
24 | Chapter 5 describes the clients we have implemented and shows extension | ||
25 | possibilities of Secure Share. | ||
diff --git a/secushare-old-latex/ref.bib b/secushare-old-latex/ref.bib new file mode 100644 index 0000000..6173078 --- /dev/null +++ b/secushare-old-latex/ref.bib | |||
@@ -0,0 +1,116 @@ | |||
1 | @PhdThesis {gnunet-decrouting, | ||
2 | author = {Nathan S. Evans}, | ||
3 | title = {Methods for Secure Decentralized Routing in Open Networks}, | ||
4 | volume = {Dr. rer. nat.}, | ||
5 | year = {2011}, | ||
6 | month = {08/2011}, | ||
7 | pages = {234}, | ||
8 | school = {Technische Universit{\"a}t M{\"u}nchen}, | ||
9 | address = {Garching bei M{\"u}nchen}, | ||
10 | abstract = { The contribution of this thesis is the study and improvement of secure, decentralized, robust routing algorithms for open networks including ad-hoc networks and peer-to-peer (P2P) overlay networks. The main goals for our secure routing algorithm are openness, efficiency, scalability and resilience to various types of attacks. Common P2P routing algorithms trade-off decentralization for security; for instance by choosing whether or not to require a centralized authority to allow peers to join the network. Other algorithms trade scalability for security, for example employing random search or flooding to prevent certain types of attacks. Our design attempts to meet our security goals in an open system, while limiting the performance penalties incurred. | ||
11 | |||
12 | The first step we took towards designing our routing algorithm was an analysis of the routing algorithm in Freenet. This algorithm is relevant because it achieves efficient (order O(log n)) routing in realistic network topologies in a fully decentralized open network. However, we demonstrate why their algorithm is not secure, as malicious participants are able to severely disrupt the operation of the network. The main difficulty with the Freenet routing algorithm is that for performance it relies on information received from untrusted peers. We also detail a range of proposed solutions, none of which we found to fully fix the problem. | ||
13 | |||
14 | A related problem for efficient routing in sparsely connected networks is the difficulty in sufficiently populating routing tables. One way to improve connectivity in P2P overlay networks is by utilizing modern NAT traversal techniques. We employ a number of standard NAT traversal techniques in our approach, and also developed | ||
15 | and experimented with a novel method for NAT traversal based on ICMP and UDP hole punching. Unlike other NAT traversal techniques ours does not require a trusted third party. | ||
16 | |||
17 | Another technique we use in our implementation to help address the connectivity problem in sparse networks is the use of distance vector routing in a small local neighborhood. The distance vector variant used in our system employs onion routing to secure the resulting indirect connections. Materially to this design, we discovered a serious vulnerability in the Tor protocol which allowed us to use a DoS attack to reduce the anonymity of the users of this extant anonymizing P2P network. This vulnerability is based on allowing paths of unrestricted length for onion routes through the network. Analyzing Tor and implementing this attack gave us valuable knowledge | ||
18 | which helped when designing the distance vector routing protocol for our system. | ||
19 | |||
20 | Finally, we present the design of our new secure randomized routing algorithm that does not suffer from the various problems we discovered in previous designs. Goals for the algorithm include providing efficiency and robustness in the presence of malicious participants for an open, fully decentralized network without trusted authorities. We provide a mathematical analysis of the algorithm itself and have created and deployed an implementation of this algorithm in GNUnet. In this thesis we also provide a detailed overview of a distributed | ||
21 | emulation framework capable of running a large number of nodes using our full code base as well as some of the challenges encountered in creating and using such a testing framework. We present extensive experimental results showing that our routing algorithm outperforms the dominant DHT design in target topologies, and performs comparably in other scenarios. | ||
22 | }, | ||
23 | keywords = {DHT, Freenet, GNUnet, NAT, R5N, Tor}, | ||
24 | isbn = {3-937201-26-2}, | ||
25 | issn = {1868-2642}, | ||
26 | attachments = {https://gnunet.org/sites/default/files/NET-2011-08-1.pdf}, | ||
27 | url = {https://gnunet.org/nate2011thesis}, | ||
28 | } | ||
29 | |||
30 | @Conference {gnunet-gap, | ||
31 | author = {Krista Bennett and Christian Grothoff}, | ||
32 | title = {gap - Practical Anonymous Networking}, | ||
33 | booktitle = {Designing Privacy Enhancing Technologies}, | ||
34 | year = {2003}, | ||
35 | pages = {141{\textendash}160}, | ||
36 | publisher = {Springer-Verlag}, | ||
37 | organization = {Springer-Verlag}, | ||
38 | abstract = {This paper describes how anonymity is achieved in GNUnet, a framework for anonymous distributed and secure networking. | ||
39 | |||
40 | The main focus of this work is gap, a simple protocol for anonymous transfer of data which can achieve better anonymity guarantees than many traditional indirection schemes and is additionally more efficient. gap is based on a new perspective on how to achieve anonymity. Based on this new perspective it is possible to relax the requirements stated in traditional indirection | ||
41 | schemes, allowing individual nodes to balance anonymity with efficiency according to their specific needs.}, | ||
42 | keywords = {anonymity, GNUnet, installation}, | ||
43 | attachments = {https://gnunet.org/sites/default/files/aff.pdf}, | ||
44 | url = {https://gnunet.org/gap}, | ||
45 | } | ||
46 | |||
47 | @Misc {dark-freenet, | ||
48 | author = {Clarke, Ian and Sandberg, Oskar and Toseland, Matthew and Verendel, Vilhelm}, | ||
49 | title = {Private Communication Through a Network of Trusted Connections: The Dark Freenet}, | ||
50 | url = {https://freenetproject.org/papers/freenet-0.7.5-paper.pdf}, | ||
51 | } | ||
52 | |||
53 | @article {hordes, | ||
54 | author = {Brian Neil Levine and Clay Shields}, | ||
55 | title = {Hordes {\textendash}- A Multicast Based Protocol for Anonymity}, | ||
56 | journal = {Journal of Computer Security}, | ||
57 | volume = {10}, | ||
58 | number = {3}, | ||
59 | year = {2002}, | ||
60 | pages = {213{\textendash}240}, | ||
61 | abstract = {With widespread acceptance of the Internet as a public medium for communication and information retrieval, there has been rising concern that the personal privacy of users can be eroded by cooperating network entities. A technical solution to maintaining privacy is to provide anonymity. We present a protocol for initiator anonymity called Hordes, which uses forwarding mechanisms similar to those used in previous protocols for sending data, but is the first protocol to make use of multicast routing to anonymously receive data. We show this results in shorter transmission latencies and requires less work of the protocol participants, in terms of the messages processed. We also present a comparison of the security and anonymity of Hordes with previous protocols, using the first quantitative definition of anonymity and unlinkability.}, | ||
62 | keywords = {anonymity, Hordes, multicast, routing}, | ||
63 | issn = {0926-227X}, | ||
64 | url = {http://portal.acm.org/citation.cfm?id=603406}, | ||
65 | attachments = {https://gnunet.org/sites/default/files/Levine-2002.pdf}, | ||
66 | } | ||
67 | |||
68 | @InProceedings {drac, | ||
69 | author = {George Danezis and Claudia Diaz and Carmela Troncoso and Ben Laurie and Google Inc}, | ||
70 | title = {Drac: An architecture for anonymous low-volume communications}, | ||
71 | booktitle = {Privacy Enhancing Technologies, volume 6205 of Lecture Notes in Computer Science}, | ||
72 | year = {2010}, | ||
73 | pages = {202--219}, | ||
74 | publisher = {Springer} | ||
75 | } | ||
76 | |||
77 | @InProceedings {lifesocial, | ||
78 | title = {LifeSocial.KOM: A secure and P2P-based solution for online social networks}, | ||
79 | author = {Graffi, K. and Gross, C. and Stingl, D. and Hartung, D. and Kovacevic, A. and Steinmetz, R.}, | ||
80 | booktitle = {Consumer Communications and Networking Conference (CCNC), 2011 IEEE}, | ||
81 | pages = {554--558}, | ||
82 | year = {2011}, | ||
83 | organization = {IEEE}, | ||
84 | attachments = {http://www.cs.uni-paderborn.de/fileadmin/Informatik/FG-TI/Graffi/Publications/Kalman.Graffi_2011_IEEE.CCNC.11_LifeSocial.KOM.A.Secure.and.P2P.based.Solution.for.OSNs.pdf} | ||
85 | } | ||
86 | |||
87 | @Misc {psyc-paper, | ||
88 | author = {Carlo v. Loesch}, | ||
89 | title = {Protocol for Synchronous Conferencing}, | ||
90 | year = {2007}, | ||
91 | url = {http://www.psyc.eu/whitepaper/white.en.html}, | ||
92 | } | ||
93 | |||
94 | @Misc {psyc-bench, | ||
95 | title = {Libpsyc Performance Benchmarks}, | ||
96 | url = {http://lib.psyc.eu/bench} | ||
97 | } | ||
98 | |||
99 | @Misc {js-crypto, | ||
100 | author = {Nate Lawson}, | ||
101 | title = {Final post on Javascript crypto}, | ||
102 | year = {2010}, | ||
103 | url = {http://rdist.root.org/2010/11/29/final-post-on-javascript-crypto/}, | ||
104 | } | ||
105 | |||
106 | @Conference {fsw-paranoia, | ||
107 | author = {Carlo v. Loesch and Gabor Toth and Mathias Baumann}, | ||
108 | title = {Scalability \& Paranoia in a Decentralized Social Network}, | ||
109 | booktitle = {Federated Social Web conference}, | ||
110 | year = {2011}, | ||
111 | month = {06/2011}, | ||
112 | address = {Berlin, Germany}, | ||
113 | abstract = {There{\textquoteright}s a lot of buzz out there about "replacing" Facebook with a privacy-enhanced, decentralized, ideally open source something. In this talk we{\textquoteright}ll focus on how much privacy we should plan for (specifically about how we cannot entrust our privacy to modern virtual machine technology) and the often underestimated problem of getting such a monster network to function properly. These issues can be considered together or separately: Even if you{\textquoteright}re not as concerned about privacy as we are, the scalability problem still persists. }, | ||
114 | keywords = {GNUnet, privacy, social networks}, | ||
115 | url = {http://secushare.org/2011-FSW-Scalability-Paranoia}, | ||
116 | } | ||
diff --git a/secushare-old-latex/req b/secushare-old-latex/req new file mode 100644 index 0000000..b0d4f75 --- /dev/null +++ b/secushare-old-latex/req | |||
@@ -0,0 +1,129 @@ | |||
1 | * Requirements and Related Work | ||
2 | |||
3 | This chapter describes our requirements for a system that we can use to build a | ||
4 | secure social network and introduces currently available alternatives to | ||
5 | centralized social networks. This chapter is partly based on \cite{fsw-paranoia}. | ||
6 | |||
7 | ** Privacy | ||
8 | |||
9 | Our goal is to provide a system for social interaction in a privacy-protecting | ||
10 | and scalable manner. A truly private communication system we're aiming for | ||
11 | should have the following properties: | ||
12 | |||
13 | - End-to-end encryption: only the intended recipients can read the messages, no | ||
14 | server or network operators along the way between the communicating | ||
15 | parties. To ensure this, it is not enough to use link-level encryption between | ||
16 | a client and a server, end-to-end encryption is needed, which means that every | ||
17 | participant in the system has to manage their own cryptographic keys on their | ||
18 | own systems. | ||
19 | - Perfect forward secrecy: messages transmitted over the network can't be | ||
20 | decrypted later if a user's private key is compromised. To achieve this, | ||
21 | temporary session keys need to be used when encrypting messages. | ||
22 | - When logging a message to disk it should not contain a cryptographic signature | ||
23 | of the sender, so if someone gains access to the log, it does not provide a | ||
24 | proof that someone actually transmitted the messages. | ||
25 | - An observer cannot determine for sure when two parties are communicating and | ||
26 | how much data they exchange with each other. This requires a trade-off: while | ||
27 | sending packets through other participants in the network would ensure this, | ||
28 | this also increases message delay. | ||
29 | - Padding of packets is necessary to prevent attacks based on statistical | ||
30 | analysis of packet lengths. This is absolutely necessary when sending messages | ||
31 | through multiple hops, otherwise it would be enough to monitor packet lengths | ||
32 | to determine where a packet is forwarded to. | ||
33 | - Delayed forwarding is also necessary to prevent correlation of received and | ||
34 | transmitted packets when forwarding. Sending multiple packets at once at | ||
35 | certain intervals would help to prevent this. | ||
36 | - Private contact list: only visible to whom it needs be -- typically other | ||
37 | friends -- not available publicly or managed on servers where server operators | ||
38 | have access to it. | ||
39 | - Every component of the system should be open source, so one can ensure it | ||
40 | really works as advertised. A closed component would be a security risk, as it | ||
41 | could leak information or otherwise weaken the security of the system, which | ||
42 | is harder to detect when no source code is available. This can be enforced | ||
43 | with a copyleft license, such as the Affero General Public License (AGPL). | ||
44 | |||
45 | Currently available alternatives to centralized social network services are in | ||
46 | most cases federated networks, which use a standardized protocol between servers | ||
47 | enabling many service providers to take part in the network and communicate with | ||
48 | each other. Examples for such systems include web-based platforms like Diaspora | ||
49 | or Friendica, and others using a messaging protocol extended with social network | ||
50 | functionalities -- friendship establishment, status messages to friends -- like | ||
51 | OneSocialWeb, which is based on XMPP (Extensible Messaging and Presence | ||
52 | Protocol) or PSYC (Protocol for SYnchronous Conferencing). | ||
53 | |||
54 | These federated systems intend to offer more privacy than centralized systems, | ||
55 | but they still not fulfill most of the requirements above, in most cases they | ||
56 | only provide link-level encryption. They still store personal data on servers | ||
57 | unencrypted, just like centralized systems. Users can have a server themselves, | ||
58 | but that requires server administration skills which average users do not have, | ||
59 | so we'll end up with a few larger servers and several smaller ones, just like in | ||
60 | the case of email. Privacy is an even more serious issue in this case as it's no | ||
61 | longer enough to trust one company, there are several server operators in this | ||
62 | architecture sharing personal data with each other -- users' messages and | ||
63 | profile data are transmitted to and stored unencrypted on servers of their | ||
64 | friends as well. Even if some users run their own server, they would still | ||
65 | communicate with people without their own server, exposing personal data to even | ||
66 | more server operators this way. | ||
67 | |||
68 | It is possible to enhance privacy of these federated protocols by adding | ||
69 | end-to-end encryption on top of them, this is what PGP (Pretty Good Privacy) | ||
70 | does for e-mail and OTR (Off-The-Record Messaging) does for instant messaging | ||
71 | protocols. While this prevents servers from reading the content of messages, | ||
72 | they still know everything else about a message, e.g. its sender, recipient, and | ||
73 | size. There's an additional overhead of base64 encoding, which is needed because | ||
74 | the underlying messaging protocols often do not support binary data | ||
75 | transfer. Furthermore PGP and OTR can only be used for one-to-one messaging, | ||
76 | one-to-many and many-to-many messaging are not supported by them. | ||
77 | |||
78 | ** Scalability | ||
79 | |||
80 | Efficient message distribution is crucial in social networks, as one of their | ||
81 | most prevalent features is sending one-to-many status updates, but many-to-many | ||
82 | group messaging is frequently used as well. To deliver these messages most | ||
83 | efficiently, multicast message distribution would be necessary. IP multicast | ||
84 | does not scale to a large number of channels, as multicast routing tables would | ||
85 | fill up very fast -- at least one channel would be needed for a user's status | ||
86 | updates, and similarly, at least one for each group -- thus this has to be | ||
87 | implemented on the application layer to make it work. | ||
88 | |||
89 | XMPP has a simple distribution strategy, it sends one message per recipient | ||
90 | server, which is only efficient if there are many large sites. XMPP's | ||
91 | scalability is also limited by the way it handles presence updates, the majority | ||
92 | of inter-server traffic in the XMPP network consists of this type of messages. | ||
93 | |||
94 | XMPP's use of an XML stream as network protocol without any framing makes it | ||
95 | less efficient, as it complicates parsing and makes it impossible to transport | ||
96 | binary data without Base64 or similar encoding. Also, protocol extensions | ||
97 | described in XML add a large amount of unnecessary verbosity to the protocol. | ||
98 | |||
99 | PSYC is another federated messaging protocol with a compact but extensible | ||
100 | syntax, which enables fast parsing and small bandwidth usage. It is a text-based | ||
101 | protocol with length prefixes for binary data. Benchmarks we made show that it | ||
102 | outperforms XMPP and JSON when it comes to parsing speed \cite{psyc-bench}. | ||
103 | |||
104 | PSYC sends out one message per recipient server when distributing messages, but | ||
105 | it also has manual multicast tree configuration. | ||
106 | |||
107 | ** Peer-to-peer networks | ||
108 | |||
109 | Peer-to-peer (P2P) networks come closer to fulfilling these privacy | ||
110 | requirements, as in many cases they're designed with security and privacy in | ||
111 | mind from the ground up. | ||
112 | |||
113 | Projects such as Tor and I2P aim to create an anonymous overlay network, while | ||
114 | Freenet and GNUnet focus on anonymous information storage and retrieval. GNUnet | ||
115 | also provides an extensive framework for writing P2P applications, including | ||
116 | packet-based communication over different transport mechanisms. | ||
117 | |||
118 | In a P2P network every user of the network runs the P2P software on their own | ||
119 | computers (a computer in the P2P network is referred to as a node). This allows | ||
120 | for creating a network architecture where servers are not needed to store and | ||
121 | manage user data, every user can do so on their own node, giving them more | ||
122 | control over their data. High-capacity servers we had in federated networks | ||
123 | would be still useful in a P2P network, they can forward (and store when needed) | ||
124 | encrypted data without being able to decrypt them, this way improving | ||
125 | throughput, connectivity and stability of the network. | ||
126 | |||
127 | Combining peer-to-peer network technology with social network semantics allows | ||
128 | for creating a scalable, privacy-protecting social network based on connections | ||
129 | of trusted peers. The next section describes the architecture of such a network. | ||
diff --git a/secushare-old-latex/secushare b/secushare-old-latex/secushare new file mode 100644 index 0000000..0366bd9 --- /dev/null +++ b/secushare-old-latex/secushare | |||
@@ -0,0 +1,56 @@ | |||
1 | #+TITLE: Secure Share | ||
2 | #+AUTHOR: Gabor Toth | ||
3 | #+SETUPFILE: .setup | ||
4 | |||
5 | #+BEGIN_LaTeX | ||
6 | \frontmatter | ||
7 | |||
8 | \begin{titlepage} | ||
9 | \centering | ||
10 | \vspace*{10\baselineskip} | ||
11 | \huge | ||
12 | {{{title}}} | ||
13 | \large | ||
14 | \\[2\baselineskip] | ||
15 | A framework for secure social interaction | ||
16 | \\[4\baselineskip] | ||
17 | \Large | ||
18 | {{{author}}} \\[2\baselineskip] | ||
19 | \normalsize | ||
20 | \vfill | ||
21 | \normalsize | ||
22 | May 2012 | ||
23 | % \monthname\ \the\year | ||
24 | \end{titlepage} | ||
25 | #+END_LaTeX | ||
26 | |||
27 | * :NOEXPORT: | ||
28 | |||
29 | #+BEGIN_ABSTRACT | ||
30 | #+INCLUDE abstract | ||
31 | #+END_ABSTRACT | ||
32 | |||
33 | #+BEGIN_LaTeX | ||
34 | \renewcommand{\contentsname}{\vspace*{-1em} Contents} | ||
35 | \tableofcontents | ||
36 | \listoffigures | ||
37 | #+END_LaTeX | ||
38 | |||
39 | #+LaTeX: \mainmatter | ||
40 | |||
41 | #+INCLUDE intro | ||
42 | #+INCLUDE req | ||
43 | #+INCLUDE arch | ||
44 | #+INCLUDE impl | ||
45 | #+INCLUDE clients | ||
46 | #+INCLUDE conclusion | ||
47 | |||
48 | #+INCLUDE: .setup-back | ||
49 | #+BEGIN_LaTeX | ||
50 | \backmatter | ||
51 | \addcontentsline{toc}{chapter}{Bibliography} | ||
52 | \printbibliography | ||
53 | #+END_LaTeX | ||
54 | |||
55 | #+INCLUDE: abbrevs | ||
56 | #+INCLUDE: syntax | ||
diff --git a/secushare-old-latex/secushare.pdf b/secushare-old-latex/secushare.pdf new file mode 100644 index 0000000..9486833 --- /dev/null +++ b/secushare-old-latex/secushare.pdf | |||
Binary files differ | |||
diff --git a/secushare-old-latex/shot-irssyc.png b/secushare-old-latex/shot-irssyc.png new file mode 100644 index 0000000..eedd898 --- /dev/null +++ b/secushare-old-latex/shot-irssyc.png | |||
Binary files differ | |||
diff --git a/secushare-old-latex/shot-secushare.png b/secushare-old-latex/shot-secushare.png new file mode 100644 index 0000000..0c3687e --- /dev/null +++ b/secushare-old-latex/shot-secushare.png | |||
Binary files differ | |||
diff --git a/secushare-old-latex/slides.pdf b/secushare-old-latex/slides.pdf new file mode 100644 index 0000000..7f602db --- /dev/null +++ b/secushare-old-latex/slides.pdf | |||
Binary files differ | |||
diff --git a/secushare-old-latex/syntax b/secushare-old-latex/syntax new file mode 100644 index 0000000..16c417c --- /dev/null +++ b/secushare-old-latex/syntax | |||
@@ -0,0 +1,46 @@ | |||
1 | # <<syntax>> | ||
2 | * Appendix 1 - PSYC Syntax | ||
3 | |||
4 | Syntaxes in this section are described in Augmented Backus-Naur Form (ABNF). | ||
5 | |||
6 | *PACKET SYNTAX* | ||
7 | |||
8 | #+BEGIN_SRC abnf | ||
9 | packet = routing-header [ content-length content ] "|" LF | ||
10 | ; the length of content is either implicit | ||
11 | ; (scan until LF "|" LF) | ||
12 | ; or explicitly reported in content-length. | ||
13 | |||
14 | routing-header = *routing-modifier | ||
15 | entity-header = *sync-operation *entity-modifier | ||
16 | content = entity-header [ body LF ] | ||
17 | content-length = [ length ] LF | ||
18 | |||
19 | routing-modifier= operator variable ( simple-arg / LF ) | ||
20 | sync-operation = ( "=" LF / "?" LF ) | ||
21 | entity-modifier = operator variable entity-arg | ||
22 | entity-arg = simple-arg / binary-arg / LF | ||
23 | |||
24 | body = method [ LF data ] | ||
25 | |||
26 | operator = "=" / ":" / "+" / "-" / "?" / "!" / "@" | ||
27 | simple-arg = HTAB text-data LF | ||
28 | binary-arg = SP length HTAB binary-data LF | ||
29 | |||
30 | length = 1*DIGIT | ||
31 | binary-data = *OCTET | ||
32 | ; a length byte long byte sequence | ||
33 | |||
34 | method = 1*kwchar | ||
35 | variable = 1*kwchar | ||
36 | text-data = *nonlchar | ||
37 | |||
38 | data = *OCTET | ||
39 | ; amount of bytes as given by length or until | ||
40 | ; an (LF "|" LF) sequence has been encountered | ||
41 | |||
42 | nonlchar = %x00-09 / %x0B-FF | ||
43 | ; any byte except \n | ||
44 | kwchar = %x30-39 / %x41-5A / %x61-7A / "_" | ||
45 | ; alphanumeric or _ | ||
46 | #+END_SRC | ||
diff --git a/secushare-old-orgmode/2012-29C3.slides.org b/secushare-old-orgmode/2012-29C3.slides.org new file mode 100644 index 0000000..3dded9b --- /dev/null +++ b/secushare-old-orgmode/2012-29C3.slides.org | |||
@@ -0,0 +1,168 @@ | |||
1 | #+TITLE: Introduction to SecuShare | ||
2 | #+AUTHOR: Daniel Reusche and Gabor Toth | ||
3 | #+LANGUAGE: en | ||
4 | #+OPTIONS: H:3 num:t toc:t \n:nil @:t ::t |:t ^:t -:t f:t *:t <:t | ||
5 | #+OPTIONS: TeX:t LaTeX:t skip:nil d:nil todo:t pri:nil tags:not-in-toc | ||
6 | #+INFOJS_OPT: view:nil toc:nil ltoc:t mouse:underline buttons:0 path:http://orgmode.org/org-info.js | ||
7 | #+EXPORT_SELECT_TAGS: export | ||
8 | #+EXPORT_EXCLUDE_TAGS: noexport | ||
9 | |||
10 | #+startup: oddeven | ||
11 | |||
12 | #+startup: beamer | ||
13 | #+LaTeX_CLASS: beamer | ||
14 | #+LaTeX_CLASS_OPTIONS: [bigger] | ||
15 | #+latex_header: \mode<beamer>{\usetheme{Pittsburgh}} | ||
16 | #+latex_header: \setbeamertemplate{navigation symbols}{} | ||
17 | #+BEAMER_FRAME_LEVEL: 2 | ||
18 | |||
19 | * Introduction | ||
20 | ** Introduction | ||
21 | [[file:./img/unicast.png]] | ||
22 | *** unicast :NOEXPORT: | ||
23 | - natural communication | ||
24 | - this is where we want to go | ||
25 | |||
26 | ** Introduction | ||
27 | [[file:./img/cloud.png]] | ||
28 | *** server :NOEXPORT: | ||
29 | - this is where we are now | ||
30 | - servers | ||
31 | - clouds | ||
32 | - clusters | ||
33 | - all more or less centrally owned | ||
34 | |||
35 | |||
36 | * Goals | ||
37 | ** Goals | ||
38 | #+Begin_Center | ||
39 | #+LaTeX: \textbf{\Huge{Transfer Anything}} | ||
40 | #+End_Center | ||
41 | *** Transfer :NOEXPORT: | ||
42 | - Arbitrary stuff | ||
43 | - messages | ||
44 | - subscription lists, etc. | ||
45 | - files | ||
46 | - future: | ||
47 | - push to talk | ||
48 | - television | ||
49 | |||
50 | ** Goals | ||
51 | #+Begin_Center | ||
52 | #+LaTeX: \textbf{\Huge{Resilience}} | ||
53 | #+End_Center | ||
54 | *** Resilience :NOEXPORT: | ||
55 | - Do not get rid of servers but: | ||
56 | - Make nodes/content/servers easily exchangeable. | ||
57 | - It is no problem if a server goes down, because traffic is rerouted. | ||
58 | - If we put up another server, traffic gets quickly routed over it again. | ||
59 | |||
60 | ** Goals | ||
61 | #+Begin_Center | ||
62 | #+LaTeX: \textbf{\Huge{Privacy}} | ||
63 | #+End_Center | ||
64 | *** Privacy :NOEXPORT: | ||
65 | - Only intended recipients get the content. | ||
66 | - public stuff unencrypted | ||
67 | - Make sure of this by end-to-end encryption | ||
68 | - Groups and one-on-one chat | ||
69 | - goal mpotr | ||
70 | - encrypted | ||
71 | - authenticated | ||
72 | - repudiable | ||
73 | - maybe even anonymity later: | ||
74 | - play with packet padding and timing | ||
75 | - onion routing possible | ||
76 | |||
77 | ** Goals | ||
78 | #+Begin_Center | ||
79 | #+LaTeX: \textbf{\Huge{Scalability}} | ||
80 | #+End_Center | ||
81 | *** Scalability :NOEXPORT: | ||
82 | - not only adsl nodes | ||
83 | - servers for routing, buffering | ||
84 | - bandwith, cpu, memory | ||
85 | - everything is encrypted, so no problem | ||
86 | - Round Robin slow | ||
87 | - Carlos Mailverteiler | ||
88 | - vor 5 jahren 70% XMPP traffic presence messages | ||
89 | - http://about.psyc.eu/XMPP#Scalability | ||
90 | - multicast distribution trees scale well | ||
91 | - psyc: several hundred instances of up to 10k users each | ||
92 | |||
93 | ** Goals | ||
94 | [[file:./img/multicast.png]] | ||
95 | *** notes :NOEXPORT: | ||
96 | - this is what we want to do | ||
97 | - make the first scale on large networks | ||
98 | |||
99 | ** Goals | ||
100 | #+Begin_Center | ||
101 | #+LaTeX: \textbf{\Huge{API}} | ||
102 | #+End_Center | ||
103 | *** API :NOEXPORT: | ||
104 | - Ease of use for developers = more applications | ||
105 | - we need gread (Easily adaptable) interfaces | ||
106 | - our grandmothers have to be able to use it | ||
107 | - The developers will never be able to keep up with all the needs of the users | ||
108 | * How Not To Do It | ||
109 | ** How Not To Do It | ||
110 | #+Begin_Center | ||
111 | #+LaTeX: \textbf{\Huge{Trust in Servers}} | ||
112 | #+End_Center | ||
113 | *** notes :NOEXPORT: | ||
114 | - Can be seized | ||
115 | - server unfriendly legislation can be passed, eg liability | ||
116 | - In current architectures, lots of data resides there | ||
117 | - federation: | ||
118 | - data is visible, accessible on even more servers | ||
119 | - you have to trust even more admins | ||
120 | - Central points of failure | ||
121 | - even with crypto, the data is not lost but the communication channels are | ||
122 | - Servers are vulnerable to: | ||
123 | - Memory analysis | ||
124 | - VPSs are vulnerable to : | ||
125 | - Being fed bad random data -> weak crypto | ||
126 | |||
127 | ** How Not To Do It | ||
128 | #+Begin_Center | ||
129 | #+LaTeX: \textbf{\Huge{Encryption in the Browser}} | ||
130 | #+End_Center | ||
131 | *** notes :NOEXPORT: | ||
132 | - trust in integrity of whatever code you get from the server required | ||
133 | - server compromised, all users compromised | ||
134 | - ssl ca system broken | ||
135 | |||
136 | * Technologies | ||
137 | ** Technologies | ||
138 | #+Begin_Center | ||
139 | #+LaTeX: \textbf{\Huge{GNUnet}} | ||
140 | #+End_Center | ||
141 | *** GNUnet :NOEXPORT: | ||
142 | - Use it for routing and encryption. | ||
143 | - anonymous filehosting | ||
144 | - TUM, in the heritage of freenet | ||
145 | |||
146 | ** Technologies | ||
147 | #+Begin_Center | ||
148 | #+LaTeX: \textbf{\Huge{PSYC}} | ||
149 | #+End_Center | ||
150 | *** PSYC :NOEXPORT: | ||
151 | - Use it for multicast binary transport and trust graph. | ||
152 | - Scales well, several hundred instances with 10k users each | ||
153 | |||
154 | * About Us | ||
155 | ** Contributors | ||
156 | - Carlo von lynX | ||
157 | - Gabor Toth | ||
158 | - Matthias Baumann | ||
159 | - Daniel Reusche | ||
160 | ** URL | ||
161 | #+Begin_Center | ||
162 | #+LaTeX: \textbf{\Huge{secushare.org}} | ||
163 | #+End_Center | ||
164 | |||
165 | |||
166 | |||
167 | |||
168 | |||
diff --git a/secushare-old-orgmode/2012-SIGINT.slides.org b/secushare-old-orgmode/2012-SIGINT.slides.org new file mode 100644 index 0000000..1625442 --- /dev/null +++ b/secushare-old-orgmode/2012-SIGINT.slides.org | |||
@@ -0,0 +1,168 @@ | |||
1 | #+TITLE: Introduction to SecuShare | ||
2 | #+AUTHOR: Daniel Reusche | ||
3 | #+LANGUAGE: en | ||
4 | #+OPTIONS: H:3 num:t toc:t \n:nil @:t ::t |:t ^:t -:t f:t *:t <:t | ||
5 | #+OPTIONS: TeX:t LaTeX:t skip:nil d:nil todo:t pri:nil tags:not-in-toc | ||
6 | #+INFOJS_OPT: view:nil toc:nil ltoc:t mouse:underline buttons:0 path:http://orgmode.org/org-info.js | ||
7 | #+EXPORT_SELECT_TAGS: export | ||
8 | #+EXPORT_EXCLUDE_TAGS: noexport | ||
9 | |||
10 | #+startup: oddeven | ||
11 | |||
12 | #+startup: beamer | ||
13 | #+LaTeX_CLASS: beamer | ||
14 | #+LaTeX_CLASS_OPTIONS: [bigger] | ||
15 | #+latex_header: \mode<beamer>{\usetheme{Pittsburgh}} | ||
16 | #+latex_header: \setbeamertemplate{navigation symbols}{} | ||
17 | #+BEAMER_FRAME_LEVEL: 2 | ||
18 | |||
19 | * Introduction | ||
20 | ** Introduction | ||
21 | [[file:./img/unicast.png]] | ||
22 | *** unicast :NOEXPORT: | ||
23 | - natural communication | ||
24 | - this is where we want to go | ||
25 | |||
26 | ** Introduction | ||
27 | [[file:./img/cloud.png]] | ||
28 | *** server :NOEXPORT: | ||
29 | - this is where we are now | ||
30 | - servers | ||
31 | - clouds | ||
32 | - clusters | ||
33 | - all more or less centrally owned | ||
34 | |||
35 | |||
36 | * Goals | ||
37 | ** Goals | ||
38 | #+Begin_Center | ||
39 | #+LaTeX: \textbf{\Huge{Transfer Anything}} | ||
40 | #+End_Center | ||
41 | *** Transfer :NOEXPORT: | ||
42 | - Arbitrary stuff | ||
43 | - messages | ||
44 | - subscription lists, etc. | ||
45 | - files | ||
46 | - future: | ||
47 | - push to talk | ||
48 | - television | ||
49 | |||
50 | ** Goals | ||
51 | #+Begin_Center | ||
52 | #+LaTeX: \textbf{\Huge{Resilience}} | ||
53 | #+End_Center | ||
54 | *** Resilience :NOEXPORT: | ||
55 | - Do not get rid of servers but: | ||
56 | - Make nodes/content/servers easily exchangeable. | ||
57 | - It is no problem if a server goes down, because traffic is rerouted. | ||
58 | - If we put up another server, traffic gets quickly routed over it again. | ||
59 | |||
60 | ** Goals | ||
61 | #+Begin_Center | ||
62 | #+LaTeX: \textbf{\Huge{Privacy}} | ||
63 | #+End_Center | ||
64 | *** Privacy :NOEXPORT: | ||
65 | - Only intended recipients get the content. | ||
66 | - public stuff unencrypted | ||
67 | - Make sure of this by end-to-end encryption | ||
68 | - Groups and one-on-one chat | ||
69 | - goal mpotr | ||
70 | - encrypted | ||
71 | - authenticated | ||
72 | - repudiable | ||
73 | - maybe even anonymity later: | ||
74 | - play with packet padding and timing | ||
75 | - onion routing possible | ||
76 | |||
77 | ** Goals | ||
78 | #+Begin_Center | ||
79 | #+LaTeX: \textbf{\Huge{Scalability}} | ||
80 | #+End_Center | ||
81 | *** Scalability :NOEXPORT: | ||
82 | - not only adsl nodes | ||
83 | - servers for routing, buffering | ||
84 | - bandwith, cpu, memory | ||
85 | - everything is encrypted, so no problem | ||
86 | - Round Robin slow | ||
87 | - Carlos Mailverteiler | ||
88 | - vor 5 jahren 70% XMPP traffic presence messages | ||
89 | - http://about.psyc.eu/XMPP#Scalability | ||
90 | - multicast distribution trees scale well | ||
91 | - psyc: several hundred instances of up to 10k users each | ||
92 | |||
93 | ** Goals | ||
94 | [[file:./img/multicast.png]] | ||
95 | *** notes :NOEXPORT: | ||
96 | - this is what we want to do | ||
97 | - make the first scale on large networks | ||
98 | |||
99 | ** Goals | ||
100 | #+Begin_Center | ||
101 | #+LaTeX: \textbf{\Huge{API}} | ||
102 | #+End_Center | ||
103 | *** API :NOEXPORT: | ||
104 | - Ease of use for developers = more applications | ||
105 | - we need gread (Easily adaptable) interfaces | ||
106 | - our grandmothers have to be able to use it | ||
107 | - The developers will never be able to keep up with all the needs of the users | ||
108 | * How Not To Do It | ||
109 | ** How Not To Do It | ||
110 | #+Begin_Center | ||
111 | #+LaTeX: \textbf{\Huge{Trust in Servers}} | ||
112 | #+End_Center | ||
113 | *** notes :NOEXPORT: | ||
114 | - Can be seized | ||
115 | - server unfriendly legislation can be passed, eg liability | ||
116 | - In current architectures, lots of data resides there | ||
117 | - federation: | ||
118 | - data is visible, accessible on even more servers | ||
119 | - you have to trust even more admins | ||
120 | - Central points of failure | ||
121 | - even with crypto, the data is not lost but the communication channels are | ||
122 | - Servers are vulnerable to: | ||
123 | - Memory analysis | ||
124 | - VPSs are vulnerable to : | ||
125 | - Being fed bad random data -> weak crypto | ||
126 | |||
127 | ** How Not To Do It | ||
128 | #+Begin_Center | ||
129 | #+LaTeX: \textbf{\Huge{Encryption in the Browser}} | ||
130 | #+End_Center | ||
131 | *** notes :NOEXPORT: | ||
132 | - trust in integrity of whatever code you get from the server required | ||
133 | - server compromised, all users compromised | ||
134 | - ssl ca system broken | ||
135 | |||
136 | * Technologies | ||
137 | ** Technologies | ||
138 | #+Begin_Center | ||
139 | #+LaTeX: \textbf{\Huge{GNUnet}} | ||
140 | #+End_Center | ||
141 | *** GNUnet :NOEXPORT: | ||
142 | - Use it for routing and encryption. | ||
143 | - anonymous filehosting | ||
144 | - TUM, in the heritage of freenet | ||
145 | |||
146 | ** Technologies | ||
147 | #+Begin_Center | ||
148 | #+LaTeX: \textbf{\Huge{PSYC}} | ||
149 | #+End_Center | ||
150 | *** PSYC :NOEXPORT: | ||
151 | - Use it for multicast binary transport and trust graph. | ||
152 | - Scales well, several hundred instances with 10k users each | ||
153 | |||
154 | * About Us | ||
155 | ** Contributors | ||
156 | - Carlo von lynX | ||
157 | - Gabor Toth | ||
158 | - Matthias Baumann | ||
159 | - Daniel Reusche | ||
160 | ** URL | ||
161 | #+Begin_Center | ||
162 | #+LaTeX: \textbf{\Huge{secushare.org}} | ||
163 | #+End_Center | ||
164 | |||
165 | |||
166 | |||
167 | |||
168 | |||
diff --git a/secushare-old-orgmode/2012-SIGINT.slides.pdf b/secushare-old-orgmode/2012-SIGINT.slides.pdf new file mode 100644 index 0000000..29a3d85 --- /dev/null +++ b/secushare-old-orgmode/2012-SIGINT.slides.pdf | |||
Binary files differ | |||
diff --git a/secushare-old-orgmode/2012-eth0.slides.org b/secushare-old-orgmode/2012-eth0.slides.org new file mode 100644 index 0000000..3dded9b --- /dev/null +++ b/secushare-old-orgmode/2012-eth0.slides.org | |||
@@ -0,0 +1,168 @@ | |||
1 | #+TITLE: Introduction to SecuShare | ||
2 | #+AUTHOR: Daniel Reusche and Gabor Toth | ||
3 | #+LANGUAGE: en | ||
4 | #+OPTIONS: H:3 num:t toc:t \n:nil @:t ::t |:t ^:t -:t f:t *:t <:t | ||
5 | #+OPTIONS: TeX:t LaTeX:t skip:nil d:nil todo:t pri:nil tags:not-in-toc | ||
6 | #+INFOJS_OPT: view:nil toc:nil ltoc:t mouse:underline buttons:0 path:http://orgmode.org/org-info.js | ||
7 | #+EXPORT_SELECT_TAGS: export | ||
8 | #+EXPORT_EXCLUDE_TAGS: noexport | ||
9 | |||
10 | #+startup: oddeven | ||
11 | |||
12 | #+startup: beamer | ||
13 | #+LaTeX_CLASS: beamer | ||
14 | #+LaTeX_CLASS_OPTIONS: [bigger] | ||
15 | #+latex_header: \mode<beamer>{\usetheme{Pittsburgh}} | ||
16 | #+latex_header: \setbeamertemplate{navigation symbols}{} | ||
17 | #+BEAMER_FRAME_LEVEL: 2 | ||
18 | |||
19 | * Introduction | ||
20 | ** Introduction | ||
21 | [[file:./img/unicast.png]] | ||
22 | *** unicast :NOEXPORT: | ||
23 | - natural communication | ||
24 | - this is where we want to go | ||
25 | |||
26 | ** Introduction | ||
27 | [[file:./img/cloud.png]] | ||
28 | *** server :NOEXPORT: | ||
29 | - this is where we are now | ||
30 | - servers | ||
31 | - clouds | ||
32 | - clusters | ||
33 | - all more or less centrally owned | ||
34 | |||
35 | |||
36 | * Goals | ||
37 | ** Goals | ||
38 | #+Begin_Center | ||
39 | #+LaTeX: \textbf{\Huge{Transfer Anything}} | ||
40 | #+End_Center | ||
41 | *** Transfer :NOEXPORT: | ||
42 | - Arbitrary stuff | ||
43 | - messages | ||
44 | - subscription lists, etc. | ||
45 | - files | ||
46 | - future: | ||
47 | - push to talk | ||
48 | - television | ||
49 | |||
50 | ** Goals | ||
51 | #+Begin_Center | ||
52 | #+LaTeX: \textbf{\Huge{Resilience}} | ||
53 | #+End_Center | ||
54 | *** Resilience :NOEXPORT: | ||
55 | - Do not get rid of servers but: | ||
56 | - Make nodes/content/servers easily exchangeable. | ||
57 | - It is no problem if a server goes down, because traffic is rerouted. | ||
58 | - If we put up another server, traffic gets quickly routed over it again. | ||
59 | |||
60 | ** Goals | ||
61 | #+Begin_Center | ||
62 | #+LaTeX: \textbf{\Huge{Privacy}} | ||
63 | #+End_Center | ||
64 | *** Privacy :NOEXPORT: | ||
65 | - Only intended recipients get the content. | ||
66 | - public stuff unencrypted | ||
67 | - Make sure of this by end-to-end encryption | ||
68 | - Groups and one-on-one chat | ||
69 | - goal mpotr | ||
70 | - encrypted | ||
71 | - authenticated | ||
72 | - repudiable | ||
73 | - maybe even anonymity later: | ||
74 | - play with packet padding and timing | ||
75 | - onion routing possible | ||
76 | |||
77 | ** Goals | ||
78 | #+Begin_Center | ||
79 | #+LaTeX: \textbf{\Huge{Scalability}} | ||
80 | #+End_Center | ||
81 | *** Scalability :NOEXPORT: | ||
82 | - not only adsl nodes | ||
83 | - servers for routing, buffering | ||
84 | - bandwith, cpu, memory | ||
85 | - everything is encrypted, so no problem | ||
86 | - Round Robin slow | ||
87 | - Carlos Mailverteiler | ||
88 | - vor 5 jahren 70% XMPP traffic presence messages | ||
89 | - http://about.psyc.eu/XMPP#Scalability | ||
90 | - multicast distribution trees scale well | ||
91 | - psyc: several hundred instances of up to 10k users each | ||
92 | |||
93 | ** Goals | ||
94 | [[file:./img/multicast.png]] | ||
95 | *** notes :NOEXPORT: | ||
96 | - this is what we want to do | ||
97 | - make the first scale on large networks | ||
98 | |||
99 | ** Goals | ||
100 | #+Begin_Center | ||
101 | #+LaTeX: \textbf{\Huge{API}} | ||
102 | #+End_Center | ||
103 | *** API :NOEXPORT: | ||
104 | - Ease of use for developers = more applications | ||
105 | - we need gread (Easily adaptable) interfaces | ||
106 | - our grandmothers have to be able to use it | ||
107 | - The developers will never be able to keep up with all the needs of the users | ||
108 | * How Not To Do It | ||
109 | ** How Not To Do It | ||
110 | #+Begin_Center | ||
111 | #+LaTeX: \textbf{\Huge{Trust in Servers}} | ||
112 | #+End_Center | ||
113 | *** notes :NOEXPORT: | ||
114 | - Can be seized | ||
115 | - server unfriendly legislation can be passed, eg liability | ||
116 | - In current architectures, lots of data resides there | ||
117 | - federation: | ||
118 | - data is visible, accessible on even more servers | ||
119 | - you have to trust even more admins | ||
120 | - Central points of failure | ||
121 | - even with crypto, the data is not lost but the communication channels are | ||
122 | - Servers are vulnerable to: | ||
123 | - Memory analysis | ||
124 | - VPSs are vulnerable to : | ||
125 | - Being fed bad random data -> weak crypto | ||
126 | |||
127 | ** How Not To Do It | ||
128 | #+Begin_Center | ||
129 | #+LaTeX: \textbf{\Huge{Encryption in the Browser}} | ||
130 | #+End_Center | ||
131 | *** notes :NOEXPORT: | ||
132 | - trust in integrity of whatever code you get from the server required | ||
133 | - server compromised, all users compromised | ||
134 | - ssl ca system broken | ||
135 | |||
136 | * Technologies | ||
137 | ** Technologies | ||
138 | #+Begin_Center | ||
139 | #+LaTeX: \textbf{\Huge{GNUnet}} | ||
140 | #+End_Center | ||
141 | *** GNUnet :NOEXPORT: | ||
142 | - Use it for routing and encryption. | ||
143 | - anonymous filehosting | ||
144 | - TUM, in the heritage of freenet | ||
145 | |||
146 | ** Technologies | ||
147 | #+Begin_Center | ||
148 | #+LaTeX: \textbf{\Huge{PSYC}} | ||
149 | #+End_Center | ||
150 | *** PSYC :NOEXPORT: | ||
151 | - Use it for multicast binary transport and trust graph. | ||
152 | - Scales well, several hundred instances with 10k users each | ||
153 | |||
154 | * About Us | ||
155 | ** Contributors | ||
156 | - Carlo von lynX | ||
157 | - Gabor Toth | ||
158 | - Matthias Baumann | ||
159 | - Daniel Reusche | ||
160 | ** URL | ||
161 | #+Begin_Center | ||
162 | #+LaTeX: \textbf{\Huge{secushare.org}} | ||
163 | #+End_Center | ||
164 | |||
165 | |||
166 | |||
167 | |||
168 | |||
diff --git a/secushare-old-orgmode/slides.org b/secushare-old-orgmode/slides.org new file mode 100644 index 0000000..e81bf2e --- /dev/null +++ b/secushare-old-orgmode/slides.org | |||
@@ -0,0 +1,318 @@ | |||
1 | #+TITLE: Secure Share | ||
2 | #+AUTHOR: Daniel Reusche and Gabor Toth | ||
3 | #+LANGUAGE: en | ||
4 | #+OPTIONS: H:3 num:t toc:nil \n:nil @:t ::t |:t ^:t -:t f:t *:t <:t | ||
5 | #+OPTIONS: TeX:t LaTeX:t skip:nil d:nil todo:t pri:nil tags:not-in-toc | ||
6 | #+INFOJS_OPT: view:nil toc:nil ltoc:t mouse:underline buttons:0 path:http://orgmode.org/org-info.js | ||
7 | |||
8 | #+startup: oddeven | ||
9 | |||
10 | #+startup: beamer | ||
11 | #+LaTeX_CLASS: beamer | ||
12 | #+LaTeX_CLASS_OPTIONS: [bigger] | ||
13 | ##+LaTeX_HEADER: \usetheme{Darmstadt} | ||
14 | #+LaTeX_HEADER: \usetheme{Frankfurt} | ||
15 | ##+LaTeX_HEADER: \usetheme{Boadilla} | ||
16 | ##+LaTeX_HEADER: \usetheme{Pittsburgh} | ||
17 | ##+LaTeX_HEADER: \setbeamertemplate{navigation symbols}{} | ||
18 | #+BEAMER_FRAME_LEVEL: 3 | ||
19 | |||
20 | * Introduction | ||
21 | |||
22 | ** Secure Share | ||
23 | |||
24 | *** Secure Share | ||
25 | A framework for secure and privacy-protecting social interaction based on | ||
26 | peer-to-peer technology | ||
27 | |||
28 | #** Federation - Unicast :noexport: | ||
29 | ##+ATTR_LaTeX: width=8cm | ||
30 | #[[./img/unicast.png]] | ||
31 | |||
32 | *** Goals | ||
33 | **** arbitrary messanging | ||
34 | ***** from one-to-one to many-to-many | ||
35 | ***** status updates and messages | ||
36 | **** file transfer | ||
37 | ***** sharing of pictures, music etc. | ||
38 | ***** collaborative document editing | ||
39 | ** Privacy | ||
40 | |||
41 | *** Privacy | ||
42 | #+BEGIN_CENTER | ||
43 | #+LaTeX: \textbf{\Huge{Privacy}} | ||
44 | #+END_CENTER | ||
45 | |||
46 | *** Ideal Case | ||
47 | [[../img/unicast.png]] | ||
48 | *** Centralized services | ||
49 | #+BEGIN_CENTER | ||
50 | #+ATTR_LaTeX: width=8cm | ||
51 | [[../img/cloud.png]] | ||
52 | #+END_CENTER | ||
53 | |||
54 | *** Privacy requirements | ||
55 | **** end-to-end encryption | ||
56 | **** forward secrecy | ||
57 | **** padding of packets | ||
58 | **** delayed forwarding | ||
59 | **** private contact list | ||
60 | **** free and open source software | ||
61 | *** Approach: federated systems | ||
62 | |||
63 | \textbf{\Large{And why not to use them}} | ||
64 | **** personal data on servers | ||
65 | **** personal data shared with even more server operators | ||
66 | **** only link-level encryption | ||
67 | **** PGP, OTR not enough | ||
68 | |||
69 | ** Scalability | ||
70 | |||
71 | *** Scalability | ||
72 | #+BEGIN_CENTER | ||
73 | #+LaTeX: \textbf{\Huge{Scalability}} | ||
74 | #+END_CENTER | ||
75 | |||
76 | *** Social interaction | ||
77 | **** one-to-many status updates | ||
78 | **** many-to-many group communication | ||
79 | |||
80 | *** Multicast | ||
81 | |||
82 | #+BEGIN_CENTER | ||
83 | #+ATTR_LaTeX: width=7cm | ||
84 | [[../img/multicast.png]] | ||
85 | #+END_CENTER | ||
86 | |||
87 | * Architecture | ||
88 | |||
89 | ** Architecture | ||
90 | |||
91 | *** Architecture | ||
92 | |||
93 | #+BEGIN_CENTER | ||
94 | #+LaTeX: \textbf{\Huge{Architecture}} | ||
95 | #+END_CENTER | ||
96 | |||
97 | ** Peer-to-Peer | ||
98 | |||
99 | *** Friend-to-friend architecture | ||
100 | **** connect to trusted nodes | ||
101 | **** prevents active attacks | ||
102 | |||
103 | *** Personal devices | ||
104 | **** Software runs on personal devices | ||
105 | **** Data is stored on personal devices | ||
106 | |||
107 | *** Personal devices | ||
108 | **** laptop, PC | ||
109 | **** plug computers, home routers, servers | ||
110 | **** smartphones | ||
111 | |||
112 | *** Peer-to-peer framework requirements | ||
113 | **** free/libre/open-source software | ||
114 | **** multi-platform, lightweight, written in a compiled language | ||
115 | **** provides API for essential P2P features | ||
116 | ***** bootstrapping, addressing, routing, encryption, NAT traversal | ||
117 | |||
118 | *** GNUnet | ||
119 | **** written in C | ||
120 | **** multi-platform | ||
121 | **** modular framework | ||
122 | **** advanced NAT traversal | ||
123 | |||
124 | *** GNUnet | ||
125 | **** multiple transport methods | ||
126 | ***** TCP, UDP | ||
127 | ***** HTTP, HTTPS | ||
128 | ***** SMTP | ||
129 | ***** ad-hoc WiFi | ||
130 | |||
131 | *** GNUnet | ||
132 | **** distributed hash table (DHT) | ||
133 | **** file sharing | ||
134 | ***** based on DHT and GAP | ||
135 | **** various routing schemes | ||
136 | ***** fish-eye bounded distance vector protocol | ||
137 | ****** gossiping in a limited neighborhood | ||
138 | ****** improves connectivity | ||
139 | ****** onion routing | ||
140 | ***** mesh service | ||
141 | ****** supports multicast | ||
142 | ****** uses DHT for routing | ||
143 | |||
144 | *** psycd | ||
145 | |||
146 | **** messaging protocol | ||
147 | **** manages connections, friendship between users | ||
148 | **** client interface | ||
149 | |||
150 | *** GNUnet - components and message flow | ||
151 | |||
152 | #+BEGIN_CENTER | ||
153 | #+ATTR_LaTeX: width=9.5cm | ||
154 | [[./gnunet-h.png]] | ||
155 | #+END_CENTER | ||
156 | |||
157 | ** Implementation | ||
158 | |||
159 | *** Implementation | ||
160 | |||
161 | #+BEGIN_CENTER | ||
162 | #+LaTeX: \textbf{\Huge{Implementation}} | ||
163 | #+END_CENTER | ||
164 | |||
165 | *** Components | ||
166 | |||
167 | **** libpsyc | ||
168 | |||
169 | **** psycd | ||
170 | |||
171 | **** GNUnet libraries | ||
172 | |||
173 | *** Identifiers | ||
174 | |||
175 | **** Federated PSYC | ||
176 | |||
177 | ***** based on DNS | ||
178 | |||
179 | : psyc://example.net/~alice#friends | ||
180 | |||
181 | **** P2P PSYC | ||
182 | |||
183 | ***** based on public key | ||
184 | |||
185 | : psyc://I0GC...L29G:g/#friends | ||
186 | |||
187 | *** Contacting peers | ||
188 | |||
189 | **** initial contact: hello message | ||
190 | |||
191 | ***** public key | ||
192 | |||
193 | ***** current addresses | ||
194 | |||
195 | **** next time contact to same address | ||
196 | |||
197 | **** or find new address through other peers | ||
198 | |||
199 | *** Circuits | ||
200 | |||
201 | **** GNUnet | ||
202 | |||
203 | **** TCP | ||
204 | |||
205 | **** UNIX domain sockets | ||
206 | |||
207 | **** TLS | ||
208 | |||
209 | *** Entities | ||
210 | |||
211 | **** person | ||
212 | ***** clients link to person entity | ||
213 | ***** can subscribe other entities | ||
214 | |||
215 | **** place | ||
216 | ***** group communication | ||
217 | ***** news feeds | ||
218 | |||
219 | *** Multicast contexts | ||
220 | |||
221 | [[./context.png]] | ||
222 | |||
223 | *** Distributed state | ||
224 | |||
225 | **** profile data, context membership | ||
226 | |||
227 | **** push changes once | ||
228 | |||
229 | **** synchronize after subscription | ||
230 | |||
231 | **** recover lost packets | ||
232 | |||
233 | **** syntax changes to support more complex data structures | ||
234 | |||
235 | *** Storage | ||
236 | |||
237 | **** incoming and outgoing packets | ||
238 | |||
239 | **** state variables | ||
240 | |||
241 | **** SQLite database | ||
242 | |||
243 | ***** multiplatform | ||
244 | |||
245 | ***** lightweight | ||
246 | |||
247 | ***** small memory footprint | ||
248 | |||
249 | * Clients | ||
250 | |||
251 | ** Clients | ||
252 | |||
253 | *** Clients | ||
254 | |||
255 | #+BEGIN_CENTER | ||
256 | #+LaTeX: \textbf{\Huge{Clients}} | ||
257 | #+END_CENTER | ||
258 | |||
259 | *** Desktop clients | ||
260 | |||
261 | **** secushare | ||
262 | ***** based on Qt/QML | ||
263 | ***** multiplatform | ||
264 | ***** touch UI | ||
265 | |||
266 | **** irssyc | ||
267 | ***** based on irssi | ||
268 | ***** intended for debugging and for advanced users | ||
269 | |||
270 | *** Web interface | ||
271 | |||
272 | **** JavaScript | ||
273 | |||
274 | **** WebSocket | ||
275 | |||
276 | *** Mobile clients | ||
277 | |||
278 | **** port GNUnet to mobile devices | ||
279 | |||
280 | **** or client only approach | ||
281 | |||
282 | *** Extensibility | ||
283 | |||
284 | **** channel API | ||
285 | ***** using a sandboxed QML or HTML view | ||
286 | ***** JavaScript API | ||
287 | ***** enables easy app development | ||
288 | ***** access only channel data | ||
289 | |||
290 | **** client API | ||
291 | ***** using libpsycclient | ||
292 | ***** allows for developing full-fledged clients | ||
293 | |||
294 | * Future work | ||
295 | |||
296 | ** Future work | ||
297 | |||
298 | *** Future work | ||
299 | |||
300 | #+BEGIN_CENTER | ||
301 | #+LaTeX: \textbf{\Huge{Future work}} | ||
302 | #+END_CENTER | ||
303 | |||
304 | *** Future work | ||
305 | |||
306 | **** routing layer - multicast | ||
307 | |||
308 | **** separate user and node identities | ||
309 | |||
310 | **** user interface | ||
311 | |||
312 | ***** improvements on desktop | ||
313 | |||
314 | ***** implement web UI | ||
315 | |||
316 | ***** implement mobile UI | ||
317 | |||
318 | **** file transfers | ||