rajkesavan

I'm an undergrad at UC Berkeley interested in cryptography and computational complexity, and I'm currently reading The Namesake. This page details a few of my projects and interests.

web rajk.me
mail rajk at berkeley dot edu
code github/raj-kesavan
public key 3B3ECEE1
dotfiles slashdot
Erdős number 5
resume pdf
image jpg



papers of interest
Richard Cleve 1986
Limits on the Security of Coin Flips When Half the Processors are Faulty
Tal Moran, Moni Naor, Gil Segev 2009
An Optimally Fair Coin Toss
Hemanta K. Maji, Manoj Prabhakaran, Amit Sahai 2010
On the Computational Complexity of Coin Flipping
Mihir Bellare, Oded Goldreich, Erez Petrank 1998
Uniform Generation of NP-witnesses using an NP-oracle
Itay Berman, Iftach Haitner, Aris Tentes 2014
Coin flipping of any constant bias implies one-way functions
jyotir is a Python library for secure 2-party peer-to-peer computation via Yao's garbled circuits protocol.

Secure computation is a problem where two parties would like to compute some function on their respective inputs, but do not want to reveal anything about inputs except for the output. For example, imagine two billionaires, who want to know who has more money, but don't want to reveal anything about their own wealth, or a startup that'd like to use Amazon's computers to run some large computation on proprietary data, but they don't want Amazon to learn anything about the data.

jyotir lets you define arbitrary Boolean circuits of arbitrary fan-in, fan-out, and output length, and then provides utilities to garble and evaluate them. In addition, jyotir provides client-side servers for two parties to complete the protocol over peer-to-peer sockets, using the RSA trapdoor one-way permutation for oblivious transfer. [source]
ryujin is a classical cryptography and cryptanalysis Clojure library. ryujin currently supports Caesar, substititution, Hill, Vigènere, and one-time-pad ciphers. I also created and implemented an algorithm to probabilistically break substitution ciphers at a unicity distance of roughly 5000. [source] [details]
=> (encrypt (caesar 15) "hello world")
"spwwz hzcwo"
=> (decrypt (caesar 15) "spwwz hzcwo")
"hello world"

=> (def plain-text "Every mental state is irreducible: the mere fact of naming it - i.e., of classifying it - implies a falsification. From which it can be deduced that there are no sciences on Tlön, not even reasoning")
=> (def cipher-text (encrypt (caesar 23) plain-text))
=> (crack-caesar cipher-text)
=> ({:shift 23, :chi 0.024591684364994242, :guess "Every mental state is irreducible: the mere fact of naming it - i.e., of classifying it - implies a falsification. From which it can be deduced that there are no sciences on Tlön, not even reasoning"})

quetzal is an online, real-time, multiplayer adaptation of the classic game Snake - if you hit another player, you lose! When no one else is online, empty spots are taken by an AI. I wrote the backend in Clojure, which communicates to clients over WebSockets with http-kit. [source]
logicpod is a propositional logic Clojure library. logicpod parses (relatively) free-form input with instaparse, and can evaluate formulas given truth conditions, create truth tables, and check arguments for consistency and validity. [source]
=> (def wff-a (parse "(A & ((~B) <-> A))"))
[:and [:atom :A] [:iff [:not [:atom :B]] [:atom :A]]]

=> (def wff-b (parse "((not A) or B)"))
[:or [:not [:atom :A]] [:atom :B]]

; (valid? conclusion & givens)
=> (valid? wff-a wff-b)
false
=> (def wff-c (parse "B"))
=> (valid? wff-b wff-a wff-c)
true

busybeaver is a React.js implementation of an n-state Turing Machine that can be used to play the Busy Beaver game. The 2-state solution is a decent challenge. [source]
vigenere is a small, online implementation of a Vigenere cipher. [source]
selected literature
Italo Calvino If on a winter's night a traveler
Arundhati Roy The God of Small Things
Gabriel García Márquez One Hundred Years of Solitude
Kazuo Ishiguro Never Let Me Go
Jorge Luis Borges The Library of Babel
Haruki Murakami Hard-Boiled Wonderland and the End of the World
Umberto Eco The Name of the Rose
J.M. Coetzee Disgrace
David Mamet Glengarry Glen Ross
causes
FairVote
Electronic Frontier Foundation
Free Software Foundation
Let's Encrypt
Mozilla Firefox