Robert Daly

Mathematics & Computer Science @ Brown
About Me

Hi. My name's Robbie. I'm a  cryptographer. mathematician. full-stack developer. systems programmer. data scientist.

In my free time, I like to hike, play soccer with my friends,
and develop software for organizations in the Providence area.

As a student, I research cryptography and computer security.
I am currently applying advances in deep learning to select
topics in these fields.

I also work as a tutor and teaching assistant for classes in
the Mathematics and Computer Science Departments.


Projects
> Anonymous Voting
  • C++, C, Bash | Crypto++, Boost
  • zk-SNARK, Sigma-OR, blind signature

This anonymous voting scheme supports secure and anonymous two-party elections, allowing election officials to compute the total number of votes a given candidate receives without revealing any voter's political preferences.

The system uses ElGamal based additively homomorphic encryption to conceal a voter's preferred candidate, which is indicated by encryption a value of either 0 or 1. A zk-SNARK based on the Sigma-OR protocol ensures that voters encrypt 0 or 1, and a blind signature scheme is used to ensure voters only vote once. The encrypted votes are added together, and then threshold-based decryption is used to obtain the election result, ensuring that no one party controls the outcome of the election.

> Secure Sphere
  • Python, DHTML | React, Flask, OpenAI
  • Retrieval Augmented Generation, AWS

This web application provides a state-of-the-art LLM that specializes in answering questions about information security. SecureSphere also allows clients to securely upload documents, providing needed context to the LLM when asking specific questions, without having to worry that their data will be used to train the underlying model.

SecureSphere is currently in Beta, hosted on an AWS Lightsail instance, using a Flask webserver and a React frontend. The chatbot makes use of the OpenAI API, while the RAG model employs the Pinecone API to store vectors generated by the text-embedding-3-small OpenAI embedding model.

> Weenix
  • C, CMake | stdlib, pthread, unistd
  • Kernel Scheduler, VFS, S5FS, Shell

Weenix is an implementation of a Unix based operating system kernel, the piece of software responsible for providing an interface between application-level software and a computer hardware. It was developed for CSCI 1670/2670, Brown University's operating system class.

The kernel is written completely in C. It provides support for process, threads, scheduling, a virtual file system, an on-disk file system, and a Bash-like shell.

> Brown Political Review
  • PHP, HTML, CSS, JS | Bootstrap, JQuery
  • SEO, Wordpress, Site Maintenance

The Brown Political Review website features the journalistic work of hundreds of students, professors, and affiliated members. The review itself is a non-partisan political magazine dedicated to bringing high-quality journalism to the Providence area and beyond.

I served as a writer and the Chief Copy Editor for the review before joining the development team. I collaborated with the graphic design team to rehaul the website's landing page, made author names searchable, upload articles, and worked on more general site maintenance.

> End-to-End Encryption
  • C, C++, Bash | Crypto++, Boost
  • Double Ratchet, Key Exchange, AES

This program provides a cryptography driver that supports end-to-end encryption, allowing two parties to securely communicate across a server without revealing the content of their messages. Protocols of this type are used by messaging services like Signal and ProtonMail.

More specifically, the program uses a Diffie-Hellman based Double Rachet key exchange to protect message history against key leaks. The actual encryption is an AES block cipher with a SHA-256 based HMAC.

> Search Engine
  • Python, Bash, XML | re, nltk
  • PageRank, Natural Language Processing

PageRank is one of the first algorithms Google used in its search engine to return high quality webpages in its search functionality. The algorithm uses the assumption that for any given subject, the webpage which is referenced the most by other sites is of the highest quality.

I implemented the PageRank algorithm in Python using data obtained from Wikipedia pages. The program uses regular expression matching and natural language processing from the nltk library to preprocess queries and ensure higher quality results. On the sample data set, the PageRank program's top result matched the actual Wikipedia search engine with 97% accuracy.

> Quadratic Sieve
  • Python | SymPy
  • Tonelli-Shanks, Number Theory, Factor

The Quadratic Sieve is the preferred algorithm for factoring semi-prime integers with approximately 350 bits. The algorithm is sub-exponential but super polynomial in the bit length of the integer N being factored.

I wrote an implementation of the algorithm in Python, along with a concise explanation the algorithm and an analysis of its runtime, for a mathematical cryptography class I took. I wrote similar programs in the class, which usually consisted of making and breaking toy cryptosystems. This project touches briefly on some of the more algebraic and mathematical work I do in cryptography.

> Yao's Garbled Circuits
  • C, C++, Bash | Crypto++, Boost
  • Secure MPC, Oblivious Transfer

This program uses Yao's Garbled Circuit method to allow two parties to jointly compute a function without revealing the data inputted by either party. Programs of this type are often used to protect sensitive information in environments where collaboration is necessary, like cooperate benchmarking and fraud detection.

In the method, the first party converts an arbitrary function to a circuit representation, encrypts each wire and logic gate in the circuit, and sends the encrypted circuit along with his encrypted input to the second party. The second party then uses an oblivious transfer protocol to obtain the encryptions corresponding to her input, and she traverses the circuit, evaluating it on the encrypted input. Once the encrypted output is determined, it is sent to the first party who decrypts it, obtaining the overall result.

In this particular implementation, the Bristol Circuit Format is used to represent a circuit corresponding to the function, along with a Diffie-Hellman based oblivious transfer protocol and a Crypto++ secure random number generator for encryption.

Contact 

I am always happy to hear from people interested in the same fields that fasciate me, and I am open to collaborating on projects. My code is available to select parties upon request.

Email: robert_daly@brown.edu

LinkedIn: Robert Daly