[Cryptography] It's list time again ...
Peter Fairbrother
peter at tsto.co.uk
Fri Sep 1 16:13:47 EDT 2023
As ever, suggestions are very welcome. Actually, they are requested (:
Peter Fairbrother
I call these laws because they are always true.
The Laws of secure system design are:
0 It's all about control
1 Someone is after your stuff
2 Someone else is after your stuff
3 Stuff you don't have can't be stolen from you
4 Everywhere is subject to attack
5 Attack methods are many, varied, ever-changing and eternal
6 Complex systems provide more places to attack
7 Only those you trust can betray you
8 Holes for good guys are holes for bad guys too
9 A system which is hard to use will be abused or unused
Principles of secure system design:
1 Single points of failure are failures of system design
2 It is easier for insiders to steal information. evil maids included
3 Design for known threats - Design for future threats - Design for
unknown threats
4 In a monoculture the target becomes more attractive and more brittle
5 Methods and mechanisms persist - in code, nothing ever really goes away
6 Economy of mechanism – A simple design is easier to test and validate.
7 You do not control what a system is to be used for or the resources
which will be pitted against it. Or against whatever will be developed
from your system.
8 Fall back to insecure mode - ? is continuous operability/ avoiding a
temporary loss of operability more important than security? Especially
considering the probable loss of operability if security is breached.
Also, insecure mode is both an attack method and vector. Is someone
waiting for you to fall back to insecure mode so they can take advantage
of it? Are they forcing a fallback in order to breach security? If you
fall back a lot, do not expect security.
Solution: do not _have_ an insecure mode
9 System Designer's fees are cheaper than failure costs: system designer
vs project manager: best if both in one person, but in general system
designer _must_ be able to override project manager.
10 Once they become publicly linkable, two items cannot (securely)
become publicly unlinkable.
11 Least common mechanism
Techniques of secure system design:
0 Chain of Control
1 Defense in depth - layered security
2 Attack modelling, including unknown unknown attackers
3 Minimize total secrets
4 Schneier's law applies to everything, including these laws.
5 Red/black separation
6 Open design - security by obscurity is too brittle for system design.
low security closed apps like special forces insider talk maybe, system
design no.
7 Kerckhoffs's Principle
8 Least privilege
9 Separation of privilege - eg TFA, two persons needed to open bank vault.
10 Complete mediation
11 Principle of least astonishment. Ease of understanding and use.
12 Being there. Users' mental models should match actual system behaviour.
13 Work factor for attackers - “weakest link” and “easiest penetration”
principles
14 Attack recording, including compromise recording
15 Transaction recording to ensure accountability
16 Unique identities to ensure accountability
17 Continuous Improvement
18 Confidentiality integrity availability triad
19 Fail-safe defaults - Deny by Default
20 Mechanisms to remove old code are sometimes necessary. These may
involve deliberately creating incompatibility with earlier systems
21 Avoiding transitive trust
bubbling under:
Security is a Boolean
People offering the impossible are lying
it _is_ a battle
More information about the cryptography
mailing list