Encryption, hashing, salting – ano ang pagkakaiba?
Ang pag-encrypt, hashing at salting ay lahat ng mga kaugnay na pamamaraan, ngunit ang bawat isa sa mga prosesong ito ay may mga katangian na nagpapahiram sa kanila sa iba’t ibang mga layunin.
Sa madaling salita, Ang pag-encrypt ay nagsasangkot ng data ng pag-encode upang maaari lamang itong mai-access ng mga may susi. Pinoprotektahan ito mula sa mga hindi awtorisadong partido.
Ang cryptographic hashing ay nagsasangkot ng mga kalkulasyon na hindi mababaligtad. Ang mga pag-andar na ito ay may ilang mga espesyal na katangian na ginagawang kapaki-pakinabang sa kanila para sa mga digital na lagda at iba pang mga paraan ng pagpapatunay.
Ang pagsasama ay nagsasangkot ng pagdaragdag ng mga random na data bago ito mailagay sa pamamagitan ng isang function na hash sa cryptographic. Karamihan ito ay ginagamit upang mapanatiling ligtas ang mga password sa panahon ng imbakan, ngunit maaari rin itong magamit sa iba pang mga uri ng data.
Ano ang pag-encrypt?
Sa madaling salita, ang pag-encrypt ay ang proseso ng paggamit ng isang code upang mapigilan ang ibang mga partido na mai-access ang impormasyon. Kapag naka-encrypt ang data, ang mga may susi lamang ang maaaring ma-access ito. Hangga’t ginagamit ang isang sapat na kumplikadong sistema, at ginamit ito nang tama, pagkatapos ay maiiwasan ang mga umaatake na makita ang data.
Ang data ay naka-encrypt na may mga algorithm ng pag-encrypt, na kilala rin bilang mga ciphers. Ang isa sa pinakamahalagang pagkakaiba sa pagitan ng pag-encrypt at hashing (na makukuha natin sa kalaunan) ay ang pag-encrypt ay idinisenyo upang pumunta sa parehong paraan. Nangangahulugan ito na kapag ang isang bagay ay nai-encrypt na may susi, maaari rin itong mai-decrypted.
Ginagawa nitong kapaki-pakinabang ang pag-encrypt sa isang hanay ng mga sitwasyon, tulad ng para sa ligtas na pag-iimbak o paglilipat ng impormasyon. Kapag ang data ay nai-encrypt nang maayos, itinuturing itong ligtas at mai-access lamang ng mga may susi. Ang pinaka-kilalang uri ng uri ay simetriko-key encryption, na nagsasangkot ng paggamit ng parehong key sa parehong mga proseso ng pag-encrypt at decryption.
Ang pampublikong key na pag-encrypt ay medyo mas kumplikado dahil ang isang magagamit na pampublikong susi ay ginagamit upang i-encrypt ang data, habang ang pagtutugma ng pribadong key nito ay ginagamit upang i-decrypt ito. Ang tampok na ito ay nagbibigay-daan sa mga taong hindi pa nakikilala ang bawat isa upang makipag-usap nang ligtas. Ang pampublikong key na pag-encrypt din ay isang mahalagang bahagi ng mga digital na lagda, na ginagamit upang mapatunayan ang pagiging tunay at integridad ng data at mensahe.
Tingnan din: Ipinaliwanag ang mga karaniwang uri ng pag-encrypt
Mga karaniwang algorithm ng pag-encrypt
- Caesar cipher – Ito ay isang simpleng code na nagsasangkot sa bawat titik na inilipat ng isang nakapirming bilang ng mga lugar. Kung ang isang cipher na Cesar ay may tatlong pagbago, bawat “a” ay magiging isang “d”, ang bawat “b” ay magiging isang “e”, ang bawat “c” ay magiging isang “f” at iba pa. Ito ay pinangalanan kay Julius Caesar, na ang unang taong naitala na gumagamit ng iskema.
- AES – Ang Advanced na Encryption Standard ay isang kumplikadong simetriko-key algorithm na nagsisiguro ng isang mahalagang bahagi ng aming mga modernong komunikasyon. Ito ay nagsasangkot ng isang bilang ng mga sopistikadong hakbang at madalas na ginagamit upang i-encrypt ang data sa TLS, messaging apps, sa pamamahinga at sa maraming iba pang mga sitwasyon. Kumuha kami ng isang mas malalim na pagsisid sa AES encryption dito.
- 3DES – Ang Triple DES ay batay sa algorithm ng DES. Kapag lumalaking kapangyarihan ng computer na ginawa ang kawalan ng seguridad ng DES, ang 3DES ay binuo bilang isang reinforced algorithm. Sa 3DES, ang data ay pinapatakbo sa algorithm ng DES nang tatlong beses sa halip na isang beses lamang, na ginagawang mas mahirap masira. Ang 3DES ay maaaring magamit para sa marami sa mga parehong bagay tulad ng AES, ngunit ang ilang mga pagpapatupad ay itinuturing na ligtas.
- RSA – Ang Rivest-Shamir-Adleman cipher ay ang unang anyo ng malawak na ginagamit na public-key na kriptograpiya. Pinapayagan nito ang mga entidad na makipag-usap nang ligtas kahit na hindi nila nakilala o nagkaroon ng pagkakataon na makipagpalitan ng mga susi. Maaari itong magamit sa isang iba’t ibang mga protocol ng seguridad, tulad ng PGP at TLS. Mayroon kaming isang malalim na gabay sa pag-encrypt ng RSA dito.
- ECDSA – Ang Elliptic curve Digital Signature Algorithm ay isang variant ng DSA na gumagamit ng elliptic curve cryptography. Bilang isang public-key algorithm, maaari itong mailapat sa magkatulad na sitwasyon sa RSA, bagaman hindi gaanong karaniwang ipinatupad dahil sa ilang mga isyu sa seguridad.
Pag-encrypt sa pagkilos
Upang mabigyan ka ng ideya kung paano gumagana ang pag-encrypt, gagamitin namin ang Caesar cipher bilang isang halimbawa. Kung nais naming mag-encrypt ng isang mensahe ng “Kain tayo“Sa isang paglipat ng tatlo, ang”L“Ay magiging isang”O“, Ang”e“Ay magiging isang”h” at iba pa. Nagbibigay ito sa amin ng isang naka-encrypt na mensahe ng:
Oh wvw
Upang i-decrypt ang mensahe, dapat malaman ng tatanggap na ang algorithm ng pag-encrypt ay nagsasangkot ng isang shift ng tatlo, pagkatapos ay i-roll muli ang bawat titik sa pamamagitan ng tatlong mga lugar. Kung nais namin, maaari naming iba-iba ang code sa pamamagitan ng paglilipat ng bawat titik sa pamamagitan ng ibang numero. Maaari pa kaming gumamit ng isang mas sopistikadong algorithm.
Isang halimbawa ay ang AES. Kung gumagamit kami ng isang 128-bit AES online calculator upang i-encrypt “Kain tayo“Na may susi ng”1234“, Ito ay nagbibigay sa amin:
FeiUVFnIpb9d0cbXP / Ybrw ==
Ang ciphertext na ito ay maaari lamang mai-decry na may susi ng “1234“. Kung gagamitin namin ang isang mas kumplikadong susi at panatilihin itong pribado, kung gayon maaari naming isaalang-alang ang data na ligtas mula sa mga umaatake.
Ano ang nakakainis?
Ang mga function ng cryptographic hash ay isang espesyal na uri ng pagkalkula ng one-way. Kumuha sila ng isang string ng data ng anumang laki at palaging nagbibigay ng isang output ng isang paunang natukoy na haba. Ang output na ito ay tinatawag na hash, halaga ng hash o pantunaw ng mensahe. Dahil ang mga pagpapaandar na ito ay hindi gumagamit ng mga susi, ang resulta para sa isang naibigay na input ay palaging pareho.
Hindi mahalaga kung ang iyong input ay kabuuan ng Digmaan at Kapayapaan o dalawang titik lamang, ang resulta ng isang pag-andar ng hash ay palaging magiging parehong haba. Ang mga pag-andar ng Hash ay may maraming iba’t ibang mga katangian na ginagawang kapaki-pakinabang sa kanila:
- Ang mga ito ay one-way function – Nangangahulugan ito na walang praktikal na paraan upang malaman kung ano ang orihinal na pag-input mula sa isang naibigay na halaga ng hash.
- Hindi malamang para sa dalawang input na magkaroon ng parehong halaga ng hash – Bagaman posible para sa dalawang magkakaibang mga input upang magbunga ng parehong halaga ng hash, ang mga pagkakataon na mangyari ito ay napakaliit na hindi namin talaga nababahala tungkol dito. Para sa mga praktikal na layunin, ang mga halaga ng hash ay maaaring ituring na natatangi.
- Ang parehong pag-input ay palaging naghahatid ng parehong resulta – Sa tuwing inilalagay mo ang parehong impormasyon sa isang naibigay na function na hash, palaging ito ay maghatid ng parehong output.
- Kahit na ang pinakamaliit na pagbabago ay nagbibigay ng ganap na magkakaibang resulta – Kung kahit ang isang solong character ay binago, ang halaga ng hash ay magkakaiba.
Ano ang mga hadhes na ginagamit para sa?
Ang mga pag-andar ng Hash ay maaaring magkaroon ng ilang mga kagiliw-giliw na mga katangian, ngunit ano ang maaari nating gawin sa kanila? Ang kakayahang maglagay ng isang natatanging, naayos na laki ng output para sa isang input ng anumang haba ay maaaring mukhang walang higit pa sa isang hindi maliwanag na lansihin na partido, ngunit ang mga function na hash ay talagang mayroong isang bilang ng mga gamit.
Ang mga ito ay isang pangunahing sangkap ng mga pirma ng digital, na isang mahalagang aspeto ng pagpapatunay ng pagiging tunay at integridad sa internet. Mga code sa pagpapatunay ng mensahe ng Hash Gumagamit din ang mga function ng hash upang makamit ang mga katulad na resulta.
Ang mga function ng cryptographic hash ay maaaring magamit bilang normal na mga function ng hash din. Sa mga sitwasyong ito, maaari silang kumilos bilang mga tseke upang mapatunayan ang integridad ng data, bilang mga algorithm ng fingerprinting na nag-aalis ng dobleng data, o upang lumikha ng mga hash table upang mai-index ang data.
Mga karaniwang pag-andar ng cryptographic hash
- MD5 -Ito ay isang pag-andar ng hash na unang nai-publish noong 1991 ni Ron Rivest. Ito ay itinuturing na ngayon na kawalan ng katiyakan at hindi dapat gamitin para sa mga layunin ng cryptographic. Sa kabila nito, maaari pa rin itong magamit upang suriin ang integridad ng data.
- SHA-1 – Ang Secure Hash Algorithm 1 ay ginamit mula pa noong 1995, ngunit hindi itinuturing na ligtas mula noong 2005, nang maganap ang isang matagumpay na pag-atake ng banggaan. Inirerekomenda ngayon na ipatupad ang alinman sa SHA-2 o SHA-3.
- SHA-2 – Ito ay isang pamilya ng mga function na hash na kumikilos bilang mga kahalili sa SHA-1. Ang mga pagpapaandar na ito ay naglalaman ng maraming mga pagpapabuti, na ginagawang ligtas ang mga ito sa isang malawak na iba’t ibang mga application. Sa kabila nito, ang SHA-256 at SHA-512 ay mahina laban sa mga pag-atake ng haba-extension, kaya may mga tiyak na sitwasyon kung saan pinakamahusay na ipatupad ang SHA-3.
- SHA-3 – Ang SHA-3 ay ang pinakabagong miyembro ng Secure Hash Algorithm pamilya, ngunit ito ay itinayo na medyo naiiba mula sa mga nauna nito. Sa yugtong ito, hindi pa ito pinalitan ng SHA-2, ngunit nagbibigay lamang ng mga kriptographers ng isa pang pagpipilian na maaaring magbigay ng pinahusay na seguridad sa ilang mga sitwasyon.
- RIPEMD – Ang RIPEMD ay isa pang pamilya ng mga pagpapaandar na binuo ng pamayanang pang-akademiko. Ito ay batay sa maraming mga ideya mula sa MD4 (nauna sa MD5) at hindi pinigilan ng anumang mga patente. Ang RIPEMD-160 ay itinuturing pa ring ligtas, ngunit hindi ito nakita ng malawak na pag-ampon.
- Whirlpool – Ang Whirlpool ay isang function na hash mula sa pamilya na square block cipher. Ito ay batay sa isang pagbabago ng AES at hindi napapailalim sa anumang mga patente. Itinuturing itong ligtas, ngunit medyo mas mabagal kaysa sa ilan sa mga kahalili nito, na humantong sa limitadong pag-aampon.
Pag-andar sa pag-andar sa pagkilos
Ngayon na nauunawaan mo kung ano ang mga function ng hash, oras na upang maisagawa ito. Kung inilalagay namin ang parehong teksto ng “Kain tayo“Sa isang SHA-256 online calculator, binibigyan kami nito:
5c79ab8b36c4c0f8566cee2c8e47135f2536d4f715a22c99fa099a04edbbb6f2
Kung magbabago tayo kahit isang character sa pamamagitan ng isang solong posisyon, binago nito ang buong hash ng drastically. Isang typo tulad ng “Kumain si Met“Nagbubunga ng isang iba’t ibang mga resulta:
4be9316a71efc7c152f4856261efb3836d09f611726783bd1fef085bc81b1342
Hindi tulad ng pag-encrypt, hindi namin mailalagay ang hash na halaga sa pamamagitan ng pag-andar upang makuha muli ang aming input. Bagaman ang mga pag-andar ng hash na ito ay hindi magamit sa parehong paraan ng pag-encrypt, ang kanilang mga pag-aari ay ginagawa silang isang mahalagang bahagi ng mga pirma sa digital at maraming iba pang mga aplikasyon.
Mga function ng Hash at password
Ang mga pagpapaandar ng Hash ay may isa pang karaniwang gamit na hindi pa namin napag-usapan. Ang mga ito rin ay isang pangunahing sangkap ng panatilihing ligtas ang aming mga password sa panahon ng pag-iimbak.
Marahil mayroon kang dose-dosenang mga online account na may mga password. Para sa bawat isa sa mga account na ito, ang iyong password ay kailangang maimbak sa kung saan. Paano mapatunayan ang iyong pag-login kung walang sariling kopya ng iyong password ang website?
Ang mga kumpanya tulad ng Facebook o Google ay nag-iimbak ng bilyun-bilyong mga password ng gumagamit. Kung pinanatili ng mga kumpanyang ito ang mga password bilang plaintext, kung gayon ang anumang mang-atake na maaaring gumana sa database ng password ay ma-access ang bawat account na kanilang nahanap.
Ito ay magiging isang malubhang sakuna sa seguridad, kapwa para sa kumpanya at mga gumagamit nito. Kung ang bawat solong password ay nakalantad sa mga umaatake, ang lahat ng kanilang mga account at data ng gumagamit ay nasa panganib.
Ang pinakamahusay na paraan upang maiwasan ito mula sa nangyayari ay upang hindi maiimbak ang mga password sa kanilang sarili, ngunit ang mga halaga ng hash para sa mga password sa halip. Tulad ng napag-usapan namin sa nakaraang seksyon, ang mga function ng hash sa cryptographic ay nagpapatakbo sa isang direksyon, na gumagawa ng isang nakapirming laki na output na hindi posible na baligtarin.
Kung nag-iimbak ang isang samahan ng isang password sa halip na ang password mismo, maaari itong mapatunayan na tumutugma ang dalawang hashes kapag ang isang gumagamit ay nag-log. Ang mga gumagamit ay nagpasok ng kanilang mga password, na kung saan pagkatapos ay binigo. Ang hash na ito ay pagkatapos ay ihambing sa hash ng password na nakaimbak sa database. Kung tumutugma ang dalawang hashes, pagkatapos ay ang tamang password ay naipasok at ang user ay binigyan ng access.
Ang setup na ito ay nangangahulugan na ang password ay hindi kailanman dapat maiimbak. Kung ang isang magsasalakay ay gumawa ng kanilang paraan papunta sa database, kung gayon ang kanilang mahahanap ay ang pag-iwas sa password, kaysa sa mga password.
Habang ang mga password ng hashing para sa pag-iimbak ay hindi pumipigil sa mga umaatake sa paggamit ng mga hashes upang malaman ang mga password, ginagawang mas mahirap at magastos ang kanilang trabaho. Pinagsasama nito ang aming pangwakas na paksa, salting.
Ano ang salting?
Mahalaga ang pagbabalat ang pagdaragdag ng mga random na data bago ito mailagay sa pamamagitan ng isang function na hash, at ang mga ito ay karaniwang ginagamit sa mga password.
Ang pinakamahusay na paraan upang ipaliwanag ang paggamit ng mga asing-gamot ay upang talakayin kung bakit kailangan natin ang mga ito sa unang lugar. Maaaring naisip mo na ang pag-iimbak ng mga hashes ng mga password ay malulutas na ang lahat ng aming mga problema, ngunit sa kasamaang palad, ang mga bagay ay medyo mas kumplikado kaysa sa.
Mahina ang mga password
Ang isang pulutong ng mga tao ay may talagang masamang mga password, marahil ay ginagawa mo rin. Ang problema ay ang mga tao ay may posibilidad na mag-isip sa mahuhulaan na mga pattern at pumili ng mga password na madaling matandaan. Ang mga password na ito ay mahina laban sa mga pag-atake sa diksyunaryo, na umikot sa libu-libo o milyun-milyong mga pinaka-karaniwang mga kumbinasyon ng password bawat segundo, sa isang pagtatangka upang mahanap ang tamang password para sa isang account.
Kung ang mga hashes ng password ay nakaimbak sa halip, ang mga bagay ay medyo naiiba. Kapag ang isang umaatake ay dumating sa kabuuan ng isang database ng mga hadhes ng password, maaari rin nilang gamitin hash table o mga talahanayan ng bahaghari upang maghanap ng pagtutugma ng mga hashes na magagamit nila upang malaman ang mga password.
Ang isang hash table ay isang pre-computed na listahan ng mga hashes para sa mga karaniwang password na nakaimbak sa isang database. Nangangailangan sila ng mas maraming trabaho nang mas maaga, ngunit sa sandaling nakumpleto ang talahanayan, mas mabilis na maghanap ng mga hashes sa talahanayan kaysa sa pagkalkula ng hash para sa bawat posibleng password. Ang isa pang kalamangan ay ang mga talahanayan na ito ay maaaring magamit nang paulit-ulit.
Ang mga talahanayan ng Rainbow ay katulad ng mga talahanayan ng hash, maliban na lamang na kumukuha sila ng mas kaunting puwang sa gastos ng mas maraming lakas ng computing.
Parehong mga paraan ng pag-atake na ito ay magiging mas praktikal kung ang mga mahina na password ay ginagamit. Kung ang isang gumagamit ay may isang pangkaraniwang password, pagkatapos ay malamang na ang hash para sa password ay nasa hash table o rainbow table. Kung ito ang kaso, pagkatapos lamang ang oras bago ang isang nagsasalakay ay ma-access ang password ng isang gumagamit.
Ang mga gumagamit ay maaaring makatulong upang mapuksa ang mga pag-atake na ito sa pamamagitan ng pagpili ng mas mahaba at mas kumplikadong mga password na mas malamang na maiimbak sa mga talahanayan. Sa pagsasagawa, hindi ito nangyayari kahit saan malapit sa nararapat, dahil ang mga gumagamit ay may posibilidad na pumili ng mga password na madaling matandaan. Bilang isang maluwag na patakaran ng hinlalaki, ang mga bagay na madaling tandaan ay madalas na madaling mahanap ng mga umaatake.
Nag-aalok ang mga asing ng isa pang paraan ng pag-ikot sa isyung ito. Sa pamamagitan ng pagdaragdag ng isang random na string ng data sa isang password bago ito mabigo, mahalagang gawin itong mas kumplikado, na pumipigil sa mga pagkakataong pag-atake na ito ay nagtagumpay..
Paano gumagana ang pag-asin sa kasanayan
Bilang halimbawa, sabihin nating mayroon kang isang email account at ang iyong password ay “1234“. Kapag gumagamit kami ng isang SHA-256 online calculator, nakuha namin ang sumusunod bilang ang halaga ng hash:
03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4
Ang hash na ito ay kung ano ang maiimbak sa database para sa iyong account. Kapag ipinasok mo ang iyong password ng “1234“, Ito ay inalis at pagkatapos ay ang halaga ay inihambing laban sa nakaimbak na halaga. Dahil ang parehong mga halaga ay pareho, bibigyan ka ng pag-access.
Kung ang isang attacker ay sumisira sa database, magkakaroon sila ng access sa halagang ito, pati na rin ang lahat ng iba pang mga hashes ng password na naroon. Ang mananalakay ay kukuha ng halaga ng hash na ito at hanapin ito sa kanilang pre-computed hash table o rainbow table. Dahil “1234“Ay isa sa mga pinaka-karaniwang password, gusto nila mahanap ang pagtutugma ng hash nang napakabilis.
Ang mesa ng hash ay sasabihin sa kanila na:
03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4
Kaugnay ng:
1234
Malalaman ng mananalakay na ang iyong password ay “1234“. Maaari nilang magamit ang password na ito upang mag-log in sa iyong account.
Tulad ng nakikita mo, hindi ito isang buong trabaho para sa umaatake. Upang gawing mas mahirap ang mga bagay, nagdagdag kami ng isang asin ng random na data sa password bago ito mabigyan ng timbang. Tumutulong ang pagbawas sa makabuluhang bawasan ang mga pagkakataon ng hash table at bahaghari sa mga talahanayan mula sa pagbabalik ng isang positibong resulta.
Kumuha ng isang 16 character na asin ng random data:
H82BV63KG9SBD93B
Idagdag namin ito sa aming simpleng password ng “1234“Tulad nito:
1234H82BV63KG9SBD93B
Ngayon lamang namin inasnan ito inilalagay namin ito sa pamamagitan ng parehong pag-andar ng pag-andar na ginawa namin dati, na nagbabalik:
91147f7666dc80ab5902bde8b426aecdb1cbebf8603a58d79182b750c10f1303
Sigurado, ang halaga ng hash na ito ay hindi na mas o mas kumplikado kaysa sa nauna, ngunit hindi iyon ang punto. Habang pareho silang haba, “1234H82BV63KG9SBD93B“Ay isang mas gaanong karaniwang password, kaya’t malamang na ang hash nito ay maiimbak sa hash table.
Ang mas malamang na isang password ay maiimbak sa isang hash table, mas malamang na ang isang pag-atake ay magtagumpay. Ito ay kung paano nakakatulong ang pagdaragdag ng mga asing-gamot upang mas ligtas ang hashes ng password.
Pag-hack ng buong database
Kapag ang isang nagsasalakay ay may access sa isang buong database ng mga hadhes ng password, hindi nila kailangang subukan ang bawat hash laban sa bawat entry. Sa halip, maaari nilang hanapin ang buong database para sa mga tugma na nag-tutugma sa kanilang hash table. Kung ang database ay sapat na malaki, ang isang magsasalakay ay maaaring makompromiso ang isang malaking bilang ng mga account, kahit na mayroon silang limang porsyento na rate ng tagumpay.
Kung ang mga password ay binibigyan ng mga natatanging asing-gamot bago sila maiinlove, kung gayon mas ginagawang mas kumplikado ang proseso. Kung ang mga asing-gamot ay sapat na mahaba, ang mga pagkakataon ng tagumpay ay magiging mas mababa, na kakailanganin hash mga talahanayan at bahaghari talahanayan upang maging prohibitively malaki upang mahanap ang pagtutugma ng hashes.
Ang isa pang bentahe ng mga asing-gamot ay dumating kapag maraming mga gumagamit sa parehong database ay may parehong password, o kung ang isang solong gumagamit ay may parehong password para sa maraming mga account. Kung ang hashes ng password ay hindi inasnan nang una, pagkatapos ay maihahambing ng mga umaatake ang mga hashes at matukoy na ang anumang mga account na may parehong halaga ng hash ay nagbabahagi din ng parehong password.
Ginagawa nitong mas madali para sa mga hacker na i-target ang pinaka-karaniwang mga halaga ng hash na magbibigay sa kanila ng pinakamalaking gantimpala. Kung ang mga password ay inasnan nang una, kung gayon ang mga halaga ng hash ay magkakaiba kahit na ang parehong mga password ay ginagamit.
Mga potensyal na kahinaan sa asin
Ang pagtanggal ng talo ay nawawala ang pagiging epektibo nito kung ito ay hindi tama. Ang dalawang pinaka-karaniwang isyu ay nangyayari kapag Ang mga asing-gamot ay masyadong maikli, o kung hindi natatangi para sa bawat password. Ang mas maiikling mga asing-gamot ay mahina pa rin sa pag-atake ng talahanayan ng bahaghari, dahil hindi nila ginawang sapat ang bihirang resulta.
Kung ang mga asing-gamot ay ginamit muli para sa bawat hashed password, at natuklasan ang asin, ginagawa nitong mas simple upang malaman ang bawat password sa database. Ang paggamit ng parehong asin ay nangangahulugan din na ang sinumang may parehong password ay magkakaroon ng parehong hash.
Mga karaniwang algorithm ng salting
Hindi inirerekumenda na gumamit ng normal na mga function ng hashing para sa pag-iimbak ng mga password. Sa halip, ang isang bilang ng mga pag-andar ay dinisenyo na may mga tiyak na tampok na makakatulong upang mapalakas ang seguridad. Kabilang dito ang Argon2, scrypt, bcrypt at PBKDF2.
Argon2
Si Argon2 ang nagwagi sa Kumpetisyon sa Pagmamadali sa Password sa 2015. Medyo bago pa rin ito hangga’t pupunta ang mga algorithm, ngunit mabilis itong naging isa sa mga pinagkakatiwalaang function para sa mga hashing password.
Sa kabila ng kanyang kabataan, hanggang ngayon ay may hawak na ito sa isang bilang ng mga papeles ng pananaliksik na sinubukan ito para sa mga kahinaan. Ang Argon2 ay mas nababaluktot kaysa sa iba pang mga algorithm ng hashing ng password at maaaring maipatupad sa isang iba’t ibang mga paraan.
scrypt
Binibigkasess crypt“, Ito ang pangalawang bunsong password ng hashing algorithm na karaniwang ginagamit. Dinisenyo noong 2009, ang scrypt ay gumagamit ng isang malaki, pa adjustable na halaga ng memorya sa mga computations nito. Ang adjustable na kalikasan nito ay nangangahulugan na maaari pa rin itong lumalaban sa mga pag-atake kahit na ang lakas ng computing ay lumalaki sa paglipas ng panahon.
bcrypt
bcrypt ay binuo noong 1999 at batay sa Blowfish cipher. Ito ay isa sa mga pinaka-karaniwang umasa sa mga algorithm na ginamit sa hashing password sa loob ng maraming taon, ngunit ngayon ay mas mahina ito sa mga arrays na maaaring ma-program (na mga FPGA). Ito ang dahilan kung bakit ang Argon2 ay madalas na ginustong sa mga mas bagong pagpapatupad.
PKFD2
Ang key function na derivation na ito ay binuo upang mapalitan ang PBKDF1, na kung saan ay may isang mas maikli at hindi gaanong secure na haba ng susi. Ang mga patnubay ng NIST mula sa 2023 ay inirerekumenda pa rin ang PKFD2 para sa mga hashing password, ngunit tinutugunan ni Argon2 ang ilan sa mga isyu sa seguridad at maaaring maging isang mas mahusay na opsyon sa maraming mga sitwasyon.
Encryption, hashing at salting: isang pagbabalik
Ngayon na natagpuan namin ang mga detalye ng pag-encrypt, hashing at salting, oras na upang mabilis na bumalik sa mga pangunahing pagkakaiba upang lumubog sila. Habang ang bawat isa sa mga prosesong ito ay may kaugnayan, ang bawat isa ay nagsisilbi ng ibang layunin.
Ang pag-encrypt ay ang proseso ng pag-encode ng impormasyon upang maprotektahan ito. Kapag naka-encrypt ang data, maaari lamang itong mai-encrypt at mai-access ng mga may tamang key. Ang mga algorithm ng pag-encrypt ay mababawi, na nagbibigay sa amin ng isang paraan upang mapalayo ang aming data mula sa mga umaatake, ngunit ma-access pa ito kapag kailangan namin ito. Ginagamit ito nang malawak upang mapanatili kaming ligtas sa online, na gumaganap ng isang mahalagang papel sa marami sa aming mga protocol ng seguridad na panatilihing ligtas ang aming data kapag ito ay naka-imbak at sa transit.
Sa kaibahan, ang hashing ay isang paraan na proseso. Kapag mayroon kaming isang bagay, hindi namin nais na maibalik ito sa orihinal na anyo. Ang mga function ng cryptographic hash ay may isang bilang ng mga natatanging katangian na payagan kaming patunayan ang pagiging tunay at integridad ng data, tulad ng sa pamamagitan ng mga digital na lagda at mga code ng pagpapatunay ng mensahe.
Ang mga tiyak na uri ng pag-andar ng cryptographic hash ay ginagamit din upang maiimbak ang aming mga password. Ang pag-iimbak ng hash ng isang password sa halip ng password mismo ay nagbibigay ng dagdag na layer ng seguridad. Nangangahulugan ito na kung ang isang magsasalakay ay makakakuha ng pagpasok sa isang database, hindi nila agad ma-access ang mga password.
Habang ang hashing password ay ginagawang mas mahirap para sa mga hacker, maaari pa rin itong maiiwasan. Dito nakapasok ang salting. Ang pagdaragdag ay nagdaragdag ng labis na data sa mga password bago sila binigyan ng timbang, na ginagawang pag-atake ng mas maraming oras at mabibigat ang mapagkukunan. Kung ang mga asin at password ay ginagamit nang tama, gumawa sila ng mga talahanayan ng hash at mga talahanayan ng bahaghari na hindi praktikal na paraan ng pag-atake.
Sama-sama, ang pag-encrypt, hashing at salting ay lahat ng mahalagang mga aspeto ng pagpapanatiling ligtas tayo online. Kung ang mga prosesong ito ay wala sa lugar, ang mga umaatake ay magkakaroon ng libre-para-lahat sa iyong mga account at data, na mag-iiwan sa iyo ng walang seguridad sa internet.
Teknolohiya-1 sa pamamagitan ng tec_estromberg sa ilalim CC0