Šifrovací službyCryptographic Services

Veřejné sítě, jako je Internet se neposkytuje způsob zabezpečenou komunikaci mezi entitami.Public networks such as the Internet do not provide a means of secure communication between entities. Komunikace v těchto sítích je náchylné ke čtení nebo dokonce i změnit neoprávněné třetími stranami.Communication over such networks is susceptible to being read or even modified by unauthorized third parties. Šifrování pomáhá chránit data před zobrazením, poskytuje způsoby, jak zjistit, zda byla data změněna, a pomáhá zajistit zabezpečený způsob komunikace přes jinak nezabezpečené kanály.Cryptography helps protect data from being viewed, provides ways to detect whether data has been modified, and helps provide a secure means of communication over otherwise nonsecure channels. Například data může být zašifrovaný pomocí algoritmu, přenášet do šifrovaného stavu a později dešifrovat určenou stranou.For example, data can be encrypted by using a cryptographic algorithm, transmitted in an encrypted state, and later decrypted by the intended party. Pokud třetích stran zachycuje šifrovaná data, bude obtížné je dešifrovat.If a third party intercepts the encrypted data, it will be difficult to decipher.

V rozhraní .NET Framework, třídy v System.Security.Cryptography obor názvů spravovat mnoho podrobností kryptografie za vás.In the .NET Framework, the classes in the System.Security.Cryptography namespace manage many details of cryptography for you. Některé jsou obálky pro nespravované Microsoft Cryptography API (rozhraní CryptoAPI), zatímco jiné jsou čistě spravovaná implementace.Some are wrappers for the unmanaged Microsoft Cryptography API (CryptoAPI), while others are purely managed implementations. Nemusíte být odborníky na kryptografii k použití těchto tříd.You do not need to be an expert in cryptography to use these classes. Při vytváření nové instance jednoho šifrování třídy algoritmus klíče jsou automaticky generované pro snadné použití a výchozí vlastnosti jsou bezpečné a co nevíce zabezpečený.When you create a new instance of one of the encryption algorithm classes, keys are autogenerated for ease of use, and default properties are as safe and secure as possible.

Tento přehled obsahuje souhrn metody šifrování a postupy podporované rozhraním .NET Framework, včetně manifesty ClickOnce, Suite B a kryptografické služby nové generace (CNG) podporu zavedena v rozhraní .NET Framework 3.5.This overview provides a synopsis of the encryption methods and practices supported by the .NET Framework, including the ClickOnce manifests, Suite B, and Cryptography Next Generation (CNG) support introduced in the .NET Framework 3.5.

Tento přehled obsahuje následující části:This overview contains the following sections:

Další informace o šifrování a služeb Microsoftu, komponenty a nástroje, které vám umožní přidat kryptografické zabezpečení pro vaše aplikace najdete v systému Win32 a COM Development sekci zabezpečení v této dokumentaci.For additional information about cryptography and about Microsoft services, components, and tools that enable you to add cryptographic security to your applications, see the Win32 and COM Development, Security section of this documentation.

Kryptografické primitivCryptographic Primitives

V typické situace, ve kterém se používá šifrování obě strany (Alice a Bob) komunikaci přes nezabezpečený kanál.In a typical situation where cryptography is used, two parties (Alice and Bob) communicate over a nonsecure channel. Alice a Bob chcete zajistit, aby jejich komunikace zůstal Nesrozumitelná každý, kdo může naslouchat.Alice and Bob want to ensure that their communication remains incomprehensible by anyone who might be listening. Navíc vzhledem k tomu, že Alice a Bob jsou ve vzdálených umístěních, Alice musí zajistit, že informace, které se od Boba přijde nebyl změněn kdokoli během přenosu.Furthermore, because Alice and Bob are in remote locations, Alice must make sure that the information she receives from Bob has not been modified by anyone during transmission. Kromě toho také musí zajistit, že informace skutečně pocházejí od Boba a ne z někoho, kdo je zosobňující Bob.In addition, she must make sure that the information really does originate from Bob and not from someone who is impersonating Bob.

Šifrování se používá k naplnění následujících cílů:Cryptography is used to achieve the following goals:

  • Důvěrnost: Chcete-li zabránit čtená data nebo identity uživatele.Confidentiality: To help protect a user's identity or data from being read.

  • Integrita dat: Chcete-li chránit data před změnou.Data integrity: To help protect data from being changed.

  • Ověřování: K zajištění, že data pochází od určitého výrobce.Authentication: To ensure that data originates from a particular party.

  • Nepopiratelnost odpovědnosti: Zabránit konkrétní stran odepření, byla odeslána zpráva.Non-repudiation: To prevent a particular party from denying that they sent a message.

K dosažení těchto cílů, slouží k vytvoření kryptografických schémat kombinaci algoritmů a postupy, které jsou známé jako kryptografické primitiv.To achieve these goals, you can use a combination of algorithms and practices known as cryptographic primitives to create a cryptographic scheme. V následující tabulce jsou uvedeny kryptografické primitiv a jejich použití.The following table lists the cryptographic primitives and their uses.

