دسترسی نامحدود
برای کاربرانی که ثبت نام کرده اند
برای ارتباط با ما می توانید از طریق شماره موبایل زیر از طریق تماس و پیامک با ما در ارتباط باشید
در صورت عدم پاسخ گویی از طریق پیامک با پشتیبان در ارتباط باشید
برای کاربرانی که ثبت نام کرده اند
درصورت عدم همخوانی توضیحات با کتاب
از ساعت 7 صبح تا 10 شب
دسته بندی: شبکه سازی ویرایش: سری: ISBN (شابک) : 059600270X ناشر: سال نشر: 2002 تعداد صفحات: 338 زبان: English فرمت فایل : PDF (درصورت درخواست کاربر به PDF، EPUB یا AZW3 تبدیل می شود) حجم فایل: 2 مگابایت
در صورت تبدیل فایل کتاب Network Security With OpenSSL به فرمت های PDF، EPUB، AZW3، MOBI و یا DJVU می توانید به پشتیبان اطلاع دهید تا فایل مورد نظر را تبدیل نمایند.
توجه داشته باشید کتاب امنیت شبکه با OpenSSL نسخه زبان اصلی می باشد و کتاب ترجمه شده به فارسی نمی باشد. وبسایت اینترنشنال لایبرری ارائه دهنده کتاب های زبان اصلی می باشد و هیچ گونه کتاب ترجمه شده یا نوشته شده به فارسی را ارائه نمی دهد.
اکثر برنامههای کاربردی این روزها حداقل تا حدودی از شبکه آگاه هستند، اما چگونه میتوان از آن برنامهها در برابر تهدیدات رایج امنیتی شبکه محافظت کرد؟ بسیاری از توسعه دهندگان به OpenSSL روی می آورند، نسخه منبع باز SSL/TLS که پرکاربردترین پروتکل برای ارتباطات شبکه ایمن است. کتابخانه OpenSSL در حال پذیرش گسترده ای برای وب سایت هایی است که برای محافظت از طیف گسترده ای از اطلاعات حساس، مانند شماره کارت اعتباری و سایر تراکنش های مالی، به عملکردهای رمزنگاری نیاز دارند. این کتابخانه تنها اجرای رایگان SSL با ویژگی های کامل برای C و C است و می توان از آن به صورت برنامه نویسی یا از خط فرمان برای ایمن سازی بیشتر پروتکل های شبکه مبتنی بر TCP استفاده کرد. امنیت شبکه با OpenSSL توسعه دهندگان را قادر می سازد تا از این پروتکل بسیار موثرتر استفاده کنند. به طور سنتی، انجام یک کار ساده در OpenSSL می تواند به راحتی هفته ها طول بکشد. این کتاب مختصر راهنمایی لازم را برای جلوگیری از مشکلات به شما می دهد، در حالی که به شما امکان می دهد از ویژگی های پیشرفته کتابخانه بهره ببرید. و به جای اینکه شما را درگیر جزئیات فنی نحوه عملکرد SSL در زیر هود کند، این کتاب تنها اطلاعاتی را ارائه می دهد که برای استفاده ایمن و موثر از OpenSSL لازم است. این کتاب به صورت گام به گام، چالشهای مربوط به امنیت ارتباطات شبکه را شرح میدهد و به شما نشان میدهد که چگونه از ابزار OpenSSL برای رویارویی با این چالشها به بهترین شکل استفاده کنید. به عنوان یک مدیر سیستم یا شبکه، از بررسی کامل رابط خط فرمان OpenSSL و همچنین دستورالعمل های گام به گام برای دریافت گواهینامه ها و تنظیم مرجع صدور گواهینامه خود بهره مند خواهید شد. بهعنوان یک توسعهدهنده، از بحثهای عمیق و مثالهایی درباره نحوه استفاده از OpenSSL در برنامههای خود بهره بیشتری خواهید برد. اگرچه OpenSSL به زبان C نوشته شده است، اطلاعاتی در مورد نحوه استفاده از OpenSSL با Perl، Python و PHP نیز گنجانده شده است. OpenSSL ممکن است به نیاز شما برای محافظت از داده های حساس پاسخ دهد. اگر چنین است، امنیت شبکه با OpenSSL تنها راهنمای موجود در مورد این موضوع است.
Most applications these days are at least somewhat network aware, but how do you protect those applications against common network security threats? Many developers are turning to OpenSSL, an open source version of SSL/TLS, which is the most widely used protocol for secure network communications. The OpenSSL library is seeing widespread adoption for web sites that require cryptographic functions to protect a broad range of sensitive information, such as credit card numbers and other financial transactions. The library is the only free, full-featured SSL implementation for C and C++, and it can be used programmatically or from the command line to secure most TCP-based network protocols. Network Security with OpenSSL enables developers to use this protocol much more effectively. Traditionally, getting something simple done in OpenSSL could easily take weeks. This concise book gives you the guidance you need to avoid pitfalls, while allowing you to take advantage of the library?s advanced features. And, instead of bogging you down in the technical details of how SSL works under the hood, this book provides only the information that is necessary to use OpenSSL safely and effectively. In step-by-step fashion, the book details the challenges in securing network communications, and shows you how to use OpenSSL tools to best meet those challenges. As a system or network administrator, you will benefit from the thorough treatment of the OpenSSL command-line interface, as well as from step-by-step directions for obtaining certificates and setting up your own certification authority. As a developer, you will further benefit from the in-depth discussions and examples of how to use OpenSSL in your own programs. Although OpenSSL is written in C, information on how to use OpenSSL with Perl, Python and PHP is also included. OpenSSL may well answer your need to protect sensitive data. If that?s the case, Network Security with OpenSSL is the only guide available on the subject.
Network Security with OpenSSL.pdf Table of Content Dedication Preface About This Book Conventions Used in This Book Comments and Questions Acknowledgments Chapter 1. Introduction 1.1 Cryptography for the Rest of Us 1.1.1 Goals of Cryptography 1.1.2 Cryptographic Algorithms 1.1.2.1 Symmetric key encryption Figure 1-1. Symmetric key cryptography 1.1.2.2 Public key encryption Figure 1-2. Public key cryptography 1.1.2.3 Cryptographic hash functions and Message Authentication Codes 1.1.2.4 Digital signatures 1.2 Overview of SSL Figure 1-3. An overview of direct communication in SSL Figure 1-4. A man-in-the-middle attack 1.3 Problems with SSL 1.3.1 Efficiency 1.3.1.1 Cryptographic acceleration hardware 1.3.1.2 Load balancing 1.3.2 Keys in the Clear 1.3.3 Bad Server Credentials 1.3.4 Certificate Validation 1.3.5 Poor Entropy 1.3.6 Insecure Cryptography 1.4 What SSL Doesn't Do Well 1.4.1 Other Transport Layer Protocols 1.4.2 Non-Repudiation 1.4.3 Protection Against Software Flaws 1.4.4 General-Purpose Data Security 1.5 OpenSSL Basics Example 1-1. Building and installing OpenSSL on a Unix system 1.6 Securing Third-Party Software 1.6.1 Server-Side Proxies Figure 1-5. Stunnel proxies Figure 1-6. Load balancing with Stunnel for cryptographic acceleration 1.6.2 Client-Side Proxies Chapter 2. Command-Line Interface 2.1 The Basics 2.1.1 Configuration Files Example 2-1. An excerpt from the default OpenSSL configuration file 2.2 Message Digest Algorithms 2.2.1 Examples 2.3 Symmetric Ciphers 2.3.1 Examples 2.4 Public Key Cryptography 2.4.1 Diffie-Hellman 2.4.1.1 Examples 2.4.2 Digital Signature Algorithm 2.4.2.1 Examples 2.4.3 RSA 2.4.3.1 Examples 2.5 S/MIME 2.5.1 Examples 2.6 Passwords and Passphrases 2.7 Seeding the Pseudorandom Number Generator Chapter 3. Public Key Infrastructure (PKI) 3.1 Certificates 3.1.1 Certification Authorities 3.1.1.1 Private Certification Authorities 3.1.1.2 Public Certification Authorities 3.1.2 Certificate Hierarchies 3.1.3 Certificate Extensions Table 3-1. Common bit settings for the keyUsage extension Table 3-2. Purposes defined for the extKeyUsage extension 3.1.4 Certificate Revocation Lists 3.1.5 Online Certificate Status Protocol 3.2 Obtaining a Certificate 3.2.1 Personal Certificates 3.2.2 Code-Signing Certificates 3.2.3 Web Site Certificates 3.3 Setting Up a Certification Authority 3.3.1 Creating an Environment for Your Certification Authority Example 3-1. Creating the CA's environment 3.3.2 Building an OpenSSL Configuration File Example 3-2. A simple CA configuration definition Example 3-3. Telling OpenSSL where to find our configuration file 3.3.3 Creating a Self-Signed Root Certificate Example 3-4. Configuration file additions for generating a self-signed root certificate Example 3-5. Output from generating a self-signed root certificate the command output shown is incorrect (it shows a 1024 bit CA key, but given the example and the configuration file, the key would in fact be 2048 bits) 3.3.4 Issuing Certificates Example 3-6. Generating a certificate request Example 3-7. The resulting certificate request Example 3-8. Issuing a certificate from a certificate request 3.3.5 Revoking Certificates Example 3-9. Revoking a certificate Example 3-10. A certificate revocation list Chapter 4. Support Infrastructure 4.1 Multithread Support 4.1.1 Static Locking Callbacks Example 4-1. Static locking callbacks for WIN32 and POSIX threads systems 4.1.2 Dynamic Locking Callbacks Example 4-2. E xtensions to the library to support the dynamic locking mechanism 4.2 Internal Error Handling 4.2.1 Manipulating Error Queues Example 4-3. Accessing error information on the error queue 4.2.2 Human-Readable Error Messages 4.2.3 Threading and Practical Applications 4.3 Abstract Input/Output 4.3.1 Source/Sink BIOs 4.3.1.1 Memory sources/sinks Example 4-4. Creating a memory BIO 4.3.1.2 File sources/sinks Example 4-5. Creating a file BIO 4.3.1.3 Socket sources/sinks Example 4-6. Creating a socket BIO 4.3.1.4 BIO pairs Example 4-7. Creating BIO pairs 4.3.2 Filter BIOs Example 4-8. Assembling and using a BIO chain 4.4 Random Number Generation 4.4.1 Seeding the PRNG Example 4-9. Using RAND_load_file() and RAND_write_file() Example 4-10. Seeding OpenSSL's PRNG with /dev/random 4.4.2 Using an Alternate Entropy Source Example 4-11. Seeding OpenSSL's PRNG with EGADS Example 4-12. Seeding OpenSSL's PRNG via an EGD socket 4.5 Arbitrary Precision Math 4.5.1 The Basics Example 4-13. Creating, initializing, and destroying BIGNUMs Example 4-14. The wrong way and the right way to copy a BIGNUM Example 4-15. Converting between BIGNUM and binary representations 4.5.2 Mathematical Operations Table 4-1. Arithmetic functions for BIGNUMs 4.5.3 Generating Prime Numbers Example 4-16. Generating a pseudorandom prime number with BN_generate_prime() 4.6 Using Engines Example 4-17. Enabling use of a hardware engine Table 4-2. Supported hardware and software engines Table 4-3. Flags for ENGINE_set_default Chapter 5. SSL/TLS Programming 5.1 Programming with SSL 5.1.1 The Application(s) to Secure Example 5-1. common.h Example 5-2. common.c Example 5-3. client.c Example 5-4. The server application 5.1.2 Step 1: SSL Version Selection and Certificate Preparation 5.1.2.1 Background Table 5-1. Functions to retrieve pointers to SSL_METHOD objects 5.1.2.2 Certificate preparation 5.1.2.3 Our example extended Example 5-5. client1.c Example 5-6. server1.c 5.1.3 Step 2: Peer Authentication 5.1.3.1 Background 5.1.3.2 Incorporating trusted certificates 5.1.3.3 Certificate verification Example 5-7. A verify callback (implemented in common.c and prototyped in common.h) 5.1.3.4 Incorporating certificate revocation lists 5.1.3.5 Post-connection assertions Example 5-8. A function to do post-connection assertions (implemented in common.c and prototyped in common.h) 5.1.3.6 Further extension of the examples Example 5-9. client2.c Example 5-10. server2.c 5.1.4 Step 3: SSL Options and Cipher Suites 5.1.4.1 Setting SSL options 5.1.4.2 Ephemeral keying 5.1.4.3 Cipher suite selection 5.1.4.4 The final product Example 5-11. client3.c Example 5-12. server3.c 5.1.4.5 Beyond the example 5.2 Advanced Programming with SSL 5.2.1 SSL Session Caching 5.2.1.1 Client-side SSL sessions Example 5-13. Pseudocode for client-side caching 5.2.1.2 Server-side SSL sessions 5.2.1.3 An on-disk, session caching framework Example 5-14. A framework for external session caching 5.2.2 I/O on SSL Connections 5.2.2.1 Reading and writing functions Table 5-2. Return values of SSL_read and SSL_write Table 5-3. Some common return values of SSL_get_error Example 5-15. A sample I/O call template 5.2.2.2 Blocking I/O 5.2.2.3 Non-blocking I/O Example 5-16. A sample non-blocking I/O loop 5.2.3 SSL Renegotiations 5.2.3.1 Implementing renegotiations Example 5-17. Code fragment to force a renegotiation from a server Example 5-18. Code to cause forced renegotiation in order to request stronger client authentication and distinguish the sessions 5.2.3.2 Renegotiations in 0.9.7 5.2.3.3 Further notes Chapter 6. Symmetric Cryptography 6.1 Concepts in Symmetric Cryptography 6.1.1 Block Ciphers and Stream Ciphers 6.1.2 Basic Block Cipher Modes 6.2 Encrypting with the EVP API 6.2.1 Available Ciphers 6.2.1.1 AES Table 6-1. Referencing the AES cipher (OpenSSL 0.9.7 only) 6.2.1.2 Blowfish Table 6-2. Referencing the Blowfish cipher 6.2.1.3 CAST5 Table 6-3. Referencing the CAST5 cipher 6.2.1.4 DES Table 6-4. Referencing standard DES 6.2.1.5 DESX Table 6-5. Referencing DESX 6.2.1.6 Triple DES Table 6-6. Referencing 3DES 6.2.1.7 IDEA Table 6-7. Referencing IDEA 6.2.1.8 RC2? Table 6-8. Referencing RC2 6.2.1.9 RC4? Table 6-9. Referencing RC4 6.2.1.10 RC5? Table 6-10. Referencing RC5 6.2.2 Initializing Symmetric Ciphers Example 6-1. Preparing to use Blowfish in CBC mode for encryption Example 6-2. Preparing to use Blowfish in CBC mode for decryption 6.2.3 Specifying Key Length and Other Options 6.2.4 Encryption Example 6-3. Encrypting plaintext 100 bytes at a time Example 6-4. Performing incremental encryption 6.2.5 Decryption Example 6-5. Decrypting ciphertext Example 6-6. Using the example encryption and decryption functions 6.2.6 Handling UDP Traffic with Counter Mode Example 6-7. Encryption and decryption using counter mode 6.3 General Recommendations Chapter 7. Hashes and MACs 7.1 Overview of Hashes and MACs 7.2 Hashing with the EVP API Table 7-1. Message digests and the EVP interface Example 7-1. Computing a hash value using the EVP API Example 7-2. Printing the hexadecimal representation of a hash value Example 7-3. Computing SHA1 hashes of files 7.3 Using MACs Example 7-4. Computing a MAC with the HMAC function Example 7-5. A binary comparison function Example 7-6. Computing a MAC using HMAC_Init, HMAC_Update, and HMAC_Final 7.3.1 Other MACs 7.3.1.1 CBC-MAC Example 7-7. cbcmac.h Example 7-8. cbcmac.c 7.3.1.2 XCBC-MAC Example 7-9. xcbcmac.h Example 7-10. xcbcmac.c 7.3.1.3 XOR-MAC 7.3.1.4 UMAC 7.4 Secure HTTP Cookies Example 7-11. Encrypting data for storage in a cookie Example 7-12. Decrypting data stored in a cookie Chapter 8. Public Key Algorithms 8.1 When to Use Public Key Cryptography 8.2 Diffie-Hellman 8.2.1 The Basics 8.2.2 Generating and Exchanging Parameters 8.2.3 Computing Shared Secrets 8.2.4 Practical Applications 8.2 Diffie-Hellman 8.2.1 The Basics 8.2.2 Generating and Exchanging Parameters 8.2.3 Computing Shared Secrets 8.2.4 Practical Applications 8.3 Digital Signature Algorithm (DSA) 8.3.1 The Basics 8.3.2 Generating Parameters and Keys 8.3.3 Signing and Verifying 8.3.4 Practical Applications 8.4 RSA 8.4.1 The Basics 8.4.2 Generating Keys 8.4.3 Data Encryption, Key Agreement, and Key Transport 8.4.4 Signing and Verifying 8.4.5 Practical Applications 8.5 The EVP Public Key Interface 8.5.1 Signing and Verifying 8.5.2 Encrypting and Decrypting Example 8-1. Calling EVP_SealInit 8.6 Encoding and Decoding Objects 8.6.1 Writing and Reading DER-Encoded Objects Example 8-2. DER-encoding an RSA public key Example 8-3. DER-decoding an RSA public key Table 8-1. Functions for reading and writing DER encodings of public key objects Example 8-4. Reading and writing DER-encoded objects using the BIO and file functions 8.6.2 Writing and Reading PEM-Encoded Objects Table 8-2. Functions for reading and writing PEM encodings of public key objects Chapter 9. OpenSSL in Other Languages 9.1 Net::SSLeay for Perl 9.1.1 Net::SSLeay Variables 9.1.2 Net::SSLeay Error Handling 9.1.3 Net::SSLeay Utility Functions 9.1.4 Net::SSLeay Low-Level Bindings 9.2 M2Crypto for Python 9.2.1 Low-Level Bindings 9.2.2 High-Level Classes 9.2.2.1 M2Crypto.SSL 9.2.2.2 M2Crypto.BIO 9.2.2.3 M2Crypto.EVP Example 9-1. Computing the cryptographic hash of data Example 9-2. Encrypting and decrypting with a symmetric cipher 9.2.2.4 Miscellaneous crypto 9.2.3 Python Module Extensions 9.2.3.1 Extensions to httplib: httpslib 9.2.3.2 Extensions to urllib: m2urllib 9.2.3.3 Extensions to xmlrpclib: m2xmlrpclib 9.3 OpenSSL Support in PHP 9.3.1 General Functions 9.3.2 Certificate Functions Table 9-1. Possible purpose values for openssl_x509_checkpurpose Table 9-2. Keys for the array returned by openssl_x509_parse 9.3.3 Encryption and Signing Functions 9.3.4 PKCS#7 (S/MIME) Functions Table 9-3. Flags: openssl_pkcs7_encrypt, openssl_pkcs7_sign, openssl_pkcs7_verify Chapter 10. Advanced Programming Topics 10.1 Object Stacks Example 10-1. Stack manipulation functions in generic form 10.2 Configuration Files Example 10-2. A sample configuration file (testconf.cnf) Example 10-3. Code to interact with the configuration file Example 10-4. The declaration of CONF_VALUE 10.3 X.509 10.3.1 Generating Requests 10.3.1.1 Subject name 10.3.1.2 X.509 Version 3 extensions 10.3.1.3 Putting it all together Example 10-5. A program to generate a certificate request 10.3.2 Making Certificates Example 10-6. Creating a certificate from a request and CA credentials 10.3.3 X.509 Certificate Checking Example 10-7. Verifying a client certificate 10.4 PKCS#7 and S/MIME 10.4.1 Signing and Verifying Example 10-8. A signing and verifying utility 10.4.2 Encrypting and Decrypting Example 10-9. A utility to encrypt and decrypt S/MIME messages 10.4.3 Combined Operations 10.4.4 PKCS#7 Flags 10.5 PKCS#12 10.5.1 Wrapping Information into a PKCS#12 Object 10.5.2 Importing Objects from PKCS#12 Data Appendix A. Command-Line Reference Options Notes Options Configuration Options Notes Options Notes Options Notes Options Notes Options Notes Options Notes Options Options Notes Options Notes Table A-1. Ciphers supported by the enc command Option Notes Options Notes Options Notes Options Notes Options Notes Options Notes Options Options Options Notes Options Configuration Options Notes Options Notes Options Options Notes Options Notes Table A-2. Commands recognized by the server Options Options Options Notes Notes Options Options Notes Options General Options Display Options Trust Options Signing Options Name Options Colophon