Ano ang asin sa isang Linux password hash at bakit ito mahalaga?

Huling pag-update: 04/12/2025
May-akda: Isaac
  • Ang asin ay isang random na string na idinaragdag sa password bago ang hash upang makamit ang mga natatanging hash sa bawat user.
  • Linux Nag-iimbak ito ng hash, asin at algorithm sa /etc/shadow, nagpapalakas ng seguridad laban sa mga pag-atake sa diksyunaryo at rainbow table.
  • Ang mga mahuhusay na kagawian ay nangangailangan ng mahaba, random, at natatanging mga asin, kasama ng mga mahuhusay na algorithm ng hash at mga database mahusay na protektado.
  • Ang pag-salting ng password ay dapat isama sa mas malawak na mga patakaran sa seguridad na kinabibilangan ng mga malalakas na password, MFA, at mga tagapamahala ng password.

asin sa password hash sa Linux

Kung nagtatrabaho ka sa mga sistema ng GNU/Linux o nag-aalala lang tungkol sa seguridad ng iyong mga account, malamang na narinig mo na ang asin sa hash ng passwordIsa ito sa mga konseptong maraming binanggit, ngunit kadalasan ay kalahati lang ang nakakaintindi: parang teknikal ito, ngunit sa totoo lang, nagagawa nito ang pagkakaiba sa pagitan ng isang sistemang madaling masira at ng isang mas lumalaban sa mga pag-atake.

Sa madaling salita, ang asin ay a pangunahing elemento upang gawing unpredictable ang mga hash ng passwordGumagana ito sa pamamagitan ng pagdaragdag ng random na data bago ilapat ang hash algorithm upang, kahit na ang dalawang user ay may parehong password, ang resulta na nakaimbak sa database ay magkakaiba. Mula roon, ang partikular na pagpapatupad sa Linux, ang kaugnayan nito sa /etc/shadow, mga tool tulad ng mkpasswd, at mga modernong pinakamahuhusay na kasanayan sa seguridad ay isang buong mundo sa kanilang sarili, na aming tutuklasin nang detalyado.

Ano nga ba ang asin sa isang hash ng password?

kahulugan ng asin sa hash ng password

Sa cryptography, a asin (asin) ay a random na string ng mga character na idinagdag sa password ng isang user bago maglapat ng hash function. Ang layunin ay para sa resultang hash na maging kakaiba kahit na ang plaintext na password ay pareho para sa maraming user.

Kapag ang isang user ay gumawa o nagbago ng kanilang password, ang system ay bubuo ng a random na asinPinagsasama nito ito sa password (bago, pagkatapos, o sa isang partikular na format depende sa scheme) at naglalapat ng hash algorithm sa kumbinasyong iyon, gaya ng SHA-256 o SHA-512Ang password ay hindi nakaimbak sa database, ngunit sa halip ay ang hash ng (password + asin), at sa karamihan ng mga scheme ang asin mismo ay nakaimbak din kasama ng hash.

Ang diskarteng ito ay nagbibigay ng marami sa mga diskarte sa pag-atake batay sa mga na-precompute na hash, tulad ng mga rainbow table, at lubos na nagpapalubha sa diksyunaryo at malupit na mga pag-atake sa malaking sukat. Hindi na maaaring samantalahin ng isang umaatake ang katotohanang maraming user ang nagbabahagi ng password, dahil magkakaroon ng iba't ibang hash ang bawat isa.

Mahalagang maunawaan na ang asin ay hindi lihim sa sarili nito: Ito ay hindi isang password o isang pribadong keyAng function nito ay upang ipakilala ang randomness at uniqueness sa proseso ng hashing. Nakadepende pa rin ang seguridad sa paggamit malakas na password y angkop na mga algorithm ng hash, mas mainam na partikular na idinisenyo para sa mga password (tulad ng bcrypt, scrypt, Argon2), bagama't maraming klasikong Linux system ang gumagamit ng mga variant ng SHA-256 o SHA-512.

Paano gumagana ang password salting hakbang-hakbang

