Yang Perlu Anda Ketahui tentang Enkripsi di Java



Artikel ini akan memberi Anda pengetahuan terperinci dan komprehensif tentang Enkripsi di Java dan Cara menggunakannya dengan Contoh.

Enkripsi adalah metode menggunakan algoritme matematika untuk menyamarkan makna dari suatu informasi sehingga hanya pihak yang berwenang yang dapat menguraikannya. Pada artikel ini, kita akan membahas Enkripsi dan Dekripsi di dengan urutan sebagai berikut:

Pengantar Enkripsi di Java

Enkripsi diterapkan untuk melindungi data kita (seperti teks, percakapan, suara iklan), baik itu duduk di komputer atau dikirim di Internet. Teknologi enkripsi terkini adalah elemen penting dari lingkungan komputasi yang aman.





Peran utama keamanan enkripsi terletak pada kemampuan algoritme untuk menghasilkan teks tersandi (teks terenkripsi) yang sulit untuk dikembalikan ke teks biasa aslinya. Penggunaan kunci juga menciptakan tingkat keamanan lain untuk metode perlindungan informasi kami. Kunci adalah beberapa informasi, yang memungkinkan hanya mereka yang menyimpannya untuk menyandikan dan mendekode pesan.

Enkripsi dan Dekripsi di Java



Algoritma Enkripsi Simetris

Algoritme Symmetric menggunakan kunci yang sama untuk enkripsi dan dekripsi. Algoritme semacam itu hanya dapat beroperasi dalam mode blok (yang bekerja pada blok data berukuran tetap) atau mode aliran (yang bekerja pada bit atau byte data). Algoritme semacam itujuga biasa digunakan untuk aplikasi seperti enkripsi data, enkripsi file, dan enkripsi data yang ditransmisikan dalam jaringan komunikasi (seperti TLS, email, pesan instan, dll.)

Algoritma Enkripsi Asimetris (atau kunci publik)

Tidak seperti algoritme simetris, yang menggunakan kunci yang sama untuk operasi enkripsi dan dekripsi, algoritme asimetris menggunakan dua kunci identik untuk dua langkah ini. Algoritme ini digunakan untuk menghitung tanda tangan digital dan protokol pembentukan kunci. Namun, ini juga hadir dengan tantangan bahwa dua kunci perlu digunakan yang membuat segalanya menjadi lebih kompleks.



Untuk mengkonfigurasi skema enkripsi dasar dengan aman, sangat penting bahwa semua parameter tersebut (minimal) dirancang dengan benar:

  • Memilih algoritma yang benar itu penting.
  • Memilih mode operasi yang tepat untuk tugas yang sesuai
  • Memilih skema bantalan yang tepat sesuai kebutuhan
  • Memilih kunci yang tepat dan ukurannya yang sesuai
  • Perbaiki inisialisasi dengan CSPRING yang aman secara kriptografis.

Sangatlah penting untuk mengetahui konfigurasi semua parameter ini dengan aman. Bahkan kesalahan konfigurasi kecil dapat membahayakan seluruh sistem kripto dan membukanya untuk serangan dari peretas dan malware lainnya. Oleh karena itu, untuk menjaga diskusi ini tetap sederhana, mari kita bahas hanya inisialisasi tanpa algoritma dari sebuah Cipher. Daripada melakukan enkripsi sendiri, lebih baik membiarkan para ahli melakukan tugasnya untuk mengonfigurasi lebih banyak konfigurasi yang bergantung pada algoritme, seperti nilai p dan q dari algoritme RSA, dll. Dengan hanya mengonfigurasi parameter kriptografi yang belum sempurna di atas lebih dari setengah a lusin, kelas digunakan.

Pengenalan hierarki kelas, banyak konstruktor / metode yang kelebihan beban, dan sebagainya, menambahkan banyak kerumitan, yang membuatnya tidak perlu. Saya berharap Java tidak mempersulit konfigurasi dasar dan hanya akan menggunakan arsitektur yang lebih sederhana seperti yang dimiliki Microsoft, di mana semua parameter tersebut berada dalam batas satu kelas SymmetricAlgorithm dan AsymmetricAlgorithm. Untuk tiga parameter pertama yang akan ditentukan (algoritma, mode operasi dan skema padding), objek Cipher menggunakan string transformasi.

  • Memilih Algoritma yang Tepat

String transformasi tidak diragukan lagi menyertakan nama algoritme kriptografi. Antara enkripsi simetris dan asimetris, ada 11 algoritma (tidak terkait dengan berbagai kombinasi PBEWithAnd), yang dapat dispesifikasikan sesuai dengan Dokumentasi Nama Algoritma Standar. Dari mereka hanya dua (satu untuk masing-masing, enkripsi simetris dan asimetris) yang benar-benar diamankan sepenuhnya.

Algoritme yang tersisa dapat rusak secara berlebihan (DES, RC2, dll.) Atau retakan telah mulai muncul ke permukaan (RC5), membuatnya dapat dipecahkan dengan daya CPU yang cukup - dapat rusak saat Anda membaca ini. Pengembang yang berpikiran keamanan mungkin tidak membaca kumpulan spesifikasi NIST, atau mengikuti kejadian dan penelitian terbaru di komunitas kriptografi. Mereka mungkin mengambil algoritme yang rusak atau berisiko, digest atau generator pseudo-random.

