Megosztás a következőn keresztül:


Kulcsok létrehozása titkosításhoz és visszafejtéshez

A kulcsok létrehozása és kezelése fontos része a titkosítási folyamatnak. A szimmetrikus algoritmusokhoz kulcs és inicializálási vektor (IV) szükséges. Ezt a kulcsot mindenkinek meg kell őriznie, akinek nem szabad visszafejtenie az adatait. A IV-nek nem kell titkosnak lennie, de minden munkamenetnél módosítani kell. Az aszimmetrikus algoritmusok nyilvános kulcs és titkos kulcs létrehozását igénylik. A nyilvános kulcs bárki számára ismertté tehető, de a visszafejtő félnek csak a megfelelő titkos kulcsot kell ismernie. Ez a szakasz azt ismerteti, hogyan hozhat létre és kezelhet kulcsokat szimmetrikus és aszimmetrikus algoritmusokhoz.

Szimmetrikus kulcsok

A .NET által biztosított szimmetrikus titkosítási osztályokhoz kulcsra és egy új IV-ra van szükség az adatok titkosításához és visszafejtéséhez. A rendszer automatikusan létrehoz egy új kulcsot és IV-et, amikor a paraméter nélküli Create() metódussal létrehoz egy új példányt az egyik felügyelt szimmetrikus titkosítási osztályból. Bárki, aki engedélyezi az adatok visszafejtéséhez, ugyanazzal a kulccsal és IV-zel kell rendelkeznie, és ugyanazt az algoritmust kell használnia. Általában minden munkamenethez létre kell hozni egy új kulcsot és IV-et, és sem a kulcsot, sem a IV-et nem szabad egy későbbi munkamenetben való használatra tárolni.

Ha szimmetrikus kulcsot és IV-et szeretne kommunikálni egy távoli féllel, általában aszimmetrikus titkosítással titkosítja a szimmetrikus kulcsot. A kulcs titkosítás nélküli, nem biztonságos hálózaton való elküldése nem biztonságos, mert bárki, aki elfogja a kulcsot, és iv.

Az alábbi példa az algoritmus alapértelmezett implementációs osztályának új példányát Aes mutatja be:

Dim aes As Aes = Aes.Create()  
Aes aes = Aes.Create();  

Az előző kód végrehajtása új kulcsot és IV-et hoz létre, és a kulcsés a IV tulajdonságok értékeiként állítja be őket.

Előfordulhat, hogy több kulcsot is létre kell hoznia. Ebben a helyzetben létrehozhat egy olyan osztály új példányát, amely szimmetrikus algoritmust implementál. Ezután hozzon létre egy új kulcsot és IV-et a GenerateKey metódusok meghívásával GenerateIV . Az alábbi példakód bemutatja, hogyan hozhat létre új kulcsokat és IV-ket a szimmetrikus titkosítási osztály új példányának létrehozása után:

Dim aes As Aes = Aes.Create()  
aes.GenerateIV()  
aes.GenerateKey()  
Aes aes = Aes.Create();  
aes.GenerateIV();  
aes.GenerateKey();  

Az előző kód végrehajtása létrehoz egy új példányt Aes , és létrehoz egy kulcsot és egy IV-et. A rendszer egy másik kulcsot és IV-et hoz létre a metódusok meghívásakor GenerateKeyGenerateIV .

Aszimmetrikus kulcsok

A .NET az aszimmetrikus RSA titkosítás osztályát biztosítja. Amikor a paraméter nélküli Create() metódust használja egy új példány létrehozásához, az RSA osztály létrehoz egy nyilvános/privát kulcspárt. Az aszimmetrikus kulcsok tárolhatók több munkamenetben való használatra, vagy csak egy munkamenethez hozhatók létre. Bár elérhetővé teheti a nyilvános kulcsot, szigorúan őriznie kell a titkos kulcsot.

A rendszer nyilvános/privát kulcspárt hoz létre az aszimmetrikus algoritmusosztály új példányának létrehozásakor. Az osztály új példányának létrehozása után a metódussal kinyerheti a ExportParameters kulcsadatokat. Ez a metódus egy olyan struktúrát RSAParameters ad vissza, amely tartalmazza a legfontosabb információkat. A metódus egy logikai értéket is elfogad, amely azt jelzi, hogy csak a nyilvános kulcs adatait adja vissza, vagy a nyilvános kulcsot és a titkos kulcsot is.

A kulcsinformációk kinyerésére más módszereket is használhat, például:

A metódus használatával ImportParameters inicializálhat egy példányt RSA egy RSAParameters struktúra értékére. Vagy a metódussal RSA.Create(RSAParameters) létrehozhat egy új példányt.

Soha ne tároljon aszimmetrikus titkos kulcsokat szó szerint vagy egyszerű szövegként a helyi számítógépen. Ha titkos kulcsot kell tárolnia, kulcstárolót kell használnia. A titkos kulcs kulcstárolókban való tárolásával kapcsolatos további információkért lásd : Aszimmetrikus kulcsok tárolása kulcstárolóban.

Az alábbi példakód létrehoz egy új osztálypéldányt RSA , létrehoz egy nyilvános/titkos kulcspárt, és a nyilvános kulcs adatait egy RSAParameters struktúrába menti:

'Generate a public/private key pair.  
Dim rsa as RSA = RSA.Create()  
'Save the public key information to an RSAParameters structure.  
Dim rsaKeyInfo As RSAParameters = rsa.ExportParameters(false)  
//Generate a public/private key pair.  
RSA rsa = RSA.Create();  
//Save the public key information to an RSAParameters structure.  
RSAParameters rsaKeyInfo = rsa.ExportParameters(false);  

Lásd még