Paano gumagana ang pag-asin ng password

Ang proseso ng pag-aasin ay maaaring ibuod sa isang serye ng mga medyo simpleng hakbang, ngunit may malaking epekto sa seguridad:

  Paano matukoy ang mga nakakahamak na proseso gamit ang Process Explorer at VirusTotal

Una, kapag ang isang user ay nagrehistro o nagpalit ng kanilang password, ang system ay bumubuo ng isang kakaiba at random na asin para sa kredensyal na iyon. Ang asin na iyon ay kadalasang may sapat na haba (halimbawa, 16 byte o higit pa) at nakukuha mula sa isang cryptographically secure na random number generator.

Susunod, ang password na pinili ng gumagamit ay pinagsama sa asin na iyon upang bumuo ng a intermediate chainAng kumbinasyong ito ay maaaring kasing simple ng pagsasama-sama ng asin + password, o maaari itong magkaroon ng mas kumplikadong format na tinukoy ng hash scheme. Ang mahalagang bagay ay ang bawat gumagamit ay nagtatapos sa ibang kumbinasyon.

Pagkatapos, a one-way na hash algorithmAng resulta ay isang tila random na string, ang hash, ng nakapirming haba, na maiimbak sa database kasama ang asin. Sa modernong mga sistema, hinahanap ang mga algorithm na gumagawa mahaba at kumplikadong mga labasanPinapataas nito ang espasyo sa paghahanap at ginagawang mas mahal ang mga malupit na pag-atake.

Sa wakas, kapag nag-log in ang user, kukunin muli ng system ang ipinasok na password. kaugnay na asin Mula sa database, inuulit nito ang eksaktong parehong proseso ng pagsasama-sama at pag-hash at inihahambing ang resulta sa nakaimbak na hash. Kung magkatugma ang mga ito, alam nitong tama ang password nang hindi na kailangang malaman ang plaintext.

Tinitiyak ng mekanismong ito na kahit na ma-leak ang database, makikita lang ng attacker indibidwal na mga hash na may sariling mga asinSa halip na isang hanay ng mga maihahambing na hash, ang paghinto ng pag-atake ay hindi magic, ngunit ito ay nagiging mas mahal sa computation.

Mga kalamangan ng paggamit ng asin sa mga hash ng password

Mga kalamangan ng paggamit ng asin sa mga password

Ang pangunahing dahilan ng paggamit ng salting ay iyon pinapalakas ang seguridad ng mga nakaimbak na password laban sa iba't ibang uri ng pag-atake. Ngunit ito ay nagkakahalaga ng pagdedetalye ng mga partikular na benepisyo.

Una, nagbibigay ang salting paglaban sa mga pag-atake sa diksyunaryoKung walang asin, ang isang umaatake ay maaaring maghanda ng isang malaking listahan ng mga karaniwang password at ang kanilang mga hash, at ihambing lamang ang mga ito sa ninakaw na database. Sa isang natatanging asin bawat user, nagiging walang silbi ang mga paunang nakalkulang hash na iyon, dahil ang bawat kumbinasyon ng password + asin ay bumubuo ng ibang halaga.

Pangalawa, ang paggamit ng asin ay sumisira sa bisa ng mga mesa ng bahaghariAng mga ito ay paunang nakalkula na mga database ng mga hash para sa mga sikat na password upang mapabilis ang pagbawi. Muli, dahil ang resulta ay nakasalalay sa partikular na asin, ang mga talahanayang ito na idinisenyo para sa mga unsalted na hash ay nagiging walang silbi o, sa pinakakaunti, lubhang hindi epektibo.

Ang isa pang malinaw na bentahe ay na ito ay nagpapabuti sa privacy sa kaso ng pagtagasKahit na magkaroon ng access ang isang nanghihimasok sa talahanayan ng user gamit ang hash at asin nito, hindi nila mabilis na matutukoy kung sino ang may parehong password sa iba o madaling maglunsad ng mga malawakang pag-atake. Ang bawat account ay nangangailangan ng indibidwal na atensyon, na kadalasan ay hindi praktikal sa isang malaking sukat.

  Alerto para sa bagong WhatsApp scam: Bizum at mga video call para magnakaw ng mga account at pera

