Sve što trebate znati o šifriranju u Javi



Ovaj će vam članak pružiti detaljno i sveobuhvatno znanje o šifriranju u Javi i kako ga koristiti s primjerima.

Šifriranje je metoda korištenja matematičkih algoritama za kamufliranje značenja neke informacije tako da je mogu dešifrirati samo ovlaštene strane. U ovom ćemo članku razgovarati o šifriranju i dešifriranju u sljedećim redoslijedom:

java pretvoriti iz dvostrukog u int

Uvod u šifriranje u Javi

Šifriranje je implementirano kako bi zaštitilo naše podatke (poput tekstova, razgovora i glasa), bilo da sjede na računalu ili se šalju na Internetu. Najnovije tehnologije šifriranja bitni su elementi svakog sigurnog računalnog okruženja.





Primarna uloga sigurnosti šifriranja leži u sposobnosti algoritma da generira šifrirani tekst (šifrirani tekst) koji je teško vratiti u izvorni otvoreni tekst. Korištenje ključeva također stvara još jedan stupanj sigurnosti načinima zaštite naših podataka. Ključ su neke informacije koje samo onima koji ih drže omogućuju kodiranje i dekodiranje poruke.

Šifriranje i dešifriranje u Javi



Algoritmi simetričnog šifriranja

Simetrični algoritmi koriste isti ključ za šifriranje i dešifriranje. Takvi algoritmi mogu raditi samo u blokovskom načinu (koji radi na blokovima podataka fiksne veličine) ili u modu toka (koji radi na bitovima ili bajtovima podataka). Takvi algoritmitakođer se često koriste za aplikacije poput šifriranja podataka, šifriranja datoteka i šifriranja prenesenih podataka u komunikacijskim mrežama (poput TLS-a, e-pošte, trenutnih poruka itd.)

Asimetrični (ili javni ključ) algoritmi šifriranja

Za razliku od simetričnih algoritama, koji koriste isti ključ i za operacije šifriranja i dešifriranja, asimetrični algoritmi koriste dva identična ključa za ova dva koraka. Ti se algoritmi koriste za izračunavanje digitalnih potpisa i protokola uspostavljanja ključeva. Međutim, to također donosi izazov da se trebaju koristiti dva ključa što stvari čini složenijima.



Kako biste sigurno konfigurirali bilo koju osnovnu shemu šifriranja, vrlo je važno da svi takvi parametri (najmanje) budu ispravno dizajnirani:

  • Važan je odabir ispravnog algoritma.
  • Odabir pravog načina rada za odgovarajući zadatak
  • Odabir prave sheme podmetanja prema zahtjevu
  • Odabir odgovarajućih tipki i njihovih veličina
  • Ispravna inicijalizacija kriptografski sigurnim CSPRING-om.

Vrlo je važno biti svjestan sigurnog konfiguriranja svih ovih parametara. Čak i mala pogrešna konfiguracija može ugroziti cijeli kripto-sustav i otvoriti ga napadima hakera i drugog zlonamjernog softvera. Stoga, da bi ova rasprava bila jednostavna, razgovarajmo samo o inicijalizama šifre neovisnim o algoritmu. Umjesto da takve enkripcije radite sami, uvijek je bolje pustiti stručnjake da rade svoj posao konfiguriranja više konfiguracija ovisnih o algoritmu, poput vrijednosti p i q RSA algoritma, itd. Konfiguriranjem osnovnih rudarskih parametara iznad više od pola desetak, koristi se klasa.

Uvođenje hijerarhije klasa, puno preopterećenih konstruktora / metoda i tako dalje, dodajući mnoge složenosti, što ga čini nepotrebnim. Volio bih da Java ne komplicira osnovne konfiguracije i da jednostavno koristi pojednostavljenu arhitekturu poput one Microsofta, gdje su svi takvi parametri unutar opsega jedne klase SymmetricAlgorithm i AsymmetricAlgorithm. Da bi se navela prva tri parametra (algoritam, način rada i shema dodavanja), objekt Cipher koristi niz transformacije.

  • Odabir pravog algoritma

Niz transformacije nesumnjivo uključuje naziv kriptografskog algoritma. Između simetrične i asimetrične enkripcije postoji 11 algoritama (koji se ne odnose na različite kombinacije PBEWithAnd), a koji se mogu navesti prema dokumentaciji naziva standardnog algoritma. Od njih su samo dvije (po jedna za svaku, simetrična i asimetrična enkripcija) u potpunosti osigurane.

