Bütyköltem

Néha mindenféle érdekes dolgokat rakok össze otthon, melyek egy része talán másokat is érdekelhet.

TIVEDA

  • Így előzd meg a büntetést!Ti megszoktátok már a VÉDA kapukat az utakon? Hogy jövet-menet figyelik mindent jól csináltok-e, nem telefonáltok, nem érintitek a záróvonalat, és azonnal megálltok, ha sárgára vált a jelzőlámpa? Hogy...
  • Így működik a TIVEDAMivel a TIVEDA-ban használt ESP8266 összesen 96Kbyte rammal rendelkezik, aminek nagy részét az alap rendszer elfoglalja, ezért az iGO-val vagy a Waze-el ellentétben nem volt lehetőségem arra, hogy...
  • Kijelzőt a TIVEDáraTegnap kaptam ezt a kis videót, ahol egyik olvasóm mutatja meg, hogy kis átalakítással akár egy OLED kijelző is ráköthető a TIVEDára, ami így már a pontos sebességet és időt is ki tudja jelezni. A...
  • TIVEDA firmware feltöltésElkészültem végre az ígért videóval a TIVEDA szoftver feltöltéséről. A Wemos D1 mini a CH340 meghajtót igényli. Ezt windowshoz itt találjuk meg, ha telepítettük, akkor csatlakoztatás után egy új COM...
  • TIVEDA beépítéseAmikor az elkészült TIVEDA-t szeretnénk fixen beszerelni egy járműbe, az első probléma, amit meg kell oldani, az az, hogy a jármű áramellátása általában 12 voltos (ritkábban 6), a mi vezérlőnk viszont...
  • Ti küldtétekAz elmúlt napokban egyre több visszajelzést kapok olyanoktól, akik a korábbi cikkem alapján megépítették saját TIVEDA készüléküket. Ezekből osztanék meg párat veletek, háthat lesznek olyanok, akik...