Kryptografická primitivaCryptographic primitive PoužitíUse
Šifrování tajného klíče (symetrického šifrování)Secret-key encryption (symmetric cryptography) Provede transformaci na data před čtením třetím stranám.Performs a transformation on data to keep it from being read by third parties. Tento typ šifrování používá jediný sdílený tajný klíč k šifrování a dešifrování dat.This type of encryption uses a single shared, secret key to encrypt and decrypt data.
Šifrování s veřejným klíčem (asymetrické šifrování)Public-key encryption (asymmetric cryptography) Provede transformaci na data před čtením třetím stranám.Performs a transformation on data to keep it from being read by third parties. Tento typ šifrování používá k šifrování a dešifrování dat dvojice veřejného/soukromého klíče.This type of encryption uses a public/private key pair to encrypt and decrypt data.
Kryptografický podpisCryptographic signing Pomáhá ověřit, že data pochází z určité skupiny tak, že vytvoříte digitální podpis, který je jedinečný pro tuto skupinu.Helps verify that data originates from a specific party by creating a digital signature that is unique to that party. Tento proces také používá funkce hash.This process also uses hash functions.
Kryptografické hodnoty hashCryptographic hashes Mapuje data z jakékoli délky na sekvenci bajtů pevné délky.Maps data from any length to a fixed-length byte sequence. Hodnoty hash jsou statisticky jedinečný.; jiné pořadí dvoubajtový nebude na stejnou hodnotu hash.Hashes are statistically unique; a different two-byte sequence will not hash to the same value.

Zpět na začátekBack to top

Šifrování tajného klíčeSecret-Key Encryption

Algoritmy šifrování tajného klíče šifrování a dešifrování dat pomocí jednoho tajný klíč.Secret-key encryption algorithms use a single secret key to encrypt and decrypt data. Klíč z přístup neoprávněné agenty musí zabezpečit, protože každá strana, která má klíč můžete použít pro data dešifrovat nebo šifrovat vlastní data, nárokování, že pochází od vás.You must secure the key from access by unauthorized agents, because any party that has the key can use it to decrypt your data or encrypt their own data, claiming it originated from you.

Šifrování tajného klíče je také označovány jako symetrického šifrování, protože se používá stejný klíč k šifrování a dešifrování.Secret-key encryption is also referred to as symmetric encryption because the same key is used for encryption and decryption. Algoritmy šifrování tajného klíče jsou velmi rychlé zpracování (ve srovnání s algoritmy veřejného klíče) a jsou vhodné pro provedení kryptografické transformace na velkých datových proudů.Secret-key encryption algorithms are very fast (compared with public-key algorithms) and are well suited for performing cryptographic transformations on large streams of data. Asymetrických šifrovacích algoritmů třeba RSA, jsou omezeny matematicky v tom, kolik dat můžete šifrovat.Asymmetric encryption algorithms such as RSA are limited mathematically in how much data they can encrypt. Algoritmy šifrování se symetrickým obvykle není nutné tyto problémy.Symmetric encryption algorithms do not generally have those problems.

Typ tajného klíče algoritmu volá bloková šifra se používá k šifrování jeden blok dat v čase.A type of secret-key algorithm called a block cipher is used to encrypt one block of data at a time. Blokové šifry, jako je Standard DES (Data Encryption), TripleDES, a Advanced Encryption (Standard AES), kryptograficky transformují vstupní blok n bajtů do výstupního bloku šifrovaných bajtů.Block ciphers such as Data Encryption Standard (DES), TripleDES, and Advanced Encryption Standard (AES) cryptographically transform an input block of n bytes into an output block of encrypted bytes. Pokud chcete šifrovat nebo dešifrovat sekvenci bajtů, je nutné provést blok po bloku.If you want to encrypt or decrypt a sequence of bytes, you have to do it block by block. Protože n je malá (8 bajtů pro algoritmus DES a TripleDES, 16 bajtů [výchozí], 24 bajtů nebo 32 bajtů pro algoritmus AES), datových hodnot, které jsou větší než n musela být šifrovaná jeden blok najednou.Because n is small (8 bytes for DES and TripleDES; 16 bytes [the default], 24 bytes, or 32 bytes for AES), data values that are larger than n have to be encrypted one block at a time. Hodnoty dat, které jsou menší než n musí rozbalí se n zpracování.Data values that are smaller than n have to be expanded to n in order to be processed.

Jednoduchá forma bloková šifra se nazývá režim electronic codebook (ECB).One simple form of block cipher is called the electronic codebook (ECB) mode. Režim ECB se nepovažuje za bezpečnou, protože nepoužívá inicializační vektor k inicializaci prvního bloku ve formátu prostého textu.ECB mode is not considered secure, because it does not use an initialization vector to initialize the first plaintext block. Pro daný tajný klíč k, bude jednoduchá bloková šifra, která nepoužívá inicializační vektor bude šifrovat stejný vstupní blok prostého textu do stejného výstupního bloku šifrovaného textu.For a given secret key k, a simple block cipher that does not use an initialization vector will encrypt the same input block of plaintext into the same output block of ciphertext. Proto pokud váš datový proud ve formátu prostého textu vstupu obsahuje duplicitní bloky, budete mít duplicitní bloky v výstupní datový proud šifrovaného textu.Therefore, if you have duplicate blocks in your input plaintext stream, you will have duplicate blocks in your output ciphertext stream. Tyto bloky duplicitním výstupem výstrah neoprávněným uživatelům slabé šifrování používá algoritmy, které byly použity a možné režimy útoku.These duplicate output blocks alert unauthorized users to the weak encryption used the algorithms that might have been employed, and the possible modes of attack. Režim šifrování ECB proto je poměrně snadno napadnutelný analýzy a nakonec klíč zjišťování.The ECB cipher mode is therefore quite vulnerable to analysis, and ultimately, key discovery.