Preostali algoritmi su pretjerano slomljeni (DES, RC2, itd.) Ili su pukotine počele izranjati na površinu (RC5), čineći ga lomljivim s dovoljnom snagom procesora - već se može pokvariti dok ovo pročitate. Sigurnosni programer možda neće čitati mnoštvo NIST specifikacija, niti pratiti najnovija događanja i istraživanja u kriptografskoj zajednici. Mogli bi pokupiti pokvarene ili rizične algoritme, sažetke ili pseudo-slučajni generator.

Uvijek za:

  1. Simetrični algoritam: koristi se blok šifra AES / AESWrap.

  2. Asimetrični algoritam: koristi se RSA.

  • Način rada

Način rada dio je transformacije i relevantan je samo za blok šifre. Kada koristimo asimetrične šifre, koristite ECB kao način rada, što je u biti hak iza kulisa, što znači zanemarivanje ove vrijednosti. Davatelji usluga Java, poput SunJCE, SunPKCS11, zadani su način ECB za simetrične i asimetrične algoritme. To je možda dobra stvar za asimetrične algoritme, ali loša ideja za blok šifre.

Pružatelji usluga mogu se poučiti da naprave sigurne zadane vrijednosti na temelju korištenog algoritma. Upotrijebite simetričnu šifriranje da biste se spasili od napada ponovne reprodukcije ili napada otvorenog teksta. Također, upotrijebite transformaciju koja u potpunosti navodi algoritam (tj. S načinom rada i dodavanjem). Nikad, nikad ne radite nešto poput dolje spomenutog.

Kao i gore, AES algoritam koristio bi se s načinom rada ECB-a, čineći napade ponavljanja vrlo jednostavnim. Ako postoji najmanja mogućnost preuređenja starog djela, za novi razvoj trebali bismo koristiti ovjerenu enkripciju s načinom povezanih podataka (AEAD) (na primjer GCM i CCM). Imamo oznaku za provjeru autentičnosti s punih 128 bita. Ako koristimo neautentificirani način, koristimo CBC ili CTR s MAC-om za autentifikaciju šifriranog teksta.

  • Odabir odgovarajuće sheme obloga

Uobičajeni modusi blok šifre trebaju da duljina običnog teksta bude višestruka od veličine bloka osnovnog algoritma šifriranja, što je rijetko slučaj. Stoga nam je potrebno malo popunjavanja.Java program pruža nam tri različite sheme za simetričnu enkripciju, jedna je Bez popunjavanja, što je neprihvatljivo, a druga je ISO10126Padding koja se povlači od 2007. godine).

Stoga je jedina prikladna opcija korištenje PKCS5Padding. Kombinacija nekih načina rada (na primjer CBC način) i PKCS5Padding shema dodavanja može dovesti do padding oracle napada. Uopće ne spominjati shemu popunjavanja opasnije je od pružanja sheme koja je podložna samo određenim vrstama napada. Najviše se preporučuje AEAD način rada kako biste bili sigurni da ste zaštićeni od ovih napada.

razlika između aws i azura
  • Asimetrični algoritmi

U asimetričnim algoritmima imamo mogućnost odabira između dvije sheme popunjavanja. Važno je osigurati da se koriste samo sheme OAEPWithAndPadding. U slučaju sažetka, upotrijebite SHA1 ili SHA256 / 384/512. Za funkciju generiranja maske (MGF), upotrijebite podstavku MGF1 kako je navedeno. PKCS1Padding s RSA ranjiv je na napade šifriranog teksta [6] od 1998.

Ovdje govorimo o ispravnom načinu korištenja transformacije u metodi 'Cipher.getInstance'.

  • Simetrično šifriranje

  • Asimetrično šifriranje

Razina sigurnosti bilo koje sheme šifriranja izravno je proporcionalna veličini ključa. Dužina ključa mora biti dovoljno dugačka da god god napadne grubu silu postala neizvediva, istovremeno bi trebala biti i dovoljno kratka da ima na umu računsku izvedivost. Uz to, moramo pokušati razmotriti što još uvijek može izdržati napredak u računanju u sljedećih 30 godina.

Ovim smo došli do kraja članka Encryption in Java. Nadam se da imate ideju o šifriranju i dešifriranju i zašto se koristi u Javi.

Pogledajte Edureka, pouzdane tvrtke za internetsko učenje s mrežom od više od 250 000 zadovoljnih učenika raširenih širom svijeta. Edurekin tečaj za obuku i certificiranje Java J2EE i SOA dizajniran je za studente i profesionalce koji žele biti programer Java. Tečaj je dizajniran da vam pruži početnu prednost u Java programiranju i osposobi vas za osnovne i napredne Java koncepte zajedno s raznim Java okvirima poput Hibernate & Spring.

Imate pitanje za nas? Molimo spomenite ga u odjeljku za komentare ovog bloga 'Šifriranje na Javi', a mi ćemo vam se javiti u najkraćem mogućem roku.