Higit pa rito, ang pag-aasin ay nagdaragdag ng pagiging kumplikado sa pag-atake ng malupit na puwersaSa halip na subukan ang isang password ng kandidato laban sa lahat ng mga hash nang sabay-sabay, napipilitang isaalang-alang ng umaatake ang asin ng bawat user, na nagpaparami sa kabuuang workload. Kung ito ay pinagsama sa isang mabagal at na-parameterize na algorithm ng hashing (tulad ng bcrypt o Argon2), ang gastos sa pag-atake ay tataas pa.

Sa wakas, ang pag-aasin ay isang pamamaraan na mahusay na umaangkop sa teknolohikal na ebolusyon. Kahit na bumubuti ang mga kagamitan sa computer at may mga bagong pag-atake, ang kumbinasyon ng matatag na hash at natatanging asin Pinapanatili nito ang isang mataas at nasusukat na antas ng kahirapan: maaari mong taasan ang haba ng asin, palakasin ang algorithm, dagdagan ang gastos sa pagkalkula, atbp.

Paano ipinapatupad ng Linux ang pag-salting ng password (/etc/shadow)

Sa mga Linux system at iba pang *NIX variant, ang mga password ng user ay hindi nakaimbak sa /etc/passwd, ngunit sa file / etc / aninoAng file na ito, na maa-access lamang ng superuser, ay nag-iimbak ng mga hash ng password kasama ng karagdagang impormasyon, at kung saan malinaw na nakikita ang paggamit ng asin at ang hash algorithm.

Ang mga linya sa /etc/shadow ay may istraktura na katulad ng:

user:$id$sal$hash:additional_fields…

Ang simbolo $ Paghiwalayin ang iba't ibang bahagi. Ang unang bahagi pagkatapos ng username ay nagpapahiwatig ng uri ng algorithm ginamit. Halimbawa, $ 1 $ karaniwang kumakatawan sa MD5, $ 5 $ SHA-256 at $ 6 $ SHA-512, na siyang pinakakaraniwang algorithm sa mga modernong distribusyon dahil nag-aalok ito ng higit na seguridad kaysa sa mga mas lumang scheme batay sa DES o MD5.

Pagkatapos lumitaw ang algorithm identifier ang asinat pagkatapos ay ang nagreresultang hashAng lahat ng ito ay nasa loob ng parehong larangan. Kapag na-validate ang isang password, binabasa ng system ang identifier na iyon, ang asin, inilalapat ang algorithm na naaayon sa ipinasok na password, at ikinukumpara ang nakalkulang hash sa nakaimbak.

Kung gusto mong mabilis na suriin kung sinong mga user ang may naka-encrypt na password at kung anong algorithm ang ginagamit, maaari kang gumamit ng command tulad ng grep '\$' /etc/shadowSa kontekstong ito, ang dollar sign ($) ay ginagamit upang mahanap ang mga linyang may mga hash sa modernong format. Ang simbolo ay dapat na nakatakas sa isang backslash dahil sa mga regular na expression ito ay nagpapahiwatig ng "katapusan ng linya".

Ang mga account na walang password o mga naka-lock na account ay karaniwang nagpapakita ng halagang tulad nito sa field na iyon. ! o * sa halip na isang hash na may mga dolyar, na nagpapahiwatig na hindi ito mapatotohanan gamit ang isang karaniwang password. Ang istrukturang ito ay gumagawa ng isang bagay na malinaw: Isinasama ng Linux ang pag-aasin sa format nito na imbakan mga password katutubo

Pagkakaiba sa pagitan ng password hashing at salting

Mahalagang malinaw na makilala ang dalawang konsepto na kung minsan ay pinaghalo: hashing y pag-aasinAng pag-hash ng password ay ang proseso kung saan ang isang password ay binago sa isang hindi nakikilalang halaga gamit ang isang one-way na algorithm. Hindi kailanman kailangang malaman ng server ang orihinal na password, para lang ma-verify na alam ng user ang tamang password dahil gumagawa ito ng parehong hash.

  Ano ang WINUX: Linux na may libreng kaluluwa at ang hitsura at pakiramdam ng Windows

