Bagikan melalui


Membuat kunci untuk enkripsi dan dekripsi

Membuat dan mengelola kunci adalah bagian penting dari proses kriptografi. Algoritma simetris memerlukan pembuatan kunci dan vektor inisialisasi (IV). Anda harus menyimpan rahasia kunci ini dari siapa pun yang tidak boleh mendekripsi data Anda. IV tidak harus rahasia tetapi harus diubah untuk setiap sesi. Algoritma asimetris memerlukan pembuatan kunci publik dan kunci privat. Kunci publik dapat diketahui oleh siapa pun, tetapi pihak yang mendekripsi hanya boleh mengetahui kunci privat yang sesuai. Bagian ini menjelaskan cara menghasilkan dan mengelola kunci untuk algoritma simetris dan asimetris.

Kunci Konten

Kelas enkripsi simetris yang disediakan oleh .NET memerlukan kunci dan IV baru untuk mengenkripsi dan mendekripsi data. Kunci baru dan IV secara otomatis dibuat saat Anda membuat instans baru dari salah satu kelas kriptografi simetris terkelola menggunakan metode tanpa Create() parameter. Siapa pun yang Anda izinkan untuk mendekripsi data Anda harus memiliki kunci dan IV yang sama dan menggunakan algoritma yang sama. Umumnya, kunci baru dan IV harus dibuat untuk setiap sesi, dan kunci maupun IV tidak boleh disimpan untuk digunakan dalam sesi selanjutnya.

Untuk mengomunikasikan kunci konten dan IV ke pihak jarak jauh, Anda biasanya mengenkripsi kunci konten dengan menggunakan enkripsi asimetris. Mengirim kunci di seluruh jaringan yang tidak aman tanpa enkripsi tidak aman karena siapa pun yang mencegat kunci dan IV kemudian dapat mendekripsi data Anda.

Contoh berikut menunjukkan pembuatan instans baru kelas implementasi default untuk Aes algoritma:

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

Eksekusi kode sebelumnya menghasilkan kunci baru dan IV dan menetapkannya sebagai nilai untuk properti Kunci dan IV .

Terkadang Anda mungkin perlu menghasilkan beberapa kunci. Dalam situasi ini, Anda dapat membuat instans baru kelas yang mengimplementasikan algoritma simetris. Kemudian, buat kunci baru dan IV dengan memanggil GenerateKey metode dan GenerateIV . Contoh kode berikut menggambarkan cara membuat kunci dan IV baru setelah instans baru kelas kriptografi simetris dibuat:

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

Eksekusi kode sebelumnya membuat instans Aes baru dan menghasilkan kunci dan IV. Kunci lain dan IV dibuat ketika GenerateKey metode dan GenerateIV dipanggil.

Kunci Asimetris

.NET menyediakan kelas RSA untuk enkripsi asimetris. Saat Anda menggunakan metode tanpa Create() parameter untuk membuat instans baru, RSA kelas membuat pasangan kunci publik/privat. Kunci asimetris dapat disimpan untuk digunakan dalam beberapa sesi atau dibuat hanya untuk satu sesi. Meskipun Anda dapat membuat kunci publik tersedia, Anda harus menjaga kunci privat dengan ketat.

Pasangan kunci publik/privat dihasilkan saat Anda membuat instans baru kelas algoritma asimetris. Setelah membuat instans baru kelas, Anda dapat mengekstrak informasi utama menggunakan metode .ExportParameters Metode ini mengembalikan RSAParameters struktur yang menyimpan informasi utama. Metode ini juga menerima nilai Boolean yang menunjukkan apakah hanya mengembalikan informasi kunci publik atau mengembalikan kunci publik dan informasi kunci privat.

Anda juga dapat menggunakan metode lain untuk mengekstrak informasi utama, seperti:

Anda dapat menggunakan ImportParameters metode untuk menginisialisasi RSA instans ke nilai RSAParameters struktur. Atau Anda dapat menggunakan RSA.Create(RSAParameters) metode untuk membuat instans baru.

Jangan pernah menyimpan kunci privat asimetris verbatim atau sebagai teks biasa di komputer lokal. Jika Anda perlu menyimpan kunci privat, Anda harus menggunakan kontainer kunci. Untuk informasi selengkapnya tentang cara menyimpan kunci privat dalam kontainer kunci, lihat Cara: Menyimpan Kunci Asimetris dalam Kontainer Kunci.

Contoh kode berikut membuat instans RSA baru kelas, membuat pasangan kunci publik/privat, dan menyimpan informasi kunci publik ke RSAParameters struktur:

'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);  

Lihat juga