Viss, kas jums jāzina par Java šifrēšanu



Šis raksts sniegs jums detalizētas un visaptverošas zināšanas par Java šifrēšanu un kā to izmantot ar piemēriem.

Šifrēšana ir matemātisko algoritmu izmantošanas metode, lai maskētu informācijas daļas nozīmi, lai to atšifrēt varētu tikai pilnvarotas puses. Šajā rakstā mēs apspriedīsim šifrēšanu un atšifrēšanu šādā secībā:

Ievads šifrēšanā Java

Šifrēšana tiek ieviesta, lai aizsargātu mūsu datus (piemēram, tekstus, sarunas un balss) neatkarīgi no tā, vai tas sēž datorā vai tiek sūtīts internetā. Jaunākās šifrēšanas tehnoloģijas ir svarīgi elementi jebkurai drošai skaitļošanas videi.





Šifrēšanas drošības galvenā loma ir algoritma spējā ģenerēt šifrētu tekstu (šifrētu tekstu), kuru ir grūti atgriezt sākotnējā teksta tekstā. Atslēgu izmantošana rada arī citu informācijas aizsardzības metožu drošības līmeni. Atslēga ir kāda informācija, kas ļauj kodēt un atšifrēt ziņojumu tikai tiem, kas to tur.

Šifrēšana un atšifrēšana Java



Simetriski šifrēšanas algoritmi

Simetriskie algoritmi izmanto to pašu atslēgu šifrēšanai un atšifrēšanai. Šādi algoritmi var darboties tikai bloķēšanas režīmā (kas darbojas fiksēta lieluma datu blokos) vai straumes režīmā (kas darbojas ar datu bitiem vai baitiem). Šādi algoritmitiek parasti izmantoti arī tādām lietojumprogrammām kā datu šifrēšana, failu šifrēšana un pārsūtīto datu šifrēšana sakaru tīklos (piemēram, TLS, e-pasts, tūlītējie ziņojumi utt.)

beidzot un pabeigt java

Asimetriski (vai publiskas atslēgas) šifrēšanas algoritmi

Atšķirībā no simetriskiem algoritmiem, kas izmanto vienu un to pašu atslēgu gan šifrēšanas, gan atšifrēšanas darbībām, asimetriskie algoritmi šīm divām darbībām izmanto divus identiskus taustiņus. Šie algoritmi tiek izmantoti digitālo parakstu un galveno izveides protokolu aprēķināšanai. Tomēr tas arī rada izaicinājumu, ka jāizmanto divi taustiņi, kas padara lietas sarežģītākas.



Lai droši konfigurētu jebkuru pamata šifrēšanas shēmu, ir ļoti svarīgi, lai visi šādi parametri (vismaz) būtu pareizi izstrādāti:

  • Pareiza algoritma izvēle ir svarīga.
  • Pareiza darbības režīma izvēle attiecīgajam uzdevumam
  • Pareizas polsterējuma shēmas izvēle atbilstoši prasībām
  • Pareizu taustiņu un to izmēru izvēle
  • Pareiza inicializēšana ar kriptogrāfiski drošu CSPRING.

Ir ļoti svarīgi apzināties visu šo parametru drošu konfigurēšanu. Pat neliela nepareiza konfigurācija var apdraudēt visu kriptogrāfijas sistēmu un atvērt to hakeru un citu ļaunprogrammatūru uzbrukumiem. Tāpēc, lai šī diskusija būtu vienkārša, apspriedīsim tikai no algoritmiem neatkarīgas Cipher inicializācijas. Tā vietā, lai pats veiktu šādas šifrēšanas, vienmēr labāk ir ļaut ekspertiem paveikt savu darbu, konfigurējot vairāk no algoritmiem atkarīgas konfigurācijas, piemēram, RSA algoritma p un q vērtības utt. Vienkārši konfigurējot elementāros kriptogrāfiskos parametrus virs vairāk nekā pusi no ducis, tiek izmantotas klases.

Klases hierarhiju ieviešana, daudz pārslogotu konstruktoru / metožu un tā tālāk, pievienojot daudzas sarežģītības, kas padara to nevajadzīgu. Es vēlos, lai Java nesarežģītu pamatkonfigurācijas un vienkārši izmantotu vienkāršotu arhitektūru, piemēram, Microsoft, kur visi šādi parametri atrodas vienas klases SymmetricAlgorithm un AsymmetricAlgorithm perimetrā. Lai norādītu pirmos trīs parametrus (algoritms, darbības režīms un polsterējuma shēma), Cipher objekts izmanto transformācijas virkni.

  • Pareizā algoritma izvēle

Transformācijas virkne neapšaubāmi ietver kriptogrāfijas algoritma nosaukumu. Starp simetrisko un asimetrisko šifrēšanu ir 11 algoritmi (neattiecas uz dažādām PBEWithAnd kombinācijām), kurus var norādīt atbilstoši standarta algoritma nosaukuma dokumentācijai. No tiem tikai divi (pa vienam simetriski un asimetriski šifrējumi) faktiski ir pilnībā nodrošināti.

skenera izmantošana java

Atlikušie algoritmi ir vai nu pārmērīgi salauzti (DES, RC2 utt.), Vai arī ir sākušas parādīties plaisas (RC5), padarot to sadalāmu ar pietiekamu CPU jaudu - līdz brīdim, kad jūs to lasāt, tas jau var būt salauzts. Drošības ziņā domājošs izstrādātājs nedrīkst lasīt NIST specifikāciju kopas un neievērot jaunākos notikumus un pētījumus kriptogrāfijas kopienā. Viņi var uzņemt salauztos vai riskantos algoritmus, sagremot vai pseido-nejauši ģenerētājus.