Třídy blokové šifry, které jsou k dispozici v knihovně základních tříd pomocí řetězení režim s názvem bloků šifer řetězení CBC (), i když toto výchozí nastavení můžete změnit, pokud chcete výchozí hodnotu.The block cipher classes that are provided in the base class library use a default chaining mode called cipher-block chaining (CBC), although you can change this default if you want.

CBC šifrování překonat problémy spojené se ECB šifry pomocí inicializační vektor (IV) k šifrování první blok prostého textu.CBC ciphers overcome the problems associated with ECB ciphers by using an initialization vector (IV) to encrypt the first block of plaintext. Každý další blok prostého textu při bitový exkluzivní operátor OR (XOR) operace u předchozího bloku šifrovaného textu předtím, než je šifrovaný.Each subsequent block of plaintext undergoes a bitwise exclusive OR (XOR) operation with the previous ciphertext block before it is encrypted. Každý blok šifrovaného textu je proto závisí na všechny předchozí bloky.Each ciphertext block is therefore dependent on all previous blocks. Pokud je tento systém záhlaví použit, běžné zpráv, které může být známé neoprávněný uživatel nemůže být umožňuje provádět zpětnou analýzu klíč.When this system is used, common message headers that might be known to an unauthorized user cannot be used to reverse-engineer a key.

Jedním ze způsobů k ohrožení dat, která je zašifrovaný pomocí CBC šifer s nižší sílou je provést během důkladného prohledání objektu všechny možné klíče.One way to compromise data that is encrypted with a CBC cipher is to perform an exhaustive search of every possible key. V závislosti na velikosti klíč, který se používá k provádění šifrování tento druh vyhledávání je velmi časově náročné, dokonce i nejrychlejší počítačů a proto je nemožné.Depending on the size of the key that is used to perform encryption, this kind of search is very time-consuming using even the fastest computers and is therefore infeasible. Větší velikosti klíče jsou obtížnější dekódovat.Larger key sizes are more difficult to decipher. I když šifrování není znemožnit teoreticky pro nežádoucí osobu načíst šifrovaná data, zvýšit náklady na to.Although encryption does not make it theoretically impossible for an adversary to retrieve the encrypted data, it does raise the cost of doing this. Pokud trvá tří měsíců provádět během důkladného prohledání data, která má smysl pouze pro několik dní, během důkladného prohledání metodou je nepraktické.If it takes three months to perform an exhaustive search to retrieve data that is meaningful only for a few days, the exhaustive search method is impractical.

Nevýhodou šifrování tajného klíče je, že předpokládá, že obě strany mají dohodnutou klíč a vektor IV a předávají jejich hodnoty.The disadvantage of secret-key encryption is that it presumes two parties have agreed on a key and IV, and communicated their values. Vektor IV se nepovažuje za tajného kódu a může být přenášen ve formátu prostého textu se zprávou.The IV is not considered a secret and can be transmitted in plaintext with the message. Ale klíč musí být udržen v tajnosti před neoprávněnými uživateli.However, the key must be kept secret from unauthorized users. Kvůli těmto problémům šifrování tajného klíče se často používá společně s veřejným klíčem šifrování komunikovat soukromě hodnoty klíč a vektor IV.Because of these problems, secret-key encryption is often used together with public-key encryption to privately communicate the values of the key and IV.

Za předpokladu, že Alice a Bob se dvěma stranami, které chcete komunikovat přes nezabezpečený kanál, můžou používat šifrování tajného klíče následujícím způsobem: Alice a Bob svůj souhlas s konkrétním klíč a vektor IV používat jeden konkrétní algoritmus (například standard AES).Assuming that Alice and Bob are two parties who want to communicate over a nonsecure channel, they might use secret-key encryption as follows: Alice and Bob agree to use one particular algorithm (AES, for example) with a particular key and IV. Alice vytvoří zprávu a vytváří datový proud sítě (třeba pojmenovaného kanálu nebo sítě e-mail s) na základě které chcete odeslat zprávu.Alice composes a message and creates a network stream (perhaps a named pipe or network email) on which to send the message. V dalším kroku Jana zašifruje text pomocí klíč a vektor IV a odešle zašifrovanou zprávu a vektor IV Bob prostřednictvím sítě intranet.Next, she encrypts the text using the key and IV, and sends the encrypted message and IV to Bob over the intranet. Bob obdrží šifrovaného textu a dešifruje ji pomocí vektor IV a dříve dohodnutých klíč.Bob receives the encrypted text and decrypts it by using the IV and previously agreed upon key. Pokud je přenos, sběrač nelze obnovit původní zprávu, protože nezná klíč.If the transmission is intercepted, the interceptor cannot recover the original message, because he does not know the key. V tomto scénáři musí zůstat pouze klíč tajného kódu.In this scenario, only the key must remain secret. Ve scénáři reálného světa Alice a Bob vygeneruje tajný klíč a šifrování veřejného klíče (asymetricky) používá k přenosu tajných kódů (symetrického) klíče na druhou stranu.In a real world scenario, either Alice or Bob generates a secret key and uses public-key (asymmetric) encryption to transfer the secret (symmetric) key to the other party. Další informace o šifrování s veřejným klíčem najdete v další části.For more information about public-key encryption, see the next section.

