211service.com
Pirkstu nospiedumu noņemšana jūsu failiem
Trīs Stenfordas universitātes kriptogrāfi nesen nāca klajā ar gudru risinājumu pastāvīgajai identitātes zādzības problēmai internetā. Viltīgi hakeri Krievijā, Ķīnā un citās valstīs izsūta kaudzes e-pasta ziņojumu, kas izskatās kā nākuši no kādas finanšu iestādes, piemēram, Citibank vai Paypal. Miljoniem patērētāju saņem šos ziņojumus, kuros ir iegultas HTML saites, kas aizved nenojaušot adresātu uz līdzīgām vietnēm, kas darbojas tālās vietās. Jums tiek piedāvāts ievadīt lietotājvārdu un paroli, un pēc tam hakeram ir jūsu bankas konta atslēgas.
Taču labi lietotājvārdi un paroles, kas ierakstītas sliktās vietnēs, nav vienīgais šāds apdraudējums, ar ko saskaras patērētāji. Potenciāli lielāka problēma ir tā, ka daudzi cilvēki izmanto vienu un to pašu lietotājvārda un paroles kombināciju vairākās vietnēs. Tas atvieglo iegaumēšanu, taču tas nozīmē, ka negodīgs vietnes operators var paņemt lietotājvārdu un paroļu sarakstu no, piemēram, interneta totalizatoru vietnes un izmantot to, lai mēģinātu uzlauzt tiešsaistes bankas kontus.
Tāpēc Stenfordas kriptogrāfi Bleiks Ross, Dens Bonehs un Džons Mičels ir izstrādājuši gudru spraudni pārlūkprogrammai Internet Explorer, kas atrisina šo problēmu, kodējot to, ko jūs ierakstāt paroles laukā, lai katra vietne redzētu citu paroles paroli, kas ir atkarīga gan no jūsu ievadītās. un pašas vietnes domēnā.
Tagad daudzi cilvēki izmanto kādu šīs stratēģijas variantu. Viņu Hotmail parole var būt nosmis-hotmail, kamēr viņu Yahoo! Personals parole ir nosmis-Yahoo! Bet jebkura šāda stratēģija ir diezgan vienkārši atšifrējama. Stenfordas trijotnes izstrādātā paroļu kodēšanas metode ir balstīta uz matemātisko funkciju, ko sauc par kriptogrāfijas hasha veida vienvirziena funkciju, kas lietotāja ievadīto pārveido ciparu un burtu sajaukumā tādā veidā, ko nevar apgriezt. Tā kā Stenfordas sistēma aprēķina gan vietņu domēna, gan lietotāju paroles kriptogrāfisko jaucējkodu, hakeris iegūst dažādas paroles nekā likumīgās. (Klikšķis šeit lai atrastu sīkāku informāciju par šo gudro risinājumu.)
Viens uzņēmums, kas ļoti publiski izmanto kriptogrāfijas jaucējus, ir Yahoo! Pagājušajā gadā Yahoo! pārveidoja pieteikšanās procesu savā vietnē, lai padarītu to drošu. Standarta veids, kā to izdarīt, ir izmantot šifrēšanu. Bet šifrēšana var būt lēna, jo īpaši, ja izmantojat vienu no populārākajām vietnēm internetā.
Tātad, ko Yahoo! Tā vietā tika pārveidota pieteikšanās lapa, lai izmantotu tā saukto izaicinājumu-atbildes sistēmu, kuras pamatā ir kriptogrāfiska jaucējfunkcija. Kad jūs mēģināt pieteikties, Yahoo!s serveris lejupielādē jūsu pārlūkprogrammā kriptogrāfisku jaucējfunkciju, kas rakstīta JavaScript. Kopā ar šo funkciju ir izaicinājums īsai burtu un ciparu secībai. Ievadot paroli pieteikšanās ekrānā, jūsu pārlūkprogramma paņem jūsu paroli, pievieno šīs Yahoo! nodrošinātās rakstzīmes un aprēķina iegūtās virknes kriptogrāfisko jaucējkodu. Pēc tam pārlūkprogramma nosūta iegūto vērtību atpakaļ Yahoo!, šifrēšana nav nepieciešama. Pat ja atrodaties kiberkafejnīcā, kur Beļģijas hakeri izsmeļ jūsu tīmekļa trafiku, ļaundari nevarēs izmantot iegūto jaucējvērtību un iegūt jūsu sākotnējo paroli.
Šī gudrā izaicinājumu-reaģēšanas sistēma ir arī Mobil Speedpass sistēmas pamatā: tas padara Speedpass radiofrekvences identifikācijas (RFID) tagu tik grūti klonējamu. Citas RFID sistēmas neizmanto izaicinājumu-reakciju, kas ļauj tām uzbrukt salīdzinoši viegli.
Bet kāda ir šī kriptogrāfijas jaucējfunkcija?
Neticami noderīgs hash
Kriptogrāfiskās jaucējfunkcijas ir viens no mūsdienu digitālās ekonomikas pamatelementiem. Tomēr tie daudzējādā ziņā paliek noslēpums gan kriptogrāfiem, kas tos veido, gan plašai sabiedrībai, kas tos izmanto katru dienu.
Jaucējfunkcijas dažreiz sauc par pirkstu nospiedumu funkcijām, jo tās var izmantot, lai izveidotu unikālu digitālā faila pirkstu nospiedumu. Pirkstu nospiedumi parasti ir 128 bitu vai 160 bitu skaitļi, kas tiek parādīti kā heksadecimālo ciparu secība. Piemēram, mana vārda pirkstu nospiedums, izmantojot MD5 sistēmu, ir c55bbe0f3ba258f5b1cb6d5b62b0b360. Jaucējfunkcijas ir izstrādātas tā, lai vismaz teorētiski divi faili nekad nesajauktu vienādu vērtību.
Lai jūs varētu gūt priekšstatu par šo pirkstu nospiedumu noņemšanas funkciju darbību, tālāk esam ieguluši uz JavaScript balstītu MD5 kalkulatoru. Vienkārši ierakstiet tekstu, un jūs redzēsit MD5 hash. Ievērojiet, kā tas pilnībā mainās katru reizi, kad pievienojat, noņemat vai maināt burtu. Pirkstu nospiedumu maiņas veids patiešām ir neparedzams, ja mēs varētu paredzēt, kā tas mainās, tad failu pirkstu nospiedumi nebūtu īpaši noderīgi.
Ievadiet savu tekstu zemāk:MD5 ir:
Lielākā daļa mūsdienās izmantoto jaucējfunkciju ir balstītas uz tehniku, ko 80. gados izstrādāja MIT profesors Rons Rivests. (Rivest, iespējams, vislabāk pazīstams kā RSA šifrēšanas algoritmā — publiskās atslēgas šifrēšanas algoritmā, kas ir iebūvēts praktiski katrā tīmekļa pārlūkprogrammā.) Tajā laikā Rivests un citi matemātiķi izstrādāja detalizētu informāciju par mūsu veiktajām kriptogrāfijas pamatoperācijām. tagad uztver kā pašsaprotamu. Jaucējfunkcijas tika uzskatītas par sava veida kriptogrāfijas saspiešanas sistēmu, kas ir veids, kā iegūt lielu failu un saspiest to līdz īsai burtu un ciparu virknei.
Ideja bija izmantot šos pirkstu nospiedumus kā sava veida surogātu pašiem failiem. Tā vietā, lai digitāli parakstītu visu failu, Rivest un citi domāja, jūs varētu digitāli parakstīt jaucējkodu. Tā kā publiskās atslēgas kriptogrāfija ir saistīta ar daudz smagas matemātikas, jaucējfunkcijas ļauj gandrīz tikpat ātri parakstīt īpaši garu failu, kā parakstīt īsu failu.
Viena no visvienkāršākajām lietām, ko varat darīt ar jaucējfunkciju, ir noskaidrot, vai fails ir mainījies: vienkārši aprēķiniet faila jaucējvērtību un pierakstiet to. Vēlāk jūs vēlreiz aprēķiniet jaucējkodu. Ja hash nav mainījies, tad iespēja, ka fails arī nav mainījies, ir milzīga.
Piemēram, sakiet, ka glabājat sava mazā uzņēmuma finanses, izmantojot QuickBooks, un vēlaties doties atvaļinājumā uz dažām dienām: cilvēkiem ir jāizmanto jūsu dators, bet jūs vēlaties pārliecināties, ka neviens nemaina QuickBooks datus. Viena vienkārša lieta, ko varat darīt, ir pirms aiziešanas aprēķināt faila kriptogrāfisko jaucējkodu un ierakstīt numuru rādītāja kartītē. Kad atgriezīsities no atvaļinājuma, vienkārši pārrēķiniet jaucējkodu. Ja abas vērtības nesakrīt, jūs zināt, ka fails ir bojāts.
Protams, jums nav jāapstājas tikai ar vienu failu. Jūs varētu aprēķināt katra faila kriptogrāfisko jaukšanu savā datorā un ievietot tos jaunā faila izsaukumā ar failu hashes.txt. Pēc tam varat aprēķināt faila hashes.txt jaukto vērtību un ierakstīt šo pirkstu nospiedumu savā piezīmju kartītē. Atkārtojiet šo procesu, kad atgriezīsities no atvaļinājuma, un varēsit ātri uzzināt, vai kāds fails visā datorā ir mainījies. (Jūs nevarēsit uzzināt, kurš fails ir mainījies, taču tā ir cita problēma.)
Šī ideja par jaucējvērtības aprēķināšanu ir pamats ielaušanās atklāšanas sistēmai Tripwire, kuru 90. gadu sākumā izgudroja Purdjū universitātes datorzinātņu profesors Džīns Spafords un viņa absolvents Džīns Kims. (Mēs ar Spafordu esam līdzautori piecām grāmatām par datorzinātnēm.) Mūsdienās daudzas dažādas programmas izmanto šo Tripwire pieeju, lai nodrošinātu datora failu un datu bāzu integritāti.
Jaucēju jaucējkodu aprēķināšana ir arī pamats drošam laikspiedolu pakalpojumam, ko izgudroja Stjuarts Hābers un Skots Stornetta, kamēr viņi abi atradās Bellcore 1990. gadā. Pakalpojums, ko sauc par Surety, ļauj ģenerēt kriptogrāfiski drošu un nesagrozāmu pierādījumu, ka konkrētais dokuments , fotogrāfija vai cits fails pastāvēja noteiktā laikā un noteiktā datumā un kopš tā laika tas nav mainīts.
Galvojuma paņēmiens darbojas, aprēķina jaucējkoku, pamatojoties uz katra dokumenta jaucējkodiem, kam ir laika zīmogs. Pēc tam koka sakne tiek publicēta labi zināmā vietā, to varētu, piemēram, iespiest klasificētā sludinājumā Ņujorkas Laiks . Varat pierādīt, ka jūsu dokuments pastāvēja attiecīgajā dienā, parādot, ka jūsu dokumenta ciparnīca bija nepieciešama, lai ģenerētu avīzē parādīto pirkstu nospiedumu nospiedumu.
Kopš tā laika citi uzņēmumi un pat ASV pasta dienests ir izveidojuši savu elektronisko laika zīmogu pakalpojumu. Taču visas šīs sistēmas ir atkarīgas no organizācijas, kas darbojas kā uzticama trešā puse, kas faktiski paraksta jūsu dokumentu, izmantojot savu privāto atslēgu. Šīs pieejas problēma ir tāda, ka trešajai pusei ir jābūt pilnībā uzticamai: ja šī trešā puse nolemj izveidot parakstu ar nepareizu datumu vai kādam hakeram izdodas nozagt trešās puses privāto atslēgu, nav iespējas atšķirt krāpniecisku parakstu no derīga. Protams, ir iespējams izveidot arī krāpnieciskus galvojuma parakstus, taču jums būs vai nu jāatgriežas pagātnē un jāmaina tas, kas tika izdrukāts Ņujorkas Laiks , vai arī ceļojiet pa visu pasauli, atrodiet katru izdrukāto eksemplāru un nomainiet vecos pirkstu nospiedumus uz jauno.
Kā darbojas jaucējfunkcijas
Tāpēc jaucējfunkcijas ir noderīgas. Tagad redzēsim, kā viņi patiesībā izskatās.
Starp mūsdienās visplašāk izmantotajām jaucējfunkcijām ir tā sauktā MD5 (Ziņojuma apkopojumam #5). MD5 rada 128 bitus garu jaucēju, ko parasti raksta kā 32 heksadecimālo (16 bāzes) ciparu secību. Ja jūs ņemtu manu vārdu un apstrādātu to ar MD5, jūs iegūtu šo šķietami nejaušo virkni:
c55bbe0f3ba258f5b1cb6d5b62b0b360
Vai arī izteikt to ar matemātiskāku formalitāti:
MD5 (Simsons Garfinkels)= c55bbe0f3ba258f5b1cb6d5b62b0b360
Katra no šīm heksadecimālajām rakstzīmēm apzīmē 4 bitus; mana vārda MD5 vērtība patiesībā ir:
1100010101011011101111100000111100111011101
0001001011000111101011011000111001011011011
010101101101100010101100001011001101100000
Lielākā daļa cilvēku strādā ar heksadecimālo attēlojumu, jo ir diezgan viegli aplūkot divas jaucējzīmes un noteikt, vai tās ir vienādas vai atšķirīgas.
MD5 darbojas, sadalot failu daudzos mazos gabaliņos un pēc tam paņemot katru no šiem gabaliem un veicot simtiem matemātisko darbību, kas sajauc, apgriež, transponē un citādi apstrādā bitus neatpazīstamā haosā. Galvenais šajā aprakstā ir vārds neatpazīstams. Labas jaukšanas funkcijas pamatprasība ir tāda, ka nav iespējams paredzēt faila pirkstu nospiedumu, faktiski necenšoties aprēķināt pirkstu nospiedumu, nedrīkst būt īsceļi. Ja būtu, iespējams, varētu palaist jaucējfunkciju atpakaļgaitā un izveidot failu, kuram bija konkrēts jaucējvārds, piemēram, cita faila jaucējvārds. Patiešām, visa jaucējfunkciju drošība pilnībā sabrūk, ja ir iespējams ģenerēt divus failus ar vienādu jaucējfunkciju.
Jaucējfunkcijas skaistums ir tāds, ka pat neliela ievades modifikācija rada dramatiskas izmaiņas izvadē. Matemātiski funkcijas ir izstrādātas tā, lai katram izvades bitam būtu 50 procentu iespēja mainīties katram ieejā mainītajam bitam.
Apskatīsim citu MD5 hash, šis ir nedaudz atšķirīgs mana vārda attēlojums:
MD5 (Simson L. Garfinkel)= df876e8e6f548d5be698fab7f06dd278
Vienkārši pievienojot L., tiek iegūts pavisam cits hash. Ja salīdzināsiet abus jaucējus pa bitiem, jūs atklāsiet, ka 63 no 128 pozīcijām ir mainījušās no 0 uz 1 vai 1 pret 0, bet pārējās 65 ir palikušas nemainīgas.
Diemžēl visai kriptogrāfijas jaucējfunkciju teorijai ir milzīga problēma. Šo funkciju izmantošana prasa, lai nebūtu tā saukto sadursmju. Nejauši vai ar nolūku nedrīkst būt divi faili, kuriem ir vienāds kriptogrāfiskais pirkstu nospiedums. Un, kā izrādās, tā ir neiespējama prasība.
Iemesls ir diezgan vienkāršs. Failu pirkstu nospiedumiem ir fiksēts izmērs, kas nozīmē, ka ir ierobežots skaits iespējamo pirkstu nospiedumu. No otras puses, faili var būt jebkura izmēra. Tādējādi ir vairāk iespējamo failu nekā pirkstu nospiedumu, un tāpēc ir jābūt vismaz vienam pirksta nospiedumam, kas ir vairāku failu pirksta nospiedums. Matemātiskais termins tam ir baložu cauruma princips. Patiešām, pat ja aprobežojaties ar failiem, kuru garums ir tikai deviņas rakstzīmes, iespējamo failu skaits joprojām ir 256 reizes lielāks par iespējamo pirkstu nospiedumu skaitu.
Iemesls, kāpēc baložu cauruma princips nepadara jaucējfunkcijas pilnīgi bezjēdzīgas, ir tas, ka ir pārsteidzoši daudz iespējamo pirkstu nospiedumu, kas patiesībā ir daudz vairāk nekā failu skaits uz planētas. (Ar MD5 ir iespējami 2128 pirkstu nospiedumi. Tagad kopējais datoru cieto disku skaits, kas jebkad ir ražoti, ir tikai aptuveni 229. Ja katrā cietajā diskā būtu miljons unikālu failu, tad būtu tikai 249 atsevišķi faili. Tas ir daudz. , daudz, daudz mazāks skaitlis nekā 2128.)
SHA-1 strīds
Apmācības nolūkos esmu izmantojis MD5 jaucējfunkciju. Bet šajās dienās tiek uzskatīts MD5 caurlaide tā vietā lielākā daļa pasaules pāriet uz ASV valdību Secure Hash Algorithm, kas pazīstams kā SHA-1, standarts, ko 90. gadu sākumā pieņēma Nacionālie standartu un tehnoloģiju institūti (NIST).
Mūsdienās SHA-1 ir plaši cienīts algoritms, taču tam ir nemierīga vēsture. Jau 1993. gadā ASV valdība mēģināja panākt, lai nozare pieņemtu tā saukto Clipper Chipa slepeno šifrēšanas sistēmu, ko izstrādājusi Nacionālās drošības aģentūra. Tā saukto kriptokaru laikā, kas plosījās ap Clipper, NIST ierosināja, lai ASV valdība pieņemtu savu Secure Hash algoritmu kā daļu no federālajiem informācijas apstrādes standartiem. Tehnisku iemeslu dēļ jaucējfunkcijām vajadzētu būt divreiz vairāk bitu nekā šifrēšanas algoritmiem, ar kuriem tās darbojas. Clipper bija 80 bitu šifrēšanas algoritms, tāpēc standarts tika izstrādāts, lai iegūtu 160 bitu pirkstu nospiedumu.
Varētu domāt, ka valdības standarts ar 160 bitu pirkstu nospiedumu būtu drošāks nekā 128 bitu MD5. Taču, tāpat kā pašu Clipper, SHA izstrādāja Nacionālā drošības aģentūra, un gan NIST, gan NSA atteicās izskaidrot principus, kas tika izmantoti tā izstrādē. Daži cilvēki domāja, vai NSA varētu būt paslēpusi kaut kādas aizmugures durvis algoritmā, lai aģentūra pēc pieprasījuma varētu radīt sadursmes. Šādas aizmugures durvis varētu izmantot, piemēram, lai izveidotu viltotus ciparparakstus kaut ko tādu, kas varētu būt noderīgs Centrālajai izlūkošanas pārvaldei. Viltots ciparparaksts var tikt izmantots, piemēram, lai parakstītu elektronisku rīkojumu, kas piešķir ASV spiegam piekļuvi datubāzei ārvalstī.
Daudzi kriptogrāfi un citi akadēmiķi analizēja SHA algoritmu un nevarēja atrast tajā neko nepareizu. 1993. gada 11. maijā NIST pasludināja SHA par nāciju Secure Hash Algorithm. Taču šajā dekrētā tinte tik tikko bija izžuvusi, kad NIST paziņoja, ka ir pieļāvusi kļūdu. Iemeslu dēļ, kas tajā laikā netika atklāti, NIST publicēja modificētu Secure Hash Algorithm algoritma versiju, ko mēs tagad saucam par SHA-1.
Sazvērestības teorētiķiem kriptogrāfijas aprindās (un tādu ir daudz) bija lauka diena. Vai SHA bija tik spēcīga, ka NSA bija nolēmusi, ka tā ir jānomāc? Vai arī NSA, iespējams, bija ierīkojusi sētas durvis SHA, un kāds no NIST to bija uzzinājis? Vai abi algoritmi bija vienlīdz droši, un NSA kriptogrāfi tikai jaucās ar cilvēku prātiem?
1998. gada augustā pasaule vairāk vai mazāk uzzināja atbildi uz SHA pret SHA-1 noslēpumu. Florāns Šabo un Antuāns Žū, divi franču kriptogrāfi, nāca klajā ar teorētisku uzbrukumu pret pirmo SHAan uzbrukuma versiju, pret kuru SHA-1 tikko bija drošs. Gandrīz noteikti NSA darbinieki zināja par šo uzbrukumu un ierosināja SHA-1 kā pretpasākumu. Interesanti ir tas, ka NSA kriptogrāfi, iespējams, nezināja par uzbrukumu, kad SHA pirmo reizi tika ierosināts 1993. gadā, kas nozīmē, ka pasaules labākā kriptogrāfijas aģentūra bija tikai piecus gadus priekšā kriptogrāfiem akadēmiskajās aprindās.
Mūsdienās jaucējfunkcijas parasti tiek izmantotas arī atkārtojamu, bet neparedzamu nejaušu skaitļu ģenerēšanai, lai pārveidotu ievadītās paroles vērtībās, kas piemērotas izmantošanai kā šifrēšanas atslēgas. Tā vietā, lai tieši glabātu paroles, daudzas datorsistēmas saglabā paroles jaucējkodu. Tas neļauj kādam, kas uzlauž datoru, uzzināt visu paroli.
Jaucējfunkcijas ir ierosinātas kā veids, kā cīnīties ar surogātpastu un kā pamats digitālajām kases sistēmām. Matemātiķis Pīters Veiners publicēja grāmatu ar nosaukumu Caurspīdīgas datu bāzes pirms dažiem gadiem, kurā viņš parādīja, kā jaucējfunkcijas var izmantot informācijas glabāšanai datu bāzē tādā veidā, ko aizsargā organizācija, kas vada datu bāzi. Piemēram, koledžas uzņemšanas nodaļa varētu glabāt studentu sociālās apdrošināšanas numurus datubāzē, lai šos numurus joprojām varētu izmantot kā identifikatorus pieteikumos, bet lai neviens uzņemšanas birojā nevarētu apsēsties pie termināļa un saņemt studentu sarakstu. un to numuri. Tomēr līdz šim neviena no šīm pieejām nav īsti sākusies.
Kopumā kriptogrāfijas jaukšana ir viens no interesantākajiem un noderīgākajiem matemātiskajiem paņēmieniem, ko kriptogrāfi ir radījuši pēdējo 20 gadu laikā un joprojām visu laiku atrada tiem jaunus lietojumus.