• Revisiting Blockchain DNS

    I recently received an email from Oleg Khovayko, the CTO of Emercoin, after he read my original post about blockchain DNS. He wanted to raise three points to me. The first is that emerDNS has gained a following in Russia for censorship circumvention. The second is that he maintains a list of active emerDNS domains. And the third is that they’ve simplified the process of running an emerDNS resolver. That third point is nice, because it appears that the Firefox plugin I used last year no longer works. Interestingly, when installing the PeerName Chrome plugin for this post, the webstore automatically recommended some plugins popular in Russia for censorship circumvention. Looks like we’re on to something.

  • A Straightforward Implementation of Dixon's Factoring Algorithm

    When studying RSA cryptanalysis you may be asked to implement, as a learning exercise, Dixon’s random squares algorithm for factoring composite numbers of two primes. Unfortunately, many implementations demonstrate more powerful versions of the algorithm. They take shortcuts, make optimizations, or implement a different algorithm entirely (like the number field sieve). This is not helpful when you’re trying to learn how Dixon’s works in a straightforward way. In this post I’ll lay out a simple implementation of Dixon’s algorithm in C.

  • Creating an Unkillable Process by Abusing Character Devices

    TL;DR: This is probably a bad idea and you don’t actually want use this. Whatever problem you’re trying to solve, there’s probably a better way. I was researching ways to prevent a process from dying prematurely and created a simple “device driver” that will prevent a given process from being killed until the system is powered down or the process decides to end on its own terms.

  • How to Make API REST Requests to Tor Hidden Services in an Android APK

    This post was originally written for the ElevenPaths Innovation and Laboratory website, and is available here.

  • Integrating Libsodium SealedBox into an Android Studio Project

    This post documents my attempt to get libsodium-jni with SealedBox support working in an Android Studio project. It assumes you already have an Android Studio project up and running (and that you’ve accepted all the licenses!) that you wish to add libsodium to. I am running Pop!_OS 19.10, but this should work on Ubuntu 19.10 and related distros.