<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://homeostasis.scs.carleton.ca/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Michelberg</id>
	<title>Soma-notes - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://homeostasis.scs.carleton.ca/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Michelberg"/>
	<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php/Special:Contributions/Michelberg"/>
	<updated>2026-05-02T07:46:12Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Computer_Systems_Security_(Winter_2016)&amp;diff=20886</id>
		<title>Computer Systems Security (Winter 2016)</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Computer_Systems_Security_(Winter_2016)&amp;diff=20886"/>
		<updated>2016-03-27T05:53:26Z</updated>

		<summary type="html">&lt;p&gt;Michelberg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Course Outline==&lt;br /&gt;
&lt;br /&gt;
[[Computer Systems Security: Winter 2016 Course Outline|Here]] is the course outline.&lt;br /&gt;
&lt;br /&gt;
==Hacking Opportunities==&lt;br /&gt;
&lt;br /&gt;
The [[SystemsSec 2016W Hacking Opportunities|Hacking Opportunities]] page lists potential hacking opportunities that you can attempt for your hacking journal.  If you attempt but do not successfully accomplish one of them, be sure to document what you tried.  As you learn more, you may come back to them and try again.&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
&lt;br /&gt;
===Readings===&lt;br /&gt;
&lt;br /&gt;
* For the first part of the course we will be reading selections from Trent Jaeger&#039;s [http://www.morganclaypool.com/doi/abs/10.2200/S00126ED1V01Y200808SPT001 Operating Systems Security] textbook.  You can download the PDF [http://www.morganclaypool.com.proxy.library.carleton.ca/doi/abs/10.2200/S00126ED1V01Y200808SPT001 through Carleton&#039;s library].  In the reading assignments this text will be referred to as &amp;quot;Jaeger&amp;quot;.&lt;br /&gt;
* An excellent but dated text on browser security is Michal Zalewski&#039;s [https://code.google.com/p/browsersec/wiki/Main Browser Security Handbook].&lt;br /&gt;
&lt;br /&gt;
===Other Courses===&lt;br /&gt;
&lt;br /&gt;
* Dan Boneh ran an excellent course at Stanford in Spring 2015 on [https://crypto.stanford.edu/cs155/ Computer and Network Security].  This course has many interesting readings that we will not be covering.  Also, the assignments are very good sources for hacking opportunities.&lt;br /&gt;
* The assignments from the Winter 2015 run of COMP 4108 [https://ccsl.carleton.ca/~dmccarney/COMP4108/ are available].  They are a reasonable start for several hacking opportunities.&lt;br /&gt;
&lt;br /&gt;
==Lectures and Exams==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table style=&amp;quot;width: 100%;&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;th&amp;gt;&lt;br /&gt;
    &amp;lt;p align=&amp;quot;left&amp;quot;&amp;gt;Date&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;th&amp;gt;&lt;br /&gt;
    &amp;lt;p align=&amp;quot;left&amp;quot;&amp;gt;Topic&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;th&amp;gt;&lt;br /&gt;
    &amp;lt;p align=&amp;quot;left&amp;quot;&amp;gt;Readings&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Jan. 7&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W Lecture 1|Introduction]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Jaeger, Chapter 1 (Introduction)&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Jan. 12&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W Lecture 2|Access Control, Security Hacking 101]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Jaeger, Chapter 2 (Access Control Fundamentals)&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Jan. 14&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W Lecture 3|Multics, UNIX, and Windows]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Jaeger, Chapter 3 (Multics) and Chapter 4 (UNIX &amp;amp; Windows) &amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Jan. 19&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W Lecture 4|Secure OSs, theory and practice]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Jaeger, Chapter 6 (Security Kernels) and Chapter 7 (Securing Commercial Operating Systems)&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Jan. 21&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W Lecture 5|LSM, SELinux, &amp;amp; Capabilities]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Jaeger, Chapter 9 (LSM &amp;amp; SELinux) and Chapter 10 (Secure Capability Systems)&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Jan. 26&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W Lecture 6|Secure Virtual Machines, Systems Assurance]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Jaeger, Chapter 11 (Secure Virtual Machine Systems) and Chapter 12 (System Assurance)&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Jan. 28&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W Lecture 7|Lecture 7]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Feb. 2&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W Lecture 8|Lecture 8]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Feb. 4&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W Lecture 9|Defensive Security Technologies / Hacking Opportunities]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Feb. 9&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W Lecture 10|Security Research, Hashes, and Secure Protocols]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Feb. 11&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W Lecture 11|Modeling a potential attack/ Midterm FAQ]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Feb. 23&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W Lecture 12|Midterm Review]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Feb. 25&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Midterm (in class)&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Mar. 1&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W Lecture 13|Buffer Overflow/Memory Corruption Attacks]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Aleph One (aka Elias Levy), [http://www.phrack.com/issues/49/14.html#article Smashing The Stack For Fun And Profit] (Phrack 49, 1996)&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Mar. 3&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W Lecture 14|Buffer Overflow/Memory Corruption Defenses]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Wikipedia, [https://en.wikipedia.org/wiki/Buffer_overflow_protection Buffer Overflow Protection]&amp;lt;br&amp;gt;&lt;br /&gt;
       Crispin Cowan et al., [https://www.usenix.org/legacy/publications/library/proceedings/sec98/cowan.html StackGuard: Automatic Adaptive Detection and Prevention of Buffer-Overflow Attacks] (USENIX Security, 1998)&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Mar. 8&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W Lecture 15|Bypassing ASLR and Buffer Overflow Exploits using return-into-libc]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Hovav Shacham et al., [http://dx.doi.org/10.1145/1030083.1030124 On the effectiveness of address-space randomization] (ACM CCS, 2004) [http://dl.acm.org.proxy.library.carleton.ca/ft_gateway.cfm?id=1030124&amp;amp;ftid=285463&amp;amp;dwn=1&amp;amp;CFID=588127386&amp;amp;CFTOKEN=74533951 (proxy)]&amp;lt;br&amp;gt;&lt;br /&gt;
           Hovav Shachem [http://dx.doi.org/10.1145/1315245.1315313 The geometry of innocent flesh on the bone: return-into-libc without function calls (on the x86)] (ACM CCS 2007) [http://dl.acm.org.proxy.library.carleton.ca/ft_gateway.cfm?id=1315313&amp;amp;ftid=476749&amp;amp;dwn=1&amp;amp;CFID=588127386&amp;amp;CFTOKEN=74533951 (proxy)]&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Mar. 10&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W Lecture 16|Lecture 16]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Bellovin and Cheswick, [http://dx.doi.org/10.1109/35.312843 Network Firewalls] (IEEE Communications Magazine, 1994) [http://ieeexplore.ieee.org.proxy.library.carleton.ca/stamp/stamp.jsp?tp=&amp;amp;arnumber=312843 (proxy)]&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Mar. 15&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W Lecture 17|Lecture 17]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Dingledine, Mathewson, and Syverson, [https://www.usenix.org/legacy/events/sec04/tech/dingledine.html Tor: The Second-Generation Onion Router] (USENIX Security 2004)&amp;lt;br&amp;gt;Albert Kwon et al., [https://www.usenix.org/conference/usenixsecurity15/technical-sessions/presentation/kwon Circuit Fingerprinting Attacks: Passive Deanonymization of Tor Hidden Services] (USENIX Security 2015)&amp;lt;br&amp;gt;(background)[https://www.torproject.org/about/overview.html.en Tor: Overview]&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Mar. 17&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W Lecture 18|Lecture 18]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Blase Ur et al., [https://www.usenix.org/conference/usenixsecurity15/technical-sessions/presentation/ur Measuring Real-World Accuracies and Biases in Modeling Password Guessability] (USENIX Security 2015)&amp;lt;br&amp;gt;&lt;br /&gt;
Nikolaos Karapanos et al., [https://www.usenix.org/conference/usenixsecurity15/technical-sessions/presentation/karapanos Sound-Proof: Usable Two-Factor Authentication Based on Ambient Sound] (USENIX Security 2015)&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Mar. 22&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W Lecture 19|Lecture 19]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Giancarlo Pellegrino et al., [https://www.usenix.org/conference/usenixsecurity15/technical-sessions/presentation/pellegrino In the Compression Hornet’s Nest: A Security Study of Data Compression in Network Services] (USENIX Security 2015)&amp;lt;br&amp;gt;Ramya Jayaram Masti et al., [https://www.usenix.org/conference/usenixsecurity15/technical-sessions/presentation/masti Thermal Covert Channels on Multi-core Platforms] (USENIX Security 2015)&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Mar. 24&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W Lecture 20|DDoS and Pinning]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Seyed K. Fayaz et al., [https://www.usenix.org/conference/usenixsecurity15/technical-sessions/presentation/fayaz Bohatei: Flexible and Elastic DDoS Defense] (USENIX Security 2015)&amp;lt;br&amp;gt;Marten Oltrogge and Yasemin Acar, [https://www.usenix.org/conference/usenixsecurity15/technical-sessions/presentation/oltrogge To Pin or Not to Pin—Helping App Developers Bullet Proof Their TLS Connections] (USENIX Security 2015)&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Mar. 29&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W Lecture 21|Lecture 21]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;David A. Ramos and Dawson Engler, [https://www.usenix.org/conference/usenixsecurity15/technical-sessions/presentation/ramos Under-Constrained Symbolic Execution: Correctness Checking for Real Code] (USENIX Security 2015)&amp;lt;br&amp;gt;Nav Jagpal et al., [https://www.usenix.org/conference/usenixsecurity15/technical-sessions/presentation/jagpal Trends and Lessons from Three Years Fighting Malicious Extensions] (USENIX Security 2015)&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Mar. 31&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W Lecture 22|Lecture 22]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Xiaofeng Zheng et al., [https://www.usenix.org/conference/usenixsecurity15/technical-sessions/presentation/zheng Cookies Lack Integrity: Real-World Implications] (USENIX Security 2015)&amp;lt;br&amp;gt;Sebastian Lekies et al., [https://www.usenix.org/conference/usenixsecurity15/technical-sessions/presentation/lekies The Unexpected Dangers of Dynamic JavaScript] (USENIX Security 2015)&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Apr. 5&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W Lecture 23|Lecture 23]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Michael Backes et al., [https://www.usenix.org/conference/usenixsecurity15/technical-sessions/presentation/backes Boxify: Full-fledged App Sandboxing for Stock Android] (USENIX Security 2015)&amp;lt;br&amp;gt;Primal Wijesekera et al., [https://www.usenix.org/conference/usenixsecurity15/technical-sessions/presentation/wijesekera Android Permissions Remystified: A Field Study on Contextual Integrity] (USENIX Security 2015)&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;April 7&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[SystemsSec 2016W Lecture 24|Lecture 24]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;April 19, 9 AM&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Final Exam&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lecture Notes Guidelines==&lt;br /&gt;
&lt;br /&gt;
Part of your participation mark is doing notes for at least one of the lectures.  Here are the guidelines for those notes.&lt;br /&gt;
&lt;br /&gt;
The class TA Borke (BorkeObadaObieh at cmail.carleton.ca) will be handling course notes.  Please contact her to schedule your class to take notes.&lt;br /&gt;
&lt;br /&gt;
Borke or Anil will set you up with an account on this wiki.  You&#039;ll enter your initial draft notes here and then work with Borke to make sure they are of sufficient quality.  This may require a few rounds of revisions; however, if you follow the guidelines below it shouldn&#039;t be too bad.&lt;br /&gt;
&lt;br /&gt;
You should plan on organizing your notes as follows:&lt;br /&gt;
* Organize them in at least the following sections: Topics &amp;amp; Readings and Notes.&lt;br /&gt;
* The Topics &amp;amp; Readings section lists the main topics covered in the class, e.g. &amp;quot;buffer overflows&amp;quot;.  Please use an unordered bulleted list (using *&#039;s in wiki markup).  In this section also list readings relevant to the lecture that were mentioned in class.&lt;br /&gt;
* Put your notes in the Notes section.&lt;br /&gt;
&lt;br /&gt;
Use (nested) lists if appropriate for the notes; however, please have some text that isn&#039;t bulleted.  Please try to make the notes even if you did not attend lecture; however, you don&#039;t need to cover every small bit of information that was covered.  In particular the notes do not need to include digressions into topics only tangentially related to the course.  Complete sentences are welcome but not required.&lt;br /&gt;
&lt;br /&gt;
==Security Reading Analysis Guidelines==&lt;br /&gt;
&lt;br /&gt;
A security reading analysis is a detailed analysis of a security research paper.  In it you analyze the key arguments of the paper and give your informed opinion.&lt;br /&gt;
&lt;br /&gt;
Most security papers can be classified as attack or defense papers.  You should analyze them differently.&lt;br /&gt;
&lt;br /&gt;
For attack papers:&lt;br /&gt;
* What systems are vulnerable to the attack?&lt;br /&gt;
* What is the nature of the vulnerability?&lt;br /&gt;
* What is the the exploit?  In particular, what is its technical core?&lt;br /&gt;
* How reproducible is the exploit?&lt;br /&gt;
* Are there likely to be many similar exploits, in the targeted system or other systems?&lt;br /&gt;
* How difficult will it be mitigate/fix the vulnerability in targeted systems?&lt;br /&gt;
&lt;br /&gt;
For defense papers:&lt;br /&gt;
* What is the security problem the paper addresses?  In what kind of threat model(s) does the problem exist?&lt;br /&gt;
* How significant is the problem?  Specifically, to what degree do existing solutions not work sufficiently well?&lt;br /&gt;
* What is the defense?  How does it work?&lt;br /&gt;
* To what degree will the defense potentially solve the targeted security problem?  In particular, how difficult will it be for attackers to adapt to this defense?&lt;br /&gt;
* What are the challenges facing deployment of the defense?  Are they likely to be overcome?&lt;br /&gt;
&lt;br /&gt;
For both kinds of papers, you should give your reaction by addressing questions like the following:&lt;br /&gt;
* Did you like the paper?&lt;br /&gt;
* Was it easy to understand, or was it hard to read?&lt;br /&gt;
* Did you learn much from the paper?&lt;br /&gt;
* How surprised were you by the result?&lt;br /&gt;
&lt;br /&gt;
Your analysis should not cover the above questions separately (this would tend to make for a very wordy analysis); instead, use these questions as a guide in writing a short essay (1-2 pages) on the paper in question.&lt;br /&gt;
&lt;br /&gt;
Each analysis will be graded out of 10 as follows:&lt;br /&gt;
* U: 3 for demonstrating understanding of the content (preferably without summarizing)&lt;br /&gt;
* T: 3 for technical analysis (does it work)&lt;br /&gt;
* C: 3 for contextual analysis (does it matter)&lt;br /&gt;
* V: 1 for your viewpoint&lt;/div&gt;</summary>
		<author><name>Michelberg</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=SystemsSec_2016W_Lecture_20&amp;diff=20885</id>
		<title>SystemsSec 2016W Lecture 20</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=SystemsSec_2016W_Lecture_20&amp;diff=20885"/>
		<updated>2016-03-27T05:52:35Z</updated>

		<summary type="html">&lt;p&gt;Michelberg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Topics and Readings==&lt;br /&gt;
*Distributed Denial of Service (DDoS) Attacks&lt;br /&gt;
**Seyed K. Fayaz et al., &#039;&#039;[https://www.usenix.org/conference/usenixsecurity15/technical-sessions/presentation/fayaz Bohatei: Flexible and Elastic DDoS Defense]&#039;&#039; (USENIX Security 2015)&lt;br /&gt;
*Certificate Pinning&lt;br /&gt;
**Marten Oltrogge and Yasemin Acar, &#039;&#039;[https://www.usenix.org/conference/usenixsecurity15/technical-sessions/presentation/oltrogge To Pin or Not to Pin—Helping App Developers Bullet Proof Their TLS Connections]&#039;&#039; (USENIX Security 2015)&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
===DoS (Denial of Service) Attacks===&lt;br /&gt;
====Introduction====&lt;br /&gt;
A &#039;&#039;&#039;DoS attack&#039;&#039;&#039; occurs when a host system floods a target system or any of its resources with illegitimate traffic, preventing the legitimate requests from being processed. This flood can involve network queues or even a server&#039;s CPU or RAM resources, though the readings concentrate primarily on the networking aspects.&lt;br /&gt;
*An example of a memory-based DoS attack involves Zip Bombs. A Zip Bomb is a large amount of arbitrary data that is efficiently compressed to a very small size. When it is opened by a server for malware detection purposes, it quickly exhausts the system&#039;s available RAM and potentially even its swap space, grinding the system to a hault.&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;network-based DoS attack&#039;&#039;&#039; stems from a problem in a computer network&#039;s traffic management. Many systems do not have proper protections in place to deal with attack-style requests, so they are typically treated as legitimate traffic and as a result are not ignored.&lt;br /&gt;
*An example of this is in a SYN flood attack, where the first part of a TCP connection (SYN message) is sent to the server without the attacker caring for the SYN-ACK response. The server will wait for the attacker&#039;s ACK message, keeping resources open for a set amount of time. When the server&#039;s resources eventually run out, the server will no longer accept new SYN requests from legitimate users.&lt;br /&gt;
&lt;br /&gt;
The resulting effects are pretty simple: you can&#039;t use the network as intended. There are too many packets being received by the server, and yours can&#039;t get through.&lt;br /&gt;
&lt;br /&gt;
DoS attacks can be on both public and private networks, though private attacks (e.g. preventing one specific n00b from accessing a lobby server after a CS:GO match didn&#039;t go your way) are far less of a concern than, say, a multinational banking server going down.&lt;br /&gt;
&lt;br /&gt;
====DDoS (Distributed Denial of Service) Attacks====&lt;br /&gt;
Because no one computer is powerful enough to flood any sensible network nowadays, to effectively perform a DoS attack the barrage is carried out by many different computers instead of just one. The amount of traffic generated by multiple computers can more effectively overwhelm a target network&#039;s resources, especially when the individual attacking hosts—which need not belong to the attacker, in the case of public servers or compromised systems—are limited in their own bandwidth as well. This is called a &#039;&#039;&#039;Distributed Denial of Service attack&#039;&#039;&#039;, due to its distributed nature.&lt;br /&gt;
&lt;br /&gt;
====Amplification Attack====&lt;br /&gt;
An &#039;&#039;&#039;amplification attack&#039;&#039;&#039; is an attack that is propagated on public networks. It is made possible by small requests that receive substantially larger responses from a server.&lt;br /&gt;
*An example discussed in class is the NTP (Network Time Protocol) server, which responds to a single UDP &amp;quot;monlist&amp;quot; packet with a list of the last 600 IP addresses connected [[http://arstechnica.com/security/2014/02/biggest-ddos-ever-aimed-at-cloudflares-content-delivery-network/ article]]. By spoofing the return address of many of these requests, a DDoS attack can be directed to a particular network.&lt;br /&gt;
&lt;br /&gt;
====Preventing a DoS Attack====&lt;br /&gt;
In order to minimize or prevent the effects of an attempted DoS attack, a server needs a way to differentiate legitimate traffic from illegitimate traffic—preferably before the spurious packets propagate through your network. This can be done by routing major points in a network through powerful, high-bandwidth computers to process incoming traffic before it is allowed to propagate to the less powerful routers and switches that would be more devastated by large scale traffic floods. This can present some problems, however:&lt;br /&gt;
&lt;br /&gt;
A traffic analogy:&lt;br /&gt;
*Many cars drive along a highway. They typically travel at high speeds, utilizing and filling up the 4 lanes available.&lt;br /&gt;
*When construction cuts the number of lanes down to one, every car must merge into one lane at the threshold. This slows traffic considerably.&lt;br /&gt;
*A preventative measure is to redirect the traffic around these narrow roads.&lt;br /&gt;
**Like with roads, a network&#039;s topology cannot typically reconfigure itself on the fly. Roads cannot be built and destroyed whenever traffic gets slow.&lt;br /&gt;
*Another method for preventing traffic is to just vaporize the cars.&lt;br /&gt;
&lt;br /&gt;
Going back to networking, the last point above is much easier when dealing with packets: just drop them. Typically legitimate traffic is of a certain type; we can drop the odd ones before they get to the inner network. Legitimate traffic can still be faked, but this can prevent &#039;&#039;some&#039;&#039; less sophisticated attack traffic. But for those remaining however, to know which packets are the ones that need to be dropped can be resource-intensive, even for powerful computers. Deep packet scanning or authentication works, but that takes time.&lt;br /&gt;
&lt;br /&gt;
====SDN (Software Defined Networking) and &#039;&#039;[https://github.com/ddos-defense/bohatei Bohatei]&#039;&#039;====&lt;br /&gt;
The actual process of networking is to route packets to their destinations. This is done by using routing tables and other networking rules. For high-speed routers, these rules are on specialized, super-fast pieces of silicon to make these table-lookups highly optimized and very efficient. Unfortunately it also makes it very &#039;&#039;proprietary&#039;&#039; and &#039;&#039;expensive&#039;&#039;. SDN (Software Defined Networking) removes some of these limitations by replacing the expensive silicon with flexible software designed for general purpose computers.&lt;br /&gt;
*Some of the operations are therefore going to be slower. This is a given, and likely a fair trade.&lt;br /&gt;
*This software is much more flexible and scalable than other physical DDoS protection deployments (expensive machines added to a network designed to handle DDoS-related attacks).&lt;br /&gt;
&lt;br /&gt;
The paper discusses planning (what attacks you &#039;&#039;could&#039;&#039; get, not what attacks you &#039;&#039;will&#039;&#039; get) for attacks:&lt;br /&gt;
*During certain attack scenarios, (e.g. SYN flood), it will route that specific type of traffic (i.e. SYN packets) using a different set of routing rules and network topologies. &lt;br /&gt;
**The new (temporary) topology is not optimal, but that is because it is case-specific. As a result, there will be a degradation of service (SYN packets are slower), but the rest of the network should be able to deal with it and recover after the attack is finished by reverting back to the more optimal topologies and routing tables.&lt;br /&gt;
**Going back to the traffic analogy, it would be like changing or redefining roads on the fly (changing directions of one-way streets... sort of like the Champlain Bridge between Ottawa and Gatineau).&lt;br /&gt;
&lt;br /&gt;
A caveat for the above, related to the paper:&lt;br /&gt;
*It is assuming that an entire network is running on SDN, which is not the case at present.&lt;br /&gt;
**The paper does not cover hybrid solutions.&lt;br /&gt;
**If a corporation is looking for DDoS protection services, it would likely be inclined to just add a specialized machine to handle that traffic instead of migrating the &#039;&#039;entire&#039;&#039; network over to SDN.&lt;br /&gt;
*All classes of attacks need to be defined in advance for Bohatei and other software to operate properly.&lt;br /&gt;
*The paper doesn&#039;t take into consideration friendly DDoS attacks (e.g. accidental DDoS when a low-traffic public webserver hosts content that suddenly goes viral).&lt;br /&gt;
&lt;br /&gt;
====Side Note====&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Attribution&#039;&#039;&#039;&#039;&#039; - The internet was not designed with metering, so how do you know who is responsible for a DDoS attack? When talking about attack packets (typically spoofed source addresses, sent from compromised machines), it is important to note that it is very difficult to legitimately trace these back to their sources. DDoS attacks are very &#039;&#039;noisy&#039;&#039; attack methods, meaning packets are leaked all over.&lt;br /&gt;
&lt;br /&gt;
==Pinning==&lt;br /&gt;
====CA (Certification Authority) Certificates &amp;amp; PKI (Public Key Infrastructure)====&lt;br /&gt;
A modern web browser has a built in set of CA (certification authority) certificates. When you visit a website, the SSL connection&#039;s CA is verified by the browser. If your connection&#039;s certificate is signed by something else (e.g. an unauthenticated/expired certificate), then the connection is dropped. TLS is reliable, but once keys are changed, those TLS connections are refused.&lt;br /&gt;
*Websites typically use only a certain set of certificates. For example, Facebook supposedly always goes with Verisign certificates (though upon verification it appears to be issued by DigiCert).&lt;br /&gt;
*Wildcard certificates are certificates that can be used for any number of subdomains (e.g. *.facebook.com).&lt;br /&gt;
**Wildcard certificates are typically less secure than individual (more specific) certificates.&lt;br /&gt;
**More specific certificates can be specified (i.e. &#039;&#039;pinned&#039;&#039;) for a stricter subset of those subdomains, however. This is called &#039;&#039;&#039;Certificate Pinning&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====Certificate Pinning====&lt;br /&gt;
Pinning is the specification of which certificates you explicitly trust. It is a way to make verification more trustworthy (at the cost of speed).&lt;br /&gt;
&lt;br /&gt;
Facebook example:&lt;br /&gt;
:Verisign → FB&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; → FB&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&lt;br /&gt;
*&#039;&#039;Verisign&#039;&#039; is the fingerprint (hashed public key used to represent a longer public key). This is the root certificate, and it is verified.&lt;br /&gt;
*Each certificate down the chain is more specific. &#039;&#039;FB&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&#039;&#039; is a more specific CA certificate than &#039;&#039;FB&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&#039;&#039;. If you &amp;quot;pin&amp;quot; a certificate further down the chain, you specify that you trust that less-generic certificate. More specific certificates are more secure.&lt;br /&gt;
&lt;br /&gt;
====Some Problems with Pinning====&lt;br /&gt;
As a developer, you cannot change which CA certificates a user&#039;s browser will accept. As an app developer, you can leave certificate pinning to third-party libraries and services.&lt;br /&gt;
*If you&#039;re using a third party library to handle certain networking connections however, there is a possibility that the library might be opening connections that you (the developer) know very little about.&lt;br /&gt;
**An example of this? &#039;&#039;Ad networks&#039;&#039;. They talk to many servers, sometimes without even the developer&#039;s knowledge.&lt;br /&gt;
&lt;br /&gt;
Certificates can instead be hard-coded to explicitly state which CA certificates your app deems acceptable. This can easily prevent connections to 50 servers when you only need 1, but certificates sometimes change. When that happens without the app being updated first, subsequent network connections are refused, and the app breaks.&lt;br /&gt;
&lt;br /&gt;
Organizations also aren&#039;t disciplined in how they use their certificates—or if they are, there is no standard between organizations. Facebook could be using upwards of 1,000 certificates. Same with Google. Or they could be using one.&lt;/div&gt;</summary>
		<author><name>Michelberg</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=SystemsSec_2016W_Lecture_20&amp;diff=20884</id>
		<title>SystemsSec 2016W Lecture 20</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=SystemsSec_2016W_Lecture_20&amp;diff=20884"/>
		<updated>2016-03-27T05:46:19Z</updated>

		<summary type="html">&lt;p&gt;Michelberg: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:DDoS and Pinning}}&lt;br /&gt;
==Topics and Readings==&lt;br /&gt;
*Distributed Denial of Service (DDoS) Attacks&lt;br /&gt;
**Seyed K. Fayaz et al., &#039;&#039;[https://www.usenix.org/conference/usenixsecurity15/technical-sessions/presentation/fayaz Bohatei: Flexible and Elastic DDoS Defense]&#039;&#039; (USENIX Security 2015)&lt;br /&gt;
*Certificate Pinning&lt;br /&gt;
**Marten Oltrogge and Yasemin Acar, &#039;&#039;[https://www.usenix.org/conference/usenixsecurity15/technical-sessions/presentation/oltrogge To Pin or Not to Pin—Helping App Developers Bullet Proof Their TLS Connections]&#039;&#039; (USENIX Security 2015)&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
===DoS (Denial of Service) Attacks===&lt;br /&gt;
====Introduction====&lt;br /&gt;
A &#039;&#039;&#039;DoS attack&#039;&#039;&#039; occurs when a host system floods a target system or any of its resources with illegitimate traffic, preventing the legitimate requests from being processed. This flood can involve network queues or even a server&#039;s CPU or RAM resources, though the readings concentrate primarily on the networking aspects.&lt;br /&gt;
*An example of a memory-based DoS attack involves Zip Bombs. A Zip Bomb is a large amount of arbitrary data that is efficiently compressed to a very small size. When it is opened by a server for malware detection purposes, it quickly exhausts the system&#039;s available RAM and potentially even its swap space, grinding the system to a hault.&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;network-based DoS attack&#039;&#039;&#039; stems from a problem in a computer network&#039;s traffic management. Many systems do not have proper protections in place to deal with attack-style requests, so they are typically treated as legitimate traffic and as a result are not ignored.&lt;br /&gt;
*An example of this is in a SYN flood attack, where the first part of a TCP connection (SYN message) is sent to the server without the attacker caring for the SYN-ACK response. The server will wait for the attacker&#039;s ACK message, keeping resources open for a set amount of time. When the server&#039;s resources eventually run out, the server will no longer accept new SYN requests from legitimate users.&lt;br /&gt;
&lt;br /&gt;
The resulting effects are pretty simple: you can&#039;t use the network as intended. There are too many packets being received by the server, and yours can&#039;t get through.&lt;br /&gt;
&lt;br /&gt;
DoS attacks can be on both public and private networks, though private attacks (e.g. preventing one specific n00b from accessing a lobby server after a CS:GO match didn&#039;t go your way) are far less of a concern than, say, a multinational banking server going down.&lt;br /&gt;
&lt;br /&gt;
====DDoS (Distributed Denial of Service) Attacks====&lt;br /&gt;
Because no one computer is powerful enough to flood any sensible network nowadays, to effectively perform a DoS attack the barrage is carried out by many different computers instead of just one. The amount of traffic generated by multiple computers can more effectively overwhelm a target network&#039;s resources, especially when the individual attacking hosts—which need not belong to the attacker, in the case of public servers or compromised systems—are limited in their own bandwidth as well. This is called a &#039;&#039;&#039;Distributed Denial of Service attack&#039;&#039;&#039;, due to its distributed nature.&lt;br /&gt;
&lt;br /&gt;
====Amplification Attack====&lt;br /&gt;
An &#039;&#039;&#039;amplification attack&#039;&#039;&#039; is an attack that is propagated on public networks. It is made possible by small requests that receive substantially larger responses from a server.&lt;br /&gt;
*An example discussed in class is the NTP (Network Time Protocol) server, which responds to a single UDP &amp;quot;monlist&amp;quot; packet with a list of the last 600 IP addresses connected [[http://arstechnica.com/security/2014/02/biggest-ddos-ever-aimed-at-cloudflares-content-delivery-network/ article]]. By spoofing the return address of many of these requests, a DDoS attack can be directed to a particular network.&lt;br /&gt;
&lt;br /&gt;
====Preventing a DoS Attack====&lt;br /&gt;
In order to minimize or prevent the effects of an attempted DoS attack, a server needs a way to differentiate legitimate traffic from illegitimate traffic—preferably before the spurious packets propagate through your network. This can be done by routing major points in a network through powerful, high-bandwidth computers to process incoming traffic before it is allowed to propagate to the less powerful routers and switches that would be more devastated by large scale traffic floods. This can present some problems, however:&lt;br /&gt;
&lt;br /&gt;
A traffic analogy:&lt;br /&gt;
*Many cars drive along a highway. They typically travel at high speeds, utilizing and filling up the 4 lanes available.&lt;br /&gt;
*When construction cuts the number of lanes down to one, every car must merge into one lane at the threshold. This slows traffic considerably.&lt;br /&gt;
*A preventative measure is to redirect the traffic around these narrow roads.&lt;br /&gt;
**Like with roads, a network&#039;s topology cannot typically reconfigure itself on the fly. Roads cannot be built and destroyed whenever traffic gets slow.&lt;br /&gt;
*Another method for preventing traffic is to just vaporize the cars.&lt;br /&gt;
&lt;br /&gt;
Going back to networking, the last point above is much easier when dealing with packets: just drop them. Typically legitimate traffic is of a certain type; we can drop the odd ones before they get to the inner network. Legitimate traffic can still be faked, but this can prevent &#039;&#039;some&#039;&#039; less sophisticated attack traffic. But for those remaining however, to know which packets are the ones that need to be dropped can be resource-intensive, even for powerful computers. Deep packet scanning or authentication works, but that takes time.&lt;br /&gt;
&lt;br /&gt;
====SDN (Software Defined Networking) and &#039;&#039;[https://github.com/ddos-defense/bohatei Bohatei]&#039;&#039;====&lt;br /&gt;
The actual process of networking is to route packets to their destinations. This is done by using routing tables and other networking rules. For high-speed routers, these rules are on specialized, super-fast pieces of silicon to make these table-lookups highly optimized and very efficient. Unfortunately it also makes it very &#039;&#039;proprietary&#039;&#039; and &#039;&#039;expensive&#039;&#039;. SDN (Software Defined Networking) removes some of these limitations by replacing the expensive silicon with flexible software designed for general purpose computers.&lt;br /&gt;
*Some of the operations are therefore going to be slower. This is a given, and likely a fair trade.&lt;br /&gt;
*This software is much more flexible and scalable than other physical DDoS protection deployments (expensive machines added to a network designed to handle DDoS-related attacks).&lt;br /&gt;
&lt;br /&gt;
The paper discusses planning (what attacks you &#039;&#039;could&#039;&#039; get, not what attacks you &#039;&#039;will&#039;&#039; get) for attacks:&lt;br /&gt;
*During certain attack scenarios, (e.g. SYN flood), it will route that specific type of traffic (i.e. SYN packets) using a different set of routing rules and network topologies. &lt;br /&gt;
**The new (temporary) topology is not optimal, but that is because it is case-specific. As a result, there will be a degradation of service (SYN packets are slower), but the rest of the network should be able to deal with it and recover after the attack is finished by reverting back to the more optimal topologies and routing tables.&lt;br /&gt;
**Going back to the traffic analogy, it would be like changing or redefining roads on the fly (changing directions of one-way streets... sort of like the Champlain Bridge between Ottawa and Gatineau).&lt;br /&gt;
&lt;br /&gt;
A caveat for the above, related to the paper:&lt;br /&gt;
*It is assuming that an entire network is running on SDN, which is not the case at present.&lt;br /&gt;
**The paper does not cover hybrid solutions.&lt;br /&gt;
**If a corporation is looking for DDoS protection services, it would likely be inclined to just add a specialized machine to handle that traffic instead of migrating the &#039;&#039;entire&#039;&#039; network over to SDN.&lt;br /&gt;
*All classes of attacks need to be defined in advance for Bohatei and other software to operate properly.&lt;br /&gt;
*The paper doesn&#039;t take into consideration friendly DDoS attacks (e.g. accidental DDoS when a low-traffic public webserver hosts content that suddenly goes viral).&lt;br /&gt;
&lt;br /&gt;
====Side Note====&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Attribution&#039;&#039;&#039;&#039;&#039; - The internet was not designed with metering, so how do you know who is responsible for a DDoS attack? When talking about attack packets (typically spoofed source addresses, sent from compromised machines), it is important to note that it is very difficult to legitimately trace these back to their sources. DDoS attacks are very &#039;&#039;noisy&#039;&#039; attack methods, meaning packets are leaked all over.&lt;br /&gt;
&lt;br /&gt;
==Pinning==&lt;br /&gt;
====CA (Certification Authority) Certificates &amp;amp; PKI (Public Key Infrastructure)====&lt;br /&gt;
A modern web browser has a built in set of CA (certification authority) certificates. When you visit a website, the SSL connection&#039;s CA is verified by the browser. If your connection&#039;s certificate is signed by something else (e.g. an unauthenticated/expired certificate), then the connection is dropped. TLS is reliable, but once keys are changed, those TLS connections are refused.&lt;br /&gt;
*Websites typically use only a certain set of certificates. For example, Facebook supposedly always goes with Verisign certificates (though upon verification it appears to be issued by DigiCert).&lt;br /&gt;
*Wildcard certificates are certificates that can be used for any number of subdomains (e.g. *.facebook.com).&lt;br /&gt;
**Wildcard certificates are typically less secure than individual (more specific) certificates.&lt;br /&gt;
**More specific certificates can be specified (i.e. &#039;&#039;pinned&#039;&#039;) for a stricter subset of those subdomains, however. This is called &#039;&#039;&#039;Certificate Pinning&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====Certificate Pinning====&lt;br /&gt;
Pinning is the specification of which certificates you explicitly trust. It is a way to make verification more trustworthy (at the cost of speed).&lt;br /&gt;
&lt;br /&gt;
Facebook example:&lt;br /&gt;
:Verisign → FB&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; → FB&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&lt;br /&gt;
*&#039;&#039;Verisign&#039;&#039; is the fingerprint (hashed public key used to represent a longer public key). This is the root certificate, and it is verified.&lt;br /&gt;
*Each certificate down the chain is more specific. &#039;&#039;FB&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&#039;&#039; is a more specific CA certificate than &#039;&#039;FB&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&#039;&#039;. If you &amp;quot;pin&amp;quot; a certificate further down the chain, you specify that you trust that less-generic certificate. More specific certificates are more secure.&lt;br /&gt;
&lt;br /&gt;
====Some Problems with Pinning====&lt;br /&gt;
As a developer, you cannot change which CA certificates a user&#039;s browser will accept. As an app developer, you can leave certificate pinning to third-party libraries and services.&lt;br /&gt;
*If you&#039;re using a third party library to handle certain networking connections however, there is a possibility that the library might be opening connections that you (the developer) know very little about.&lt;br /&gt;
**An example of this? &#039;&#039;Ad networks&#039;&#039;. They talk to many servers, sometimes without even the developer&#039;s knowledge.&lt;br /&gt;
&lt;br /&gt;
Certificates can instead be hard-coded to explicitly state which CA certificates your app deems acceptable. This can easily prevent connections to 50 servers when you only need 1, but certificates sometimes change. When that happens without the app being updated first, subsequent network connections are refused, and the app breaks.&lt;br /&gt;
&lt;br /&gt;
Organizations also aren&#039;t disciplined in how they use their certificates—or if they are, there is no standard between organizations. Facebook could be using upwards of 1,000 certificates. Same with Google. Or they could be using one.&lt;/div&gt;</summary>
		<author><name>Michelberg</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=SystemsSec_2016W_Lecture_20&amp;diff=20882</id>
		<title>SystemsSec 2016W Lecture 20</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=SystemsSec_2016W_Lecture_20&amp;diff=20882"/>
		<updated>2016-03-25T02:44:40Z</updated>

		<summary type="html">&lt;p&gt;Michelberg: Created page with &amp;quot;==Topics and Readings== *Distributed Denial of Service (DDoS) Attacks **Seyed K. Fayaz et al., &amp;#039;&amp;#039;[https://www.usenix.org/conference/usenixsecurity15/technical-sessions/present...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Topics and Readings==&lt;br /&gt;
*Distributed Denial of Service (DDoS) Attacks&lt;br /&gt;
**Seyed K. Fayaz et al., &#039;&#039;[https://www.usenix.org/conference/usenixsecurity15/technical-sessions/presentation/fayaz Bohatei: Flexible and Elastic DDoS Defense]&#039;&#039; (USENIX Security 2015)&lt;br /&gt;
*Certificate Pinning&lt;br /&gt;
**Marten Oltrogge and Yasemin Acar, &#039;&#039;[https://www.usenix.org/conference/usenixsecurity15/technical-sessions/presentation/oltrogge To Pin or Not to Pin—Helping App Developers Bullet Proof Their TLS Connections]&#039;&#039; (USENIX Security 2015)&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
===DoS (Denial of Service) Attacks===&lt;br /&gt;
====Introduction====&lt;br /&gt;
A &#039;&#039;&#039;DoS attack&#039;&#039;&#039; occurs when a host system floods a target system or any of its resources with illegitimate traffic, preventing the legitimate requests from being processed. This flood can involve network queues or even a server&#039;s CPU or RAM resources, though the readings concentrate primarily on the networking aspects.&lt;br /&gt;
*An example of a memory-based DoS attack involves Zip Bombs. A Zip Bomb is a large amount of arbitrary data that is efficiently compressed to a very small size. When it is opened by a server for malware detection purposes, it quickly exhausts the system&#039;s available RAM and potentially even its swap space, grinding the system to a hault.&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;network-based DoS attack&#039;&#039;&#039; stems from a problem in a computer network&#039;s traffic management. Many systems do not have proper protections in place to deal with attack-style requests, so they are typically treated as legitimate traffic and as a result are not ignored.&lt;br /&gt;
*An example of this is in a SYN flood attack, where the first part of a TCP connection (SYN message) is sent to the server without the attacker caring for the SYN-ACK response. The server will wait for the attacker&#039;s ACK message, keeping resources open for a set amount of time. When the server&#039;s resources eventually run out, the server will no longer accept new SYN requests from legitimate users.&lt;br /&gt;
&lt;br /&gt;
The resulting effects are pretty simple: you can&#039;t use the network as intended. There are too many packets being received by the server, and yours can&#039;t get through.&lt;br /&gt;
&lt;br /&gt;
DoS attacks can be on both public and private networks, though private attacks (e.g. preventing one specific n00b from accessing a lobby server after a CS:GO match didn&#039;t go your way) are far less of a concern than, say, a multinational banking server going down.&lt;br /&gt;
&lt;br /&gt;
====DDoS (Distributed Denial of Service) Attacks====&lt;br /&gt;
Because no one computer is powerful enough to flood any sensible network nowadays, to effectively perform a DoS attack the barrage is carried out by many different computers instead of just one. The amount of traffic generated by multiple computers can more effectively overwhelm a target network&#039;s resources, especially when the individual attacking hosts—which need not belong to the attacker, in the case of public servers or compromised systems—are limited in their own bandwidth as well. This is called a &#039;&#039;&#039;Distributed Denial of Service attack&#039;&#039;&#039;, due to its distributed nature.&lt;br /&gt;
&lt;br /&gt;
====Amplification Attack====&lt;br /&gt;
An &#039;&#039;&#039;amplification attack&#039;&#039;&#039; is an attack that is propagated on public networks. It is made possible by small requests that receive substantially larger responses from a server.&lt;br /&gt;
*An example discussed in class is the NTP (Network Time Protocol) server, which responds to a single UDP &amp;quot;monlist&amp;quot; packet with a list of the last 600 IP addresses connected [[http://arstechnica.com/security/2014/02/biggest-ddos-ever-aimed-at-cloudflares-content-delivery-network/ article]]. By spoofing the return address of many of these requests, a DDoS attack can be directed to a particular network.&lt;br /&gt;
&lt;br /&gt;
====Preventing a DoS Attack====&lt;br /&gt;
In order to minimize or prevent the effects of an attempted DoS attack, a server needs a way to differentiate legitimate traffic from illegitimate traffic—preferably before the spurious packets propagate through your network. This can be done by routing major points in a network through powerful, high-bandwidth computers to process incoming traffic before it is allowed to propagate to the less powerful routers and switches that would be more devastated by large scale traffic floods. This can present some problems, however:&lt;br /&gt;
&lt;br /&gt;
A traffic analogy:&lt;br /&gt;
*Many cars drive along a highway. They typically travel at high speeds, utilizing and filling up the 4 lanes available.&lt;br /&gt;
*When construction cuts the number of lanes down to one, every car must merge into one lane at the threshold. This slows traffic considerably.&lt;br /&gt;
*A preventative measure is to redirect the traffic around these narrow roads.&lt;br /&gt;
**Like with roads, a network&#039;s topology cannot typically reconfigure itself on the fly. Roads cannot be built and destroyed whenever traffic gets slow.&lt;br /&gt;
*Another method for preventing traffic is to just vaporize the cars.&lt;br /&gt;
&lt;br /&gt;
Going back to networking, the last point above is much easier when dealing with packets: just drop them. Typically legitimate traffic is of a certain type; we can drop the odd ones before they get to the inner network. Legitimate traffic can still be faked, but this can prevent &#039;&#039;some&#039;&#039; less sophisticated attack traffic. But for those remaining however, to know which packets are the ones that need to be dropped can be resource-intensive, even for powerful computers. Deep packet scanning or authentication works, but that takes time.&lt;br /&gt;
&lt;br /&gt;
====SDN (Software Defined Networking) and &#039;&#039;[https://github.com/ddos-defense/bohatei Bohatei]&#039;&#039;====&lt;br /&gt;
The actual process of networking is to route packets to their destinations. This is done by using routing tables and other networking rules. For high-speed routers, these rules are on specialized, super-fast pieces of silicon to make these table-lookups highly optimized and very efficient. Unfortunately it also makes it very &#039;&#039;proprietary&#039;&#039; and &#039;&#039;expensive&#039;&#039;. SDN (Software Defined Networking) removes some of these limitations by replacing the expensive silicon with flexible software designed for general purpose computers.&lt;br /&gt;
*Some of the operations are therefore going to be slower. This is a given, and likely a fair trade.&lt;br /&gt;
*This software is much more flexible and scalable than other physical DDoS protection deployments (expensive machines added to a network designed to handle DDoS-related attacks).&lt;br /&gt;
&lt;br /&gt;
The paper discusses planning (what attacks you &#039;&#039;could&#039;&#039; get, not what attacks you &#039;&#039;will&#039;&#039; get) for attacks:&lt;br /&gt;
*During certain attack scenarios, (e.g. SYN flood), it will route that specific type of traffic (i.e. SYN packets) using a different set of routing rules and network topologies. &lt;br /&gt;
**The new (temporary) topology is not optimal, but that is because it is case-specific. As a result, there will be a degradation of service (SYN packets are slower), but the rest of the network should be able to deal with it and recover after the attack is finished by reverting back to the more optimal topologies and routing tables.&lt;br /&gt;
**Going back to the traffic analogy, it would be like changing or redefining roads on the fly (changing directions of one-way streets... sort of like the Champlain Bridge between Ottawa and Gatineau).&lt;br /&gt;
&lt;br /&gt;
A caveat for the above, related to the paper:&lt;br /&gt;
*It is assuming that an entire network is running on SDN, which is not the case at present.&lt;br /&gt;
**The paper does not cover hybrid solutions.&lt;br /&gt;
**If a corporation is looking for DDoS protection services, it would likely be inclined to just add a specialized machine to handle that traffic instead of migrating the &#039;&#039;entire&#039;&#039; network over to SDN.&lt;br /&gt;
*All classes of attacks need to be defined in advance for Bohatei and other software to operate properly.&lt;br /&gt;
*The paper doesn&#039;t take into consideration friendly DDoS attacks (e.g. accidental DDoS when a low-traffic public webserver hosts content that suddenly goes viral).&lt;br /&gt;
&lt;br /&gt;
====Side Note====&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Attribution&#039;&#039;&#039;&#039;&#039; - The internet was not designed with metering, so how do you know who is responsible for a DDoS attack? When talking about attack packets (typically spoofed source addresses, sent from compromised machines), it is important to note that it is very difficult to legitimately trace these back to their sources. DDoS attacks are very &#039;&#039;noisy&#039;&#039; attack methods, meaning packets are leaked all over.&lt;br /&gt;
&lt;br /&gt;
==Pinning==&lt;br /&gt;
====CA (Certification Authority) Certificates &amp;amp; PKI (Public Key Infrastructure)====&lt;br /&gt;
A modern web browser has a built in set of CA (certification authority) certificates. When you visit a website, the SSL connection&#039;s CA is verified by the browser. If your connection&#039;s certificate is signed by something else (e.g. an unauthenticated/expired certificate), then the connection is dropped. TLS is reliable, but once keys are changed, those TLS connections are refused.&lt;br /&gt;
*Websites typically use only a certain set of certificates. For example, Facebook supposedly always goes with Verisign certificates (though upon verification it appears to be issued by DigiCert).&lt;br /&gt;
*Wildcard certificates are certificates that can be used for any number of subdomains (e.g. *.facebook.com).&lt;br /&gt;
**Wildcard certificates are typically less secure than individual (more specific) certificates.&lt;br /&gt;
**More specific certificates can be specified (i.e. &#039;&#039;pinned&#039;&#039;) for a stricter subset of those subdomains, however. This is called &#039;&#039;&#039;Certificate Pinning&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====Certificate Pinning====&lt;br /&gt;
Pinning is the specification of which certificates you explicitly trust. It is a way to make verification more trustworthy (at the cost of speed).&lt;br /&gt;
&lt;br /&gt;
Facebook example:&lt;br /&gt;
:Verisign → FB&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; → FB&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&lt;br /&gt;
*&#039;&#039;Verisign&#039;&#039; is the fingerprint (hashed public key used to represent a longer public key). This is the root certificate, and it is verified.&lt;br /&gt;
*Each certificate down the chain is more specific. &#039;&#039;FB&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;&#039;&#039; is a more specific CA certificate than &#039;&#039;FB&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&#039;&#039;. If you &amp;quot;pin&amp;quot; a certificate further down the chain, you specify that you trust that less-generic certificate. More specific certificates are more secure.&lt;br /&gt;
&lt;br /&gt;
====Some Problems with Pinning====&lt;br /&gt;
As a developer, you cannot change which CA certificates a user&#039;s browser will accept. As an app developer, you can leave certificate pinning to third-party libraries and services.&lt;br /&gt;
*If you&#039;re using a third party library to handle certain networking connections however, there is a possibility that the library might be opening connections that you (the developer) know very little about.&lt;br /&gt;
**An example of this? &#039;&#039;Ad networks&#039;&#039;. They talk to many servers, sometimes without even the developer&#039;s knowledge.&lt;br /&gt;
&lt;br /&gt;
Certificates can instead be hard-coded to explicitly state which CA certificates your app deems acceptable. This can easily prevent connections to 50 servers when you only need 1, but certificates sometimes change. When that happens without the app being updated first, subsequent network connections are refused, and the app breaks.&lt;br /&gt;
&lt;br /&gt;
Organizations also aren&#039;t disciplined in how they use their certificates—or if they are, there is no standard between organizations. Facebook could be using upwards of 1,000 certificates. Same with Google. Or they could be using one.&lt;/div&gt;</summary>
		<author><name>Michelberg</name></author>
	</entry>
</feed>