<?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=Trent</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=Trent"/>
	<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php/Special:Contributions/Trent"/>
	<updated>2026-06-02T22:25:39Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=SystemsSec_2018W_Lecture_16&amp;diff=21579</id>
		<title>SystemsSec 2018W Lecture 16</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=SystemsSec_2018W_Lecture_16&amp;diff=21579"/>
		<updated>2018-03-25T03:58:39Z</updated>

		<summary type="html">&lt;p&gt;Trent: separated definitions of signature based/specification based/anomaly dection intrusion detection from host based/network based/hybrid. Updated definitions.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Audio==&lt;br /&gt;
&lt;br /&gt;
[https://homeostasis.scs.carleton.ca/~soma/systemssec-2018w/lectures/comp4108-2018w-lec16-12Mar2018.m4a Lecture 16 Audio]&lt;br /&gt;
&lt;br /&gt;
==&#039;&#039;&#039;Intrusion Detection&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
Intrusion detection is normally an underappreciated aspect of Internet Security. Alerts are sent when we don’t know or we&#039;re not confident what the network traffic is. &lt;br /&gt;
Why Intrusion detection matters:  &lt;br /&gt;
                         1) Firewalls are not as effective.&lt;br /&gt;
                         2) Firewalls have limitations.      &lt;br /&gt;
&lt;br /&gt;
Intrusion detection is not anti-malware. It is meant to detect intrusions, but it may involve malware.  &lt;br /&gt;
&lt;br /&gt;
==Intrusion vs. malware==&lt;br /&gt;
 &lt;br /&gt;
                -ex. industrial espionage: We want access to a competitors system.&lt;br /&gt;
                   OPTIONS:&lt;br /&gt;
                          1) Gain access by malware via email or link etc.&lt;br /&gt;
                          2) Password hack as alternative.&lt;br /&gt;
                          3) Call help desk and impersonate.&lt;br /&gt;
&lt;br /&gt;
                 - In each example our goals have been satisfied but the means are different. &lt;br /&gt;
                 - intrusion detection focuses on the goals of the attacker and to stop them.        &lt;br /&gt;
                 - The attacker can still gain access by intrusion without using malware.                 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Three main methods of Intrusion Detection==&lt;br /&gt;
&lt;br /&gt;
                          1) Signature based - pattern recognition. You have a blacklist of signatures of attacks, and if it matches a signature, a warning is issued.&lt;br /&gt;
                          2) Specification based - based on rules. A whitelist of normal system specifications. If something not on your list is detected, a warning is issued.&lt;br /&gt;
                          3) Anomaly Detection - Normal vs abnormal. You have some way of detecting &amp;quot;weird&amp;quot;. Implies something adaptive.&lt;br /&gt;
Any of these 3 types of intrusion detection can be host based, network based, or hybrid (combination of host and network)&lt;br /&gt;
&lt;br /&gt;
==IDS In Linux==&lt;br /&gt;
                          1) Snort - Signature Based Detection&lt;br /&gt;
                          2) Bro - Specification Based Detection   &lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
Each method has a cost which has to be weighed ie. cpu cycles, to many false alarms and etc.&lt;br /&gt;
      &lt;br /&gt;
==Signature Based==&lt;br /&gt;
&lt;br /&gt;
Is based on code pattern and code expressions ie. worms and bytes associated the worm, regex and Bad packets&lt;br /&gt;
                       - Involves white list  &lt;br /&gt;
                       - We must know what signatures belong to the list there is no limit to bad signatures.   &lt;br /&gt;
                       - Only “known” attacks can be caught.&lt;br /&gt;
                       - How do you match bad code with legit behaviours?&lt;br /&gt;
                       - Easily evaded. Can hide code signature??? &lt;br /&gt;
&lt;br /&gt;
                       - Since we don&#039;t know for sure which signatures belong on the list. The network will generate lots of alarms, to lower false positives the detection rules may be adjusted which may  &lt;br /&gt;
                         compromise the system.&lt;br /&gt;
&lt;br /&gt;
                       - Why not update to defend code signatures? May effect existing software.&lt;br /&gt;
&lt;br /&gt;
               &lt;br /&gt;
&lt;br /&gt;
==Specification based== &lt;br /&gt;
&lt;br /&gt;
We know how the systems behaviour and rules on how it operate. Involves blacklists&lt;br /&gt;
   &lt;br /&gt;
   For Example: Assume three clients: A,B,C&lt;br /&gt;
&lt;br /&gt;
   Client A and B can communicate to each other:  Client A &amp;lt;----&amp;gt; Client B&lt;br /&gt;
   Client A and C can communicate to each other:  Client A &amp;lt;----&amp;gt; Client C             &lt;br /&gt;
