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.
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.
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 attack1. The Blum-Blum-Shub (BBS) generator2 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 Twister3 and Yarrow4, 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.3
3: 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
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).