it-swarm-id.com

Saat menggunakan AES dan CBC, apakah perlu merahasiakan IV?

Jika saya mengenkripsi beberapa data dengan Key dan Inisialisasi Vektor yang dihasilkan secara acak, maka simpan ketiga informasi di baris tabel yang sama; apakah perlu untuk mengenkripsi IV dan Key?

Struktur tabel yang disederhanakan:

  • Data terenkripsi
  • Kunci (dienkripsi menggunakan metode kedua)
  • IV (terenkripsi?)

Harap asumsikan bahwa arsitektur dan metode itu diperlukan: Penjelasan di baliknya panjang dan membosankan.

44
Stu Pegg

Dari Wikipedia :

Vektor inisialisasi memiliki persyaratan keamanan yang berbeda dari kunci, jadi IV biasanya tidak perlu dirahasiakan . Namun, dalam kebanyakan kasus, penting bahwa vektor inisialisasi tidak pernah digunakan kembali di bawah kunci yang sama . Untuk CBC dan CFB, menggunakan kembali IV bocor beberapa informasi tentang blok pertama plaintext, dan tentang awalan umum bersama oleh dua pesan.

Anda tidak perlu merahasiakan infus, tetapi harus acak dan unik.

51
Polynomial

Meskipun dalam kasus Anda IV harus oke dalam plaintext di DB, ada kerentanan parah jika Anda mengizinkan pengguna untuk mengontrol IV.

IV di dekripsi digunakan (dan hanya digunakan) untuk XOR blok pertama ke dalam plaintext terakhir - jadi jika penyerang dapat mengontrol IV yang mereka dapat secara sewenang-wenang mengontrol blok data pertama, dan sisa plaintext akan bertahan tanpa modifikasi.

enter image description here

Jika penyerang mengetahui plaintext asli dari blok pertama, maka masalahnya diperbesar lagi karena penyerang dapat memilih data acak untuk blok pertama tanpa percobaan dan kesalahan.

Ini sangat penting dalam kasus di mana data terenkripsi sedang dikirim melalui saluran yang tidak terpercaya dengan IV, mungkin ke browser atau aplikasi dll.

8
George Powell