Semua yang Anda Perlu Tahu mengenai Penyulitan di Java



Artikel ini akan memberi anda pengetahuan terperinci dan komprehensif mengenai Penyulitan di Java dan Cara menggunakannya dengan Contoh.

Enkripsi adalah kaedah menggunakan algoritma matematik untuk menyamarkan makna sebilangan maklumat sehingga hanya pihak yang berwenang yang dapat menguraikannya. Dalam artikel ini, kita akan membincangkan Penyulitan dan Penyahsulitan dalam mengikut urutan berikut:

Pengenalan Penyulitan di Jawa

Enkripsi dilaksanakan untuk melindungi data kami (seperti teks, percakapan dan suara iklan), baik itu duduk di komputer atau dikirimkan di Internet. Teknologi penyulitan terkini adalah elemen penting dari persekitaran pengkomputeran yang selamat.





Peranan utama keselamatan penyulitan terletak pada kemampuan algoritma untuk menghasilkan ciphertext (teks yang dienkripsi) yang sukar untuk kembali ke teks biasa. Penggunaan kunci juga meningkatkan tahap keselamatan terhadap kaedah melindungi maklumat kami. Kuncinya adalah beberapa maklumat, yang membolehkan hanya mereka yang menyimpannya untuk mengekod dan menyahkod mesej.

Penyulitan dan Penyahsulitan di Jawa



Algoritma Penyulitan Simetri

Algoritma Symmetric menggunakan kunci yang sama untuk penyulitan dan penyahsulitan. Algoritma semacam itu hanya dapat beroperasi dalam mod blok (yang berfungsi pada blok data ukuran tetap) atau mod aliran (yang berfungsi pada bit atau bait data). Algoritma sedemikianjuga biasa digunakan untuk aplikasi seperti enkripsi data, enkripsi file dan mengenkripsi data yang dikirimkan dalam jaringan komunikasi (seperti TLS, e-mel, pesanan segera, dll.)

Algoritma Penyulitan Asimetrik (atau kunci awam)

Tidak seperti algoritma simetri, yang menggunakan kunci yang sama untuk kedua-dua operasi penyulitan dan penyahsulitan, algoritma asimetri menggunakan dua kunci yang sama untuk kedua langkah ini. Algoritma ini digunakan untuk mengira tandatangan digital dan protokol pembentukan utama. Walau bagaimanapun, ini juga datang dengan cabaran bahawa dua kunci perlu digunakan yang menjadikan keadaan lebih kompleks.



Untuk mengkonfigurasi skema penyulitan asas dengan selamat, sangat penting bahawa semua parameter sedemikian (minimum) dirancang dengan betul:

  • Memilih algoritma yang betul adalah penting.
  • Memilih mod operasi yang betul untuk tugas yang sesuai
  • Memilih skim pad yang sesuai mengikut keperluan
  • Memilih kunci yang betul dan ukurannya sesuai
  • Permulaan yang betul dengan CSPRING yang selamat secara kriptografi.

Sangat penting untuk mengetahui konfigurasi semua parameter ini dengan selamat. Bahkan salah konfigurasi yang kecil dapat membahayakan keseluruhan sistem crypto dan membukanya kepada serangan dari penggodam dan malware lain. Oleh itu, untuk memperbetulkan perbincangan ini, marilah kita membincangkan hanya permulaan yang bebas dari algoritma Cipher. Daripada melakukan enkripsi seperti itu sendiri, lebih baik membiarkan pakar melakukan tugasnya untuk mengkonfigurasi lebih banyak konfigurasi yang bergantung pada algoritma, seperti nilai p dan q dari algoritma RSA, dll. Dengan hanya mengkonfigurasi parameter kriptografi asas di atas lebih dari setengah berpuluh-puluh, kelas digunakan.

Pengenalan hierarki kelas, banyak konstruktor / kaedah yang terlalu banyak dan sebagainya, menambah banyak kerumitan, yang menjadikannya tidak perlu. Saya berharap Java tidak menyulitkan konfigurasi asas dan hanya menggunakan seni bina yang lebih sederhana seperti Microsoft, di mana semua parameter tersebut berada di dalam perimeter satu Algoritma Symmetric dan AsymmetricAlgorithm. Untuk tiga parameter pertama yang akan ditentukan (algoritma, modus operasi dan skema padding), objek Cipher menggunakan rentetan transformasi.

  • Memilih Algoritma yang Betul

Rentetan transformasi tidak diragukan lagi merangkumi nama algoritma kriptografi. Di antara enkripsi simetrik dan asimetri, terdapat 11 algoritma (tidak mengenai pelbagai kombinasi PBEW denganAnd), yang dapat ditentukan mengikut Dokumentasi Nama Algoritma Piawai. Daripada mereka hanya dua (satu untuk setiap, enkripsi simetri dan asimetri) yang benar-benar selamat.

Algoritma yang tersisa sama ada pecah secara berlebihan (DES, RC2, dll.) Atau retakan telah mulai muncul (RC5), menjadikannya mudah pecah dengan kekuatan CPU yang mencukupi - ia sudah dapat dipecahkan pada saat anda membaca ini. Pembangun yang berfikiran keselamatan mungkin tidak membaca banyak spesifikasi NIST, atau mengikuti kejadian dan penyelidikan terkini dalam komuniti kriptografi. Mereka mungkin mengambil algoritma yang rosak atau berisiko, pencernaan atau penjana pseudo-rawak.

