Table of contents for Information security : principles and practice / Mark Stamp.

Bibliographic record and links to related information available from the Library of Congress catalog.

Note: Contents data are machine generated based on pre-publication provided by the publisher. Contents may have variations from the printed book or be incomplete or contain other coding.


Counter
Contents
Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii
About The Author . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv
Foreword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvi
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii
1 Introduction 1
1.1 The Cast of Characters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Alice's Online Bank . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2.1 Confidentiality, Integrity and Availability . . . . . . . . . . . . . . . . 2
1.2.2 Beyond CIA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 About This Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3.1 Cryptography . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3.2 Access Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3.3 Protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3.4 Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4 The People Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.5 Theory and Practice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.6 Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
I Crypto 9
2 Crypto Basics 11
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2 How to Speak Crypto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3 Classic Crypto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.3.1 Simple Substitution Cipher . . . . . . . . . . . . . . . . . . . . . . . 13
2.3.2 Cryptanalysis of a Simple Substitution . . . . . . . . . . . . . . . . . 15
2.3.3 Definition of Secure . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3.4 Double Transposition Cipher . . . . . . . . . . . . . . . . . . . . . . . 17
2.3.5 One-time Pad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.3.6 Project VENONA . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.3.7 Codebook Cipher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.3.8 Ciphers of the Election of 1876 . . . . . . . . . . . . . . . . . . . . . 24
vi CONTENTS
2.4 Modern Crypto History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.5 A Taxonomy of Cryptography . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.6 A Taxonomy of Cryptanalysis . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.7 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.8 Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3 Symmetric Key Crypto 33
3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.2 Stream Ciphers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.2.1 A5/1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.2.2 RC4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.3 Block Ciphers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.3.1 Feistel Cipher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.3.2 DES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.3.3 Triple DES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.3.4 AES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.3.5 Three More Block Ciphers . . . . . . . . . . . . . . . . . . . . . . . . 48
3.3.6 TEA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.3.7 Block Cipher Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.4 Integrity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.5 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.6 Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4 Public Key Crypto 61
4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.2 Knapsack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
4.3 RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
4.3.1 RSA Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
4.3.2 Repeated Squaring . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
4.3.3 Speeding Up RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
4.4 Diffie-Hellman . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
4.5 Elliptic Curve Cryptography . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
4.5.1 Elliptic Curve Math . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
4.5.2 ECC Diffie-Hellman . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
4.6 Public Key Notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
4.7 Uses for Public Key Crypto . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
4.7.1 Confidentiality in the Real World . . . . . . . . . . . . . . . . . . . . 75
4.7.2 Signatures and Non-repudiation . . . . . . . . . . . . . . . . . . . . . 76
4.7.3 Confidentiality and Non-repudiation . . . . . . . . . . . . . . . . . . 77
4.8 Public Key Infrastructure . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
4.9 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
4.10 Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
CONTENTS vii
5 Hash Functions and Other Topics 85
5.1 What is a Hash Function? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
5.2 The Birthday Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
5.3 Non-cryptographic Hashes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
5.4 Tiger Hash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
5.5 HMAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
5.6 Uses of Hash Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
5.6.1 Online Bids . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
5.6.2 Spam Reduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
5.7 Other Crypto-Related Topics . . . . . . . . . . . . . . . . . . . . . . . . . . 95
5.7.1 Secret Sharing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Key Escrow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
5.7.2 Random Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Texas Hold 'em Poker . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Generating Random Bits . . . . . . . . . . . . . . . . . . . . . . . . . 99
5.7.3 Information Hiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
5.8 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
5.9 Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
6 Advanced Cryptanalysis 109
6.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
6.2 Linear and Diffierential Cryptanalysis . . . . . . . . . . . . . . . . . . . . . . 110
6.2.1 Quick Review of DES . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
6.2.2 Overview of Diffierential Cryptanalysis . . . . . . . . . . . . . . . . . 111
6.2.3 Overview of Linear Cryptanalysis . . . . . . . . . . . . . . . . . . . . 114
6.2.4 Tiny DES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
6.2.5 Diffierential Cryptanalysis of TDES . . . . . . . . . . . . . . . . . . . 117
6.2.6 Linear Cryptanalysis of TDES . . . . . . . . . . . . . . . . . . . . . 122
6.2.7 Block Cipher Design . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
6.3 Side Channel Attack on RSA . . . . . . . . . . . . . . . . . . . . . . . . . . 125
6.4 Lattice Reduction and the Knapsack . . . . . . . . . . . . . . . . . . . . . . 128
6.5 Hellman's Time-Memory Tradeo_ . . . . . . . . . . . . . . . . . . . . . . . . 134
6.5.1 Popcnt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
6.5.2 Cryptanalytic TMTO . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
6.5.3 Misbehaving Chains . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
6.5.4 Success Probability . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
6.6 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
6.7 Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
viii CONTENTS
II Access Control 151
7 Authentication 153
7.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
7.2 Authentication Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
7.3 Passwords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
7.3.1 Keys versus Passwords . . . . . . . . . . . . . . . . . . . . . . . . . . 155
7.3.2 Choosing Passwords . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
7.3.3 Attacking Systems via Passwords . . . . . . . . . . . . . . . . . . . . 157
7.3.4 Password Verification . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
7.3.5 Math of Password Cracking . . . . . . . . . . . . . . . . . . . . . . . 159
7.3.6 Other Password Issues . . . . . . . . . . . . . . . . . . . . . . . . . . 161
7.4 Biometrics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
7.4.1 Types of Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
7.4.2 Biometric Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Fingerprints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Hand Geometry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Iris Scan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
7.4.3 Biometric Error Rates . . . . . . . . . . . . . . . . . . . . . . . . . . 169
7.4.4 Biometric Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . . 169
7.5 Something You Have . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
7.6 Two-Factor Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
7.7 Single Sign-On and Web Cookies . . . . . . . . . . . . . . . . . . . . . . . . 171
7.8 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
7.9 Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
8 Authorization 177
8.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
8.2 Access Control Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
8.2.1 ACLs and Capabilities . . . . . . . . . . . . . . . . . . . . . . . . . . 178
8.2.2 Confused Deputy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
8.3 Multilevel Security Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
8.3.1 Bell-LaPadula . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
8.3.2 Biba's Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
8.4 Multilateral Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
8.5 Covert Channel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
8.6 Inference Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
8.7 CAPTCHA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
8.8 Firewalls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
8.8.1 Packet Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
8.8.2 Stateful Packet Filter . . . . . . . . . . . . . . . . . . . . . . . . . . 193
8.8.3 Application Proxy . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
8.8.4 Personal Firewall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
CONTENTS ix
8.8.5 Defense in Depth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
8.9 Intrusion Detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
8.9.1 Signature-based IDS . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
8.9.2 Anomaly-based IDS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
8.10 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
8.11 Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
III Protocols 207
9 Simple Authentication Protocols 209
9.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
9.2 Simple Security Protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
9.3 Authentication Protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
9.3.1 Authentication Using Symmetric Keys . . . . . . . . . . . . . . . . . 215
9.3.2 Authentication Using Public Keys . . . . . . . . . . . . . . . . . . . . 217
9.3.3 Session Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
9.3.4 Perfect Forward Secrecy . . . . . . . . . . . . . . . . . . . . . . . . . 220
9.3.5 Mutual Authentication, Session Key and PFS . . . . . . . . . . . . . 222
9.3.6 Timestamps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
9.4 Authentication and TCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
9.5 Zero Knowledge Proofs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
9.6 The Best Authentication Protocol? . . . . . . . . . . . . . . . . . . . . . . . 230
9.7 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
9.8 Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
10 Real-World Security Protocols 235
10.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
10.2 Secure Socket Layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
10.2.1 SSL and the Man-in-the-Middle . . . . . . . . . . . . . . . . . . . . . 238
10.2.2 SSL Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
10.2.3 SSL versus IPSec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
10.3 IPSec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
10.3.1 IKE Phase 1: Digital Signature . . . . . . . . . . . . . . . . . . . . . 241
10.3.2 IKE Phase 1: Symmetric Key . . . . . . . . . . . . . . . . . . . . . . 243
10.3.3 IKE Phase 1: Public Key Encryption . . . . . . . . . . . . . . . . . . 243
10.3.4 IPSec Cookies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
10.3.5 IKE Phase 1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . 246
10.3.6 IKE Phase 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
10.3.7 IPSec and IP Datagrams . . . . . . . . . . . . . . . . . . . . . . . . . 247
10.3.8 Transport and Tunnel Modes . . . . . . . . . . . . . . . . . . . . . . 248
10.3.9 ESP and AH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
10.4 Kerberos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
x CONTENTS
10.4.1 Kerberized Login . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
10.4.2 Kerberos Ticket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
10.4.3 Kerberos Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
10.5 GSM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
10.5.1 GSM Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
10.5.2 GSM Security Architecture . . . . . . . . . . . . . . . . . . . . . . . 255
Anonymity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
Confidentiality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
10.5.3 GSM Authentication Protocol . . . . . . . . . . . . . . . . . . . . . 257
10.5.4 GSM Security Flaws . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
Crypto Flaws . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
Invalid Assumptions . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
SIM Attacks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
Fake Base Station . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
10.5.5 GSM Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
10.5.6 3GPP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
10.6 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
10.7 Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
IV Software 267
11 Software Flaws and Malware 269
11.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
11.2 Software Flaws . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
11.2.1 Bu_er Overflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
Bu_er Overflow Example . . . . . . . . . . . . . . . . . . . . . . . . 276
Stack Smashing Prevention . . . . . . . . . . . . . . . . . . . . . . . 278
Bu_er Overflow: The Last Word . . . . . . . . . . . . . . . . . . . . . 280
11.2.2 Incomplete Mediation . . . . . . . . . . . . . . . . . . . . . . . . . . 281
11.2.3 Race Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
11.3 Malware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
11.3.1 Brain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
11.3.2 Morris Worm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
11.3.3 Code Red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
11.3.4 SQL Slammer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
11.3.5 Trojan Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
11.3.6 Malware Detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
Signature Detection . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
Change Detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
Anomaly Detection . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
11.3.7 The Future of Malware . . . . . . . . . . . . . . . . . . . . . . . . . . 289
CONTENTS xi
11.3.8 Cyber Diseases versus Biological Diseases . . . . . . . . . . . . . . . . 291
11.4 Miscellaneous Software-Based Attacks . . . . . . . . . . . . . . . . . . . . . . 292
11.4.1 Salami Attacks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
11.4.2 Linearization Attacks . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
11.4.3 Time Bombs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
11.4.4 Trusting Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
11.5 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
11.6 Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
12 Insecurity in Software 297
12.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
12.2 Software Reverse Engineering . . . . . . . . . . . . . . . . . . . . . . . . . . 298
12.2.1 Anti-disassembly Techniques . . . . . . . . . . . . . . . . . . . . . . 302
12.2.2 Anti-debugging Techniques . . . . . . . . . . . . . . . . . . . . . . . 303
12.3 Software Tamper-resistance . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
12.3.1 Guards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
12.3.2 Obfuscation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
12.3.3 Metamorphism Revisited . . . . . . . . . . . . . . . . . . . . . . . . 305
12.4 Digital Rights Management . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
12.4.1 What is DRM? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
12.4.2 A Real-World DRM System . . . . . . . . . . . . . . . . . . . . . . . 309
12.4.3 DRM for Streaming Media . . . . . . . . . . . . . . . . . . . . . . . 312
12.4.4 DRM for a P2P Application . . . . . . . . . . . . . . . . . . . . . . 314
12.4.5 DRM in the Enterprise . . . . . . . . . . . . . . . . . . . . . . . . . 315
12.4.6 DRM Failures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
12.4.7 DRM Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
12.5 Software Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
12.5.1 Open versus Closed Source Software . . . . . . . . . . . . . . . . . . 318
12.5.2 Finding Flaws . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
12.5.3 Other Software Development Issues . . . . . . . . . . . . . . . . . . . 320
12.6 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
12.7 Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
13 Operating Systems and Security 327
13.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
13.2 Operating System Security Functions . . . . . . . . . . . . . . . . . . . . . . 327
13.2.1 Separation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
13.2.2 Memory Protection . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
13.2.3 Access Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
13.3 Trusted Operating System . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
13.3.1 MAC, DAC and More . . . . . . . . . . . . . . . . . . . . . . . . . . 331
13.3.2 Trusted Path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
13.3.3 Trusted Computing Base . . . . . . . . . . . . . . . . . . . . . . . . . 333
xii CONTENTS
13.4 Next Generation Secure Computing Base . . . . . . . . . . . . . . . . . . . 334
13.4.1 NGSCB Feature Groups . . . . . . . . . . . . . . . . . . . . . . . . . 336
Process Isolation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
Sealed Storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
Secure Path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
Attestation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
13.4.2 NGSCB Compelling Applications . . . . . . . . . . . . . . . . . . . . 338
13.4.3 Criticisms of NGSCB . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
13.5 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
13.6 Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
Appendix 343
A-1 Networking Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
A-1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
A-1.2 The Protocol Stack . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
A-1.3 Application Layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
A-1.4 Transport Layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
A-1.5 Network Layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
A-1.6 Link Layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
A-1.7 Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
A-2 Math Essentials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
A-2.1 Modular Arithmetic . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
A-2.2 Permutations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
A-2.3 Probability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
A-2.4 Linear Algebra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
A-3 DES S-boxes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
Annotated Bibliography 361
Index 385

Library of Congress Subject Headings for this publication:

Computer security.