&lt;br /&gt;
   But Client B can not talk to C &lt;br /&gt;
          &lt;br /&gt;
   -If packets are rerouted throught Client B &amp;lt;------&amp;gt; Client C then we consider an attack took place.&lt;br /&gt;
   -Can detect forged packets, specify the behaviour of every application. &lt;br /&gt;
   -Each client needs a separate installation and is a different specification. &lt;br /&gt;
   -In order for Specification Intrusion Detection to work we need to understand what are the networks need and to specify the rules. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  -Vary rare that one person understand the entire network and is able to write the rules for every client. &lt;br /&gt;
  -Borders on access control: Users will enable/disable permissions and will find methods to bypass access control.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Anomaly Detection== &lt;br /&gt;
&lt;br /&gt;
Whats normal vs whats abnormal? ie. computer is suddenly not running is it a driver issue? or actually malware?. Its adaptive, statistical information how the system behaves and deviations, involves some training.  &lt;br /&gt;
 &lt;br /&gt;
                      -Example someone wearing a fluorescent shirt? But is it dangerous?&lt;br /&gt;
                      -We care only if its dangerous, a mix of dangerous and weird &lt;br /&gt;
              &lt;br /&gt;
                      -We Must define whats weird and its connection to dangerous ie. a person walking in with a bazooka vs awkard guy wearing the fluorescent shirt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==History ( Anomaly Detection )==&lt;br /&gt;
&lt;br /&gt;
In the 1970&#039;s Ross Anderson and the US Airforce had a problem. They had computers with sensitive data and were worried spies may extract information. Access control existed but wasn&#039;t the best idea.&lt;br /&gt;
&lt;br /&gt;
MOS was then implemented to allow some users privileges to view these files based on levels. &lt;br /&gt;
&lt;br /&gt;
The level of clearance according to level:&lt;br /&gt;
&lt;br /&gt;
         Top secret&lt;br /&gt;
         secret   &lt;br /&gt;
         unclassified&lt;br /&gt;
&lt;br /&gt;
Problem: The document may become top secret if only one word needs to be kept secret. The rest of the document may not have to be classified  but the one word whould make the document classified. Gets complicated!!!.&lt;br /&gt;
&lt;br /&gt;
Didn&#039;t work since it the level of clearance can be bypassed the same way passwords can be bypassed.&lt;br /&gt;
&lt;br /&gt;
That&#039;s why audits were invented. &lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;Audit&#039;&#039;&#039;&lt;br /&gt;
An audit whould produce an audit trail of all the computer activities ie. log in,log out, what applications are being accessed and etc.&lt;br /&gt;
&lt;br /&gt;
The idea was a security officer whould monitor and view the audit logs then investigate if suspicious activity was detected.The process was simmilar to a financial audit but the pattern recognition was based on computers.&lt;br /&gt;
&lt;br /&gt;
Statistics based on a the audit trail whould be used to determine the users activities ie. how many times a user logged in. &lt;br /&gt;
&lt;br /&gt;
The fundamental issue: 1) Creating a model of what a human is doing is difficult. &lt;br /&gt;
                       2) Auditing was created with the intention of a human doing the processing.  &lt;br /&gt;
                       3) The computer does not have sufficient data to analyze.&lt;br /&gt;
&lt;br /&gt;
Possible solutions: machine learning ?? neuronetworks?? Spy on your email ( foolish idea)!!!!&lt;br /&gt;
                    Why is it &amp;quot;foolish&amp;quot; 1) We must be able to model the real world  &lt;br /&gt;
                                        2) We can&#039;t learn everything based on the limited scope.&lt;br /&gt;
                                        3) Assuming we really know someone?? Can we really perdict there behaviour? even surprises??&lt;br /&gt;
                                   &lt;br /&gt;
The computer can understand programs but not humans. It can detect weird program behaviour but not weird users and programs acting weird ie. backdoors and memory overflows.&lt;/div&gt;</summary>
		<author><name>Trent</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=SystemsSec_2018W_Lecture_4&amp;diff=21419</id>
		<title>SystemsSec 2018W Lecture 4</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=SystemsSec_2018W_Lecture_4&amp;diff=21419"/>
		<updated>2018-01-17T18:16:42Z</updated>

		<summary type="html">&lt;p&gt;Trent: Notes from class, first draft&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Notes =&lt;br /&gt;
