Vse, kar morate vedeti o šifriranju v Javi



V tem članku boste našli podrobno in celovito znanje o šifriranju v Javi in ​​kako ga uporabiti s primeri.

Šifriranje je metoda uporabe matematičnih algoritmov za prikrivanje pomena podatkov, tako da jih lahko razberejo le pooblaščene stranke. V tem članku bomo razpravljali o šifriranju in dešifriranju v v naslednjem vrstnem redu:

Uvod v šifriranje v Javi

Šifriranje je uporabljeno za zaščito naših podatkov (na primer besedil, pogovorov in glasu oglasov), najsi bodo v računalniku ali pa bodo poslani prek interneta. Najnovejše tehnologije šifriranja so bistveni elementi vsakega varnega računalniškega okolja.





Primarna vloga varnosti šifriranja je v zmožnosti algoritma za generiranje šifriranega besedila (šifriranega besedila), ki ga je težko vrniti v prvotno odprto besedilo. Uporaba ključev ustvarja tudi drugo raven varnosti načinov zaščite naših podatkov. Ključ je nekaj informacij, ki samo tistim, ki jih imajo, omogoča kodiranje in dekodiranje sporočila.

php vstavi v $ tabelo

Šifriranje in dešifriranje v Javi



Algoritmi simetričnega šifriranja

Algoritmi Symmetric uporabljajo isti ključ za šifriranje in dešifriranje. Takšni algoritmi lahko delujejo samo v blokovnem načinu (ki deluje na blokih podatkov s fiksno velikostjo) ali v toku (ki deluje na bite ali bajte podatkov). Takšni algoritmise pogosto uporabljajo tudi za aplikacije, kot so šifriranje podatkov, šifriranje datotek in šifriranje prenesenih podatkov v komunikacijskih omrežjih (kot so TLS, e-pošta, neposredna sporočila itd.)

Asimetrični (ali javni ključ) algoritmi za šifriranje

Za razliko od simetričnih algoritmov, ki uporabljajo isti ključ tako za operacije šifriranja kot dešifriranja, asimetrični algoritmi za ta dva koraka uporabljata dva enaka ključa. Ti algoritmi se uporabljajo za računanje digitalnih podpisov in protokolov za vzpostavitev ključev. Vendar pa to prinaša tudi izziv, da je treba uporabiti dva ključa, zaradi česar so stvari bolj zapletene.



Za varno konfiguriranje katere koli osnovne sheme šifriranja je zelo pomembno, da so vsi taki parametri (najmanj) pravilno zasnovani:

  • Pomembna je izbira pravilnega algoritma.
  • Izbira pravega načina delovanja za ustrezno nalogo
  • Izbira prave sheme oblazinjenja glede na zahtevo
  • Izbira ustreznih tipk in njihovih velikosti
  • Pravilna inicializacija s kriptografsko varnim CSPRING.

Zelo pomembno je, da se zavedate varne konfiguracije vseh teh parametrov. Celo majhna napačna konfiguracija lahko ogrozi celoten kriptosistem in ga odpre napadom hekerjev in druge zlonamerne programske opreme. Da bi bila ta razprava enostavna, se pogovorimo le o algoritem neodvisnih inicializacijah šifre. Namesto da takšnega šifriranja izvajate sami, je vedno bolje, da strokovnjaki naredijo svoje delo, da konfigurirajo bolj od algoritma odvisne konfiguracije, kot so vrednosti p in q algoritma RSA itd. S samo konfiguracijo osnovnih kriptografskih parametrov nad več kot ducat, se uporabljajo razredi.

Uvedba hierarhij razredov, veliko preobremenjenih konstruktorjev / metod itd., Dodajanje številnih zapletenosti, zaradi katerih je to nepotrebno. Želim si, da Java ne bi zapletala osnovnih konfiguracij in bi preprosto uporabila bolj poenostavljeno arhitekturo, kot je Microsoftova, kjer so vsi takšni parametri znotraj oboda enega razreda SymmetricAlgorithm in AsymmetricAlgorithm. Za določitev prvih treh parametrov (algoritem, način delovanja in shema oblazinjenja) objekt Cipher uporablja niz transformacije.

  • Izbira pravega algoritma

Transformacijski niz nedvomno vključuje ime kriptografskega algoritma. Med simetričnim in asimetričnim šifriranjem obstaja 11 algoritmov (ne glede na različne kombinacije PBEWithAnd), ki jih je mogoče določiti v skladu s standardno dokumentacijo imena algoritma. Od njih sta le dve (po ena za vsako, simetrično in asimetrično šifriranje) dejansko popolnoma zaščiteni.

razlike med html in xml

