GSoC 2017 - HMAC podpisovanje Nodewatcherjevih sporočil - Poročilo 2 EN

Čas je za drugo Google Summer of code poročilo!

Prvi blog, ki opisuje idejo in cilje je na voljo tukaj in prvo poročilo tukaj.

Kaj je novega

Podatki, ki jih nodewatcher prejema od točk nimajo digitalnega podpisa. To pomeni, da lahko kdorkoli podatkovne pakete prestreže, spremeni njihovo vsebino, jih pošlje naprej in ob prejemu ne moremo vedeti ali je vsebina avtentična ali ne. Avtentikacija z uporabo SSL certifikatov je že implementirana, a je bila zaželjena tudi enostavnejša, hitra rešitev, ki ni odvisna od velikih knjižnic kot je OpenSSL. To pomeni dve stvari. Najprej je bilo potrebno najti primerno sha256 implementacijo ali napisati svojo. Nekatere kriptografske knjižnice imajo implementirane dodatne varnostne prijeme, da preprečijo "side-channel" napade, ki izkoriščajo fizične značilnosti implementacije. In tudi s tem niso vse knjižnice kriptografsko varne in je vse skupaj odvisno tudi od samega sistema na katerem tečejo. Odločili smo se, da je v našem primeru nevarnost takšnega napada zanemarljiva, potreben pa je tudi fizičen dostop do same naprave. Tako sem uporabil open source implementacijo Brada Conteja.

Drugi del pa je predstavljala lastna implementacija avtentikacije sporočil na podlagi hashiranja. Algoritem sem poskušal čim bolj prostorsko in časovno optimizirati. Po združenju obeh delov je bilo pravilno delovanje implementiranega HMAC-sha256 algoritma izčrpno testirano z uporabo uradnih testnih vektorjev.

Nodewatcher-agentu je bila dodana opcija izbire tipa avtentikacije s tem da so privzeta izbira SSL certifikati. Če je izbran HMAC je potrebno vnesti HMAC ključ za podpisovanje. Podpis je pretvorjen v "base64" in dodan v glavo poslanega sporočila. Nodewatcher od prejemu podatkovnega paketa preveri pravilnost podpisa.

Kako naprej

Sedaj bom pričel z razvojem IPv6 podpore za Tunneldigger.

Prispevam s svojim github računom.

Gremo naprej! Srečno!