Friss topikok

  • Slinger Benjamin: @Fehér Tibor: Szia.Esetleg tudnal segiteni nekem, mivel te mar tobbet megepitettel sikeresen.Bov... (2018.08.08. 10:47) Így előzd meg a büntetést!
  • Mr. Big: @biela: szia, sajnos ez már elég régen volt, és már nem UPC területen vagyok, a médiaboxot is viss... (2018.06.27. 13:38) UPC médiabox használata MythTV-vel
  • t.aki: Sziasztok! Aki nagyon profi ennek a nagyon ötletes dolognak a programozásában,tudna nekem segíten... (2018.06.20. 12:10) Ti küldtétek
  • Kelepeisz Lajos: Sziasztok! Már én is lassan egy éve használom ezt a frankó kis eszközt, de most egyszer csak elha... (2018.02.25. 14:57) TIVEDA firmware feltöltés
  • BGuz: @zolidujv: Itt megtalálod: drive.google.com/drive/folders/0B0ST4AiJ-5SjYnFtNDF6bFhSQlE (A rajzon... (2018.02.03. 11:31) Kijelzőt a TIVEDára

Linkajánló

Okmányiroda, kormányablak időpontfoglalás térképen. Ha hivatali ügyet kell intézned, érdemes itt kezdened.

Ha kiváncsi vagy melyik izzót éri meg megvenni, akkor próbáld ki a másik oldalamat is!

Also check out my light cost calculator site!

Készítsünk saját titkosított chatet!

2016.04.02. 02:06 Mr. Big

Sok más informatikussal egyetemben én is elborzadva olvastam azokat az "ötleteket" ami szerint a kormány tiltaná azokat az alkalmazásokat melyek olyan titkosítást alkalmaznak, melyet a készítője nem tud feloldani. Azt, hogy ez miért borzalmas ötlet már sokan mások is leírták, ezért erre nem is pazarolnám a betűket. Viszont a többség még úgy hiszi, hogy egy ilyen alkalmazást összerakni csak kivételes emberek tudnak. Ezzel szemben az igazság az, hogy a titkosításokhoz szükséges algoritmusok mára annyira kiforrottak, hogy minimális hozzáértéssel pillanatok alatt össze lehet dobni egy új alkalmazást.

Gondoltam ezt a gyakorlatban is kipróbálom, és megnézem mennyi idő összeütni egy end-to-end titkosító chat alkalmazást.

Elsőnek is kell egy chat alkalmazás. Ezt például a nodejs alapú socket.io-val nem nagy dolog összerakni, van rá kész tutorial is. Az egyszerűség kedvéért letöltöttem a kész oktató anyagot, és telepítettem:

$ git clone https://github.com/guille/chat-example.git $ npm install

Már csak el kell indítani:

$ node index.js listening on *:1984

Hoppá, máris van egy működő chat szolgáltatásom:

chat_basic.jpg

Már ezt önmagában is elég nehéz lenne megtalálni, hiszen bárki, bárhol elindíthat egy chat szervert. Viszont itt még nem használunk semmilyen titkosítást, így ha a hatóságok megtalálták akkor probléma nélkül le is tudják hallgatni.

Mivel azt szeretnénk, hogy csak a két fél tudja a titkosítást megfejteni ezért a végpontokon (a böngészőben) kel az adatokat titkosítani. Bár még nem végleges, de már szépen halad a HTML5 Crypto szabványa, ami pont ezt teszi számunkra egyszerűen elérhetővé.

A példa kedvéért elég lesz egy szimmetrikus kulcsú titkosítás is, azaz minden félnek ugyanazt a jelszót kell majd ismernie, ha hozzá akar férni az üzenetekhez. Ehhez tegyünk be egy jelszó mezőt az oldal tetejére:

form.jpg

Ezzel párhuzamosan az alsó form kapott egy "bottom" class-t. Pár apró css beállítás után meg is van az új képernyőnk:

chat_2.jpg

Következő lépés az, hogy a beírt jelszóból generáljunk egy titkosító kulcsot. A jelszó önmagában gyakran nem annyira összetett, hogy egy brute force támadásnak ellenálljon, ezért a Crypto API deriveKey() metódusával kicsit "megerősítjük" (egyszerűen kimásoltam a példakódokat az MDN cikkéből):

keygen_1.jpg

Megjegyzés: mivel a titkosított chatünk arab magyar felhasználóknak készül, ezért gondolnunk kell az ékezetes karakterekre is. Fogadjuk meg az MDN tanácsát, és a karakter műveletekre használjuk az Unibabel csomagot.

Miután a .zip fájlt letöltöttük a socket.io szerver kódjába (index.js) be kellett rakni, hogy ezt is kiszolgálja. Ehhez ez a néhány sor kell, és ezután már be lehet szúrni a script taget az index.html-be.

serve_js_files.jpg

Más dolgunk nincs is, mint titkosítani az üzenetet elküldés előtt. Ehhez az index.html-ben a korábbi socket.emit sort erre a kódra kell lecserélnünk:

encode.jpg

Hoppá, már titkosított üzeneteket küldözgetünk, igaz elolvasni még nem tudjuk őket:

encode_in_work.jpg

 Most akkor próbáljuk meg dekódolni! Az AES-CBC esetében ehhez az Initialization Vectorra (IV) is szükségünk van, tehát az üzeneten kívül ezt is el kell küldeni. Mivel itt csak az a megkötés, hogy mindig egyedi legyen, ezért nyugodtan átküldhetjük kódolatlanul is. Ezért a socket.emitnek átadott adatstruktúrát kicsit kibővítjük:

emit_with_iv.jpg

Ezután a fogadó oldalon az üzenet eseménybe berakhatjuk a dekódolást:

decode.jpg

És már működik is a chatünk: amint a jó jelszót adjuk meg megkapjuk a dekódolt üzeneteket:

encoded_messags.jpg

A hálózat ablakban is látszik, hogy az üzenetek titkosítva jönnek-mennek, mi viszont már csak a dekódoltat látjuk - feltéve, hogy ismerjük a jelszót.

Ezt a kódot már csak el kell indítani egy publikus szerveren, és már van is egy működő "szolgáltatásunk". Nekem nagyjából két-három órába telt összerakni. Nyilván ez egy "fapados" alkalmazás, de jól szemlélteti, hogy a titkosítást behúzni alig pár sor kódot jelent.

Az alkalmazás jelenleg modern asztali chrome és firefox böngészőkön fut, de vélhetően hamarosan elérhetőek lesznek ezek az API-k a mobil böngészőkön is.

A teljes kód némi finomításokkal elérhető githubon, kipróbálni pedig itt lehet.

Szólj hozzá!

Címkék: web titkosítás chrome crypto end-to-end

A bejegyzés trackback címe:

https://butykoltem.blog.hu/api/trackback/id/tr458553454

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.