Rozhraní .NET Framework poskytuje následující třídy, které implementují algoritmy šifrování tajného klíče:The .NET Framework provides the following classes that implement secret-key encryption algorithms:

Zpět na začátekBack to top

Šifrování s veřejným klíčemPublic-Key Encryption

Šifrování s veřejným klíčem používá soukromý klíč, který musí být udržen v tajnosti před neoprávněnými uživateli a veřejného klíče, který lze zveřejnit všem uživatelům.Public-key encryption uses a private key that must be kept secret from unauthorized users and a public key that can be made public to anyone. Veřejný klíč a soukromý klíč matematicky propojenou; data, která je zašifrovaná pomocí veřejného klíče, mohou ho dešifrovat jenom s privátním klíčem, a data, která je podepsaná pomocí soukromého klíče můžete ověřit pouze pomocí veřejného klíče.The public key and the private key are mathematically linked; data that is encrypted with the public key can be decrypted only with the private key, and data that is signed with the private key can be verified only with the public key. Veřejný klíč může být k dispozici všem uživatelům; používá se pro šifrování dat k odeslání do držitele privátní klíč.The public key can be made available to anyone; it is used for encrypting data to be sent to the keeper of the private key. Veřejného klíče kryptografické algoritmy jsou také známé jako asymetrické algoritmy, protože jeden z nich je potřeba šifrovat data a jiný klíč se vyžaduje k dešifrování dat.Public-key cryptographic algorithms are also known as asymmetric algorithms because one key is required to encrypt data, and another key is required to decrypt data. Základní pravidlo kryptografických zakazuje opětovné použití klíčů a oba klíče musí být jedinečná pro každou relaci komunikace.A basic cryptographic rule prohibits key reuse, and both keys should be unique for each communication session. V praxi, jsou však obvykle dlouhodobé asymetrické klíče.However, in practice, asymmetric keys are generally long-lived.

Obě strany (Alice a Bob) mohou použít šifrování s veřejným klíčem následujícím způsobem: Nejprve Alice vytvoří pár veřejného a privátního klíče.Two parties (Alice and Bob) might use public-key encryption as follows: First, Alice generates a public/private key pair. Pokud Bob chce odeslat Alice zašifrovanou zprávu, požádá ji pro svůj veřejný klíč.If Bob wants to send Alice an encrypted message, he asks her for her public key. Alice odešle Bob veřejného klíče v nezabezpečené síti a Bob použije tento klíč k šifrování zpráv.Alice sends Bob her public key over a nonsecure network, and Bob uses this key to encrypt a message. Zašifrovanou zprávu: Bob pošle Alici, a Jana dešifruje ji pomocí vlastního soukromého klíče.Bob sends the encrypted message to Alice, and she decrypts it by using her private key. Pokud Bob obdržel Alice klíč přes nezabezpečený kanál, jako je například veřejnou síť, Bob je otevřená pro útok man-in-the-middle.If Bob received Alice's key over a nonsecure channel, such as a public network, Bob is open to a man-in-the-middle attack. Proto musíte Bob ověřit pomocí Alice, že má správnou kopii svůj veřejný klíč.Therefore, Bob must verify with Alice that he has a correct copy of her public key.

Během přenosu Alice veřejný klíč může zachytit neoprávněný agent klíč.During the transmission of Alice's public key, an unauthorized agent might intercept the key. Kromě toho stejný agent, kterého může zachytit zašifrovanou zprávu od Boba.Furthermore, the same agent might intercept the encrypted message from Bob. Agenta však nemůže dešifrování zprávy s veřejným klíčem.However, the agent cannot decrypt the message with the public key. Zpráva může dešifrovat jenom s privátním klíčem Alice, který nebyl bylo přeneseno.The message can be decrypted only with Alice's private key, which has not been transmitted. Alice svůj privátní klíč k šifrování zprávy s odpovědí Bobovi nepoužívá, protože každý, kdo má veřejný klíč může dešifrování zprávy.Alice does not use her private key to encrypt a reply message to Bob, because anyone with the public key could decrypt the message. Alice chce, aby se pro odeslání zprávy zpět uživateli, že Bob vyzve k zadání jeho veřejný klíč a šifruje své zprávy pomocí veřejného klíče.If Alice wants to send a message back to Bob, she asks Bob for his public key and encrypts her message using that public key. Bob dešifruje pak zprávy pomocí jeho přidružený privátní klíč.Bob then decrypts the message using his associated private key.

