#1
  1. No Profile Picture
    Registered User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Apr 2011
    Posts
    1
    Rep Power
    0

    RSA encrypt only on MSP430


    Hello,

    We have a need to implement a PKI scheme in our embedded system which uses a MSP430 controller. Ideally we want to use RSA with 512 or 1024 bit keys. The public key will be in the flash, we need only encryption with the public key of a 256 bit block.

    Couple of questions.

    1. Is this even possible on a MSP430 with 4K SRAM and 32K Flash ?

    2. Any pointers where I can find implementations of this in C (have looked at polarssl and openssl, don't think they were written with embedded systems in view) A search on the TI forums also drew a blank

    3. If RSA is a impossibility any pointers for a PKI scheme that is implementable on a 430 based system ?

    Thanks in advance.

    Best,
    Rama
  2. #2
  3. No Profile Picture
    Contributing User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Nov 2010
    Posts
    121
    Rep Power
    22
    Sorry
    I am posting this because I also want to be updated about replies to this post
    Please don't mind and I'm sorry I couldn't be more helpful
  4. #3
  5. No Profile Picture
    Contributing User
    Devshed Novice (500 - 999 posts)

    Join Date
    May 2007
    Posts
    765
    Rep Power
    929
    (1) I have no experience with the MSP430, but memory should not be a problem. I've seen implementations that only require working space equal to the size of the block (so between input, output, modulus and working memory would be ~1K in your case). Speed on the other hand may but that depends on your requirements.

    (2) RSA is a rather simple algorithm. Most crypto libraries you'll find will implement a lot of other features that are typically used with RSA. You might have better luck looking for a big-number library--all you really need is an exponent-modulus function. (Stick any of those keywords into your search engine of choice and you'll get decent explanations/algorithms/libraries.)

    Though I'd check your requirements. RSA is usually used in conjunction with other algorithms (such has SHA to mask the encrypted data, or a symmetric algorithm like DES or AES to encrypt larger blocks of data than RSA can easily handle).

    (3) If you do run into the physical limits of your processor, you might look into the Rabin algorithm. It's similar to RSA but using an exponent of 2 which simplifies the math somewhat.

    The embedded forum is a bit slow. You might have better luck asking in the Cryptography forum (for further questions about RSA) or in the C/whatever language you're using (for problems with your implementation) (letting people know you're cross-posting of course).
    sub{*{$::{$_}}{CODE}==$_[0]&& print for(%:: )}->(\&Meh);

IMN logo majestic logo threadwatch logo seochat tools logo