ebook img

Applied Cryptography in .NET and Azure Key Vault: A Practical Guide to Encryption in .NET and .NET Core PDF

239 Pages·2019·4.52 MB·English
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Applied Cryptography in .NET and Azure Key Vault: A Practical Guide to Encryption in .NET and .NET Core

Applied Cryptography in .NET and Azure Key Vault A Practical Guide to Encryption in .NET and .NET Core — Stephen Haunts Foreword by Troy Hunt Applied Cryptography in .NET and Azure Key Vault A Practical Guide to Encryption in .NET and .NET Core Stephen Haunts Foreword by Troy Hunt Applied Cryptography in .NET and Azure Key Vault Stephen Haunts Belper, Derbyshire, UK ISBN-13 (pbk): 978-1-4842-4374-9 ISBN-13 (electronic): 978-1-4842-4375-6 https://doi.org/10.1007/978-1-4842-4375-6 Library of Congress Control Number: 2019932807 Copyright © 2019 by Stephen Haunts This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation, broadcasting, reproduction on microfilms or in any other physical way, and transmission or information storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now known or hereafter developed. Trademarked names, logos, and images may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, logo, or image we use the names, logos, and images only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. The use in this publication of trade names, trademarks, service marks, and similar terms, even if they are not identified as such, is not to be taken as an expression of opinion as to whether or not they are subject to proprietary rights. While the advice and information in this book are believed to be true and accurate at the date of publication, neither the authors nor the editors nor the publisher can accept any legal responsibility for any errors or omissions that may be made. The publisher makes no warranty, express or implied, with respect to the material contained herein. Managing Director, Apress Media LLC: Welmoed Spahr Acquisitions Editor: Joan Murray Development Editor: Laura Berendson Coordinating Editor: Nancy Chen Cover designed by eStudioCalamar Cover image designed by Freepik (www.freepik.com) Distributed to the book trade worldwide by Springer Science+Business Media New York, 233 Spring Street, 6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax (201) 348-4505, e-mail orders-ny@springer- sbm.com, or visit www.springeronline.com. Apress Media, LLC is a California LLC and the sole member (owner) is Springer Science + Business Media Finance Inc (SSBM Finance Inc). SSBM Finance Inc is a Delaware corporation. For information on translations, please e-mail [email protected], or visit http://www.apress.com/ rights-permissions. Apress titles may be purchased in bulk for academic, corporate, or promotional use. eBook versions and licenses are also available for most titles. For more information, reference our Print and eBook Bulk Sales web page at http://www.apress.com/bulk-sales. Any source code or other supplementary material referenced by the author in this book is available to readers on GitHub via the book’s product page, located at www.apress.com/9781484243749. For more detailed information, please visit http://www.apress.com/source-code. Printed on acid-free paper I would like to dedicate this book to my wife, Amanda, and my two kids, Amy and Daniel. Their support makes completing large projects like this much easier when I am sitting on my own in a room trying to write. Table of Contents About the Author �����������������������������������������������������������������������������������������������������xi About the Technical Reviewer �������������������������������������������������������������������������������xiii Foreword �����������������������������������������������������������������������������������������������������������������xv Introduction �����������������������������������������������������������������������������������������������������������xvii Chapter 1: What Are Data Breaches? �����������������������������������������������������������������������1 Types of Data in a Breach and Their Consequences ���������������������������������������������������������������������2 The Impact on a Company ������������������������������������������������������������������������������������������������������������4 Financial Loss ��������������������������������������������������������������������������������������������������������������������������4 Legal Action �����������������������������������������������������������������������������������������������������������������������������4 Regulatory Impact �������������������������������������������������������������������������������������������������������������������5 Loss of Reputation �������������������������������������������������������������������������������������������������������������������5 Why Network Protection Isn’t Enough�������������������������������������������������������������������������������������������6 How Can Developers Help? �����������������������������������������������������������������������������������������������������������6 What Can You Expect from This Book? ������������������������������������������������������������������������������������7 What You Will Learn ����������������������������������������������������������������������������������������������������������������������7 �N ET Standard and �NET Core ��������������������������������������������������������������������������������������������������9 Code Samples in This Book ���������������������������������������������������������������������������������������������������������10 Chapter 2: A Brief History of Cryptography ������������������������������������������������������������11 Ancient Times �����������������������������������������������������������������������������������������������������������������������������11 Increasing Cipher Complexity �����������������������������������������������������������������������������������������������������13 Enigma and Mechanical Ciphers �������������������������������������������������������������������������������������������15 Modern Cryptography �����������������������������������������������������������������������������������������������������������������18 Symmetric Encryption �����������������������������������������������������������������������������������������������������������18 Public and Private Key Cryptography ������������������������������������������������������������������������������������19 v Table of ConTenTs Why Is Cryptography Important? �������������������������������������������������������������������������������������������������20 Examples of Modern Cryptography ���������������������������������������������������������������������������������������21 The Four Pillars of Modern Cryptography �����������������������������������������������������������������������������������22 Confidentiality������������������������������������������������������������������������������������������������������������������������22 Integrity ���������������������������������������������������������������������������������������������������������������������������������22 Authentication �����������������������������������������������������������������������������������������������������������������������22 Non-Repudiation ��������������������������������������������������������������������������������������������������������������������23 Summary�������������������������������������������������������������������������������������������������������������������������������������23 Chapter 3: The Importance of Random Numbers����������������������������������������������������25 Generating Deterministic Random Numbers�������������������������������������������������������������������������������26 Generating Secure Random Numbers �����������������������������������������������������������������������������������������27 Summary�������������������������������������������������������������������������������������������������������������������������������������30 Chapter 4: Hashing and Hashed Message Authentication Codes ���������������������������31 Hashing and Integrity ������������������������������������������������������������������������������������������������������������������31 MD5 ���������������������������������������������������������������������������������������������������������������������������������������������33 Secure Hash Algorithm (SHA) Family ������������������������������������������������������������������������������������������35 Authenticated Hashing ����������������������������������������������������������������������������������������������������������������39 Summary�������������������������������������������������������������������������������������������������������������������������������������45 Chapter 5: Safely Storing Passwords ���������������������������������������������������������������������47 Storing Passwords in the Clear ���������������������������������������������������������������������������������������������������47 Encrypting Passwords ����������������������������������������������������������������������������������������������������������������48 Using Hashes to Store Passwords ����������������������������������������������������������������������������������������������49 Using Password Based Key Derivation Functions �����������������������������������������������������������������������54 Summary�������������������������������������������������������������������������������������������������������������������������������������60 Chapter 6: Symmetric Encryption���������������������������������������������������������������������������61 Symmetric Encryption �����������������������������������������������������������������������������������������������������������������61 Advantage: Very Secure ���������������������������������������������������������������������������������������������������������62 Advantage: Fast ���������������������������������������������������������������������������������������������������������������������62 Disadvantage: Sharing Keys Is Hard ��������������������������������������������������������������������������������������62 Disadvantage: Dangerous If Compromised ����������������������������������������������������������������������������63 vi Table of ConTenTs History of DES and Triple DES �����������������������������������������������������������������������������������������������������63 How DES and Triple DES Works ���������������������������������������������������������������������������������������������������65 History of AES �����������������������������������������������������������������������������������������������������������������������������67 How AES Works ���������������������������������������������������������������������������������������������������������������������������68 How Secure Is AES Against Brute-Force Attacks? �����������������������������������������������������������������69 API Commonality in the �NET Framework ������������������������������������������������������������������������������70 AesManaged and AesCryptoServiceProvider ������������������������������������������������������������������������73 Performing Symmetric Encryption with �NET ������������������������������������������������������������������������������74 Summary�������������������������������������������������������������������������������������������������������������������������������������84 Chapter 7: Asymmetric Encryption �������������������������������������������������������������������������85 Advantage: Very Secure ��������������������������������������������������������������������������������������������������������������85 Advantage: Fast ��������������������������������������������������������������������������������������������������������������������������86 Disadvantage: Sharing Keys Is Hard �������������������������������������������������������������������������������������������86 Disadvantage: Dangerous If Compromised ���������������������������������������������������������������������������������86 What Is Asymmetric Encryption? ������������������������������������������������������������������������������������������������87 The History of RSA ����������������������������������������������������������������������������������������������������������������������88 How Does RSA Work? �����������������������������������������������������������������������������������������������������������������88 Key Derivation �����������������������������������������������������������������������������������������������������������������������88 Encryption and Decryption ����������������������������������������������������������������������������������������������������90 RSA in �NET ���������������������������������������������������������������������������������������������������������������������������������91 In-Memory Keys ��������������������������������������������������������������������������������������������������������������������91 XML-Based Keys��������������������������������������������������������������������������������������������������������������������92 Cryptographic Service Provider ���������������������������������������������������������������������������������������������93 Encryption and Decryption ����������������������������������������������������������������������������������������������������95 Summary�����������������������������������������������������������������������������������������������������������������������������������100 Chapter 8: Digital Signatures��������������������������������������������������������������������������������101 High-Level Look at Digital Signatures ���������������������������������������������������������������������������������������102 Digital Signatures in �NET ���������������������������������������������������������������������������������������������������������106 Summary�����������������������������������������������������������������������������������������������������������������������������������112 vii Table of ConTenTs Chapter 9: Hybrid Encryption �������������������������������������������������������������������������������113 Combining Symmetric and Asymmetric ������������������������������������������������������������������������������������115 Adding Integrity Checks ������������������������������������������������������������������������������������������������������������126 Securely Comparing Byte Arrays �����������������������������������������������������������������������������������������132 Extending with Digital Signatures ���������������������������������������������������������������������������������������������134 Summary�����������������������������������������������������������������������������������������������������������������������������������141 Chapter 10: Key Storage and Azure Key Vault ������������������������������������������������������143 Exploring Key Management Options �����������������������������������������������������������������������������������������143 Introducing Azure Key Vault ������������������������������������������������������������������������������������������������������145 Azure Key Vault Hardware Mode �����������������������������������������������������������������������������������������146 Azure Key Vault Software Mode ������������������������������������������������������������������������������������������146 Keys vs� Secrets ������������������������������������������������������������������������������������������������������������������������146 Azure Key Vault Example Costs �������������������������������������������������������������������������������������������147 Setting up Azure Key Vault ��������������������������������������������������������������������������������������������������������148 Creating a Key Vault ������������������������������������������������������������������������������������������������������������149 Registering Your Application with Azure Active Directory ����������������������������������������������������150 Authorize Your Application to Use Keys and Secrets �����������������������������������������������������������153 Manually Creating Keys and Secrets �����������������������������������������������������������������������������������155 Azure Key Vault “Hello World” Application ���������������������������������������������������������������������������158 Summary�����������������������������������������������������������������������������������������������������������������������������������168 Chapter 11: Azure Key Vault Usage Patterns ��������������������������������������������������������169 Multiple Environments ��������������������������������������������������������������������������������������������������������������169 Configuration as Secrets �����������������������������������������������������������������������������������������������������������173 Local Key Wrapping ������������������������������������������������������������������������������������������������������������������175 Exploring Key Wrapping Further ������������������������������������������������������������������������������������������182 Key Rotation and Versioning ������������������������������������������������������������������������������������������������183 Password Protection �����������������������������������������������������������������������������������������������������������������184 Varying the Iterations over Time ������������������������������������������������������������������������������������������191 Digital Signing ���������������������������������������������������������������������������������������������������������������������������192 viii Table of ConTenTs Upgrading the Hybrid Encryption Example �������������������������������������������������������������������������������195 Summary�����������������������������������������������������������������������������������������������������������������������������������205 Chapter 12: Final Summary ����������������������������������������������������������������������������������207 Cryptography Summary ������������������������������������������������������������������������������������������������������������208 Random Numbers ����������������������������������������������������������������������������������������������������������������208 Hashing and Authentication �������������������������������������������������������������������������������������������������209 Storing Passwords ���������������������������������������������������������������������������������������������������������������210 Symmetric Encryption ���������������������������������������������������������������������������������������������������������211 Asymmetric Encryption �������������������������������������������������������������������������������������������������������213 Digital Signatures ����������������������������������������������������������������������������������������������������������������214 Hybrid Encryption ����������������������������������������������������������������������������������������������������������������215 Azure Key Vault ��������������������������������������������������������������������������������������������������������������������217 Don’t Forget the Perimeter ��������������������������������������������������������������������������������������������������������219 Next Steps ���������������������������������������������������������������������������������������������������������������������������������220 Index ���������������������������������������������������������������������������������������������������������������������223 ix About the Author Stephen Haunts has been a software developer for the last 25 years, working in many industries, such as video games, financial services, insurance, and healthcare. One of his main specialties is security and cryptography, and he has implemented a range of techniques into many systems at many companies, including financial lenders, insurance claims management companies, and global banks. Stephen regularly speaks at conferences and user groups about secure coding in .NET, and he has authored a highly rated cryptography course for Pluralsight. xi

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.