The table of contents for the full version can be found here.
Page | |||
Chapter | Preface | vii | |
0.1 | Original Preface | viii | |
Chapter | 1 | Translucency | 1 |
1.1 | Some Examples | 5 | |
1.2 | Limits | 8 | |
1.3 | How to Use the Book | 9 | |
1.4 | Some Motivation | 9 | |
Chapter | 2 | One-Way Functions | 13 |
2.1 | Pure One-Way Functions | 15 | |
2.1.1 | Discrete Log | 15 | |
2.1.2 | The Secure Hash Algorithm (SHA) | 17 | |
2.1.3 | SHA256, SHA384 and SHA512 | 18 | |
2.1.4 | MD5 | 18 | |
2.2 | Tiger | 19 | |
2.3 | Other Cryptographically Secure Hash Functions | 19 | |
2.4 | Public Key Functions | 19 | |
2.5 | Secret-Key Functions | 20 | |
2.5.1 | Turning a Secret-Key Function Into a Pure One-Way Function. | 21 | |
2.5.2 | Turning One-Way Functions Into Secret-Key Encryption Functions | 21 | |
2.5.3 | Using Two or More Functions | 22 | |
2.5.4 | Keying the Hash Functions | 22 | |
2.6 | Implementations | 23 | |
2.6.1 | MySQL | 23 | |
2.6.2 | PostgreSQL | 24 | |
2.6.3 | Oracle | 24 | |
2.6.4 | Client-side Applications | 25 | |
2.7 | Conclusions | 27 | |
2.7.1 | Lessons | 27 | |
Chapter | 3 | One-Way Tables | 29 |
3.1 | An Example from a Department Store | 30 | |
3.1.1 | Adding Security | 31 | |
3.2 | Cleaning Up One-Way Input | 32 | |
3.2.1 | Some Java Code | 33 | |
3.3 | Security Trade-Offs | 34 | |
3.3.1 | Slowing the One-Way Functions | 35 | |
3.3.2 | Salt | 35 | |
3.4 | Adding Redundancy | 36 | |
3.5 | An Example with Encryption for Security | 38 | |
3.5.1 | Some Java Code | 39 | |
3.6 | Hashing Instead of Encryption | 40 | |
3.7 | Serial Queries | 41 | |
3.8 | Keeping Some Information in the Clear | 43 | |
3.8.1 | Inserting a Credit Card Number | 43 | |
3.8.2 | Using the Information | 44 | |
3.9 | Conclusions | 45 | |
3.9.1 | Lessons | 46 | |
Chapter | 4 | Fuzzy One-Way Functions | 47 |
4.1 | Fuzziness through Linearity | 47 | |
4.2 | Statistical Hashes | 48 | |
4.3 | Combining Linear and Cryptographically Secure Hashes | 48 | |
4.4 | Block Hash Functions | 49 | |
4.5 | Triggered Hash Functions | 49 | |
4.5.1 | Normalizing and Comparing | 50 | |
4.6 | Conclusions | 50 | |
4.6.1 | Lessons | 50 | |
Chapter | 5 | Coordinating Users | 53 |
5.1 | A Bulletin Board Example | 54 | |
5.1.1 | Adding a Shared Password | 54 | |
5.2 | Special One-Way Functions | 55 | |
5.2.1 | Creating A Public Key | 55 | |
5.2.2 | Using the Public Key | 57 | |
5.2.3 | Recovering Messages | 59 | |
5.2.4 | Using Public-Key One-Way Functions | 60 | |
5.3 | Conclusion | 61 | |
5.3.1 | Lessons | 61 | |
Chapter | 6 | Synchronization | 63 |
6.1 | The Baby Sitter's Table | 63 | |
6.2 | Adding More Names | 65 | |
6.3 | Multiple Tables | 65 | |
6.4 | Adding Extra Information | 67 | |
6.5 | Security | 70 | |
6.6 | Conclusions | 71 | |
6.6.1 | Lessons | 72 | |
Chapter | 7 | Evolving Data | 73 |
7.1 | An Auction Example | 74 | |
7.1.1 | The First Bid | 75 | |
7.1.2 | Adding New Bids | 76 | |
7.1.3 | Creating Bids | 77 | |
7.1.4 | The Value of the Counter Function | 78 | |
7.1.5 | Better Hash Functions | 78 | |
7.2 | Working With Encryption | 79 | |
7.3 | Conclusions | 79 | |
7.3.1 | Lessons | 80 | |
Appendix | A | Full Version | 81 |
Appendix | B | Further Reading | 83 |