Translucent Databases

Translucent Databases
Order from Barnes & Noble with free shipping
Order from the publisher with free U.S. shipping..
Buy it from Amazon with free shipping.
Read the Table of Contents
Read the FAQ about Translucent Databases
Read a case study of how Amazon could protect the privacy of their customers with a translucent database.
Read a case study of how libraries can protect the security of their patrons.
Here's a list of Case Studies from the book
Support for Professors who use the book in courses.
Download the source code from the book.
Other Books by Peter Wayner
Contact the author: p3@wayner.org
Errors and Corrections
Take a Telecourse in the topic
Take a Full Day Course in Storing Sensitive Information with MySQL
Info for Bookstores
Check out the new title, Policing Online Games
Policing Online Games
Check out the new title, Java RAMBO Manifesto
Java RAMBO Manifesto
Translucent Database Cover



1--Translucency--
1.1--Some Examples--
  1.2--Limits--
  1.3--How to Use the Book--
  1.4--Some Examples--

2--One Way Functions--
  2.1--Pure One-Way Functions--
        2.1.1--Discrete Log--
        2.1.2--The Secure Hash Algorithm or SHA--
        2.1.3--MD-5--
  2.2--Public Key or Trapdoor Function--
  2.3--Secret Key Functions--
        2.3.1--Turning a secret key function into a pure one-way function.--
        2.3.2--Turning One-Way Functions Into Secret-Key Encryption Functions--
  2.4--Implementations--
        2.4.1--MySQL--
        2.4.2--PostgreSQL--
        2.4.3--Oracle--
        2.4.4--Client-side Applications--
  2.5--Conclusions--
        2.5.1--Lessons--

3--One Way Tables--
  3.1--An Example from a Department Store--
        3.1.1--Adding Security--
  3.2--Cleaning Up One-Way Input--
        3.2.1--Some Java Code--
  3.3--Security Trade Offs--
        3.3.1--Slowing the One-Way Functions--
        3.3.2--Salt--
  3.4--Adding Redundancy--
  3.5--An Example with Encryption for Security--
        3.5.1--Some Java Code--
  3.6--Hashing Instead of Encryption--
  3.7--Serial Queries--
  3.8--Keeping Some Information In the Clear--
        3.8.1--Inserting a Credit Card Number--
        3.8.2--Using the Information--
  3.9--Conclusions--
        3.9.1--Lessons--

4--Coordinating Users--
  4.1--A Bulletin Board Example--
        4.1.1--Adding a Shared Password--
  4.2--Special One-Way Functions--
        4.2.1--Creating A Public Key--
        4.2.2--Using the Public Key--
        4.2.3--Recovering Messages--
        4.2.4--Using Public-Key One-Way Functions--
  4.3--Conclusion--
        4.3.1--Lessons--

5--Synchronization--
        5.0.2--The BabySitter's Table--
        5.0.3--Adding More Names--
        5.0.4--Multiple Tables--
        5.0.5--Adding Extra Information--
        5.0.6--Security--
  5.1--Conclusions--
        5.1.1--Lessons--

6--Evolving Data--
  6.1--An Auction Example--
        6.1.1--The First Bid--
        6.1.2--Adding New Bids--
        6.1.3--Creating Bids--
        6.1.4--The Value of Counter--
        6.1.5--Better Hash Functions--
  6.2--Working With Encryption--
  6.3--Conclusions--
        6.3.1--Lessons--

7--Sharing--
  7.1--The Algorithms--
        7.1.1--More Precise Algorithms--
        7.1.2--More Efficient Algorithms--
        7.1.3--Adding Sophistication--
  7.2--Nuclear Launch Codes--
        7.2.1--Adding Launch Codes--
        7.2.2--Recovering the Code--
        7.2.3--Adding More Security--
  7.3--A Public-Key Example--
        7.3.1--Adding a Message--
        7.3.2--Retrieving the Message--
  7.4--Conclusions--
        7.4.1--Lessons--

8--Revelation--
  8.1--A Masquerade--
  8.2--Lottery--
        8.2.1--Paying for the Ticket--
        8.2.2--Placing Bets--
        8.2.3--Testing Winners--
  8.3--Sports Poker and Multiple Columns--
        8.3.1--Inserting Predictions--
        8.3.2--Testing and Verifying--
  8.4--Identity Cards and Selective Revelations--
        8.4.1--The Basic Mathematics--
        8.4.2--A Rental Car Example--
        8.4.3--The License--
        8.4.4--Proving Information--
        8.4.5--The Rental Car Company--
  8.5--Conclusions--
        8.5.1--Lessons--

9--Quantization--
  9.1--Algorithms--
        9.1.1--Adaptive Quantization--
        9.1.2--Projection--
  9.2--Using Quantization In Databases--
        9.2.1--Adding Random Noise--
        9.2.2--Adding Encryption--
  9.3--Quantized One-Way Functions--
        9.3.1--One-Way Functions and Noise--
  9.4--Conclusions--
        9.4.1--Lessons--

10--Authentication--
  10.1--Digital Signature Taxonomy--
        10.1.1--One-Way Functions and Signatures--
        10.1.2--Modular Exponentiation and Signatures--
  10.2--Adding Digital Signatures To SQL Databases--
        10.2.1--A Hash-based Signature--
        10.2.2--Signatures Using Exponentiation--
  10.3--Fake Information--
        10.3.1--An Appointment System--
        10.3.2--Adding Entries With Signatures--
        10.3.3--Adding Fake Entries--
        10.3.4--Finding the Results--
        10.3.5--Modifications--
  10.4--Conclusions--
        10.4.1--Lessons--

11--Accounting--
  11.1--Sales Force Accounting--
        11.1.1--Adding Values--
        11.1.2--Checking Things Out--
  11.2--Conclusions--
        11.2.1--Lessons--

12--Tokens--
  12.1--Prescription Records--
        12.1.1--Inserting Records--
        12.1.2--A Relatively Fast Mechanism for Retrieval--
        12.1.3--A More Secure Mechanism--
        12.1.4--At the client--
        12.1.5--At the database--
        12.1.6--Using transparency--
        12.1.7--Dealing with the Challenge--
  12.2--Conclusions--
        12.2.1--Lessons--

13--Private Retrieval--
  13.1--Stock Prices From Multiple Sources--
  13.2--A Single Server Example--
        13.2.1--Using More Decoys--
  13.3--A Patent Example--
  13.4--Conclusions--
        13.4.1--Lessons--

A--Further Reading--