Kapitel 6
							
								
								
									
										
											BIN
										
									
								
								Assets/Systemsicherheit-apache-axis-2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 34 KiB | 
							
								
								
									
										
											BIN
										
									
								
								Assets/Systemsicherheit-cobra-1.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 72 KiB | 
							
								
								
									
										
											BIN
										
									
								
								Assets/Systemsicherheit-cobra-2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 138 KiB | 
							
								
								
									
										
											BIN
										
									
								
								Assets/Systemsicherheit-kerberos-login.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 34 KiB | 
							
								
								
									
										
											BIN
										
									
								
								Assets/Systemsicherheit-middleware-level-policy.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 46 KiB | 
							
								
								
									
										
											BIN
										
									
								
								Assets/Systemsicherheit-nizza-application-view.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 12 KiB | 
							
								
								
									
										
											BIN
										
									
								
								Assets/Systemsicherheit-nizza-enigmail-tcb.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 38 KiB | 
							
								
								
									
										
											BIN
										
									
								
								Assets/Systemsicherheit-nizza-enigmail.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 34 KiB | 
							
								
								
									
										
											BIN
										
									
								
								Assets/Systemsicherheit-nizza-os-view.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 35 KiB | 
							
								
								
									
										
											BIN
										
									
								
								Assets/Systemsicherheit-object-managers.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 57 KiB | 
							
								
								
									
										
											BIN
										
									
								
								Assets/Systemsicherheit-policy-controlled-app-application.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 33 KiB | 
							
								
								
									
										
											BIN
										
									
								
								Assets/Systemsicherheit-policy-controlled-app-tcp-functional.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 35 KiB | 
| After Width: | Height: | Size: 37 KiB | 
							
								
								
									
										
											BIN
										
									
								
								Assets/Systemsicherheit-policy-controlled-os-tcp-functional.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 47 KiB | 
| After Width: | Height: | Size: 46 KiB | 
							
								
								
									
										
											BIN
										
									
								
								Assets/Systemsicherheit-policy-controlled-os.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 46 KiB | 
							
								
								
									
										
											BIN
										
									
								
								Assets/Systemsicherheit-policy-microkernel-os-policy.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 42 KiB | 
							
								
								
									
										
											BIN
										
									
								
								Assets/Systemsicherheit-policy-microkernel-tcp-functional.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 47 KiB | 
							
								
								
									
										
											BIN
										
									
								
								Assets/Systemsicherheit-security-architecture-distributed.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 71 KiB | 
							
								
								
									
										
											BIN
										
									
								
								Assets/Systemsicherheit-selinux-architecture.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 67 KiB | 
