Security of Electronic Voting
Download
Report
Transcript Security of Electronic Voting
Authentication
James Walden
Northern Kentucky University
Access Control
1. What is Access Control?
2. Access Control Matrix Model
Protection State Transitions
Special Rights
Principle of Attenuation of Privilege
3. Groups and Roles
4. Implementation of the Access Control Matrix
Access Control Lists: by column (object).
Capabilities: by row (subject).
5. Access Control Flaws
6. Web Access Control
CSC 666: Secure Software Engineering
What is Access Control?
“Its function is to control which principals
(persons, processes, machines, …) have
access to which resources in the system—
which files they can read, which programs
they can execute, how they share data
with other principals, and so on.”
–Ross Anderson, Security Engineering
CSC 666: Secure Software Engineering
Access Control is Pervasive
Application
Middleware
Operating System
Hardware
CSC 666: Secure Software Engineering
Access Control is Pervasive
1. Application
Complex, custom security policy.
Ex: Amazon account: wish list, reviews, CC
2. Middleware
Database, system libraries, 3rd party software
Ex: Credit card authorization center
3. Operating System
File ACLs, IPC
4. Hardware
Memory management, hardware device access.
CSC 666: Secure Software Engineering
Access Control Matrix
Precisely describes protection state of system.
P
Q
Sets of system states:
P: Set of all possible states.
Q: Set of allowed states, according to security
policy.
P-Q: Set of disallowed states.
ACM describes the set of states Q.
CSC 666: Secure Software Engineering
Access Control Matrix
objects (entities)
subjects
o1 … om s1 … sn
s1
s2
…
sn
Objects O = { o1,…,om }
All protected entities.
Subjects S = { s1,…,sn }
Active entities, S O
Rights R = { r1,…,rk }
Entries A[si, oj] R
A[si, oj] = { rx, …, ry }
means the subject si
has rights rx, …, ry over
the object oj.
CSC 666: Secure Software Engineering
ACM Example
Processes bash(UID=1024), passwd(UID=0)
Files: .bashrc, /etc/passwd
Rights: r, w, x
.bashrc /etc/passwd bash
bash
rwx
r
rw
passwd rwx
rw
rw
CSC 666: Secure Software Engineering
passwd
rw
rw
Web ACM Example
CSC 666: Secure Software Engineering
Copy Right
Allows possessor to give rights to another
Often attached to a right, so only applies
to that right
r is read right that cannot be copied
rc is read right that can be copied
Is copy flag copied when giving r rights?
Depends on model, instantiation of model
CSC 666: Secure Software Engineering
Ownership Right
Usually allows possessor to change
entries in ACM column.
Owner of object can add or remove rights for
other subjects.
May depend on what system allows
- Can’t give rights to specific (set of) users.
- Can’t pass copy flag to specific (set of) users.
CSC 666: Secure Software Engineering
Attenuation of Privilege
Principle: Subject may not give rights it
does not possess to another.
Restricts addition of rights within a system.
Usually ignored for owner
- Why? Owner should have ability to recover rights
on object if desired.
CSC 666: Secure Software Engineering
How can we implement the ACM?
Problem: scale
Thousands of subjects.
Millions of objects.
Yet most entries are blank or default.
Solutions
Group subjects together as a single entities
- Groups and Roles
Implement by row: Capabilities
Implement by column: Access Control Lists
CSC 666: Secure Software Engineering
Groups and Roles
Collect subjects together to express:
Need to share objects.
Security categories (e.g., admin, faculty,
student, guest.)
role: group tying membership to function.
Problem: loss of granularity.
CSC 666: Secure Software Engineering
Capabilities
Implement ACM by row.
Access Control associated with subject.
Example: Web authenticated session IDs.
Example: UNIX file descriptors
System checks ACL on file open, returns fd.
Process subsequently uses fd to read and write file.
If ACL changes, process still has access via fd.
User
ls
homedir
rootdir
james
rx
rw
r
CSC 666: Secure Software Engineering
Capability Questions
1. How to prevent user from modifying
capabilities?
2. How to prevent user from copying
capabilities?
3. How to revoke rights to an object?
CSC 666: Secure Software Engineering
How to prevent modification?
Memory protection
Capabilities are readable, but not writable.
Indirection
Capability is pointer to per-process table
whose access control prevents user from
touching.
Cryptography
Cryptographically secure checksum
associated with capability and checked before
usage.
CSC 666: Secure Software Engineering
How to prevent user from copying?
Copying capabilities allows users to grant
rights to others.
Solution:
Use indirection or cryptographic techniques
from prev slide to prevent direct access.
Add copy flag to capability, as a specific right
given to copy capabilities in order to give
rights to other users.
CSC 666: Secure Software Engineering
How to revoke rights to an object?
Direct solution
Check capabilities of every process.
Remove those that grant access to object.
Computationally expensive.
Alternative solution
Create a global object table.
Capabilities reference objects indirectly via
their entries in the global object table.
Invalidate entry in global object table to
revoke.
CSC 666: Secure Software Engineering
Access Control Lists (ACLs)
Implement ACM by column.
Access control by object.
Example: UNIX ACLs
Short “rwx” user/group/other.
Long POSIX ACLs.
User
audit data
root
rw
james
r
joe
CSC 666: Secure Software Engineering
Access Control Flaws
No access control
Relying on attacker not knowing URL.
Client-side access control
Relying on a URL parameter like admin=true.
Relying on the Referer header.
Sequence based access control
Relying on attacker accessing pages in
correct sequence.
CSC 666: Secure Software Engineering
Securing Access Controls
Requirements
Create ACM based on roles, resources.
Design
Single point of control for AC decisions.
Base AC decisions on user’s session.
Apply additional AC for admin pages, such as
IP range requirements.
Use per-transaction re-authentication for high
impact transactions.
Log events where sensitive data accessed.
CSC 666: Secure Software Engineering
Defense in Depth
Network Access Control
Prevent access to unauthorized ports.
Prevent access from unauthorized IPs.
Web Server Access Control
Use web server controls to prevent access to static
resources except through application.
Application Access Control
Custom AC for your application.
Database Access Control
Use different DB accounts for different roles.
Fine-grained AC at the row or column level.
Operating System Access Control
Use least privilege accounts for application, servers.
CSC 666: Secure Software Engineering
Key Points
Access Control Matrix
Implementation as capabilities or ACLs.
Common Flaws
No AC or relying on client-side AC.
Defense in Depth
AC at Network, Server, App, DB, and OS.
CSC 666: Secure Software Engineering
References
1. Matt Bishop, Computer Security: Art and
Science, Addison-Wesley, 2005.
2. Brian Chess and Jacob West, Secure
Programming with Static Analysis,
Addison-Wesley, 2007.
3. PCI Security Standards Council, PCI
DSS Requirements and Security
Assessment Procedures, v1.2, 2008.
4. Dafydd Stuttart and Marcus Pinto, The
Web Application Hacker’s Handbook,
Wiley, 2008.
CSC 666: Secure Software Engineering