Sentiasa untuk:

  1. Algoritma Simetri: AES / AESWrap block cipher digunakan.

  2. Algoritma Asimetri: RSA digunakan.

  • Kaedah Operasi

Cara operasi adalah sebahagian daripada transformasi dan hanya berkaitan dengan blok ciphers. Apabila kita menggunakan cipher asimetri, gunakan ECB sebagai modus operasi, yang pada dasarnya adalah hack di belakang tabir, yang bermaksud mengabaikan nilai ini. Penyedia Java seperti SunJCE, SunPKCS11 menetapkan mod ECB untuk algoritma simetri dan asimetri. Ini mungkin perkara yang baik untuk algoritma asimetri, tetapi idea yang tidak baik untuk penyekat blok.

Penyedia boleh diarahkan untuk membuat default yang selamat berdasarkan algoritma yang digunakan. Gunakan enkripsi simetri untuk menyelamatkan anda dari serangan ulangan atau serangan plaintext yang diketahui. Juga, gunakan transformasi, yang sepenuhnya menentukan algoritma (iaitu dengan cara operasi dan padding). Jangan pernah melakukan perkara seperti yang dinyatakan di bawah.

Seperti di atas, algoritma AES akan digunakan dengan mod operasi ECB, membuat serangan ulangan sangat mudah. Untuk pengembangan baru, jika ada kemungkinan sedikit pun untuk memperbaiki kerja lama, kita harus menggunakan mod penyulitan yang disahkan dengan mod data yang berkaitan (AEAD) (Contohnya GCM dan CCM). Kami mempunyai teg pengesahan dengan panjang 128 bit penuh. Sekiranya kita menggunakan mod yang tidak disahkan, kita menggunakan CBC atau CTR dengan MAC untuk mengesahkan ciphertext.

cara membuat senarai terpaut di c
  • Memilih skema padding yang sesuai

Mod penyekat blok biasa memerlukan panjang teks biasa menjadi kelipatan dari ukuran blok algoritma penyulitan yang mendasari, yang jarang terjadi. Oleh itu, kami memerlukan beberapa padding.Program Java memberi kami tiga skema yang berbeza untuk enkripsi simetri, satu adalah No Padding, yang tidak dapat diterima, dan yang lain adalah ISO10126Padding yang ditarik sejak 2007).

Oleh itu, satu-satunya pilihan yang sesuai ialah menggunakan PKCS5Padding. Campuran beberapa mod operasi (misalnya mod CBC) dan skema padding PKCS5Padding boleh menyebabkan serangan oracle padding. Tidak menyebutkan skema padding lebih berbahaya daripada menyediakan skema yang mudah diserang hanya pada jenis serangan tertentu. Mod operasi AEAD sangat disyorkan untuk memastikan bahawa anda dilindungi daripada serangan ini.

  • Algoritma Asimetri

Dalam algoritma asimetri, kami mempunyai pilihan untuk memilih dari dua skema padding. Penting untuk memastikan bahawa hanya skema OAEPWithAndPadding yang digunakan. Sekiranya dicerna, gunakan SHA1 atau SHA256 / 384/512. Untuk Fungsi Penjanaan Topeng (MGF), gunakan padding MGF1 seperti yang ditentukan. PKCS1Padding dengan RSA telah rentan terhadap serangan Ciphertext [6] sejak tahun 1998.

Di sini kita membincangkan cara yang betul untuk menggunakan transformasi dalam kaedah 'Cipher.getInstance'.

  • Penyulitan Simetri

  • Penyulitan Asimetri

Tahap keselamatan mana-mana skema penyulitan berkadar terus dengan ukuran kuncinya. Panjang kunci mesti cukup panjang sehingga apa pun serangan brute force menjadi tidak dapat dilaksanakan pada masa yang sama ia juga harus cukup pendek untuk mengingat kemungkinan pengiraan. Sebagai tambahan, kita mesti berusaha mempertimbangkan apa yang masih bertahan dengan kemajuan komputasi selama 30 tahun akan datang.

Dengan ini, kita sampai pada akhir artikel Encryption in Java. Saya harap anda mendapat idea Penyulitan dan Penyahsulitan dan mengapa ia digunakan di Java.

Lihat oleh Edureka, sebuah syarikat pembelajaran dalam talian yang dipercayai dengan rangkaian lebih daripada 250,000 pelajar berpuas hati yang tersebar di seluruh dunia. Kursus latihan dan pensijilan Java J2EE dan SOA Edureka dirancang untuk pelajar dan profesional yang ingin menjadi Pembangun Java. Kursus ini dirancang untuk memberi Anda awal dalam pengaturcaraan Java dan melatih anda untuk konsep Java teras dan maju bersama dengan pelbagai kerangka kerja Java seperti Hibernate & Spring.

Ada soalan untuk kami? Sila sebutkan di bahagian komen dari blog 'Encryption in Java' ini dan kami akan menghubungi anda secepat mungkin.