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
|
||||||
### CORBA
|
- Especially: Small TCB
|
||||||
### Web Services
|
- Maintain functionality of
|
||||||
### Kerberos
|
- Contemporary legacy OSes
|
||||||
## Summary
|
- 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
|
||||||
|
Integration of Security Policies
|
||||||
|
|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
|
### Web Services
|
||||||
|
Integration of Security Policies
|
||||||
|
|
||||||
|
Example: Apache Axis-2 Webserver
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### 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
|
||||||
|
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!
|