Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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 GenerateKey
GenerateIV
.
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:
- RSA.ExportRSAPublicKey
- RSA.ExportRSAPrivateKey
- AsymmetricAlgorithm.ExportSubjectPublicKeyInfo
- AsymmetricAlgorithm.ExportPkcs8PrivateKey
- AsymmetricAlgorithm.ExportEncryptedPkcs8PrivateKey
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);