
Zašto o kriptografiji? Ja osobno imam prilično površno znanje o tome. Da, čitao sam klasik , ali jako davno; da, razumijem razliku između simetrične i asimetrične enkripcije, razumijem što su eliptične krivulje, ali to je to. Štoviše, postojeće kriptografske biblioteke, sa njihovom simpatičnom navikom da uključuju potpuno ime algoritma u naziv svake funkcije i hrpom izloženih inicijalizatora, izazivaju kod mene kao programista strašan frustraciju.
Zašto? Vjerojatno zato što prilikom čitanja današnjeg vala publikacija o zaštiti podataka, povjerljivim informacijama itd., imam osjećaj da kopamo na pogrešnom mjestu, ili preciznije, pokušavamo tehničkim sredstvima (kriptografijom) riješiti suštinski društvene probleme. O tome ćemo razgovarati, ne obećavam monumentalna otkrića niti konkretne prijedloge, prazne misli su to i jesu prazne.
Malo povijesti, samo kapljica
Godine 1976. u SAD-u je usvojen savezni standard za simetrične algoritme enkripcije — DES. To je bio prvi javni i standardizirani kriptografski algoritam, stvoren kao odgovor na rastuće zahtjeve poslovanja za zaštitom podataka.
Brkati kuriozitet
Algoritam je objavljen greškom. Bio je optimiziran za hardversku implementaciju i smatran je previše složenim i neefikasnim za softversku. Međutim, Mooreov zakon brzo je sve stavio na svoje mjesto.
Činilo bi se — kraj priče, uzmi, šifriraj, dešifriraš, po potrebi povećaj dužinu ključa. Možda točno znate da su Amerikanci ostavili u njemu ležišta, tada za vas postoji ruska analogija — , kojoj, međutim, vjerojatno vjerujete još manje. U tom slučaju koristite oba, jedno preko drugog. Ako vjerujete da su FBI i FSB zbog vas surađivali i razmijenili svoja ležišta, onda imam dobre vijesti za vas — niste paranoidni, imate banalnu maniju veličine.
Kako radi simetrična enkripcija? Oba sudionika poznaju isti ključ, odnosno lozinku, i ono što su im šifrirali mogu dešifrirati. Ova shema savršeno funkcionira za špijune, ali nije pogodna za moderni internet, jer ovaj ključ treba unaprijed prenijeti svakom od sudionika. Neko vrijeme, dok su svoje podatke štitile relativno malobrojne tvrtke u komunikaciji s unaprijed poznatim partnerom, problem se rješavao putem kurira i zaštićene pošte, ali tada je internet postao masovan i na scenu je stupio
Asimetrična kriptografija
gdje sudjeluju dva ključa: javna, koja se ne drži u tajnosti i daje svakome tko želi; i privatna, koju zna samo njezin vlasnik. Ono što je šifrirano javnim ključem, može se dešifrirati samo privatnim, i obrnuto. Tako, svatko može saznati javni ključ adresata i poslati mu poruku, koju će pročitati samo adresat. Činilo bi se da je problem riješen?
Ali internet ne funkcionira tako, problem se postavlja u punoj veličini autenticiranja i, posebno, početnog autenticiranja, a također se, u nekome smislu, pojavljuje suprotni problem anonimnosti. Ukratko, kako mogu biti siguran da je onaj s kim razgovaram, doista onaj s kim sam planirao razgovarati? i da javni ključ koji koristim, doista pripada onome s kim sam namjeravao razgovarati? Pogotovo, ako se s njim uopće prvi put čujem? I kako uvjeriti partnera u povjerenje, a da pritom zadržim anonimnost? Već ovdje, ako se bolje zagledamo, možemo primijetiti unutarnju proturječnost.
Razmotrimo ukratko koje sheme interakcije između sudionika postoje i primjenjuju se u praksi:
- poslužitelj — poslužitelj (ili poslovanje — poslovanje, u ovom kontekstu je to isto): to je najjednostavnija klasična shema, za koju je sasvim dovoljna simetrična kriptografija, sudionici znaju sve jedni o drugima, uključujući vanmrežne kontakte. Međutim, obratite pažnju — ovdje se ni o kojoj anonimnosti ne može govoriti, a broj sudionika strogo je ograničen na dvoje. To jest, to je gotovo idealna shema za vrlo ograničen broj komunikacija i općenito slabo primjenjiva.
- server — anonimni (ili biznis — klijent): ovdje postoji određena asimetrija koja se uspješno rješava asimetričnom kriptografijom. Ključna točka ovdje je nedostatak autentikacije klijenata; serveru nije bitno s kim točno razmjenjuje podatke; ako bude potrebna, server provodi sekundarnu autentikaciju pomoću unaprijed dogovorenog lozinke, a tada se sve svodi na prethodni slučaj. S druge strane, klijentu je izuzetno važno da se autentificira server, želi biti siguran da njegovi podaci idu upravo onome kome ih šalje; ova strana temelji se na sustavu certifikata u praksi. U općem smislu, takva shema je dovoljno udobno i transparentno pokrivena https:// protokolom, međutim, javljaju se neka zanimljiva pitanja na sjecištu kriptografije i sociologije.
- povjerenje u server: čak i ako sam prenio određene informacije na server apsolutno sigurnim putem, tehnički, njima imaju pristup stranci. Ovaj problem potpuno je izvan odgovornosti šifriranja, ali molim vas zapamtite ovaj trenutak, on će se kasnije ponovo pojaviti.
- povjerenje u certifikat servera: hijerarhija certifikata temelji se na tome da postoji neki korijenski certifikat kojemu se može dati apsolutno povjerenje. Tehnički, dovoljno utjecajan napadač [, molim vas smatrati riječ napadač tehničkim pojmom, a ne klevetom ili uvredom postojeće vlasti] može zamijeniti certifikat bilo kojeg nižeg nivoa, međutim pretpostavlja se da certificiranje koristi svima ravnomjerno, tj. ovaj certifikator će odmah biti podvrgnut osudi i svi njegovi certifikati će biti opozvani. Tako stoji, ali ipak primijetite da je sustav temeljen ne na tehničkim sredstvima, već na nekom društvenom ugovoru. Usput, o vrućemU okviru očekivanog kraja svijeta okupacije Runeta, je li netko analizirao moguće okupljanje ruskog korijenskog certifikata i njegove posljedice? Ako je netko čitao/pisao o ovoj temi, pošaljite linkove, umetnut ću ih, mislim da je tema zanimljiva.
- Kanalna deanonimizacija na serveru: također bolna tema, čak i ako server nema formalnu registraciju/ovjeru, postoji mnogo načina da se prikupi informacija o klijentu i na kraju ga identificira. Čini mi se da je korijen problema u postojećem http:// protokolu i sličnim, koji nisu mogli predvidjeti ovakvo ponašanje; potpuno je moguće stvoriti paralelni protokol bez tih propusta. Međutim, to bi išlo protiv svih postojećih praksi monetizacije i stoga je malo vjerojatno. I dalje je zanimljivo, je li netko probao?
- anoniman — anoniman: dvoje se susreće na mreži, (alternativa — tek su se sreli), (alternativa — ne dvoje nego dvoje tisuća), i žele razgovarati o svom, ali tako da Veliki brat ne čuje (alternativa — mama ne sazna, svatko ima svoje prioritete). Možda čujete ironiju u mom glasu, pa tako i jest. Primijenimo na zadatak Schneiderov postulata (bilo koji algoritam može biti provaljen, ako se uloži dovoljno resursa, tj. novca i vremena). S te točke gledišta, prodiranje u takvu grupu društvenim metodama nije problem, ne govorim o novcu, tj. kriptografska otpornost algoritma nulta s najsofisticiranijim metodama šifriranja.
Međutim, u ovom slučaju imamo drugi bastion — anonimnost, i na nju polažemo sve naše nade, neka svi znaju za nas, ali ne može nas nitko pronaći. Međutim, s najsuvremenijim tehničkim metodama zaštite, ozbiljno mislite da imate šanse? Podsjećam, trenutno govorim samo o anonymizaciji, s zaštitom podataka čini se da smo već uvjerljivo završili. Dogovorimo se za određeno, ako je vaše ime ili kućna adresa ili ip-adresa, misija je potpuno propala.
Usput o ip-u, ovdje izbijaju spomenuto povjerenje u server, on bez sumnje zna vaš IP. A protiv vas igra sve — od obične ljudske radoznalosti i taštine do korporativnih politika i iste monetizacije. Samo imajte na umu, VPS i VPN su takođe serveri, teoretičarima kriptografije ovi akronimi nisu baš važni; a ni jurisdikcija servera ne igra značajnu ulogu u hitnim slučajevima. Tu spada i end-to-end enkripcija — zvuči lepo i ozbiljno, ali serveru se ionako mora verovati.
Koja je uopšte uloga servera u takvom messengeru? Prvo, trivijalno, kao poštar; ako primaoć nije kod kuće, jednostavno se vraća kasnije. Ali, što je mnogo važnije, to je tačka sastanka; ne možete poslati pismo direktno adresatu, šaljete ga serveru za dalju isporuku. A najvažnije je da server obavlja neophodnu autentifikaciju, potvrđujući svima da ste to vi, a za vas — da je vaš sagovornik zaista onaj koji vam treba. I to čini koristeći vaš telefon.
Zar vam se ne čini da vaš messenger zna previše o vama? Ne, ne, mi mu, naravno, verujemo (a i svom telefonu, hm), ali kriptografi tvrde da je to uzalud, da ne treba verovati nikome.
Niste uvereni? A tu je i socijalni inženjering; ako imate stotinu sagovornika u grupi, jednostavno morate pretpostaviti da je 50% njih — neprijatelji, 49% — ili tašti, ili glupi, ili jednostavno nepažljivi. A preostalih jedan procenat, koliko god snažni bili u zaštiti informacija, verovatno nećete izdržati protiv dobrog psihologa u četu.
Jedina čini se zaštitna strategija — sakriti se među milionima sličnih grupa, ali to već nije o nama, to je ponovo o nekim špijunima-teroristima, kojima ni mrešna slava, ni monetizacija nisu od značaja.
Pa evo, čini mi se da sam donekle opravdao (ne, ne dokazao, samo opravdao) svoje stroge misli o zaštiti podataka u suvremenom modelu društva. Zaključci su jednostavni, ali tužni — ne bismo trebali očekivati pomoć od enkripcije podataka više nego što već imamo, kriptografija je učinila sve što je mogla, i to prilično dobro, ali naš model interneta potpuno suprotstavlja našu težnju za privatnošću i poništava sve naše napore. Uistinu nisam pesimist i veoma bih volio reći nešto svijetlo, ali jednostavno ne znam šta.
Pokušajte zaviriti u sljedeći odjeljak, ali upozoravam — tamo su posve roza neznanstvene fantazije, no možda će nekoga ohrabriti, a nekoga barem nasmijati.
Može li se ikako nešto učiniti?
Pa, na primjer, možemo razmišljati o ovoj temi, po mogućstvu oslobađajući um i odbacujući predrasude. Na primjer, hajde da na trenutak potpuno žrtvujemo anonimnost, koliko god strašno zvučalo. Neka svakome od rođenja dodijeli jedinstveni lični javni ključ, a naravno i odgovarajući privatni. Nemojte na mene vikati i gaziti nogama, u idealnom svijetu to je izuzetno praktično — tu su i putovnica, i OIB, i čak broj telefona u jednom paketu. Štoviše, ako tome dodamo individualni certifikat, dobijamo univerzalni autentifikator/login; a također — džepnog notara s mogućnošću ovjere bilo kojih dokumenata. Možemo napraviti sustav višerazinski — u općem pristupu samo javni ključ i certifikat, za prijatelje (lista ključeva priložena ovdje) možemo učiniti dostupnim telefon i što god se još prijateljima povjerava, mogu postojati još dublje razine, ali to već podrazumijeva nepotrebno povjerenje u server.
S ovakvim sustavom, privatnost prenesnih informacija automatski se postiže (iako s druge strane, zašto, u savršenom svijetu?), Alisa nešto piše Bobu, ali nitko to nikada ne može pročitati osim samog Boba. Svi messenger aplikacije automatski dobivaju end-to-end enkripciju, njihova uloga svodi se na poštanske sandučiće i ne može biti pritužbi na sadržaj. Čak i sami serveri postaju zamjenjivi, može se slati preko jednog, može preko drugog, ili čak kroz lanac servera, poput e-maila. Također, može se direktno poslati adresatu ako je poznata njegova IP adresa, bez ikakvih posrednika. Nije li to sjajno? Šteta samo, živjeti u ovo divno doba neće nam biti suđeno — ni meni, ni tebi© Hmmm, opet govorim o tužnom.
Gdje onda sve to pohraniti? Pa, u načelu, treba napraviti otvoren hijerarhijski sustav, nešto poput današnjeg DNS-a, samo moćnijeg i razgranatijeg. Da se ne opterećuju administratori korijenskih DNS-a dodavanjima i modifikacijama, moglo bi se omogućiti slobodnu registraciju, jedina potrebna provjera bi bila na jedinstvenost. Tipično >> " Dobar dan, nas je pet, obitelj Ivanov. Evo naših imena/nickova, evo javnih ključeva. Tko pita — pošaljite molim vas k nama. I još evo, lista sto pet stotina baka iz naše četvrti s njihovim ključevima, ako ih budu tražili, također pošaljite k nama.«
Samo treba učiniti instalaciju i konfiguraciju takvog kućnog servera izuzetno jednostavnom i praktičnom, kako bi se svatko mogao snaći ako želi, opet, nitko neće nepotrebno opterećivati razne službene državne servere.
Stop!, a kakve veze država ima s tim?
A sada možemo pomalo obnoviti anonimnost. Ako bilo tko može generirati svoj osobni ključ, potvrditi ga individualnim certifikatom i postaviti CA poslužitelj nižeg nivoa, ili tražiti od susjeda, ili ga postaviti na neki javni poslužitelj, koja je svrha svih tih formalnosti? A ni vezivanje za stvarnu osobu zapravo nije potrebno, potpuna privatnost, sigurnost i anonimnost su mogući. Dovoljno je da na vrhu hijerarhije bude netko tko zaslužuje povjerenje, vjerujemo u TM ili Let's Encrypt, a poznati javni DNS-ovi do sada nisu nikoga otpustili u divljinu. S obzirom na administraciju, čini se da niti ne bi trebalo biti pritužbi, čisto da, naravno, bit će pritužbi, ali zbog čega zapravo?
Možda će jednog dana takav sustav, ili nešto slično, biti stvoren. I naravno, ne možemo se pouzdati ni u koga osim u sebe, nijedna od država koje poznajem neće graditi takav sustav. Na sreću, već postoje Telegram, i2p, Tor, i sigurno sam nekoga još zaboravio, pokazujući da ništa principijelno nemoguće ne postoji. Ovo je naša mreža, i trebamo je uređivati ako nam trenutna situacija ne odgovara.
Brrr, slučajno sam završio na patetičnoj noti. U stvari, ne volim to, bliže mi je sarkazam.
PS: ovo su očito ružičaste snove i djevojačke maštarije
PPS: ali ako netko odluči probati – rezervirajte za mene nadimak molim, navikao sam na njega
PPPS: a implementacija se čini prilično jednostavnom, usput
Izvor: habr.com
