Cryptography for Developers.Pdf
Total Page:16
File Type:pdf, Size:1020Kb
404_CRYPTO_FM.qxd 10/30/06 2:33 PM Page i Visit us at www.syngress.com Syngress is committed to publishing high-quality books for IT Professionals and delivering those books in media and formats that fit the demands of our cus- tomers. We are also committed to extending the utility of the book you purchase via additional materials available from our Web site. SOLUTIONS WEB SITE To register your book, visit www.syngress.com/solutions. Once registered, you can access our [email protected] Web pages. There you may find an assortment of value-added features such as free e-books related to the topic of this book, URLs of related Web site, FAQs from the book, corrections, and any updates from the author(s). ULTIMATE CDs Our Ultimate CD product line offers our readers budget-conscious compilations of some of our best-selling backlist titles in Adobe PDF form. These CDs are the perfect way to extend your reference library on key topics pertaining to your area of exper- tise, including Cisco Engineering, Microsoft Windows System Administration, CyberCrime Investigation, Open Source Security, and Firewall Configuration, to name a few. DOWNLOADABLE E-BOOKS For readers who can’t wait for hard copy, we offer most of our titles in download- able Adobe PDF form. These e-books are often available weeks before hard copies, and are priced affordably. SYNGRESS OUTLET Our outlet store at syngress.com features overstocked, out-of-print, or slightly hurt books at significant savings. SITE LICENSING Syngress has a well-established program for site licensing our e-books onto servers in corporations, educational institutions, and large organizations. Contact us at [email protected] for more information. CUSTOM PUBLISHING Many organizations welcome the ability to combine parts of multiple Syngress books, as well as their own content, into a single volume for their own internal use. Contact us at [email protected] for more information. 404_CRYPTO_FM.qxd 10/30/06 2:33 PM Page ii 404_CRYPTO_FM.qxd 10/30/06 2:33 PM Page iii Cryptography for Developers Tom St Denis, Elliptic Semiconductor Inc. and Author of the LibTom Project Simon Johnson 404_CRYPTO_FM.qxd 10/30/06 2:33 PM Page iv Syngress Publishing, Inc., the author(s), and any person or firm involved in the writing, editing, or produc- tion (collectively “Makers”) of this book (“the Work”) do not guarantee or warrant the results to be obtained from the Work. There is no guarantee of any kind, expressed or implied, regarding the Work or its contents.The Work is sold AS IS and WITHOUT WARRANTY.You may have other legal rights, which vary from state to state. In no event will Makers be liable to you for damages, including any loss of profits, lost savings, or other inci- dental or consequential damages arising out from the Work or its contents. Because some states do not allow the exclusion or limitation of liability for consequential or incidental damages, the above limitation may not apply to you. You should always use reasonable care, including backup and other appropriate precautions, when working with computers, networks, data, and files. Syngress Media®, Syngress®,“Career Advancement Through Skill Enhancement®,”“Ask the Author UPDATE®,” and “Hack Proofing®,” are registered trademarks of Syngress Publishing, Inc.“Syngress:The Definition of a Serious Security Library”™,“Mission Critical™,” and “The Only Way to Stop a Hacker is to Think Like One™” are trademarks of Syngress Publishing, Inc. Brands and product names mentioned in this book are trademarks or service marks of their respective companies. KEY SERIAL NUMBER 001 HJIRTCV764 002 PO9873D5FG 003 829KM8NJH2 004 GPPQQW722M 005 CVPLQ6WQ23 006 VBP965T5T5 007 HJJJ863WD3E 008 2987GVTWMK 009 629MP5SDJT 010 IMWQ295T6T PUBLISHED BY Syngress Publishing, Inc. 800 Hingham Street Rockland, MA 02370 Cryptography for Developers Copyright © 2007 by Syngress Publishing, Inc.All rights reserved. Except as permitted under the Copyright Act of 1976, no part of this publication may be reproduced or distributed in any form or by any means, or stored in a database or retrieval system, without the prior written permission of the publisher, with the exception that the program listings may be entered, stored, and executed in a computer system, but they may not be reproduced for publication. 1 2 3 4 5 6 7 8 9 0 ISBN-10: 1-59749-104-7 ISBN-13: 978-1-59749-104-4 Publisher:Andrew Williams Page Layout and Art: Patricia Lupien Acquisitions Editor: Erin Heffernan Copy Editor: Beth Roberts Technical Editor: Simon Johnson Indexer: J. Edmund Rush Cover Designer: Michael Kavish Distributed by O’Reilly Media, Inc. in the United States and Canada. For information on rights, translations, and bulk sales, contact Matt Pedersen, Director of Sales and Rights, at Syngress Publishing; email [email protected] or fax to 781-681-3585. 404_CRYPTO_FM.qxd 10/30/06 2:33 PM Page v Acknowledgments Syngress would like to acknowledge the following people for their kindness and support in making this book possible. Syngress books are now distributed in the United States and Canada by O’Reilly Media, Inc.The enthusiasm and work ethic at O’Reilly are incredible, and we would like to thank everyone there for their time and efforts to bring Syngress books to market:Tim O’Reilly, Laura Baldwin, Mark Brokering, Mike Leonard, Donna Selenko, Bonnie Sheehan, Cindy Davis, Grant Kikkert, Opol Matsutaro, Steve Hazelwood, Mark Wilson, Rick Brown,Tim Hinton, Kyle Hart, Sara Winge, Peter Pardo, Leslie Crandell, Regina Aggio Wilkinson, Pascal Honscher, Preston Paull, Susan Thompson, Bruce Stewart, Laura Schmier, Sue Willing, Mark Jacobsen, Betsy Waliszewski, Kathryn Barrett, John Chodacki, Rob Bullington, Kerry Beck, Karen Montgomery, and Patrick Dirden. The incredibly hardworking team at Elsevier Science, including Jonathan Bunkell, Ian Seager, Duncan Enright, David Burton, Rosanna Ramacciotti, Robert Fairbrother, Miguel Sanchez, Klaus Beran, Emma Wyatt, Krista Leppiko, Marcel Koppes, Judy Chappell, Radek Janousek, Rosie Moss, David Lockley, Nicola Haden, Bill Kennedy, Martina Morris, Kai Wuerfl-Davidek, Christiane Leipersberger,Yvonne Grueneklee, Nadia Balavoine, and Chris Reinders for making certain that our vision remains worldwide in scope. David Buckland, Marie Chieng, Lucy Chong, Leslie Lim,Audrey Gan, Pang Ai Hua, Joseph Chan, June Lim, and Siti Zuraidah Ahmad of Pansing Distributors for the enthusiasm with which they receive our books. David Scott, Tricia Wilden, Marilla Burgess, Annette Scott, Andrew Swaffer, Stephen O’Donoghue, Bec Lowe, Mark Langley,and Anyo Geddes of Woodslane for distributing our books throughout Australia, New Zealand, Papua New Guinea, Fiji,Tonga, Solomon Islands, and the Cook Islands. v 404_CRYPTO_FM.qxd 10/30/06 2:33 PM Page vi 404_CRYPTO_FM.qxd 10/30/06 2:33 PM Page vii Lead Author Tom St Denis is a software developer known best for his LibTom series of public domain cryptographic libraries. He has spent the last five years distributing, developing, and supporting the cause of open source cryptography, and has championed its safe deployment.Tom currently is employed for Elliptic Semiconductor Inc. where he designs and develops software libraries for embedded systems. He works closely with a team of diverse hardware engineers to create a best of breed hardware and software combination. Tom is also the author (with Greg Rose) of BigNum Math: Implementing Cryptographic Multiple Precision Arithmetic (Syngress Publishing, ISBN: 1-59749-112-8), which discusses the deployment of crypytographic integer mathematics. Technical Editor and Coauthor Simon Johnson is a security engineer for a technology outfit based in the United Kingdom. Simon became interested in cryptography during his teenage years, studying all aspects of conventional soft- ware cryptography. He has been an active contributor to the crypto- graphic usenet group Sci.Crypt since the age of 17, attends various security conferences around the world, and continues to openly promote safe computing practices. vii 404_CRYPTO_FM.qxd 10/30/06 2:33 PM Page viii 404_CRYPTO_TOC.qxd 10/30/06 2:21 PM Page ix Contents Preface . xix Chapter 1 Introduction . 1 Introduction . .2 Threat Models . .3 What Is Cryptography? . .4 Cryptographic Goals . .4 Privacy . .4 Integrity . .6 Authentication . .8 Nonrepudiation . .10 Goals in a Nutshell . .10 Asset Management . .11 Privacy and Authentication . .12 Life of Data . .12 Common Wisdom . .13 Developer Tools . .15 Summary . .16 Organization . .16 Frequently Asked Questions . .18 Chapter 2 ASN.1 Encoding . 21 Overview of ASN.1 . .22 ASN.1 Syntax . .23 ASN.1 Explicit Values . .24 ASN.1 Containers . .24 ASN.1 Modifiers . .26 OPTIONAL . .26 DEFAULT . .26 CHOICE . .27 ASN.1 Data Types . .28 ASN.1 Header Byte . .28 Classification Bits . .29 Constructed Bit . .29 ix 404_CRYPTO_TOC.qxd 10/30/06 2:21 PM Page x x Contents Primitive Types . .30 ASN.1 Length Encodings . .31 Short Encodings . .31 Long Encodings . .31 ASN.1 Boolean Type . .32 ASN.1 Integer Type . .33 ASN.1 BIT STRING Type . .34 ASN.1 OCTET STRING Type . .35 ASN.1 NULL Type . .35 ASN.1 OBJECT IDENTIFIER Type . .36 ASN.1 SEQUENCE and SET Types . .37 SEQUENCE OF . .39 SET . .39 SET OF . .40 ASN.1 PrintableString and IA5STRING Types . .41 ASN.1 UTCTIME Type . .41 Implementation . .42 ASN.1 Length Routines . .42 ASN.1 Primitive Encoders . .45 BOOLEAN Encoding . .46 INTEGER Encoding . .48 BIT STRING Encoding . .52 OCTET STRING Encodings . .55 NULL Encoding . .57 OBJECT IDENTIFIER Encodings . .58 PRINTABLE and IA5 STRING Encodings . .63 UTCTIME Encodings . .67 SEQUENCE Encodings . .71 ASN.1 Flexi Decoder . .78 Putting It All Together . .83 Building Lists . .83 Nested Lists . .85 Decoding Lists . .86 FlexiLists . .87 Other Providers . .89 Frequently Asked Questions . .90 404_CRYPTO_TOC.qxd 10/30/06 2:21 PM Page xi Contents xi Chapter 3 Random Number Generation . 91 Introduction . .92 Concept of Random . .92 Measuring Entropy . .94 Bit Count . .95 Word Count . .95 Gap Space Count .