• cybersecurity

    Cos’è il replay attack contro Immuni di Report e perché non dobbiamo preoccuparci

    Nella puntata di ieri 9 novembre 2020 di Report si è parlato di un Replay Attack contro i software di Contact Tracing, in particolare contro la app Immuni, il quale potrebbe segnalare come positivo una vittima. Siccome la notizia ha destato un certo scalpore, per lo meno su Twitter, vorrei far luce sul problema e spiegare (spoiler) perché non dobbiamo preoccuparci più di tanto di questo problema. Un piccolo riassunto su come funziona Immuni Come oramai sanno anche i sassi, Immuni funziona scambiando delle chiavi temporanee con i dispositivi nelle vicinanze tramite la tecnologia Bluetooth. Queste chiavi sono memorizzate con la data e ora precisa del contatto all’interno del telefono,…

  • Python,  Scienza

    Dedurre il numero di nuovi utenti positivi dalle TEK di Immuni

    A differenza che in altri paesi, in Italia la gestione del progetto di Contact Tracing elettronico basato sulla tecnologia di Exposure Notification implementato da Apple e Google (il cosiddetto GAEN) non ha brillato per trasparenza. Mentre in Svizzera le statistiche di utilizzo sono disponibili in real time sia attraverso sito web, sia attraverso API Endpoint per il trattamento automatico dei dati, in Italia gli unici dati disponibili sono il numero di download e un numero totale di notifiche e utenti reso disponibile “quando si ricordano” attraverso una apposita dashboard. In questo articolo propongo un metodo per il recupero del numero di utenti positivi a partire dai Batch messi a disposizione…

  • Android,  cybersecurity

    Cos’è l’Hardware Attestation e cosa c’entra con Immuni

    In fondo alla pagina della dashboard di Immuni, che oggi riporta 902 utenti Positivi e 17900 notifiche inviate, è comparso le due annotazioni qui sopra riportate. In particolare la seconda mi ha per un attimo lasciato interdetto. L’Hardware Attestation è un metodo per autenticare gli accessi alle API delle applicazioni, per fare in modo, cioè, che solo una app possa accedere ed usufruire di un servizio, escludendo quindi browser e software vari, come molti ricercatori stanno facendo in questi giorni, me compreso. Di solito per un server è impossibile identificare se dall’altra parte del collegamento c’è la App oppure un utente, un browser o qualcosa d’altro. Il requisito per far…

  • Uncategorized

    Blockchains, istruzioni per l’uso

    Il seguente articolo è stato pubblicato nel numero 1/2-2019 del Notiziario dell’Ordine degli Ingegneri della Provincia di Verona.Viene pubblicato qui grazie alla gentile concessione della Redazione. Come funzionano le criptovalute, l’e-voting e le altre applicazioni di un sistema informatico ancora poco conosciuto Negli ultimi tempi non trascorre giorno senza che un articolo, un programma televisivo o un comizio citi le “blockchain” come soluzione ultima di un qualche problema tecnico od organizzativo. Tali promesse in realtà fanno sollevare più di qualche sopracciglio nel settore degli esperti di questa tecnologia. Pare quasi che la blockchain sia una cosiddetta oracle machine che genera verità e certezze indipendentemente dal suo uso e dai suoi…

  • Embedded,  Linux

    Adding a user space “power switch” to your embedded linux

    Is is always amazing to see how some very obvious features are missing from the linux kernel. Yesterday, for a project I am developing for a Dutch firm, I come across one of these “very obvious feature”: the option to switch on and off a device in the embedded linux board we’re using. The problem seemed to be quite frequent: you have a device connected to the internal USB bus (a wifi module, maybe?) and you want to switch it off completely when not in use. It is the only USB connection in that bus, a single power line is powering that device, and still you need to power the…

  • Android,  cybersecurity

    La vulnerabilità di WhatsApp spiegata a mia figlia

    A chi non è capitato di dover riempire un modulo i cui spazi da riempire sono troppo stretti per il testo da inserire? Il classico caso in cui l’indirizzo è davvero troppo lungo per lo spazio previsto e ci si arrangia scrivendo negli altri spazi, oppure sovrapponendosi al testo stampato, e rendendo il modulo praticamente illeggibile? Una cosa simile accade quando in un software o una App riceve dei dati da internet (un server, o magari dalla stessa app installata su un altro smartphone) ma il programmatore non ha effettuato correttamente i controlli sulla lunghezza e il programma copia i dati su uno spazio troppo stretto. In questo modo i…

  • Embedded,  Linux,  uboot,  ubuntu

    Configuring Ubuntu to deal with an ARM board with U-Boot via USB

    Abstract We have a board on which an AllWinner ARM processor is running Linux. The bootloader is U-boot and we have to use the USB port to flash it. When flashing the device for the first time, after loading the bootloader via FEL protocol, we need to use tftp to load the SPL (Secondary program Loader) image and the uboot version for use with the spl. Unfortunately, a couple of issues in the default Ubuntu configuration prevent us from doing this apparently simple operation in a straight way, and we need to tweak some system configuration file. The issue After using the sunxi-fel tool to run the bootloader in memory,…

  • c++,  Code

    Strong Typing PODs

    Identifiying object by a numerical integer is an almost trivial task. In DISPLACE, a very complex simulator I am involved with, there are many of different categories of objects that model different categoris of agents in the simulator, like vessels, marine locations, ships, ports, and so on. Each object has an Id, and it was very natural, at the start of the project, to implement it using an int. Problems started when we decided, for optimization purpose, to shrink the memory footprint, to use smaller int instead. Indeed, there could be at most 65535 nodes, and at most 256 node types, and each was modeled with an int. The mess started when we…

  • Uncategorized

    A C++ Smart Pointer wrapper for use with JNI

    Introduction In this article, I'll propose a solution for managing native C++ resources from JNI using smart pointers. While Smart Pointers can't be useful from Java, because of the limits of the Java memory management, it may be required by the native library to maintain allocated resources through shared_ptr or unique_ptr, for example because classes derive from std::enable_from_this. Since there is a fixed pattern to maintain native objects in Java classes, a utility C++ class is proposed. The problem of memory management when integrating Java and C++ code Recently, I had to port a library I wrote for Linux to Android. For instance, the library is aimed at implementing an…