Cryptography Engineering: Design Principles and Practical Applications

Höfundur Niels Ferguson

Útgefandi Wiley Professional Development (P&T)

Snið Page Fidelity

Print ISBN 9780470474242

Útgáfa 1

Útgáfuár 2010

4.490 kr.

Description

Efnisyfirlit

  • Cryptography Engineering: Design Principles and Practical Applications
  • Credits
  • About the Authors
  • Acknowledgments for Cryptography Engineering
  • Acknowledgments for Practical Cryptography (the 1st Edition)
  • Contents at a Glance
  • Contents
  • Preface to Cryptography Engineering
  • History
  • Example Syllabi
  • Additional Information
  • Preface to Practical Cryptography (the 1st Edition)
  • How to Read this Book
  • Part I: Introduction
  • In This Part
  • Chapter 1: The Context of Cryptography
  • 1.1: The Role of Cryptography
  • 1.2: The Weakest Link Property
  • 1.3: The Adversarial Setting
  • 1.4: Professional Paranoia
  • 1.4.1: Broader Benefits
  • 1.4.2: Discussing Attacks
  • 1.5: Threat Model
  • 1.6: Cryptography Is Not the Solution
  • 1.7: Cryptography Is Very Difficult
  • 1.8: Cryptography Is the Easy Part
  • 1.9: Generic Attacks
  • 1.10: Security and Other Design Criteria
  • 1.10.1: Security Versus Performance
  • 1.10.2: Security Versus Features
  • 1.10.3: Security Versus Evolving Systems
  • 1.11: Further Reading
  • 1.12: Exercises for Professional Paranoia
  • 1.12.1: Current Event Exercises
  • 1.12.2: Security Review Exercises
  • 1.13: General Exercises
  • Chapter 2: Introduction to Cryptography
  • 2.1: Encryption
  • 2.1.1: Kerckhoffs’ Principle
  • 2.2: Authentication
  • 2.3: Public-Key Encryption
  • 2.4: Digital Signatures
  • 2.5: PKI
  • 2.6: Attacks
  • 2.6.1: The Ciphertext-Only Model
  • 2.6.2: The Known-Plaintext Model
  • 2.6.3: The Chosen-Plaintext Model
  • 2.6.4: The Chosen-Ciphertext Model
  • 2.6.5: The Distinguishing Attack Goal
  • 2.6.6: Other Types of Attack
  • 2.7: Under the Hood
  • 2.7.1: Birthday Attacks
  • 2.7.2: Meet-in-the-Middle Attacks
  • 2.8: Security Level
  • 2.9: Performance
  • 2.10: Complexity
  • 2.11: Exercises
  • Part II: Message Security
  • Chapter 3: Block Ciphers
  • 3.1: What Is a Block Cipher?
  • 3.2: Types of Attack
  • 3.3: The Ideal Block Cipher
  • 3.4: Definition of Block Cipher Security
  • 3.4.1: Parity of a Permutation
  • 3.5: Real Block Ciphers
  • 3.5.1: DES
  • 3.5.2: AES
  • 3.5.3: Serpent
  • 3.5.4: Twofish
  • 3.5.5: Other AES Finalists
  • 3.5.6: Which Block Cipher Should I Choose?
  • 3.5.7: What Key Size Should I Use?
  • 3.6: Exercises
  • Chapter 4: Block Cipher Modes
  • 4.1: Padding
  • 4.2: ECB
  • 4.3: CBC
  • 4.3.1: Fixed IV
  • 4.3.2: Counter IV
  • 4.3.3: Random IV
  • 4.3.4: Nonce-Generated IV
  • 4.4: OFB
  • 4.5: CTR
  • 4.6: Combined Encryption and Authentication
  • 4.7: Which Mode Should I Use?
  • 4.8: Information Leakage
  • 4.8.1: Chances of a Collision
  • 4.8.2: How to Deal With Leakage
  • 4.8.3: About Our Math
  • 4.9: Exercises
  • Chapter 5: Hash Functions
  • 5.1: Security of Hash Functions
  • 5.2: Real Hash Functions
  • 5.2.1: A Simple But Insecure Hash Function
  • 5.2.2: MD5
  • 5.2.3: SHA-1
  • 5.2.4: SHA-224, SHA-256, SHA-384, and SHA-512
  • 5.3: Weaknesses of Hash Functions
  • 5.3.1: Length Extensions
  • 5.3.2: Partial-Message Collision
  • 5.4: Fixing the Weaknesses
  • 5.4.1: Toward a Short-term Fix
  • 5.4.2: A More Efficient Short-term Fix
  • 5.4.3: Another Fix
  • 5.5: Which Hash Function Should I Choose?
  • 5.6: Exercises
  • Chapter 6: Message Authentication Codes
  • 6.1: What a MAC Does
  • 6.2: The Ideal MAC and MAC Security
  • 6.3: CBC-MAC and CMAC
  • 6.4: HMAC
  • 6.5: GMAC
  • 6.6: Which MAC to Choose?
  • 6.7: Using a MAC
  • 6.8: Exercises
  • Chapter 7: The Secure Channel
  • 7.1: Properties of a Secure Channel
  • 7.1.1: Roles
  • 7.1.2: Key
  • 7.1.3: Messages or Stream
  • 7.1.4: Security Properties
  • 7.2: Order of Authentication and Encryption
  • 7.3: Designing a Secure Channel: Overview
  • 7.3.1: Message Numbers
  • 7.3.2: Authentication
  • 7.3.3: Encryption
  • 7.3.4: Frame Format
  • 7.4: Design Details
  • 7.4.1: Initialization
  • 7.4.2: Sending a Message
  • 7.4.3: Receiving a Message
  • 7.4.4: Message Order
  • 7.5: Alternatives
  • 7.6: Exercises
  • Chapter 8: Implementation Issues (I)
  • 8.1: Creating Correct Programs
  • 8.1.1: Specifications
  • 8.1.2: Test and Fix
  • 8.1.3: Lax Attitude
  • 8.1.4: So How Do We Proceed?
  • 8.2: Creating Secure Software
  • 8.3: Keeping Secrets
  • 8.3.1: Wiping State
  • 8.3.2: Swap File
  • 8.3.3: Caches
  • 8.3.4: Data Retention by Memory
  • 8.3.5: Access by Others
  • 8.3.6: Data Integrity
  • 8.3.7: What to Do
  • 8.4: Quality of Code
  • 8.4.1: Simplicity
  • 8.4.2: Modularization
  • 8.4.3: Assertions
  • 8.4.4: Buffer Overflows
  • 8.4.5: Testing
  • 8.5: Side-Channel Attacks
  • 8.6: Beyond this Chapter
  • 8.7: Exercises
  • Part III: Key Negotiation
  • Chapter 9: Generating Randomness
  • 9.1: Real Random
  • 9.1.1: Problems With Using Real Random Data
  • 9.1.2: Pseudorandom Data
  • 9.1.3: Real Random Data and PRNGS
  • 9.2: Attack Models for a PRNG
  • 9.3: Fortuna
  • 9.4: The Generator
  • 9.4.1: Initialization
  • 9.4.2: Reseed
  • 9.4.3: Generate Blocks
  • 9.4.4: Generate Random Data
  • 9.4.5: Generator Speed
  • 9.5: Accumulator
  • 9.5.1: Entropy Sources
  • 9.5.2: Pools
  • 9.5.3: Implementation Considerations
  • 9.5.3.1: Distribution of Events Over Pools
  • 9.5.3.2: Running Time of Event Passing
  • 9.5.4: Initialization
  • 9.5.5: Getting Random Data
  • 9.5.6: Add an Event
  • 9.6: Seed File Management
  • 9.6.1: Write Seed File
  • 9.6.2: Update Seed File
  • 9.6.3: When to Read and Write the Seed File
  • 9.6.4: Backups and Virtual Machines
  • 9.6.5: Atomicity of File System Updates
  • 9.6.6: First Boot
  • 9.7: Choosing Random Elements
  • 9.8: Exercises
  • Chapter 10: Primes
  • 10.1: Divisibility and Primes
  • 10.2: Generating Small Primes
  • 10.3: Computations Modulo a Prime
  • 10.3.1: Addition and Subtraction
  • 10.3.2: Multiplication
  • 10.3.3: Groups and Finite Fields
  • 10.3.4: The GCD Algorithm
  • 10.3.5: The Extended Euclidean Algorithm
  • 10.3.6: Working Modulo 2
  • 10.4: Large Primes
  • 10.4.1: Primality Testing
  • 10.4.2: Evaluating Powers
  • 10.5: Exercises
  • Chapter 11: Diffie-Hellman
  • 11.1: Groups
  • 11.2: Basic DH
  • 11.3: Man in the Middle
  • 11.4: Pitfalls
  • 11.5: Safe Primes
  • 11.6: Using a Smaller Subgroup
  • 11.7: The Size of p
  • 11.8: Practical Rules
  • 11.9: What Can Go Wrong?
  • 11.10: Exercises
  • Chapter 12: RSA
  • 12.1: Introduction
  • 12.2: The Chinese Remainder Theorem
  • 12.2.1: Garner’s Formula
  • 12.2.2: Generalizations
  • 12.2.3: Uses
  • 12.2.4: Conclusion
  • 12.3: Multiplication Modulo n
  • 12.4: RSA Defined
  • 12.4.1: Digital Signatures with RSA
  • 12.4.2: Public Exponents
  • 12.4.3: The Private Key
  • 12.4.4: The Size of n
  • 12.4.5: Generating RSA Keys
  • 12.5: Pitfalls Using RSA
  • 12.6: Encryption
  • 12.7: Signatures
  • 12.8: Exercises
  • Chapter 13: Introduction to Cryptographic Protocols
  • 13.1: Roles
  • 13.2: Trust
  • 13.2.1: Risk
  • 13.3: Incentive
  • 13.4: Trust in Cryptographic Protocols
  • 13.5: Messages and Steps
  • 13.5.1: The Transport Layer
  • 13.5.2: Protocol and Message Identity
  • 13.5.3: Message Encoding and Parsing
  • 13.5.4: Protocol Execution States
  • 13.5.5: Errors
  • 13.5.6: Replay and Retries
  • 13.6: Exercises
  • Chapter 14: Key Negotiation
  • 14.1: The Setting
  • 14.2: A First Try
  • 14.3: Protocols Live Forever
  • 14.4: An Authentication Convention
  • 14.5: A Second Attempt
  • 14.6: A Third Attempt
  • 14.7: The Final Protocol
  • 14.8: Different Views of the Protocol
  • 14.8.1: Alice’s View
  • 14.8.2: Bob’s View
  • 14.8.3: Attacker’s View
  • 14.8.4: Key Compromise
  • 14.9: Computational Complexity of the Protocol
  • 14.9.1: Optimization Tricks
  • 14.10: Protocol Complexity
  • 14.11: A Gentle Warning
  • 14.12: Key Negotiation from a Password
  • 14.13: Exercises
  • Chapter 15: Implementation Issues (II)
  • 15.1: Large Integer Arithmetic
  • 15.1.1: Wooping
  • 15.1.2: Checking DH Computations
  • 15.1.3: Checking RSA Encryption
  • 15.1.4: Checking RSA Signatures
  • 15.1.5: Conclusion
  • 15.2: Faster Multiplication
  • 15.3: Side-Channel Attacks
  • 15.3.1: Countermeasures
  • 15.4: Protocols
  • 15.4.1: Protocols Over a Secure Channel
  • 15.4.2: Receiving a Message
  • 15.4.3: Timeouts
  • 15.5: Exercises
  • Part IV: Key Management
  • Chapter 16: The Clock
  • 16.1: Uses for a Clock
  • 16.1.1: Expiration
  • 16.1.2: Unique Value
  • 16.1.3: Monotonicity
  • 16.1.4: Real-Time Transactions
  • 16.2: Using the Real-Time Clock Chip
  • 16.3: Security Dangers
  • 16.3.1: Setting the Clock Back
  • 16.3.2: Stopping the Clock
  • 16.3.3: Setting the Clock Forward
  • 16.4: Creating a Reliable Clock
  • 16.5: The Same-State Problem
  • 16.6: Time
  • 16.7: Closing Recommendations
  • 16.8: Exercises
  • Chapter 17: Key Servers
  • 17.1: Basics
  • 17.2: Kerberos
  • 17.3: Simpler Solutions
  • 17.3.1: Secure Connection
  • 17.3.2: Setting Up a Key
  • 17.3.3: Rekeying
  • 17.3.4: Other Properties
  • 17.4: What to Choose
  • 17.5: Exercises
  • Chapter 18: The Dream of PKI
  • 18.1: A Very Short PKI Overview
  • 18.2: PKI Examples
  • 18.2.1: The Universal PKI
  • 18.2.2: VPN Access
  • 18.2.3: Electronic Banking
  • 18.2.4: Refinery Sensors
  • 18.2.5: Credit Card Organization
  • 18.3: Additional Details
  • 18.3.1: Multilevel Certificates
  • 18.3.2: Expiration
  • 18.3.3: Separate Registration Authority
  • 18.4: Summary
  • 18.5: Exercises
  • Chapter 19: PKI Reality
  • 19.1: Names
  • 19.2: Authority
  • 19.3: Trust
  • 19.4: Indirect Authorization
  • 19.5: Direct Authorization
  • 19.6: Credential Systems
  • 19.7: The Modified Dream
  • 19.8: Revocation
  • 19.8.1: Revocation List
  • 19.8.2: Fast Expiration
  • 19.8.3: Online Certificate Verification
  • 19.8.4: Revocation Is Required
  • 19.9: So What Is a PKI Good For?
  • 19.10: What to Choose
  • 19.11: Exercises
  • Chapter 20: PKI Practicalities
  • 20.1: Certificate Format
  • 20.1.1: Permission Language
  • 20.1.2: The Root Key
  • 20.2: The Life of a Key
  • 20.3: Why Keys Wear Out
  • 20.4: Going Further
  • 20.5: Exercises
  • Chapter 21: Storing Secrets
  • 21.1: Disk
  • 21.2: Human Memory
  • 21.2.1: Salting and Stretching
  • 21.3: Portable Storage
  • 21.4: Secure Token
  • 21.5: Secure UI
  • 21.6: Biometrics
  • 21.7: Single Sign-On
  • 21.8: Risk of Loss
  • 21.9: Secret Sharing
  • 21.10: Wiping Secrets
  • 21.10.1: Paper
  • 21.10.2: Magnetic Storage
  • 21.10.3: Solid-State Storage
  • 21.11: Exercises
  • Part V: Miscellaneous
  • Chapter 22: Standards and Patents
  • 22.1: Standards
  • 22.1.1: The Standards Process
  • 22.1.1.1: The Standard
  • 22.1.1.2: Functionality
  • 22.1.1.3: Security
  • 22.1.2: SSL
  • 22.1.3: AES: Standardization by Competition
  • 22.2: Patents
  • Chapter 23: Involving Experts
  • Bibliography
  • Index
Show More

Additional information

Veldu vöru

Rafbók til eignar

Reviews

There are no reviews yet.

Be the first to review “Cryptography Engineering: Design Principles and Practical Applications”

Netfang þitt verður ekki birt. Nauðsynlegir reitir eru merktir *

Aðrar vörur

0
    0
    Karfan þín
    Karfan þín er tómAftur í búð