Ang problema ay kung ang dalawang password ay magkapareho, ang Magiging magkapareho din ang unsalted na hashNagbibigay-daan ito sa isang umaatake na maghambing at magpangkat ng mga user sa pamamagitan ng password o gumamit ng mga paunang nakalkulang talahanayan. Higit pa rito, kung ang hash algorithm ay mabilis at idinisenyo para sa integridad ng data (tulad ng simpleng SHA-256), nagiging mas mahina ito sa napakalaking brute-force na pag-atake.

Ang pag-aasin ay tiyak na pumapasok upang malutas ang kahinaan na iyon: ito ay tungkol sa magdagdag ng random na data sa password bago ito i-hash. Ang resulta ay kahit na piliin ng dalawang user ang “casa” bilang kanilang password, ang mga hash sa database ay magiging ganap na naiiba, dahil ang isa ay magkakaroon, halimbawa, “casa+7Ko#” at ang isa pang “casa8p?M” bilang pre-hash string.

Kaya, ang hashing at salting ay hindi nakikipagkumpitensya, ngunit sa halip ay umakma sa isa't isa. Ang Hashing ay nagbibigay ng unidirectionality property at kadalian ng pag-verify; ang asin ay nagbibigay pagiging natatangi at katatagan laban sa malalaking pag-atakeAng isang secure na pagpapatupad ng pag-imbak ng password ay pinagsasama ang parehong mga diskarte, perpektong gumagamit ng isang algorithm na idinisenyo para sa layuning ito, na may na-configure na gastos.

Gamit ang asin sa Linux na may mkpasswd

Sa mga kapaligiran ng GNU/Linux at iba pang mga system UnixAng isang napakapraktikal na paraan upang mag-eksperimento sa pag-aasin ay ang tool mkpasswdAng utos na ito ay ginagamit upang bumuo naka-encrypt na mga password ligtas, at karaniwang isinama sa mga proseso ng paglikha ng user, mga script ng administrasyon, atbp.

Ang pangunahing syntax ng mkpasswd ay nagbibigay-daan sa iyo na tukuyin ang password na ie-encrypt at isang serye ng mga opsyon tulad ng uri ng algorithm (halimbawa, des, md5, sha-256, sha-512) gamit ang opsyon -mSa modernong mga sistema, ang makatwirang gawin ay mag-opt for SHA-512 sa pinakamababa, o sa pamamagitan ng mas mahusay na mga scheme kung sinusuportahan sila ng pamamahagi.

Ang partikular na kawili-wiling opsyon sa konteksto ng pag-aasin ay -S, na nagpapahintulot magdagdag ng asin sa password bago ito i-encrypt. Kung hindi manu-manong tinukoy, ang mkpasswd ay maaaring makabuo ng a random na asin sa bawat pagpapatupadupang kahit na gamit ang parehong password sa pag-login, ang resultang hash ay iba sa bawat oras.

Madali itong ma-verify: kung ilang beses mong i-encrypt ang "password123" gamit ang mkpasswd, gamit ang SHA-512 at isang random na asin, makakakuha ka ng ganap na magkakaibang mga hash. Gayunpaman, kung ipapasa mo ang parehong halaga ng asin gamit ang -S, palaging magiging magkapareho ang hash, dahil hindi nagbabago ang kumbinasyon ng password + asin.

Salamat sa tool na ito, napakadali nito Maghanda ng mga password na naka-encrypt na may asin upang idagdag sa mga configuration file, manu-manong pamahalaan ang mga user, o subukan ang pag-uugali ng pag-aasin nang hindi kinakailangang magprograma ng anuman.

Ano ang digital hygiene?
Kaugnay na artikulo:
Digital hygiene: kaligtasan, kagalingan at kaayusan sa iyong online na buhay