| @ -136,14 +136,20 @@ | |||||||
|       - [Authentication Protocols](#authentication-protocols) |       - [Authentication Protocols](#authentication-protocols) | ||||||
|   - [Summary](#summary-6) |   - [Summary](#summary-6) | ||||||
| - [Security Architectures](#security-architectures) | - [Security Architectures](#security-architectures) | ||||||
|   - [Design Principles](#design-principles) |   - [Architecture Design Principles](#architecture-design-principles) | ||||||
|   - [Operating Systems Architectures](#operating-systems-architectures) |     - [The Reference Monitor Principles](#the-reference-monitor-principles) | ||||||
|  |     - [Implementation Layers](#implementation-layers) | ||||||
|  |   - [Security Architectures of Operating Systems](#security-architectures-of-operating-systems) | ||||||
|     - [Nizza](#nizza) |     - [Nizza](#nizza) | ||||||
|     - [SELinux](#selinux) |     - [Security Enhanced Linux (SELinux)](#security-enhanced-linux-selinux) | ||||||
|   - [Distributed Systems Architectures](#distributed-systems-architectures) |   - [Security Architectures of Distributed Systems](#security-architectures-of-distributed-systems) | ||||||
|     - [CORBA](#corba) |     - [CORBA](#corba) | ||||||
|     - [Web Services](#web-services) |     - [Web Services](#web-services) | ||||||
|     - [Kerberos](#kerberos) |     - [Kerberos](#kerberos) | ||||||
|  |       - [Kerberos Cryptography: Inside Kerberos Tickets](#kerberos-cryptography-inside-kerberos-tickets) | ||||||
|  |       - [Kerberos Login](#kerberos-login) | ||||||
|  |       - [Using a Server](#using-a-server) | ||||||
|  |       - [Kerberos Summary](#kerberos-summary) | ||||||
|   - [Summary](#summary-7) |   - [Summary](#summary-7) | ||||||
| 
 | 
 | ||||||
| # Introduction | # Introduction | ||||||
| @ -3899,7 +3905,7 @@ Verification: By comparing probe with reference pattern | |||||||
| 
 | 
 | ||||||
| Some numbers (2008) : | Some numbers (2008) : | ||||||
| -  Finger print readers: FMR 0,01% -0,0001% (1 von 10^4 - 106 ), FNMR 1% | -  Finger print readers: FMR 0,01% -0,0001% (1 von 10^4 - 106 ), FNMR 1% | ||||||
| -  Iris readers: FMR »0,0008% | -  Iris readers: FMR $\sim$ 0,0008% | ||||||
| 
 | 
 | ||||||
| More Technical Issues | More Technical Issues | ||||||
| -  Susceptible wrt. environmental conditions | -  Susceptible wrt. environmental conditions | ||||||
| @ -4093,12 +4099,488 @@ Basic Security Mechanisms of a TCB | |||||||
|   - $\rightarrow$ set of all security mechanisms $\not =$ security architecture |   - $\rightarrow$ set of all security mechanisms $\not =$ security architecture | ||||||
| 
 | 
 | ||||||
| # Security Architectures | # Security Architectures | ||||||
| ## Design Principles | 
 | ||||||
| ## Operating Systems Architectures | > Trusted Computing Base (TCB) | ||||||
|  | > The set of functionsof an IT system that are necessary and sufficient for implementing its security properties $\rightarrow$  Isolation, Policy Enforcement, Authentication ... | ||||||
|  | 
 | ||||||
|  | > Security Architecture | ||||||
|  | > The part(s) of a system’s architecture that implement its TCB $\rightarrow$  Security policies, Security Server (PDP) and PEPs, authentication components, ... | ||||||
|  | 
 | ||||||
|  | > Security Mechanisms | ||||||
|  | > Algorithms and data structures for implementing functions of a TCB $\rightarrow$  Isolation mechanisms, communication mechanisms, authentication mechanisms, ... | ||||||
|  | 
 | ||||||
|  | $\rightarrow$ TCB $\sim$ runtime environment for security policies | ||||||
|  | 
 | ||||||
|  | Security architectures have been around for a long time ... | ||||||
|  | - Architecture Components | ||||||
|  |   - Buildings, walls, windows, doors, moats, draw bridges | ||||||
|  | - Architecture | ||||||
|  |   - Component arrangement and interaction | ||||||
|  | - Goal of a Security Architecture: Build a stronghold such that security policies can be enforced | ||||||
|  |   - Presence of necessary components/mechanisms | ||||||
|  |   - Totality of interaction control ("mediation") | ||||||
|  |   - Tamperproofness | ||||||
|  |   - $\rightarrow$ architecture design principles | ||||||
|  | 
 | ||||||
|  | Check your trust in | ||||||
|  | - Completeness of access mediation (and its verification!) | ||||||
|  | - Policy tamperproofness(and its verification!) | ||||||
|  | - TCB correctness (and its verification!) | ||||||
|  | 
 | ||||||
|  | Problem Areas | ||||||
|  | - PDPs (policy decision points) | ||||||
|  | - PEPs (policy enforcement points) | ||||||
|  | 
 | ||||||
|  | are | ||||||
|  | - Scattered among many OS components $\rightarrow$  Problem of security architecture design | ||||||
|  | - Not robust | ||||||
|  |   - Notisolated from errors within the entire OS implementation | ||||||
|  |   - Especially in dynamically loaded OS modules | ||||||
|  |   - $\rightarrow$  Problem of security architecture implementation | ||||||
|  | 
 | ||||||
|  | ... and that is not all | ||||||
|  | 
 | ||||||
|  | Linux set-user-id programs | ||||||
|  | - Execute security-sensitive operations | ||||||
|  | - Adopt different effective user id during execution | ||||||
|  | - Thushave different privileges | ||||||
|  | - Especially those of user id "root" | ||||||
|  | - $\rightarrow$  each such program is part of the TCB! | ||||||
|  | - e.g. | ||||||
|  |   - /usr/bin/passwd (> 50 y old open sourceprogram) | ||||||
|  |   - /opt/google/chrome/chrome-sandbox (author: Google!) | ||||||
|  |   - /usr/lib/virtualbox/VirtualBox (author: Oracle!) | ||||||
|  | 
 | ||||||
|  | Problem | ||||||
|  | - OSes/Middleware/Applications are big | ||||||
|  | - Only a small set of their functions logically belongs to the TCB | ||||||
|  | - $\rightarrow$ Security architecture design such that TCB functions are collected in an | ||||||
|  |   - not bypassable (total access mediation), | ||||||
|  |   - isolated (tamperproofness), | ||||||
|  |   - trustworthy (verifiable correctness) core | ||||||
|  |   - $\rightarrow$  Security architecture implementation such that these properties are enforced | ||||||
|  | 
 | ||||||
|  | ## Architecture Design Principles | ||||||
|  | Goal | ||||||
|  | - Complete | ||||||
|  | - Tamperproof | ||||||
|  | - Verifiably correct | ||||||
|  | - control of all security-relevant actions in a system | ||||||
|  | 
 | ||||||
|  | Approach: Definitions of fundamental security architecture design principles | ||||||
|  | 
 | ||||||
|  | ### The Reference Monitor Principles | ||||||
|  | There Exists an Architecture Component that is | ||||||
|  | - (RM 1) Involved in any subject/object interaction | ||||||
|  |   - $\rightarrow$  _total mediation property_ | ||||||
|  | - (RM 2) Well-isolated from the rest of the system | ||||||
|  |   - $\rightarrow$  _tamperproofness_ | ||||||
|  | - (RM 3) Small and well-structured enough to analyze correctness by formal methods | ||||||
|  |   - $\rightarrow$  _verifiability_ | ||||||
|  | 
 | ||||||
|  | A security architecture component built along these principles: "Reference Monitor" | ||||||
|  | 
 | ||||||
|  | Idea | ||||||
|  | - 1 PDP (policy implementation) | ||||||
|  | - many PEPs (interceptors, policy enforcement) | ||||||
|  | 
 | ||||||
|  | Reference Monitor | ||||||
|  | - Core component of a TCB | ||||||
|  | - Typically encloses | ||||||
|  |   - Security policy implementation(s) (PDP) | ||||||
|  |     - Model state (e.g. ACM, subject set, entity attributes) | ||||||
|  |     - Model behavioral logic (e.g.authorization scheme) | ||||||
|  |   - Enforcement mechanisms: PEPs | ||||||
|  | - Typically excludes (due to complexity and size, RM 3) | ||||||
|  |   - Authentication | ||||||
|  |   - Cryptographic mechanisms | ||||||
|  |   - Sometimes also model state (e.g.ACLs) | ||||||
|  | 
 | ||||||
|  | Consequences of (RM 3) for TCBs | ||||||
|  | - Few functions $\rightarrow$ small size (LoC) | ||||||
|  | - Simple functions $\rightarrow$ low complexity | ||||||
|  | - Strong isolation | ||||||
|  | - Precisely known perimeter | ||||||
|  | 
 | ||||||
|  | ### Implementation Layers | ||||||
|  | - Policy-controlled OS - Monolithic OS Kernel  | ||||||
|  |   - OS level policy:  | ||||||
|  |   - TCB - Functional View:  | ||||||
|  |   - TCB - Implementation View:  | ||||||
|  | - Policy-controlled OS - Microkernel Architecture ( Nizza ) | ||||||
|  |   - OS level policy:  | ||||||
|  |   - TCP functional view:  | ||||||
|  |   - TCP implementation view:  | ||||||
|  | - Policy-controlled Application: Middleware-level Policy | ||||||
|  |   -  | ||||||
|  |   - Example: Web Services on Apache Axis-2 Webservers | ||||||
|  | - Policy-controlled Application | ||||||
|  |   - Application-level Policy  | ||||||
|  |   - TCB - Functional View  | ||||||
|  |   - TCB - Implementation View  | ||||||
|  | 
 | ||||||
|  | State of the Art | ||||||
|  | - Numerous rather weak implementations in | ||||||
|  |   - Commodity OSes | ||||||
|  |   - Middleware | ||||||
|  |   - Applications | ||||||
|  | - Stronger approaches in | ||||||
|  |   - Microkernel OSes (e.g.L4/Nizza) | ||||||
|  |   - Security-focused OSes(e.g.SELinux, Trusted BSD, Open Solaris) | ||||||
|  | 
 | ||||||
|  | ## Security Architectures of Operating Systems | ||||||
|  | Goal: OS security architecture such that reference monitor principles | ||||||
|  | - (RM 1) Involved in any subject/object interaction | ||||||
|  | - (RM 2) Well isolated from the rest of the system | ||||||
|  | - (RM 3) Small and well-structured | ||||||
|  | 
 | ||||||
|  | for security policy are satisfied | ||||||
|  | 
 | ||||||
| ### Nizza | ### Nizza | ||||||
| ### SELinux  | Goals | ||||||
| ## Distributed Systems Architectures | - RM 1 - RM 3 | ||||||
|  |   - Especially: Small TCB | ||||||
|  | - Maintain functionality of | ||||||
|  |   - Contemporary legacy OSes | ||||||
|  |   - Legacy Applications ("legacy" = unmodified for security) | ||||||
|  | 
 | ||||||
|  | Concepts | ||||||
|  | - Reference monitor principles: Separation of OS, Applications into security-critical vs. non-critical components | ||||||
|  |   - $\rightarrow$  precise identification of a (minimal) TCB | ||||||
|  | - Maintain functionality | ||||||
|  |   - $\rightarrow$  Paravirtualization of standard, legacy OSes | ||||||
|  | 
 | ||||||
|  | OS View | ||||||
|  |  | ||||||
|  | - Trustworthymicrokernel | ||||||
|  | - Trustworthybasic services | ||||||
|  | - Nottrustworthy (paravirtualized) legacy OS | ||||||
|  | 
 | ||||||
|  | Application View | ||||||
|  | - Vulnerability increaseswith growing complexity | ||||||
|  |   - $\rightarrow$  reduce vulnerability of security-critical code by | ||||||
|  | - Software functionality separation | ||||||
|  | - Isolation of functional domains | ||||||
|  |   -  | ||||||
|  | - Example: Email Client | ||||||
|  |   - Non-critical: reading/composing/sending emails | ||||||
|  |   - Critical: signing emails (email-client $\leftrightarrow$ Enigmail Signer) | ||||||
|  | 
 | ||||||
|  | Putting it all Together | ||||||
|  |  | ||||||
|  | 
 | ||||||
|  |  | ||||||
|  | 
 | ||||||
|  | Size of TCB: 105 000 LoC | ||||||
|  | - Microkernel (L4/Fiasco): 15 000 LoC | ||||||
|  | - Trustworthy basic services: 35 000 LoC | ||||||
|  | - Enigmail Signer: 55 000 LoC | ||||||
|  | 
 | ||||||
|  | Results | ||||||
|  | - Code size of TCB reduced by 2 orders of magnitude (100 000 LOC vs. 10 000 000 LOC!) | ||||||
|  | - Functionality of legacy OSes and applications preserved | ||||||
|  | 
 | ||||||
|  | Costs | ||||||
|  | - (Moderate) performance penalties | ||||||
|  | - Paravirtualization of legacy OS | ||||||
|  | - Decomposition of trusted applications | ||||||
|  | 
 | ||||||
|  | ### Security Enhanced Linux (SELinux) | ||||||
|  | Goal: Security-aware OS | ||||||
|  | - State-of-the-art OS | ||||||
|  | - State-of-the-art security paradigms | ||||||
|  | 
 | ||||||
|  | Idea: Policy-controlled (Linux) OS kernel | ||||||
|  | 
 | ||||||
|  | Approach SELinux = | ||||||
|  | - Linux (DAC, IBAC) | ||||||
|  | - MAC, RBAC, ABAC, TAM, MLS | ||||||
|  | 
 | ||||||
|  | Security Policies in SELinux | ||||||
|  | - Implementation by new OS abstractions (unheard of for > 40 years...) | ||||||
|  | - Somewhat comparable to " process" abstraction! | ||||||
|  |   - Specification ... | ||||||
|  |     - of a process is a program: algorithm implemented in formal language (C++, Rust, Python, Java, ...) | ||||||
|  |     - of a security policy is a security model: rule set in formal language (predicate logic, automaton theory, DynaMo, ...) | ||||||
|  |   - Runtime environment (RTE) ... | ||||||
|  |     - of a process is OSprocess management $\rightarrow$ RTE for application-level programs | ||||||
|  |     - of a security policy is OS security Server $\rightarrow$ RTE for kernel-level policies | ||||||
|  | 
 | ||||||
|  | SELinux Architecture | ||||||
|  |  | ||||||
|  | - Policy-aware Security Server (policy decision point, PDP) | ||||||
|  |   - Policy RTE in kernel‘s protectiondomain | ||||||
|  | - Interceptors (policy enforcement points, PEPs) | ||||||
|  |   - Total interaction control in object managers (part of Linux Security Module Framework) | ||||||
|  | 
 | ||||||
|  | Implementation Concepts | ||||||
|  | - Reference Monitor Principles | ||||||
|  |   - Total mediation of security-relevant interactions | ||||||
|  |     - $\rightarrow$ placement of PEPs: Integration into object managers | ||||||
|  |   - Tamperproofness of policy implementation | ||||||
|  |     - $\rightarrow$  placement of PDP: Integration into kernel ( security server ) | ||||||
|  | - Policy Support | ||||||
|  |   - Remember: Security policies require | ||||||
|  |   - Authenticity of entities: Unique subject/object identifiers | ||||||
|  |   - Policy-specific entity attributes (type, role, MLS label) | ||||||
|  | - Problem in Linux, | ||||||
|  |   - Subject identifiers (PIDs) or object identifiers (i-node numbers)are | ||||||
|  |     - neither unique | ||||||
|  |     - nor are of uniform type | ||||||
|  |   - $\rightarrow$  security identifier (SID) | ||||||
|  |   - Policy-specific subject/object attributes (type, role, MLS label) are | ||||||
|  |     - not part of subject/object metadata (task struct, i-node struct) | ||||||
|  |     - $\rightarrow$  security context | ||||||
|  |   - $\rightarrow$  Approach: Extensions of process/file/socket...-management | ||||||
|  | 
 | ||||||
|  | Authenticity of Entities | ||||||
|  | - Object managers help: implement injective mapping SÈO $\rightarrow$  SID | ||||||
|  |   - SID created by security server | ||||||
|  |   - Mapping of SIDs to objects by object managers | ||||||
|  |  | ||||||
|  | 
 | ||||||
|  | Entity Attributes | ||||||
|  | - Security policy implements injective mapping SID $\rightarrow$  security context | ||||||
|  | - security contexts creation according to policy-specific labeling rules | ||||||
|  | - Entry in SID $\rightarrow$ security context mapping table | ||||||
|  | 
 | ||||||
|  | Security Context contains | ||||||
|  | - Standard entity attributes such as | ||||||
|  |   - Unique user ID | ||||||
|  |   - Role | ||||||
|  |   - Type (user_t , tomCat_t, ...) | ||||||
|  |   - Class (process, file, ...) | ||||||
|  | - Policy-specific entity attributes such as | ||||||
|  |   - Confidentiality/clearance level (e.g.MLS label) | ||||||
|  | - is implemented as | ||||||
|  |   - A text string with policy-dependent format: | ||||||
|  |     ```bash | ||||||
|  |     $ ps -Z | ||||||
|  |     bob:doctor_r:shell_t:s0-s0:c0.c255 4056 pts/2 00:00:00 bash | ||||||
|  |     ``` | ||||||
|  | 
 | ||||||
|  | Problem: Security contexts of persistent Entities | ||||||
|  | - Policies not aware of persistency of entities, e.g. files (that continue existing over system shutdowns) | ||||||
|  |   - $\rightarrow$ persistency of security contexts is job of object managers | ||||||
|  | - Layout of object metadata (e.g. inodes in a file system) is file system standard | ||||||
|  |   - $\rightarrow$ security contexts cannot be integrated in i-nodes (their implementation: policy-independent)! | ||||||
|  | 
 | ||||||
|  | Solution | ||||||
|  | - Persistent objects additionally have (OM-local) persistent SID : "PSID" | ||||||
|  | - OMs map these to SID | ||||||
|  | - 3 invisible storage areas ($\sim$  files) in persistent memory(HDD, SSD) implementing | ||||||
|  |   - Security context of file system itself (label) | ||||||
|  |   - Bijective mapping: inode $\rightarrow$  PSID | ||||||
|  |   - Bijective mapping: PSID $\rightarrow$  security context | ||||||
|  | 
 | ||||||
|  | Access Vector Cache(AVC) | ||||||
|  | - Located in object managers (user level) resp. in Security Server (kernel level) | ||||||
|  | - Caches access decisions | ||||||
|  | 
 | ||||||
|  | Summary SELinux | ||||||
|  | - Motivation | ||||||
|  |   - Out-of-date and weak security mechanisms in contemporary commodity OSs | ||||||
|  | - Consequence | ||||||
|  |   - Insufficient and inadequate security specification paradigms | ||||||
|  |   - Numerous vulnerabilities | ||||||
|  | - Approach | ||||||
|  |   - New OS abstraction: Security policies | ||||||
|  |   - $\rightarrow$  policy-controlled OS: DAC & MAC, IBAC, RBAC, ABAC, TAM, MLS | ||||||
|  | 
 | ||||||
|  | RM Evaluation of SELinux | ||||||
|  | - Compliance with Reference Monitor Principles | ||||||
|  |   1. Total Mediation Property (placement of PEPs) (currently) done manually | ||||||
|  |   2. Tamperproofness of Policy Implementation | ||||||
|  |       - Fundamental problem in monolithic software architectures | ||||||
|  |       - $\rightarrow$  TCB implementation vulnerable from entire OS kernel code | ||||||
|  |       - Security server | ||||||
|  |       - All object managers | ||||||
|  |       - Memory management | ||||||
|  |       - IPC implementation | ||||||
|  |       - I/O system | ||||||
|  |       - It can be done: Nizza | ||||||
|  |   3. Verifiability | ||||||
|  |       - Size and complexity of policy (reference policy $\sim$  50.000 rules) $\rightarrow$ analysis tools | ||||||
|  |       - Policy‘s RTE claim to be universal | ||||||
|  |       - Completeness of PEPs | ||||||
|  |       - Policy isolation | ||||||
|  | 
 | ||||||
|  | ## Security Architectures of Distributed Systems | ||||||
|  | Scenario:  | ||||||
|  | 
 | ||||||
| ### CORBA | ### CORBA | ||||||
|  | Integration of Security Policies | ||||||
|  | 
 | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 
 | ||||||
| ### Web Services | ### Web Services | ||||||
|  | Integration of Security Policies | ||||||
|  | 
 | ||||||
|  | Example: Apache Axis-2 Webserver | ||||||
|  | 
 | ||||||
|  |  | ||||||
|  | 
 | ||||||
| ### Kerberos | ### Kerberos | ||||||
|  | Authentication and authorization architecture for distributed systems with closed user groups( $\rightarrow$ static sets of subjects) | ||||||
|  | 
 | ||||||
|  | Target Scenario: | ||||||
|  | - Distributed system run by single organization | ||||||
|  | - Workstations and Servers | ||||||
|  | - 2 Kerberos servers | ||||||
|  |   - Authentication Server (AS) | ||||||
|  |   - Authorization Server (TGS) | ||||||
|  | 
 | ||||||
|  | History: | ||||||
|  | - MIT _Athena_ project, started 1986 | ||||||
|  | - Concepts are part of CORBA‘s _Basic CORBA Security Architecture_ specification | ||||||
|  | - Originally designed for: 650 workstations, 65 servers, 5000 users (1988) | ||||||
|  | 
 | ||||||
|  | Principal Architecture Components | ||||||
|  | - Authentication Server (AS) | ||||||
|  |   - Authenticates users | ||||||
|  |     - Based on (symmetric) key shared between user and AS | ||||||
|  |     - Result: electronic ID card (authenticator) | ||||||
|  |   - Authorizes use of TGS | ||||||
|  |     - Based on key shared between AS and TGS | ||||||
|  |     - Result: ticket (capability) for TGS | ||||||
|  | - Ticket Granting Server (TGS) | ||||||
|  |   - Issues tickets for all servers | ||||||
|  |     - Based on key shared between TGS and respective server | ||||||
|  |     - Result: ticket(s) for server(s) | ||||||
|  | - Kerberos database | ||||||
|  |   - Contains for each user and server a mapping $⟨user, server⟩\rightarrow$ authentication key | ||||||
|  |   - Used by AS | ||||||
|  |   - Is multiply replicated (availability, scalability) | ||||||
|  | 
 | ||||||
|  | Typical Use Case | ||||||
|  | 1. Authentication, then request for TGS ticket | ||||||
|  | 2. Authenticator, TGS-Ticket | ||||||
|  | 3. Request for further server tickets | ||||||
|  | 4. Server tickets | ||||||
|  | 5. Service request: Servers decide based on | ||||||
|  |   - authenticator of client | ||||||
|  |   - server ticket | ||||||
|  |   - (tentatively) local security policies | ||||||
|  | 
 | ||||||
|  | #### Kerberos Cryptography: Inside Kerberos Tickets | ||||||
|  | Tickets | ||||||
|  | - Issued by Ticket Granting Server | ||||||
|  | - Specify right of one client to use one server (personalized capability) | ||||||
|  | - Limited lifetime (to make cryptographic attacks difficult) | ||||||
|  |   - $\sim$ 1 day; balance between secure and convenient | ||||||
|  |   - Short: inconvenient but more secure (if ticket is stolen it soon expires) | ||||||
|  |   - Long: insecure but more convenient (no need for frequent renewal) | ||||||
|  | - Can be used multiply while valid | ||||||
|  | - Are sealed by TGS with key of server | ||||||
|  | 
 | ||||||
|  | $T_{Client/Server}=\{Client, Server, Client.NetworkAddress, Timestamp, Lifetime, SessionKey_{Client/Server}\}_{KTGS/Server}$ | ||||||
|  | 
 | ||||||
|  | Provisions against Misuse | ||||||
|  | - Tampering by client to fabricate rights for different server | ||||||
|  |   - $\rightarrow$  provision: guarantee of integrity by MAC using KTGS/Server | ||||||
|  | - Use by third party intercepting ticket | ||||||
|  |   - $\rightarrow$  provision: personalization by | ||||||
|  |   - Name and network address of client together with | ||||||
|  |     - Limited lifetime | ||||||
|  |     - Authenticator of client $\rightarrow$  | ||||||
|  | 
 | ||||||
|  | Authenticators | ||||||
|  | - Proof of identity of client to server | ||||||
|  | - Created using SessionKeyClient/Server | ||||||
|  |   - $\rightarrow$  can be created and checked only by | ||||||
|  |   - Client (without help by AS, because client knows session key (see below)) | ||||||
|  |   - Server | ||||||
|  |   - TGS (trusted) | ||||||
|  | - Can be used exactly once | ||||||
|  |   - $\rightarrow$  prevent replay attacks by checking freshness | ||||||
|  | 
 | ||||||
|  | $A_{Client}=\{Client, Client.NetworkAddress, Timestamp\}_{SessionKey_{Client/Server}}$ | ||||||
|  | 
 | ||||||
|  | #### Kerberos Login | ||||||
|  | The Complete Process | ||||||
|  |  | ||||||
|  | 
 | ||||||
|  | Single Steps: | ||||||
|  | 1. Alice tells her name | ||||||
|  | 2. Alice’s workstation requests authentication | ||||||
|  | 3. The AS | ||||||
|  |   - Creates fresh timestamp | ||||||
|  |   - Creates a fresh session key for Alice's communication with the TGS: $SessionKey_{Alice/TGS}$ | ||||||
|  |   - Creates Alice’s ticket for TGS and encrypts it with $K_{AS/TGS}$ (so Alice cannot modify it): $Ticket_{Alice/TGS}=\{Alice, TGS, ..., SessionKey_{Alice/TGS}\}_{K_{AS/TGS}}$ | ||||||
|  |   - Encrypts everything with $K_{Alice/AS}$ (so only Alice can read the session key and the TGS-Ticket) $\{TGS, Timestamp , SessionKey_{Alice/TGS}, Ticket_{Alice/TGS}\}_{K_{Alice/AS}}$ | ||||||
|  | 4. Alice’s workstation | ||||||
|  |   - Now has ${TGS, Timestamp , SessionKey_{Alice/TGS} , Ticket_{Alice/TGS}\}_{K_{Alice/AS}}$ | ||||||
|  |   - Requests Alice’s password | ||||||
|  |   - Computes $K_{Alice/AS}$ from password using a cryptographic hash function | ||||||
|  |   - Uses it to decrypt above message from AS | ||||||
|  | - Result: Alice’s workstation has | ||||||
|  |   - Session key for TGS session: $SessionKey_{Alice/TGS}$ | ||||||
|  |   - Ticket for TGS: $Ticket_{Alice/TGS}$ | ||||||
|  |   - The means to create an authenticator | ||||||
|  | 
 | ||||||
|  | #### Using a Server | ||||||
|  | Authentication (bidirectional) | ||||||
|  | 
 | ||||||
|  | 2 Steps | ||||||
|  | 1. Authentication of client to server | ||||||
|  | 2. Authentication of server to client (optional) | ||||||
|  | 
 | ||||||
|  | 1. Authentication of Client | ||||||
|  |   - Assumptions | ||||||
|  |     - Alice has session key | ||||||
|  |     - Alice has server ticket | ||||||
|  |   1. Alice assembles authenticator $A_{Alice}=\{Alice,Alice’s network address,timestamp\}_{SessionKey_{Alice/Server}}$ Only Alice can do that, because only she knows $SessionKey_{Alice/Server}$ | ||||||
|  |   2. Alice sends $Ticket_{Alice/Server}, A_{Alice}$ to Server | ||||||
|  |   3. Server decrypts ticket and thus gets session key; thus it can decrypt $A_{Alice}$ and check: | ||||||
|  |       - Freshness | ||||||
|  |       - Compliance of names in ticket and authenticator | ||||||
|  |       - Origin of message (as told by network interface) and network address in authenticator | ||||||
|  | 2. Authentication of Servers | ||||||
|  |   - Server sends $\{Timestamp+1\}_{SessionKey_{Alice/Server}}$ to Alice | ||||||
|  |   - Can only be done by principal that knows $SessionKey_{Alice/Server}$ | ||||||
|  |   - This can only be a server that can extract the session key from the ticket $Ticket_{Alice/Server}=\{Alice,Server ,..., SessionKey_{Alice/Server}\}_{K_{TGS/Server}}$ | ||||||
|  | 
 | ||||||
|  | Getting a Ticket for a Server | ||||||
|  | - Are valid for a pair ⟨client, server⟩ | ||||||
|  | - Are issued (but for TGS-Ticket itself) only by TGS | ||||||
|  | - Ticket request to TGS: $(server, TGS ticket, authenticator)$ | ||||||
|  | 
 | ||||||
|  | TGS: | ||||||
|  | - Checks $Ticket_{Alice/TGS}$ and $authenticator$ | ||||||
|  | - Generates session key for client and server: $SessionKey_{Alice/Server}$ | ||||||
|  | - Generates ticket: $Ticket_{Alice/Server}$ | ||||||
|  | - Encrypts both using shared session key $\{Server, SessionKey_{Alice/Server}, Ticket_{Alice/Server}\}_{SessionKey_{Alice/TGS}}$ | ||||||
|  | 
 | ||||||
|  | #### Kerberos Summary | ||||||
|  | Distributed Authentication and Authorization Architecture | ||||||
|  | - 2 Security servers | ||||||
|  |   - Authentication | ||||||
|  |   - Authorization | ||||||
|  | - Cryptographic mechanisms for | ||||||
|  |   - Authentication | ||||||
|  |   - Symmetric encryption: Confidentiality + Integrity + Authenticity | ||||||
|  |     - of communication | ||||||
|  |     - of tickets and authenticators | ||||||
|  | - Kerberos TCB: TCBs of all OSes+ | ||||||
|  |   - Authentication Server | ||||||
|  |   - Ticket GrantingServer | ||||||
|  |   - Kerberos database | ||||||
|  |   - All PDPs and PEPs on the servers | ||||||
|  |   - Time server ($\rightarrow$ signed time stamps!) | ||||||
|  | 
 | ||||||
| ## Summary | ## Summary | ||||||
|  | Current TCBs | ||||||
|  | - Huge | ||||||
|  | - Inhomogeneous | ||||||
|  | - Distributed | ||||||
|  | - Hard to identify precisely | ||||||
|  | 
 | ||||||
|  | Security Architectures’ Problem | ||||||
|  | - Compliance to reference monitor principles | ||||||
|  | 
 | ||||||
|  | Case Studies | ||||||
|  | - Nizza | ||||||
|  | - SELinux | ||||||
|  | - CORBA, Web Services, Kerberos | ||||||
|  | - $\rightarrow$ Huge challenges! | ||||||