Vienmēr:

  1. Simetrisks algoritms: tiek izmantots AES / AESWrap bloka šifrs.

  2. Asimetrisks algoritms: tiek izmantots RSA.

  • Darbības veids

Darbības režīms ir daļa no transformācijas un attiecas tikai uz bloķētajiem šifriem. Kad mēs izmantojam asimetriskus šifrus, izmantojiet ECB kā darbības režīmu, kas būtībā ir uzlaušana aizkulisēs, kas nozīmē, ka šo vērtību ignorē. Java pakalpojumu sniedzēji, piemēram, SunJCE, SunPKCS11, simetriskiem un asimetriskiem algoritmiem pēc noklusējuma izmanto ECB režīmu. Tā var būt laba lieta asimetriskiem algoritmiem, bet slikta ideja bloka šifriem.

Pakalpojumu sniedzējiem varētu uzdot veikt drošus noklusējumus, pamatojoties uz izmantoto algoritmu. Izmantojiet simetrisku šifrēšanu, lai glābtu jūs no atkārtotajiem uzbrukumiem vai zināmā teksta uzbrukumiem. Izmantojiet arī transformāciju, kas pilnībā nosaka algoritmu (t.i., ar tā darbības veidu un polsterējumu). Nekad, nekad nedariet kaut ko līdzīgu zemāk minētajam.

Tāpat kā iepriekš, AES algoritms tiktu izmantots ar ECB darbības režīmu, padarot atkārtotus uzbrukumus ļoti vienkāršus. Jaunai izstrādei, ja ir kaut mazākā iespēja atjaunot veco darbu, mums jāizmanto autentificēta šifrēšana ar saistīto datu (AEAD) režīmu (piemēram, GCM un CCM). Mums ir autentifikācijas tags ar pilnu 128 bitu garumu. Ja mēs izmantojam neautentificētu režīmu, šifra teksta autentificēšanai mēs izmantojam CBC vai CTR ar MAC.

  • Piemērotas polsterējuma shēmas izvēle

Parastajiem bloka šifra režīmiem vienkārša teksta garumam ir jābūt daudzkārtīgam no pamata šifrēšanas algoritma bloka lieluma, kas reti notiek. Tādējādi mums ir nepieciešams zināms polsterējums.Java programma nodrošina mums trīs dažādas simetriskas šifrēšanas shēmas, no kurām viena ir nepieņemama No Padding, bet otra ir ISO10126Padding, kas ir atsaukta kopš 2007. gada).

Tāpēc vienīgā piemērotā iespēja ir PKCS5Padding izmantošana. Dažu darbības veidu (piemēram, CBC režīms) un PKCS5Padding polsterējuma shēmas sajaukums var izraisīt polsterējuma orākulu uzbrukumus. Neminēt polsterēšanas shēmu vispār ir bīstamāk, nekā nodrošināt shēmu, kas ir uzņēmīga tikai pret noteikta veida uzbrukumiem. AEAD darbības režīms ir ļoti ieteicams, lai pārliecinātos, ka esat aizsargāts pret šiem uzbrukumiem.

  • Asimetriski algoritmi

Asimetriskos algoritmos mums ir iespēja izvēlēties no divām polsterēšanas shēmām. Ir svarīgi nodrošināt, lai tiktu izmantotas tikai OAEPWithAndPadding shēmas. Sagremojuma gadījumā, lūdzu, izmantojiet SHA1 vai SHA256 / 384/512. Lai izmantotu maskas ģenerēšanas funkciju (MGF), lūdzu, izmantojiet MGF1 polsterējumu, kā norādīts. Kopš 1998. gada PKCS1Padding ar RSA ir neaizsargāts pret Ciphertext uzbrukumiem [6].

Šeit mēs runājam par pareizu veidu, kā izmantot transformāciju “Cipher.getInstance” metodē.

kā iemācīties vizuālo studiju
  • Simetriska šifrēšana

  • Asimetriska šifrēšana

Jebkuras šifrēšanas shēmas drošības līmenis ir tieši proporcionāls tās atslēgas lielumam. Atslēgu garumam jābūt pietiekami garam, lai kāds brutāls spēks uzbruktu, vienlaikus tas kļūst neiespējams, tam jābūt arī pietiekami īsam, lai paturētu prātā skaitļošanas iespējas. Turklāt mums jācenšas apsvērt, kas joprojām iztur skaitļošanas progresu nākamajos 30 gados.

Ar to mēs esam nonākuši līdz raksta Šifrēšana Java beigām. Es ceru, ka jums radās priekšstats par šifrēšanu un atšifrēšanu un kāpēc tas tiek izmantots Java.

Pārbaudiet Autors: Edureka, uzticams tiešsaistes mācību uzņēmums ar vairāk nekā 250 000 apmierinātu izglītojamo tīklu visā pasaulē. Edureka Java J2EE un SOA apmācības un sertifikācijas kurss ir paredzēts studentiem un profesionāļiem, kuri vēlas būt Java izstrādātāji. Kurss ir paredzēts, lai dotu jums sākumu Java programmēšanā un apmācītu gan Java, gan uzlabotas koncepcijas, kā arī dažādas Java struktūras, piemēram, Hibernate & Spring.

Vai mums ir jautājums? Lūdzu, pieminējiet to šī emuāra “Šifrēšana Java” komentāru sadaļā, un mēs pēc iespējas ātrāk sazināsimies ar jums.