&lt;br /&gt;
Today we discussed psswd as a way of touching on a number of security topics&lt;br /&gt;
&lt;br /&gt;
== passwd ==&lt;br /&gt;
&lt;br /&gt;
*the linux program for modifying a user password&lt;br /&gt;
*seems like a simple program, but has a number of features that could present a security concern.&lt;br /&gt;
*where are they stored?&lt;br /&gt;
*used to be in one file, including the hashed passwords (/etc/passwd)&lt;br /&gt;
*problem is that data in that if attackers can read the hashes, the hash can be cracked.&lt;br /&gt;
*on more modern systems, this is split into /etc/passwd and /etc/shadow&lt;br /&gt;
*root owns the file&lt;br /&gt;
*in order to modify the password, the program needs root priveleges in the classic model&lt;br /&gt;
**this gives the program the ability to modify any file on the system&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== the setuid bit ===&lt;br /&gt;
*every process has a user id (uid) and a group id (gid). Every file has bits that set the permissions for the users and groups associated with it.&lt;br /&gt;
*in addition to the classic read, write and execute (rwx) for the uid and gid, there are also setuid and setgid (s) bits&lt;br /&gt;
*without the set bit, when a new process is created, execv loads the new process, but the uid and gid don&#039;t change.&lt;br /&gt;
*setuid bit allows the new process to be created with a new uid (effective uid). It runs with the priveleges associated with the new uid.&lt;br /&gt;
&lt;br /&gt;
if a process has an effective uid of root, it can do basically anything to the system (the all powerful root model)&lt;br /&gt;
&lt;br /&gt;
for a program like passwd, it may seem very simple, but it does lots of things, including things that might make the system vulnerable to attack.&lt;br /&gt;
&lt;br /&gt;
*attack?&lt;br /&gt;
**the chroot option lets you change the etc/passwd for a subdirectory&lt;br /&gt;
**by using a symlink to a different file, you could take control of the system&lt;br /&gt;
&lt;br /&gt;
in general, &#039;&#039;&#039;flexibility is the enemy of security&#039;&#039;&#039;&lt;br /&gt;
*more functionality means more corner cases, and more things that you haven&#039;t thought about.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
how could we make the process less dangerous?&lt;br /&gt;
&lt;br /&gt;
could we run it without full root priveleges?&lt;br /&gt;
&lt;br /&gt;
we are going to have this binary. It will have root priveleges, it will have full control.&lt;br /&gt;
*how to we protect ourselves? what measures can we take?&lt;br /&gt;
**limit the scope of our mistakes&lt;br /&gt;
***limit the time that you have the dangerous priveleges&lt;br /&gt;
***limit the priveleges&lt;br /&gt;
***ideally audit to make sure that the priveleges were used appropriately.&lt;br /&gt;
&lt;br /&gt;
Just knowing about basic mechanisms, what could we do?&lt;br /&gt;
*separate the part of the program that needs priveleges from the parts that don&#039;t.&lt;br /&gt;
*analyzing user input is the most dangerous part, and should be separated as much as possible from parts of the program with powerful privegeles&lt;br /&gt;
**malious input attacks&lt;br /&gt;
&lt;br /&gt;
passwd is one of the simplest examples, and it touched on a number of topis:&lt;br /&gt;
*access control&lt;br /&gt;
*(least) privelege (time and space)&lt;br /&gt;
**for passwd, this can be a problem because there isa  file with everyone&#039;s password information. In order to change this file, you need root priveleges.&lt;br /&gt;
***Could you change that basic premise? You would have to split it out so that everyone had there own separate passwd files. This could cause problems for legacy software, and &lt;br /&gt;
&lt;br /&gt;
could even open up other potential security vulnerabilities.&lt;br /&gt;
*unsanitized input&lt;br /&gt;
**not all input is trusted. This what programs do: they process data.&lt;br /&gt;
*trust&lt;br /&gt;
**trust is hard.&lt;br /&gt;
**in computer security, trusted means that if it betrays you, it can hurt you.&lt;br /&gt;
**trust can be limited.&lt;br /&gt;
**like with people, applications should behave differently towards trusted and untrusted inputs&lt;br /&gt;
*kernel mechanisms&lt;br /&gt;
**the setuid bit&lt;br /&gt;
**if you have priveleges, they were usually granted by the kernel&lt;br /&gt;
*other attacks&lt;br /&gt;
**breaking the hash&lt;br /&gt;
&lt;br /&gt;
== Similar problems ==&lt;br /&gt;
&lt;br /&gt;
*What other command line tools have similar security issues?&lt;br /&gt;
**anything with the setuid bit, executables that run as other users.&lt;br /&gt;
*what binaries have setuid root?&lt;br /&gt;
**mount&lt;br /&gt;
**fuse&lt;br /&gt;
**cron&lt;br /&gt;
***for scheduling tasks.&lt;br /&gt;
**sudo&lt;br /&gt;
**ping&lt;br /&gt;
&lt;br /&gt;
Determining access by users and groups is coarse.&lt;br /&gt;
*root is a collection of priveleges&lt;br /&gt;
**could we have a subset of these priveleges?&lt;br /&gt;
*capababilities&lt;br /&gt;
**a differnt way of thinking about access control&lt;br /&gt;
**you can drop capabilities that you don&#039;t need.&lt;br /&gt;
**however, some capabilies are still very powerful, ie modify files or modify devices&lt;br /&gt;
*there are more complex mechanism for access control and privileges, but they often aren&#039;t used. In order for something to be used effectively, it needs to be understandable to &lt;br /&gt;
&lt;br /&gt;
people using it. Simple mechanisms remain widely used.&lt;br /&gt;
&lt;br /&gt;
== Exercises ==&lt;br /&gt;
Two exercies will be posted:&lt;br /&gt;
*Write your own version of passwd&lt;br /&gt;
**any language&lt;br /&gt;
**setuid root and change password&lt;br /&gt;
**think through the features and the implementation, and she security issues tha arise.&lt;br /&gt;
**process input carefully and drop unneccessary privelegs.&lt;br /&gt;
**for the write up, not looking for documentation about perfectly working code. what went wrong, what paths did you take, what issues did you have, what did you learn?&lt;br /&gt;
*What priveleges are required for networking?&lt;br /&gt;
**what operations require higher priveleges.&lt;br /&gt;
**at first distinction, it may seems simple (users can use the network, root can modify)&lt;br /&gt;
***however it is more complex. Can an application set up connection to a new wifi access point?&lt;br /&gt;
&lt;br /&gt;
If you have any ideas for exercises, feel free to discuss them in slack&lt;/div&gt;</summary>
		<author><name>Trent</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Computer_Systems_Security_(Winter_2018)&amp;diff=21418</id>
		<title>Computer Systems Security (Winter 2018)</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Computer_Systems_Security_(Winter_2018)&amp;diff=21418"/>
		<updated>2018-01-17T17:00:14Z</updated>

		<summary type="html">&lt;p&gt;Trent: /* January 14, 2018 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;This page is not yet finalized.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Course Outline==&lt;br /&gt;
&lt;br /&gt;
[[Computer Systems Security: Winter 2018 Course Outline|Course Outline]]&lt;br /&gt;
&lt;br /&gt;
==Schedule==&lt;br /&gt;
&lt;br /&gt;
===January 8, 2018===&lt;br /&gt;
&lt;br /&gt;
[[SystemsSec 2018W Lecture 1|Introduction]]&lt;br /&gt;
&lt;br /&gt;
===January 10, 2018===&lt;br /&gt;
&lt;br /&gt;
[[SystemsSec 2018W Lecture 2|Threat Modelling]]&lt;br /&gt;
&lt;br /&gt;
===January 12, 2018===&lt;br /&gt;
&lt;br /&gt;
[[SystemsSec 2018W Lecture 3|Common tools]]&lt;br /&gt;
&lt;br /&gt;
===January 17, 2018===&lt;br /&gt;
&lt;br /&gt;
[[SystemsSec 2018W Lecture 4|passwd]]&lt;br /&gt;
&lt;br /&gt;
===January 31, 2018===&lt;br /&gt;
&lt;br /&gt;
Assignment 1 due&lt;br /&gt;
&lt;br /&gt;
===February 14, 2018===&lt;br /&gt;
&lt;br /&gt;
Assignment 2 due&lt;br /&gt;
&lt;br /&gt;
===February 19 &amp;amp; 21, 2018===&lt;br /&gt;
&lt;br /&gt;
Winter break, no classes&lt;br /&gt;
&lt;br /&gt;
===February 26, 2018===&lt;br /&gt;
&lt;br /&gt;
Mid-term review&lt;br /&gt;
&lt;br /&gt;
===February 28, 2018===&lt;br /&gt;
&lt;br /&gt;
Mid-term Exam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===March 19, 2018===&lt;br /&gt;
&lt;br /&gt;
Assignment 3 due&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===April 4, 2018===&lt;br /&gt;
&lt;br /&gt;
Assignment 4 due&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===April 9, 2018===&lt;br /&gt;
&lt;br /&gt;
Last day of class&lt;/div&gt;</summary>
		<author><name>Trent</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=SystemsSec_2018W_Lecture_1&amp;diff=21406</id>
		<title>SystemsSec 2018W Lecture 1</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=SystemsSec_2018W_Lecture_1&amp;diff=21406"/>
		<updated>2018-01-16T01:56:52Z</updated>

		<summary type="html">&lt;p&gt;Trent: edits to format.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Notes =&lt;br /&gt;
Class 1, January 8&lt;br /&gt;
&lt;br /&gt;
== About the course: ==&lt;br /&gt;
Lectures will not be posted online.&lt;br /&gt;
&lt;br /&gt;
Notes will be posted online.&lt;br /&gt;
&lt;br /&gt;
In order to succeed, you need to come to class. Things will be discussed, and you need to be present.&lt;br /&gt;
&lt;br /&gt;
* Grading Criteria&lt;br /&gt;
** Midterm			25%&lt;br /&gt;
** Final			35%&lt;br /&gt;
** Participation		10%&lt;br /&gt;
** Experiences			10%&lt;br /&gt;
** Assignments (4)		20%&lt;br /&gt;
&lt;br /&gt;
The midterm and final will basically be short answer, possibly with some essay questions.&lt;br /&gt;
&lt;br /&gt;
The assignments will be in the style of the midterm and final, and will let you know how prepared you are for the exams. 2 assignments before the midterm and 2 after the midterm.&lt;br /&gt;
&lt;br /&gt;
Participation – being present, taking notes for the class, raising your hand, discussing things (not purely in class, also there will be a slack instance). &lt;br /&gt;
&lt;br /&gt;
If for some reason participation will be a problem for you, email the professor now to work it out)&lt;br /&gt;
&lt;br /&gt;
Experiences – in 2 portions reading and tools&lt;br /&gt;
&lt;br /&gt;
Reading – submit a reading response. Make a diligent effort to understand the reading before coming to class. Not a summary. What was your interaction with the reading?&lt;br /&gt;
&lt;br /&gt;
Tools – Computer Systems Security is fundamentally an applied field. It is tied to tools. Applied learning is important. Some exercises will be provided, but other things you will come across yourself (ie try to set up a firewall, or play around with iptables, you don’t have to succeed). Write a tool response. Plan on sitting down a couple of times and doing some hacking. It is important to get your hands dirty. To start, pick something that you can handle, and maybe ramp it up as the term goes along.&lt;br /&gt;
&lt;br /&gt;
Assignments will be submitted through CULearn.&lt;br /&gt;
&lt;br /&gt;
== The material covered today: ==&lt;br /&gt;
In the news recently: Meltdown and Spectre security flaws&lt;br /&gt;
&lt;br /&gt;
Meltdown in the Intel version, Spectre is the more general version.&lt;br /&gt;
&lt;br /&gt;
Basically every modern CPU that has high performance is affected&lt;br /&gt;
&lt;br /&gt;
Problem with processor design.&lt;br /&gt;
&lt;br /&gt;
Design strategy used to increase performance in modern processors allows for information leakage.&lt;br /&gt;
&lt;br /&gt;
Software programs and processes don&#039;t trust each other (and they shouldn&#039;t), but this flaw means that the barriers between them aren&#039;t fixed, you can read across them.&lt;br /&gt;
&lt;br /&gt;
It is a timing attack. The basis of timing attacks is that the time to compute depends on the data that you are computing. By knowing how long something takes to compute, you can figure out what is being computed. &lt;br /&gt;
&lt;br /&gt;
There was previously a well known timing attack on public key encryption, which was solved by responding to all requests in the same constant time.&lt;br /&gt;
&lt;br /&gt;
Meltdown and Spectre exploit branch predictors (ie, the processor speculates at which branch of the code will be run next and “runs ahead”. If it predicts correctly, there is a performance advantage). However, flaws were found that enabled kernel memory to be read, or a virtual machine to read data from another virtual machine running on the same processor. This particularly affects cloud computing.&lt;br /&gt;
&lt;br /&gt;
These types of flaws come because no one was thinking about the design from a security point of view. &lt;br /&gt;
&lt;br /&gt;
System Security is difficult. Attackers find flaws, defenders try to fix them. This happens in real systems, with enormous complexity. Theoretically we can design perfectly secure systems, but attackers will keep finding flaws. This game, as it is today, is weighted towards attackers. Rebalancing the game would require radical ideas.&lt;br /&gt;
&lt;br /&gt;
=== A (noncomprehensive) list of some security tools and methods: ===&lt;br /&gt;
*The purpose of this list is to show what a vast area computer security is, not making a list of everything that will be covered.&lt;br /&gt;
**Firewalls&lt;br /&gt;
**Antivirus/Antimalware&lt;br /&gt;
**Network monitoring/NIDS&lt;br /&gt;
**Reverse engineering.&lt;br /&gt;
**Cryptography (encryption/digital signing) (for system security, encryption is a tool of last resort)&lt;br /&gt;
**Air gaps&lt;br /&gt;
**Social Engineering&lt;br /&gt;
**(D)DoS&lt;br /&gt;
**White list&lt;br /&gt;
**Black list&lt;br /&gt;
**One way info-gate&lt;br /&gt;
**Virtual machines&lt;br /&gt;
**Encapsulation&lt;br /&gt;
**Virtual memory&lt;br /&gt;
**Formal verification&lt;br /&gt;
**Randomization (ASLR)&lt;br /&gt;
**Passwords&lt;br /&gt;
**Captchas&lt;br /&gt;
**Biometrics&lt;br /&gt;
**Location monitoring&lt;br /&gt;
**Mandatory access control (ie SELinux, very inconvenient)&lt;br /&gt;
**Discretionary access control (traditional Unix, Windows…)&lt;br /&gt;
**Automatic memory management (garbage collection)&lt;br /&gt;
**Static analysis&lt;br /&gt;
**Dynamic analysis&lt;br /&gt;
&lt;br /&gt;
Security can affect just about any area of computer science. If there I a branch that doesn’t appear to be affected by security, someone just hasn’t thought about it for long enough.&lt;br /&gt;
&lt;br /&gt;
This course isn’t about a specific tool or method, although many will be touched on. Primarily, we want to look at how to think about problems so that you see security issues. What can I do as an attacker? What can I do as a defender.&lt;br /&gt;
&lt;br /&gt;
There are always benefits and costs to any security decision, By strengthening security in one way, you can weaken it in another.&lt;br /&gt;
&lt;br /&gt;
For example, if you can’t risk lockouts and downtime, having passwords could cause problems.&lt;br /&gt;
&lt;br /&gt;
If you make usability too difficult, users can find ways to bypass your security measures. Security is always a secondary concern. The primary concerns of users are the tasks that they are using the computer systems to complete.&lt;br /&gt;
&lt;br /&gt;
The most secure system is one that is off, in a locked room in a secure facility. However, that system is also completely useless.&lt;br /&gt;
&lt;br /&gt;
Even if you do not become a computer security professional, you will design systems and make decisions that have security implications.&lt;br /&gt;
&lt;br /&gt;
=== Reverse Engineering ===&lt;br /&gt;
Picked from the list at random to discuss&lt;br /&gt;
&lt;br /&gt;
*What is it?&lt;br /&gt;
**Normal engineering process would be Design -&amp;gt; code -&amp;gt; system.&lt;br /&gt;
**Reverse engineering is reversing that process. Looking at the system to figure out the code and the design. &lt;br /&gt;
&lt;br /&gt;
*Who?&lt;br /&gt;
**Attackers&lt;br /&gt;
***analyzing defenses&lt;br /&gt;
****If you can figure out how it works, then you can find weaknesses and exploit them.&lt;br /&gt;
You become an expert safecracker by learning about safes. In order to find flaws in systems you must have a deep knowledge of those systems. What an attacker wishes to attack he must master, and by finding the flaw, the attacker &#039;&#039;&#039;proves his knowledge&#039;&#039;&#039;. It is like solving a puzzle. That is what drives the people developing these attacks. The negative impacts are often secondary.&lt;br /&gt;
&lt;br /&gt;
**Defenders&lt;br /&gt;
***Analyze defenses like attackers&lt;br /&gt;
***Analyze attacks &lt;br /&gt;
****(ie, figure out what a botnet does and how it works)&lt;br /&gt;
****Botnet – illegal cloud computing.&lt;br /&gt;
&lt;br /&gt;
=== DRM – Digital Rights Management ===&lt;br /&gt;
*People have been using reverse engineering crack DRM since DRM was released&lt;br /&gt;
*Interesting thing about DRM – it works to protect the content from the legitimate user that you want to have the content. &lt;br /&gt;
*Most secure current DRM- iOS. It is currently very difficult to crack (or “jailbreak”). In fact, it may even be “effectively unbreakable” because the cost and time involved in breaking it isn’t worth it.&lt;br /&gt;
*Jailbreaking iOS used to be very popular, as it allowed users to use their iPhones in ways that Apple didn’t allow. However, it would also negatively impact the security of the device. &lt;br /&gt;
*The jailbreak community showed Apple where the security flaws in their devices were found. Apple could then fix the flaws. The community would find new flaws, and Apple would fix them.&lt;br /&gt;
*This evolution or “trial by fire” is the only way that security gets strong. No theoretical security can be trusted until it has had people try to crack it.&lt;br /&gt;
&lt;br /&gt;
Today, attacks get put into usable software and distributed quickly. They spread fast.&lt;br /&gt;
&lt;br /&gt;
Nation-states pay lost of people to reverse engineer systems and find the security holes. They do it in secret, but they can’t keep secrets, so the attacks they create get leaked.&lt;br /&gt;
&lt;br /&gt;
The code of much modern malware that is causing problems has been written by &lt;br /&gt;
nation-states.&lt;br /&gt;
&lt;br /&gt;
We cannot make any system perfectly secure, but we don’t build systems under that assumption. We build systems that store large amounts of important data (how much data does Facebook have? Google? Governments?). We assume that we can do this securely, but we can’t.&lt;/div&gt;</summary>
		<author><name>Trent</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=SystemsSec_2018W_Lecture_1&amp;diff=21405</id>
		<title>SystemsSec 2018W Lecture 1</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=SystemsSec_2018W_Lecture_1&amp;diff=21405"/>
		<updated>2018-01-16T01:47:56Z</updated>

		<summary type="html">&lt;p&gt;Trent: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Notes =&lt;br /&gt;
Class 1, January 8&lt;br /&gt;
&lt;br /&gt;
== About the course: ==&lt;br /&gt;
Lectures will not be posted online.&lt;br /&gt;
Notes will be posted online.&lt;br /&gt;
In order to succeed, you need to come to class. Things will be discussed, and you need to be present.&lt;br /&gt;
&lt;br /&gt;
* Grading Criteria&lt;br /&gt;
** Midterm			25%&lt;br /&gt;
** Final			35%&lt;br /&gt;
** Participation		10%&lt;br /&gt;
** Experiences			10%&lt;br /&gt;
** Assignments (4)		20%&lt;br /&gt;
&lt;br /&gt;
The midterm and final will basically be short answer, possibly with some essay questions.&lt;br /&gt;
The assignments will be in the style of the midterm and final, and will let you know how prepared you are for the exams. 2 assignments before the midterm and 2 after the midterm.&lt;br /&gt;
Participation – being present, taking notes for the class, raising your hand, discussing things (not purely in class, also there will be a slack instance). If for some reason participation will be a problem for you, email the professor now to work it out)&lt;br /&gt;
Experiences – in 2 portions reading and tools&lt;br /&gt;
Reading – submit a reading response. Make a diligent effort to understand the reading before coming to class. Not a summary. What was your interaction with the reading?&lt;br /&gt;
Tools – Computer Systems Security is fundamentally an applied field. It is tied to tools. Applied learning is important. Some exercises will be provided, but other things you will come across yourself (ie try to set up a firewall, or play around with iptables, you don’t have to succeed). Write a tool response. Plan on sitting down a couple of times and doing some hacking. It is important to get your hands dirty. To start, pick something that you can handle, and maybe ramp it up as the term goes along.&lt;br /&gt;
Assignments will be submitted through CULearn.&lt;br /&gt;
&lt;br /&gt;
== The material covered today: ==&lt;br /&gt;
In the news recently: Meltdown and Spectre security flaws&lt;br /&gt;
Meltdown in the Intel version, Spectre is the more general version.&lt;br /&gt;
Basically every modern CPU that has high performance is affected&lt;br /&gt;
Problem with processor design.&lt;br /&gt;
Design strategy used to increase performance in modern processors allows for information leakage.&lt;br /&gt;
&lt;br /&gt;
Software programs and processes don&#039;t trust each other (and they shouldn&#039;t), but this flaw means that the barriers between them aren&#039;t fixed, you can read across them.&lt;br /&gt;
It is a timing attack. The basis of timing attacks is that the time to compute depends on the data that you are computing. By knowing how long something takes to compute, you can figure out what is being computed. &lt;br /&gt;
There was previously a well known timing attack on public key encryption, which was solved by responding to all requests in the same constant time.&lt;br /&gt;
Meltdown and Spectre exploit branch predictors (ie, the processor speculates at which branch of the code will be run next and “runs ahead”. If it predicts correctly, there is a performance advantage). However, flaws were found that enabled kernel memory to be read, or a virtual machine to read data from another virtual machine running on the same processor. This particularly affects cloud computing.&lt;br /&gt;
&lt;br /&gt;
These types of flaws come because no one was thinking about the design from a security point of view. &lt;br /&gt;
System Security is difficult. Attackers find flaws, defenders try to fix them. This happens in real systems, with enormous complexity. Theoretically we can design perfectly secure systems, but attackers will keep finding flaws. This game, as it is today, is weighted towards attackers. Rebalancing the game would require radical ideas.&lt;br /&gt;
&lt;br /&gt;
=== A (noncomprehensive) list of some security tools and methods: ===&lt;br /&gt;
*The purpose of this list is to show what a vast area computer security is, not making a list of everything that will be covered.&lt;br /&gt;
Firewalls&lt;br /&gt;
Antivirus/Antimalware&lt;br /&gt;
Network monitoring/NIDS&lt;br /&gt;
Reverse engineering.&lt;br /&gt;
Cryptography (encryption/digital signing) (for system security, encryption is a tool of last resort)&lt;br /&gt;
Air gaps&lt;br /&gt;
Social Engineering&lt;br /&gt;
(D)DoS&lt;br /&gt;
White list&lt;br /&gt;
Black list&lt;br /&gt;
One way info-gate&lt;br /&gt;
Virtual machines&lt;br /&gt;
Encapsulation&lt;br /&gt;
Virtual memory&lt;br /&gt;
Formal verification&lt;br /&gt;
Randomization (ASLR)&lt;br /&gt;
Passwords&lt;br /&gt;
Captchas&lt;br /&gt;
Biometrics&lt;br /&gt;
Location monitoring&lt;br /&gt;
Mandatory access control (ie SELinux, very inconvenient)&lt;br /&gt;
Discretionary access control (traditional Unix, Windows…)&lt;br /&gt;
Automatic memory management (garbage collection)&lt;br /&gt;
Static analysis&lt;br /&gt;
Dynamic analysis&lt;br /&gt;
&lt;br /&gt;
Security can affect just about any area of computer science. If there I a branch that doesn’t appear to be affected by security, someone just hasn’t thought about it for long enough.&lt;br /&gt;
This course isn’t about a specific tool or method, although many will be touched on. Primarily, we want to look at how to think about problems so that you see security issues. What can I do as an attacker? What can I do as a defender.&lt;br /&gt;
There are always benefits and costs to any security decision, By strengthening security in one way, you can weaken it in another.&lt;br /&gt;
For example, if you can’t risk lockouts and downtime, having passwords could cause problems.&lt;br /&gt;
If you make usability too difficult, users can find ways to bypass your security measures. Security is always a secondary concern. The primary concerns of users are the tasks that they are using the computer systems to complete.&lt;br /&gt;
The most secure system is one that is off, in a locked room in a secure facility. However, that system is also completely useless.&lt;br /&gt;
Even if you do not become a computer security professional, you will design systems and make decisions that have security implications.&lt;br /&gt;
&lt;br /&gt;
=== Reverse Engineering ===&lt;br /&gt;
Picked from the list at random to discuss&lt;br /&gt;
&lt;br /&gt;
What is it?&lt;br /&gt;
Normal engineering process would be Design -&amp;gt; code -&amp;gt; system.&lt;br /&gt;
Reverse engineering is reversing that process. Looking at the system to figure out the code and the design. &lt;br /&gt;
&lt;br /&gt;
Who?&lt;br /&gt;
*Attackers&lt;br /&gt;
**analyzing defenses&lt;br /&gt;
***If you can figure out how it works, then you can find weaknesses and exploit them.&lt;br /&gt;
You become an expert safecracker by learning about safes. In order to find flaws in systems you must have a deep knowledge of those systems. What an attacker wishes to attack he must master, and by finding the flaw, the attacker &#039;&#039;&#039;proves his knowledge&#039;&#039;&#039;. It is like solving a puzzle. That is what drives the people developing these attacks. The negative impacts are often secondary.&lt;br /&gt;
&lt;br /&gt;
*Defenders&lt;br /&gt;
**Analyze defenses like attackers&lt;br /&gt;
**Analyze attacks &lt;br /&gt;
***(ie, figure out what a botnet does and how it works)&lt;br /&gt;
***Botnet – illegal cloud computing.&lt;br /&gt;
&lt;br /&gt;
=== DRM – Digital Rights Management ===&lt;br /&gt;
*People have been using reverse engineering crack DRM since DRM was released&lt;br /&gt;
*Interesting thing about DRM – it works to protect the content from the legitimate user that you want to have the content. &lt;br /&gt;
*Most secure current DRM- iOS. It is currently very difficult to crack (or “jailbreak”). In fact, it may even be “effectively unbreakable” because the cost and time involved in breaking it isn’t worth it.&lt;br /&gt;
*Jailbreaking iOS used to be very popular, as it allowed users to use their iPhones in ways that Apple didn’t allow. However, it would also negatively impact the security of the device. &lt;br /&gt;
*The jailbreak community showed Apple where the security flaws in their devices were found. Apple could then fix the flaws. The community would find new flaws, and Apple would fix them.&lt;br /&gt;
*This evolution or “trial by fire” is the only way that security gets strong. No theoretical security can be trusted until it has had people try to crack it.&lt;br /&gt;
&lt;br /&gt;
Today, attacks get put into usable software and distributed quickly. They spread fast.&lt;br /&gt;
Nation-states pay lost of people to reverse engineer systems and find the security holes. They do it in secret, but they can’t keep secrets, so the attacks they create get leaked.&lt;br /&gt;
The code of much modern malware that is causing problems has been written by nation-states.&lt;br /&gt;
&lt;br /&gt;
We cannot make any system perfectly secure, but we don’t build systems under that assumption. We build systems that store large amounts of important data (how much data does Facebook have? Google? Governments?). We assume that we can do this securely, but we can’t.&lt;/div&gt;</summary>
		<author><name>Trent</name></author>
	</entry>
</feed>