V tomto scénáři Alice a Bob šifrování veřejného klíče (asymetricky) pro přenos tajných kódů (symetrického) klíče a tajného klíče šifrování pro zbývající část jeho relace.In this scenario, Alice and Bob use public-key (asymmetric) encryption to transfer a secret (symmetric) key and use secret-key encryption for the remainder of their session.

Následující seznam nabízí porovnání veřejného klíče a tajného klíče kryptografické algoritmy:The following list offers comparisons between public-key and secret-key cryptographic algorithms:

  • Kryptografické algoritmy veřejného klíče použít vyrovnávací paměť pevné velikosti, že kryptografické algoritmy tajného klíče používat do vyrovnávací paměti proměnné délky.Public-key cryptographic algorithms use a fixed buffer size, whereas secret-key cryptographic algorithms use a variable-length buffer.

  • Algoritmy veřejného klíče nelze použít na řetězec data společně do datových proudů způsob, jakým lze algoritmy tajného klíče, protože pouze malé množství dat mohou být zašifrovaná.Public-key algorithms cannot be used to chain data together into streams the way secret-key algorithms can, because only small amounts of data can be encrypted. Asymetrické operace proto nepoužívejte stejný model streamování jako symetrický operace.Therefore, asymmetric operations do not use the same streaming model as symmetric operations.

  • Šifrování veřejného klíče má mnohem větší keyspace (rozsah možných hodnot pro klíč) než šifrování tajného klíče.Public-key encryption has a much larger keyspace (range of possible values for the key) than secret-key encryption. Proto je méně náchylný k vyčerpávající útoků, které se pokoušejí všechny možné klíče šifrování s veřejným klíčem.Therefore, public-key encryption is less susceptible to exhaustive attacks that try every possible key.

  • Veřejné klíče se snadno distribuovat, protože nemají být zabezpečené, za předpokladu, že existuje způsob, chcete-li ověřit totožnost odesílatele.Public keys are easy to distribute because they do not have to be secured, provided that some way exists to verify the identity of the sender.

  • Některé algoritmy veřejného klíče (např. RSA a DSA, ale ne Diffie-Hellman) slouží k vytváření digitálních podpisů, chcete-li ověřit totožnost odesílatele data.Some public-key algorithms (such as RSA and DSA, but not Diffie-Hellman) can be used to create digital signatures to verify the identity of the sender of data.

  • Algoritmy veřejného klíče jsou velmi pomalé ve srovnání s algoritmy tajného klíče a nejsou určeny k zašifrování velké objemy dat.Public-key algorithms are very slow compared with secret-key algorithms, and are not designed to encrypt large amounts of data. Jsou užitečné pouze pro přenos velmi malé množství dat algoritmy veřejného klíče.Public-key algorithms are useful only for transferring very small amounts of data. Šifrování s veřejným klíčem se obvykle používá k šifrování klíč a vektor IV použije algoritmus tajný klíč.Typically, public-key encryption is used to encrypt a key and IV to be used by a secret-key algorithm. Po přenesení klíč a vektor IV šifrování tajného klíče se používá pro zbytek relace.After the key and IV are transferred, secret-key encryption is used for the remainder of the session.

Rozhraní .NET Framework poskytuje následující třídy, které implementují algoritmy šifrování s veřejným klíčem:The .NET Framework provides the following classes that implement public-key encryption algorithms:

RSA umožňuje šifrování a podepisování, ale DSA lze použít pouze pro podepisování a Diffie-Hellman lze použít pouze pro generování klíčů.RSA allows both encryption and signing, but DSA can be used only for signing, and Diffie-Hellman can be used only for key generation. Obecně platí algoritmy veřejného klíče jsou limitovanější v jejich použití než algoritmy soukromého klíče.In general, public-key algorithms are more limited in their uses than private-key algorithms.

Zpět na začátekBack to top

Digitální podpisyDigital Signatures

