GithubHelp home page GithubHelp logo

codzart / clecc Goto Github PK

View Code? Open in Web Editor NEW

This project forked from dkushner/clecc

0.0 1.0 0.0 12 KB

Implementation of an elliptic curve cryptographic system assisted by GPGPU computation via OpenCL.

C++ 80.84% Makefile 19.16%

clecc's Introduction

#clecc

Implementation of an elliptic curve cryptographic system assisted by GPGPU computation via CUDA.

##What?

Elliptic curve cryptography. It's this thing that... well when you take a finite field and you... I mean you have these numbers and you sort of...

Here, this page can explain it far better than I ever could. The entire thing is based on the intractability of the discrete logarithm problem on an elliptic curve. As for why this works, please accept this incredibly abstract and belabored analogy:

  • You have a circle cut into 32 equal sections.
  • I pick one section of the circle, you pick another section of the circle.
  • Your section is at most N-1 and at least 1 steps away from my section if I traverse one section at a time.
  • Note that if you're 6 sections away from me then the relative position of your section to my section can also be described as (6) + 32^e where e is an integer exponent.
  • I mean, you could even be (-26) - 32^e sections away from me since it's a circle and all.

Now because we're dealing with a simple circle in this example, even with a huge exponent it's fairly easy to notice the pattern of repetition if we know the total number of segments. However, elliptic curves over finite fields have an interesting property where this sort of multiplication doesn't result in the same number each time it goes around. In fact, it's not guaranteed that you will ever get the same number again if you continuously multiply by the same value.

##Why?

The only real reason to do anything, I suppose: to learn. I'd always been curious about how AES works under the hood and while any discrete math course will generally cover the RSA cryptosystem in depth, everybody knows AES is the cool kid (in so much as cryptosystems can be cool kids).

##How?

So here's the deal. I've done OpenGL in the past for small projects and little test applications. I've used CUDA before for a couple fluid physics simulations and some really simple numerical analysis. So naturally my intention is to mash together these two libraries until the twisted wreckage produces some eye-pleasing visualizations of the cryptosystem's internal processes.

##Sources

DKrypt : Excellent source on a bunch of cryptography-related mathematics.

Jarl Ostensen's CodeProject : Really nice framework for an ECC system.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.