Graduate Student, Computer Science, RIT

BS, Computer Science, RIT 2004

initials 2784 @ cs rit edu

Equality saturation is a recently developed optimization technique. It transforms a program into a data-oriented structure, collects as many equivalent versions as possible, and then heuristically selects the most optimized version. Standard ML is a functional language that is value oriented and uses immutable data structures. This thesis will determine if these features of Standard ML make it particularly well-suited for equality saturation. As part of this goal, we will explore new equality axioms for Standard ML and common idioms within.

- Equality Saturation: A New Approach to Optimization by Tate, Stepp, Tatlock, and Lerner

Fall 2011

A botnet is a network of computers that have been compromised by an external entity for malicious purposes. The collected power of the machines can be used to perform distributed denial of service (DDoS) attacks, send spam, or perform large-scale distributed computation like password cracking. The widespread, invasive, and powerful nature of botnets make their detection and removal a high-priority task for today's network administrators at all levels. However, botnet creators hide their traffic in popular protocols such as IRC and HTTP, making differentiating between normal users and malicious ones more difficult.

This paper provides an overview of botnet functionality and communication before giving a survey of the increasingly complicated methods used to detect and shut down these networks such as traffic inspection, behavior analysis, and machine learning.

Spring 2011

The generation of random numbers is too important to be left to chance.

~~ Robert R. Coveyou

Many cryptographic algorithms require a source of random numbers for
applications such as a nonce value during encryption or as part of the
generation of keys. Since we generally prefer computers to be
deterministic machines, they are poor at generating random numbers and so
we turn to Pseudo-Random Number Generators (PRNGs). Like any other part
of a cryptosystem, the PRNG is vulnerable to attack^{1}. The
Blum-Blum-Shub (BBS) generator^{2} is a random number generator
that is based on the difficulty of factoring integers. The major problem
with BBS is its reliance on mathematics on very large integers, which
severely limits its speed. This paper will explore what the
cryptographic needs of a PRNG are, provide an overview of various PRNGs
in use such as the Mersenne Twister^{3} and Yarrow^{4},
and describe in depth the BBS algorithm.

1: Kelsey, Schneier, Wagner, and Hall, "Cryptanalyitic Attacks on Peudorandom Number Generators" in

*Fast Software Encryption, Fifth International Workshop Proceedings (March 1998)*, Springer-Verlag, 1998, pp. 168-188.2: Stinson,

*Cryptography: Theory and Practice*, Section 8.33: M. Matsumoto and T. Nishimura, "Mersenne Twister: A 623-dimensionally equidistributed uniform pseudorandom number generator", ACM Trans. on Modeling and Computer Simulation Vol. 8, No. 1, January pp.3-30 (1998)

4: Kelsey, Schneier, and Ferguson, "Yarrow-160: Notes on the Design and Analysis of the Yarrow Cryptographic Pseudorandom Number Generator" in

*Selected Areas in Cryptography*, Proc. SAC '99, Lecture Notes in Computer Science #1758, pp. 13–33, Springer Verlag, 1999

Winter 2010

This project was uploaded to github so that it might be kept up to date with changes to Parrot and its tools.

The bcg language runs on and compiles to the Java VM, and is implemented using pj2 (which is similar to lex and yacc) and ASM (to create Java class files).

- Documentation
- Milestone 1: Recognition
- Milestone 2: Interpretation
- Milestone 3: Code Generation (also new option parsing frontend)
- Milestone 4: Types (booleans and strings, also grammar simplification)
- Milestone 5: Subroutines
- Milestone 6: Aggrigates