Preostali algoritmi so bodisi pretirano pokvarjeni (DES, RC2 itd.) Bodisi so se začele pojavljati razpoke (RC5), zaradi česar je z zadostno močjo procesorja lomljiv - lahko je že prekinjen, ko to preberete. Varnostno razvit razvijalec morda ne bo prebral nabora specifikacij NIST, niti ne bo sledil najnovejšemu dogajanju in raziskavam v kriptografski skupnosti. Morda bodo pobrali pokvarjene ali tvegane algoritme, prebavni ali psevdonaključni generator.

Vedno za:

  1. Simetrični algoritem: Uporablja se blok šifra AES / AESWrap.

  2. Asimetrični algoritem: uporabljen je RSA.

  • Način delovanja

Način delovanja je del preobrazbe in je pomemben samo za blokirne šifre. Ko uporabljamo asimetrične šifre, uporabite ECB kot način delovanja, ki je v bistvu kramp v zakulisju, kar pomeni, da to vrednost prezrete. Ponudniki Java, kot so SunJCE, SunPKCS11, privzeto uporabljajo način ECB za simetrične in asimetrične algoritme. Morda je to dobro za asimetrične algoritme, za blokovne šifre pa slaba ideja.

Ponudnikom bi lahko naročili varne privzete nastavitve na podlagi uporabljenega algoritma. Uporabite simetrično šifriranje, da vas reši pred ponovnimi napadi ali napadi v znanem odprtem besedilu. Uporabite tudi transformacijo, ki v celoti določa algoritem (tj. Z načinom delovanja in oblazinjenjem). Nikoli, nikoli ne naredi česa takega kot spodaj omenjeno.

Kot zgoraj, bi bil algoritem AES uporabljen z načinom delovanja ECB, kar olajša ponovne napade. Če obstaja najmanjša možnost prenove starega dela, bi morali pri novem razvoju uporabiti overjeno šifriranje s povezanimi podatki (AEAD) (na primer GCM in CCM). Imamo oznako za preverjanje pristnosti s polno 128 bitov. Če uporabljamo način brez pristnosti, za overjanje besedila šifre uporabljamo CBC ali CTR z MAC.

  • Izbira ustrezne sheme oblazinjenja

Običajni načini šifriranja blokov potrebujejo, da je dolžina navadnega besedila večkratnik velikosti bloka osnovnega algoritma šifriranja, kar je redko. Tako potrebujemo nekaj oblazinjenja.Program Java nam ponuja tri različne sheme za simetrično šifriranje, ena je No Padding, kar je nesprejemljivo, druga pa ISO10126Padding, ki je umaknjena od leta 2007).

Zato je edina primerna možnost uporaba PKCS5Padding. Mešanica nekaterih načinov delovanja (na primer CBC) in PKCS5Padding shema oblazinjenja lahko privede do oblazinjenja napadov orakula. Ne omenjati sheme oblazinjenja je bolj nevarno kot zagotoviti shemo, ki je dovzetna le za nekatere vrste napadov. Najbolj priporočljiv je način delovanja AEAD, da ste zaščiteni pred temi napadi.

  • Asimetrični algoritmi

Pri asimetričnih algoritmih lahko izbiramo med dvema shemama oblazinjenja. Pomembno je zagotoviti, da se uporabljajo samo sheme OAEPWithAndPadding. V primeru izvlečka uporabite prosim SHA1 ali SHA256 / 384/512. Za funkcijo ustvarjanja maske (MGF) uporabite oblazinjenje MGF1, kot je določeno. PKCS1Padding z RSA je od leta 1998 ranljiv za napade šifriranega besedila [6].

Tu govorimo o pravilnem načinu uporabe transformacije v metodi “Cipher.getInstance”.

ustvari naključni niz java
  • Simetrično šifriranje

  • Asimetrično šifriranje

Raven varnosti katere koli sheme šifriranja je neposredno sorazmerna z velikostjo ključa. Dolžina ključa mora biti dovolj dolga, da ne glede na to, kako napade surova sila, postane hkrati neizvedljiva, hkrati pa mora biti tudi dovolj kratka, da se upošteva računska izvedljivost. Poleg tega moramo poskusiti razmisliti, kaj še vzdrži napredek pri računalništvu v naslednjih 30 letih.

S tem smo prišli do konca članka Encryption in Java. Upam, da imate idejo o šifriranju in dešifriranju in zakaj se uporablja v Javi.

Oglejte si Edureka, zaupanja vredno podjetje za spletno učenje z mrežo več kot 250.000 zadovoljnih učencev, razširjenih po vsem svetu. Edurekin tečaj za usposabljanje in certificiranje Java J2EE in SOA je namenjen študentom in strokovnjakom, ki želijo biti razvijalec Java. Tečaj je zasnovan tako, da vam omogoči uvod v programiranje Java in vas usposobi za osnovne in napredne koncepte Java, skupaj z različnimi Java okviri, kot so Hibernate & Spring

Imate vprašanje za nas? Prosimo, omenite ga v oddelku za komentarje tega bloga 'Šifriranje v Javi', mi se vam bomo javili v najkrajšem možnem času.