Veřejný klíč algoritmy lze také tvoří digitální podpisy.Public-key algorithms can also be used to form digital signatures. Digitální podpisy ověřit totožnost odesílatele (v případě, že důvěřujete odesílatele veřejný klíč) a chránit integritu dat.Digital signatures authenticate the identity of a sender (if you trust the sender's public key) and help protect the integrity of data. Pomocí veřejného klíče generované Alice, příjemce dat Alice můžete ověřit, že Alice je odeslání porovnáním digitální podpis k datům uživatele Jaroslava a veřejný klíč od Alice.Using a public key generated by Alice, the recipient of Alice's data can verify that Alice sent it by comparing the digital signature to Alice's data and Alice's public key.

Použití kryptografie využívající veřejný klíč k podepsání zprávy, Alice nejprve platí pro zpráva, kterou chcete vytvořit hodnota hash algoritmu hash.To use public-key cryptography to digitally sign a message, Alice first applies a hash algorithm to the message to create a message digest. Hodnota hash je kompaktní a jedinečný reprezentace data.The message digest is a compact and unique representation of data. Hodnota hash Alice potom šifruje s jeho privátním klíčem k vytvoření své osobní podpisu.Alice then encrypts the message digest with her private key to create her personal signature. Při přijetí zprávy a podpis, dešifruje Bob podpis pomocí veřejného klíče uživatele Jaroslava obnovení zpráv pomocí stejné hashovacího algoritmu, který používá Alice hodnoty hash a hodnoty hash.Upon receiving the message and signature, Bob decrypts the signature using Alice's public key to recover the message digest and hashes the message using the same hash algorithm that Alice used. Pokud hodnota hash, která vypočítá Bob přesně odpovídá hodnota hash přijatých od Alice, Bob jistotu, že zpráva pochází od vlastníka privátního klíče a nebyl změněn data.If the message digest that Bob computes exactly matches the message digest received from Alice, Bob is assured that the message came from the possessor of the private key and that the data has not been modified. Pokud Bob vztahy důvěryhodnosti, že Alice je vlastník privátního klíče, ví, že zpráva pochází od Alice.If Bob trusts that Alice is the possessor of the private key, he knows that the message came from Alice.

Poznámka

Podpis můžete ověřit kdokoli, protože veřejného klíče odesílatele je společné znalosti a je obvykle součástí formátu digitální podpis.A signature can be verified by anyone because the sender's public key is common knowledge and is typically included in the digital signature format. Tato metoda nezachovává tajemství zprávy. pro zprávy být tajný se musí také být zašifrován.This method does not retain the secrecy of the message; for the message to be secret, it must also be encrypted.

Rozhraní .NET Framework poskytuje následující třídy, které implementují algoritmy digitální podpis:The .NET Framework provides the following classes that implement digital signature algorithms:

Zpět na začátekBack to top

Hodnoty hashHash Values

Hashovacích algoritmů mapování binárních hodnot libovolné délky na menší binárních hodnot pevné délky, známé jako hodnoty hash.Hash algorithms map binary values of an arbitrary length to smaller binary values of a fixed length, known as hash values. Číselné vyjádření část dat je hodnota hash.A hash value is a numerical representation of a piece of data. Pokud hodnotu hash odstavce ve formátu prostého textu a změníte ještě jedno písmeno odstavce, vytvoří následující hodnoty hash jinou hodnotu.If you hash a paragraph of plaintext and change even one letter of the paragraph, a subsequent hash will produce a different value. Pokud je hodnota hash kryptograficky silnou, jeho hodnota se změní výrazně.If the hash is cryptographically strong, its value will change significantly. Například pokud se změní část zprávy silné hashovací funkci může vytvořit výstup, který se liší o 50 procent.For example, if a single bit of a message is changed, a strong hash function may produce an output that differs by 50 percent. Počet vstupních hodnot může stejné výstupní hodnotu hash.Many input values may hash to the same output value. Je však výpočetně najít dva odlišné vstupy tuto hodnotu hash na stejnou hodnotu.However, it is computationally infeasible to find two distinct inputs that hash to the same value.

Obě strany (Alice a Bob) použít k zajištění integrity zprávy funkce hash.Two parties (Alice and Bob) could use a hash function to ensure message integrity. Vyberou by hashovací algoritmus jejich zprávy.They would select a hash algorithm to sign their messages. Alice by zapsat zprávu a pak vytvoří hodnotu hash této zprávy s použitím vybrané algoritmus.Alice would write a message, and then create a hash of that message by using the selected algorithm. Jejich by postupujte podle jednoho z následujících metod:They would then follow one of the following methods:

  • Alice odesílá do zprávy ve formátu prostého textu a hodnotu hash zprávy (digitální podpis).Alice sends the plaintext message and the hashed message (digital signature) to Bob. Bob obdrží hashuje zprávu a porovnává jeho hodnotu hash pro hodnotu hash, který obdržel od Alice.Bob receives and hashes the message and compares his hash value to the hash value that he received from Alice. Pokud jsou hodnoty hash stejné, zpráva nebyla změněna.If the hash values are identical, the message was not altered. Pokud hodnoty nejsou shodné, zprávy byl změněn po ho napsal Alice.If the values are not identical, the message was altered after Alice wrote it.

    Tato metoda však nevytváří pravosti odesílatele.Unfortunately, this method does not establish the authenticity of the sender. Kdokoli na nich může zosobnit Alice a Bob odešlete zprávu.Anyone can impersonate Alice and send a message to Bob. Můžou použít stejný algoritmus hash a podepisování jejich zpráva a všechno, co můžete určit Bob je, že zpráva odpovídá jeho podpis.They can use the same hash algorithm to sign their message, and all Bob can determine is that the message matches its signature. Toto je jedna podoba útok man-in-the-middle.This is one form of a man-in-the-middle attack. Další informace najdete v tématu kryptografické služby nové generace (CNG) zabezpečené komunikace příklad.For more information, see Cryptography Next Generation (CNG) Secure Communication Example.

  • Alice odešle zprávu ve formátu prostého textu Bob přes nezabezpečený kanál veřejné.Alice sends the plaintext message to Bob over a nonsecure public channel. Odešle hodnotu hash zprávy uživateli přes zabezpečený kanál privátní.She sends the hashed message to Bob over a secure private channel. Bob obdrží zprávu ve formátu prostého textu, rozdělí a porovná součet hash soukromě výměně hodnotou hash.Bob receives the plaintext message, hashes it, and compares the hash to the privately exchanged hash. Pokud se klíče hash shodují, Bob ví dvě věci:If the hashes match, Bob knows two things:

    • Zpráva nebyla změněna.The message was not altered.

    • Odesílatel zprávy (Alice) je platná.The sender of the message (Alice) is authentic.

    Pro tento systém fungovat musí skrýt Alice ze všech stran, s výjimkou Bob její původní hodnotu hash.For this system to work, Alice must hide her original hash value from all parties except Bob.

  • Alice odešle zprávu ve formátu prostého textu Bob přes nezabezpečený kanál veřejné a umístí hodnotu hash zprávy na svůj veřejně přístupný webový server.Alice sends the plaintext message to Bob over a nonsecure public channel and places the hashed message on her publicly viewable Web site.

    Tato metoda zabraňuje v manipulaci se zprávami tak, že všem uživatelům zabrání změně hodnoty hash.This method prevents message tampering by preventing anyone from modifying the hash value. I když každý lze číst zprávy a jeho hodnotu hash, hodnota hash může změnit pouze Alice.Although the message and its hash can be read by anyone, the hash value can be changed only by Alice. Útočník, který chce zosobnit Alice potřeboval by přístup k webovému serveru Alice.An attacker who wants to impersonate Alice would require access to Alice's Web site.

Žádná z předchozích metod zabrání někdo čtení zprávy od Alice, protože se přenáší ve formátu prostého textu.None of the previous methods will prevent someone from reading Alice's messages, because they are transmitted in plaintext. Úplné zabezpečení zpravidla vyžaduje, aby digitální podpisy (podepisování zpráv) a šifrování.Full security typically requires digital signatures (message signing) and encryption.

Rozhraní .NET Framework poskytuje následující třídy, které implementují algoritmy hash:The .NET Framework provides the following classes that implement hashing algorithms:

Poznámka

V roce 1996 byly zjištěny chyby návrhu MD5 a SHA-1 se doporučuje místo.MD5 design flaws were discovered in 1996, and SHA-1 was recommended instead. V 2004 další chyby byly zjištěny a algoritmus MD5 se už nepovažuje za bezpečný.In 2004, additional flaws were discovered, and the MD5 algorithm is no longer considered secure. Být nezabezpečené také byla nalezena algoritmus SHA-1 a SHA-2 je teď doporučujeme místo toho.The SHA-1 algorithm has also been found to be insecure, and SHA-2 is now recommended instead.

Zpět na začátekBack to top

Náhodné generování číselRandom Number Generation

Náhodné generování čísel je nedílnou součástí mnoha kryptografické operace.Random number generation is integral to many cryptographic operations. Například kryptografické klíče musí být jako náhodné, jak je to možné, tak, aby se reprodukovat.For example, cryptographic keys need to be as random as possible so that it is infeasible to reproduce them. Kryptografické generátorů náhodných čísel musí generovat výstup, který je výpočetně odhadnout pravděpodobnost, že je obecně lepší než polovinu.Cryptographic random number generators must generate output that is computationally infeasible to predict with a probability that is better than one half. Proto jakékoli metody objektu předpověď Další bit výstup nesmí mít lepší výkon než náhodných opakovaně uhodnout.Therefore, any method of predicting the next output bit must not perform better than random guessing. Třídy v rozhraní .NET Framework pomocí generátorů náhodných čísel pro generování kryptografických klíčů.The classes in the .NET Framework use random number generators to generate cryptographic keys.

RNGCryptoServiceProvider Třída je implementací algoritmu generátor náhodných čísel.The RNGCryptoServiceProvider class is an implementation of a random number generator algorithm.

Zpět na začátekBack to top

Manifesty ClickOnceClickOnce Manifests

V rozhraní .NET Framework 3.5, následující šifrovacích tříd umožňují získat a zkontrolovat informace o manifestu podpisy pro aplikace, které jsou nasazeny pomocí technologie ClickOnce:In the .NET Framework 3.5, the following cryptography classes let you obtain and verify information about manifest signatures for applications that are deployed using ClickOnce technology:

Navíc následující třídy poskytují informace o konkrétní podpisu:In addition, the following classes provide specific signature information:

Zpět na začátekBack to top

Podpora Suite BSuite B Support

Rozhraní .NET Framework 3.5 podporuje sady Suite B kryptografické algoritmy, které jsou publikovány National Security Agency (NSA).The .NET Framework 3.5 supports the Suite B set of cryptographic algorithms published by the National Security Agency (NSA). Další informace o Suite B, najdete v článku NSA Suite B kryptografie fakt Sheet.For more information about Suite B, see the NSA Suite B Cryptography Fact Sheet.

Tyto algoritmy jsou zahrnuty:The following algorithms are included:

  • Pokročilé algoritmus standardu šifrování (AES) s velikostí klíče 128, 192 a 256 bitů pro šifrování.Advanced Encryption Standard (AES) algorithm with key sizes of 128, 192, , and 256 bits for encryption.

  • Pro vytvoření hodnoty hash zabezpečení hashovací algoritmy SHA-1, SHA-256, SHA-384 a SHA-512.Secure Hash Algorithms SHA-1, SHA-256, SHA-384, and SHA-512 for hashing. (Poslední tři jsou obecně seskupené dohromady a označovány jako SHA-2.)(The last three are generally grouped together and referred to as SHA-2.)

  • Křivky digitální podpis algoritmů ECDSA (Elliptic), pomocí křivky 256 bitů, 384 bitů a 521-bit 521bitů primárního modulu pro podepisování.Elliptic Curve Digital Signature Algorithm (ECDSA), using curves of 256-bit, 384-bit, and 521-bit prime moduli for signing. Dokumentace NSA speciálně definuje tyto křivky a je volá p-256, p-384 a p-521.The NSA documentation specifically defines these curves, and calls them P-256, P-384, and P-521. Tento algoritmus poskytuje ECDsaCng třídy.This algorithm is provided by the ECDsaCng class. Umožňuje vám přihlášení s privátním klíčem a ověřit podpis s veřejným klíčem.It enables you to sign with a private key and verify the signature with a public key.

  • Eliptické křivky Diffie-Hellman (ECDH) algoritmus, pomocí křivky 256 bitů, 384 bitů a 521-bit 521bitů primárního modulu pro výměnu klíčů a tajných kódů smlouvy.Elliptic Curve Diffie-Hellman (ECDH) algorithm, using curves of 256-bit, 384-bit, and 521-bit prime moduli for the key exchange and secret agreement. Tento algoritmus poskytuje ECDiffieHellmanCng třídy.This algorithm is provided by the ECDiffieHellmanCng class.

Spravovaný kód obálky pro federální informace o zpracování Standard (FIPS) certified implementace AES, SHA-256, SHA-384 a SHA-512 jsou dostupná na novém AesCryptoServiceProvider, SHA256CryptoServiceProvider, SHA384CryptoServiceProvider, a SHA512CryptoServiceProvider třídy.Managed code wrappers for the Federal Information Processing Standard (FIPS) certified implementations of the AES, SHA-256, SHA-384, and SHA-512 implementations are available in the new AesCryptoServiceProvider, SHA256CryptoServiceProvider, SHA384CryptoServiceProvider, and SHA512CryptoServiceProvider classes.

Zpět na začátekBack to top

Další generace (CNG) třídy šifrováníCryptography Next Generation (CNG) Classes

Kryptografické služby nové generace (CNG) třídy poskytují spravovaná obálka kolem nativní funkce CNG.The Cryptography Next Generation (CNG) classes provide a managed wrapper around the native CNG functions. (CNG je náhradou rozhraní CryptoAPI.) Tyto třídy mají "Cng" jako součást jejich názvy.(CNG is the replacement for CryptoAPI.) These classes have "Cng" as part of their names. Z centrální na obálkové třídy CNG je CngKey třída kontejneru, který abstrahuje úložiště a použití klíčů CNG klíčů.Central to the CNG wrapper classes is the CngKey key container class, which abstracts the storage and use of CNG keys. Tato třída umožňuje bezpečně dvojici klíčů nebo veřejný klíč a na něj odkazovat pomocí názvu jednoduchým řetězcem.This class lets you store a key pair or a public key securely and refer to it by using a simple string name. Na eliptické založené na křivku ECDsaCng Třída podpisu a ECDiffieHellmanCng pomocí tříd šifrování CngKey objekty.The elliptic curve-based ECDsaCng signature class and the ECDiffieHellmanCng encryption class can use CngKey objects.

CngKey Třída se používá pro celou řadu dalších operací, včetně otevření, vytváření, odstraňování a export klíčů.The CngKey class is used for a variety of additional operations, including opening, creating, deleting, and exporting keys. Poskytuje také přístup k podkladové popisovač klíče pro použití při volání nativních funkcí přímo.It also provides access to the underlying key handle to use when calling native functions directly.

Rozhraní .NET Framework 3.5 také zahrnuje celou řadu pomocných tříd CNG, jako je následující:The .NET Framework 3.5 also includes a variety of supporting CNG classes, such as the following:

Zpět na začátekBack to top

NázevTitle PopisDescription
Kryptografický modelCryptography Model Popisuje, jak je implementovaná šifrování v knihovně základních tříd.Describes how cryptography is implemented in the base class library.
Návod: Vytvoření šifrovací aplikaceWalkthrough: Creating a Cryptographic Application Ukazuje základní úlohy pro šifrování a dešifrování.Demonstrates basic encryption and decryption tasks.
Konfigurace šifrovacích třídConfiguring Cryptography Classes Popisuje způsob mapování názvů algoritmů na třídy šifrování a mapování identifikátorů objektů na kryptografický algoritmus.Describes how to map algorithm names to cryptographic classes and map object identifiers to a cryptographic algorithm.