Final Presentation Maggie Mallernee, Zachary Silber, Michael Tong, - - PowerPoint PPT Presentation

final presentation
SMART_READER_LITE
LIVE PREVIEW

Final Presentation Maggie Mallernee, Zachary Silber, Michael Tong, - - PowerPoint PPT Presentation

Final Presentation Maggie Mallernee, Zachary Silber, Michael Tong, Richard Zhang, Joshua Zweig Overview What is C% (and however do you pronounce it)? Cryptography Implementation is Hard Why C%? Goals Encourage Improve Extensibility


slide-1
SLIDE 1

Final Presentation

Maggie Mallernee, Zachary Silber, Michael Tong, Richard Zhang, Joshua Zweig

slide-2
SLIDE 2

Overview

What is C% (and however do you pronounce it)?

slide-3
SLIDE 3

Why C%?

Cryptography Implementation is Hard Goals

Encourage Correctness Improve Readability Extensibility Ease the burden of large number arithmetic

slide-4
SLIDE 4

Overview

Basics of C%

– Compiles to LLVM – C-like syntax and semantics – Heap memory management: malloc() and free() – User input: printf() and scanf()

The Big Stuff

– Cryptographic types: Stones, Mints, Elliptic Curves, and Points – Painless arbitrary precision arithmetic – Overloaded operators covering group operations of modular integers and points over curves

slide-5
SLIDE 5

Project Management

51 PRs, 37 Closed, 282 commits

slide-6
SLIDE 6

Version Control

slide-7
SLIDE 7

Testing

It works! This is how we know!

slide-8
SLIDE 8

Continuous Integration

– Execute entire test suite on every push/PR – Provide detailed feedback – Enforce all tests passing

slide-9
SLIDE 9

Architecture

A journey from source code to shared secrets

slide-10
SLIDE 10

The Big Picture

Preprocess • #include statements

  • Build guards

Scan Parse Verify

  • Semantic

checking

Generate LLVM

  • Link to openssl

bignum

  • Built in functions
  • Type specific behavior
slide-11
SLIDE 11

BigNum Arithmetic

  • penssl/bn.h

(BIGNUM) special_arith.c codegen.ml (stone)

slide-12
SLIDE 12

Compiler Interface

– Options allowing user access to each step in the compilation process – Can see the tokenized program, AST, LLVM (sdtout or .ll file), assembly (.s), and compile to a full executable

slide-13
SLIDE 13

What exactly does C% do for me?

We’re glad you asked

slide-14
SLIDE 14

The Jist

– It’s like C!

– Syntax/Comments – Expressions/Statements – Control Flow

– Key Features

– Pre-processing – Input/Output – Scoping – Declaration flexibility – Memory management – Operator overloading

slide-15
SLIDE 15

Cryptographic Types

– Stones: Basis of all other cryptographic types, links to OpenSSL/BN – Mints: Integers in a finite field modulo some prime p – Curves: Elliptic curves, comprised of two mints – Points: Points on a curve, with operations relative to that curve

slide-16
SLIDE 16

Caesar Cipher? We have you covered

Cryptography Library

– We provide some cool examples!

– Caesar Cipher

– Simple shifting using Mints

– Stream Cipher

– Mints and Access methods provide easy tracking of repeated values mod a constant moduli with improved readbility

– Diffie Hellman (Modular integer and ECC)

– Points improve readability – No confusion on Point arithmetic

– ElGamal Encryption

– Extremely intuitive and clear when using built in Curves and Points

slide-17
SLIDE 17

ECC: C v C%