Quickly review Trojan horses, viruses, bacteria; include animal and Thompson's compiler trick
Logic Bombs, Worms (Schoch and Hupp)
Ideal: program to detect malicious logic
Can be shown: not possible to be precise in most general case
Can detect all such programs if willing to accept false positives
Can constrain case enough to locate specific malicious logic
Can use: writing, structural detection (patterns in code), common code analyzers, coding style analyzers, instruction analysis (duplicating OS), dynamic analysis (run it in controlled environment and watch)
Approach: data, instruction typing
On creation, it's type "data"
Trusted certifier must move it to type "executable"
Duff's idea: executable bit is "certified as executable" and must be set by trusted user
Practise: Trust
Untrusted software: what is it, example (USENET)
Check source, programs (what to look for); C examples
Limit who has access to what; least privilege
Your environment (how do you know what you're executing); UNIX examples
Practise: detecting writing
Integrity check files a la binaudit, tripwire; go through signature block
LOCUS approach: encipher program, decipher as you execute.
Co-processors: checksum each sequence of instructions, compute checksum as you go; on difference, complain