Selalu untuk:

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

  2. Algoritma Asimetris: RSA digunakan.

  • Modus operasi

Mode operasi adalah bagian dari transformasi dan hanya relevan untuk memblokir cipher. Saat kami menggunakan cipher asimetris, gunakan ECB sebagai mode operasi, yang pada dasarnya adalah hack di belakang layar, artinya abaikan nilai ini. Penyedia Java seperti SunJCE, SunPKCS11 secara default menggunakan mode ECB untuk algoritme simetris dan asimetris. Ini mungkin merupakan hal yang baik untuk algoritma asimetris, tapi ide yang buruk untuk cipher blok.

xml transformasi di informatica dengan contoh

Penyedia dapat diinstruksikan untuk membuat default aman berdasarkan algoritme yang digunakan. Gunakan enkripsi simetris untuk menyelamatkan Anda dari serangan replay atau serangan teks biasa. Juga, gunakan transformasi, yang sepenuhnya menentukan algoritme (yaitu dengan mode operasi dan paddingnya). Jangan pernah melakukan hal seperti yang disebutkan di bawah ini.

Seperti di atas, algoritma AES akan digunakan dengan mode operasi ECB, membuat serangan replay menjadi sangat mudah. Untuk pengembangan baru, jika ada kemungkinan sekecil apa pun untuk mengubah pekerjaan lama, kita harus menggunakan mode enkripsi terotentikasi dengan data terkait (AEAD) (Misalnya GCM dan CCM). Kami memiliki tag otentikasi dengan panjang 128 bit penuh. Jika kami menggunakan mode tidak terautentikasi, kami menggunakan CBC atau CTR dengan MAC untuk mengotentikasi ciphertext.

  • Memilih skema bantalan yang sesuai

Mode penyandian blok yang umum memerlukan panjang teks biasa menjadi kelipatan dari ukuran blok dari algoritma enkripsi yang mendasarinya, yang jarang terjadi. Oleh karena itu, kami membutuhkan beberapa bantalan.Program Java memberi kita tiga skema berbeda untuk enkripsi simetris, satu adalah Tanpa Padding, yang tidak dapat diterima, dan yang lainnya adalah ISO10126Padding yang ditarik sejak 2007).

Oleh karena itu, satu-satunya pilihan yang sesuai adalah menggunakan PKCS5Padding. Campuran beberapa mode operasi (misalnya mode CBC) dan PKCS5 Skema padding padding dapat menyebabkan serangan padding oracle. Tidak menyebutkan skema padding sama sekali lebih berbahaya daripada menyediakan skema yang hanya rentan terhadap jenis serangan tertentu. Mode operasi AEAD paling disarankan untuk memastikan Anda terlindungi dari serangan ini.

  • Algoritma Asimetris

Dalam algoritme asimetris, kami memiliki opsi untuk memilih dari dua skema padding. Penting untuk memastikan bahwa hanya skema OAEPWithAndPadding yang digunakan. Untuk intisari, gunakan SHA1 atau SHA256 / 384/512. Untuk Mask Generation Function (MGF), gunakan padding MGF1 seperti yang ditentukan. PKCS1 Padding dengan RSA telah rentan terhadap serangan Ciphertext [6] sejak 1998.

Di sini kita berbicara tentang cara yang benar untuk menggunakan transformasi dalam metode 'Cipher.getInstance'.

  • Enkripsi Simetris

  • Enkripsi Asimetris

Tingkat keamanan dari setiap skema enkripsi berbanding lurus dengan ukuran kuncinya. Panjang kunci harus cukup panjang sehingga serangan brute force apa pun menjadi tidak layak pada saat yang sama, ia juga harus cukup pendek untuk mengingat kelayakan komputasi. Selain itu, kami harus mencoba untuk mempertimbangkan apa yang masih bertahan terhadap kemajuan komputasi selama 30 tahun ke depan.

Dengan ini, kita sampai pada bagian akhir artikel Enkripsi di Java. Saya harap Anda mendapat ide tentang Enkripsi dan Dekripsi dan mengapa ini digunakan di Java.

Lihat oleh Edureka, perusahaan pembelajaran online tepercaya dengan jaringan lebih dari 250.000 pelajar yang puas dan tersebar di seluruh dunia. Kursus pelatihan dan sertifikasi Java J2EE dan SOA Edureka dirancang untuk siswa dan profesional yang ingin menjadi Pengembang Java. Kursus ini dirancang untuk memberi Anda permulaan dalam pemrograman Java dan melatih Anda untuk konsep Java inti dan lanjutan bersama dengan berbagai kerangka kerja Java seperti Hibernate & Spring.

Ada pertanyaan untuk kami? Harap sebutkan di bagian komentar di blog 'Enkripsi di Java' ini dan kami akan menghubungi Anda kembali secepatnya.