我正在开发一个RSA加密库,用于微控制器等小型设备。我想知道是否有人已经有过做这种事的经验。
到目前为止我已尝试过:
我尝试的第一件事就是从这个库http://axtls.sourceforge.net/中获取一些代码。我不想要任何TLS特性,因为它太复杂(而且很大)。我在从内存加载字节时遇到问题,也许我应该使用来自它们的加载器例程,DER无聊阅读,ASN1是二进制XML,我用XML完成,我没有空间也解码XML。
由于我不知道的互操作性问题,或许我不应该使用openssl转储工具来占用字节数。
第二次尝试是使用库https://github.com/wernerd/ZRTPCPP/blob/master/bnlib/bn16.c中的代码。问题是CRT算法太大而不适合,即使它提供了一些性能提升,我不需要它,因为我有小数据包,我不会使用更长的密钥。我无法拥有更长的密钥,因为我没有足够的RAM内存。
我更喜欢有一些小型图书馆。此库也有太多的指针间接。 从Stackoverflow中读取更多信息我发现了这段代码,但是我从中得到了除零,我不确定加载大数字时是否有endianes问题。 https://github.com/Coder-666/uRSAlib/blob/master/uRSA/BN.c
这些库看起来很有希望,但我没有时间测试它们: http://cryptopp.com/#download。 https://github.com/jedisct1/libsodium/tree/master/src/libsodium
就是这样,我需要尽快完成这项工作,因为我几乎没有时间,如果有人知道一些小型RSA库真正适用于8位的小东西,我将不胜感激,否则我会使用像AES和固定密钥之类的东西,但这对安全性来说并不是最理想的。 (更新:现在我正在探索使用ECC曲线,因为他们使用固定数量的内存并且需要更少的内存,根据本文http://eprint.iacr.org/2013/375.pdf)
问题:
是否可以在少于15Kb的PIC十六进制代码中实现RSA加密,或者是否有一些已知的库可以执行此操作?
参考文献:
How to encrypt a string using public key cryptography
Library for RSA implementation in pure C
Are there any very simple RSA implementation in C++
Implementation of RSA without dynamic allocation
implementing a bignum library for rsa encryption
http://en.wikipedia.org/wiki/RSA
http://www.di-mgt.com.au/rsa_alg.html#encryption 我也从PGP项目看过这个库,但它太复杂了。
http://fossies.org/dox/pgpsrc658unix-gnu/dir_d8387bb0a43f1d00e085a9a2c8a94120.html
http://www.math.mtu.edu/mathlab/COURSES/holt/dnt/phi4.html
http://cacr.uwaterloo.ca/hac/(应用密码学,这个看起来很有希望,我现在正在阅读)。
ftp://ftp.cs.pdx.edu/smn/ipsec/skip/ 值得一看的东西。
http://www.codeproject.com/Articles/14462/Build-your-own-cryptographically-safe-server-clien
http://www.codeproject.com/script/Articles/ViewDownloads.aspx?aid=8536
http://www.codeproject.com/script/Articles/ViewDownloads.aspx?aid=5266
http://www.codeproject.com/Articles/60108/BigInteger-Library