2014-10-17 38 views
2

我正在开发一个RSA加密库,用于像微控制器这样的小设备。我想知道是否有人已经有过这样的经历。可以在32位内存的8位器件上实现RSA加密吗?

我试过到目前为止:

我想的第一件事就是采取一些代码这个库http://axtls.sourceforge.net/。我不想要任何TLS特性,因为它太复杂(而且很大)。我在加载内存中的字节时遇到了问题,也许我应该使用来自它们的加载器例程,DER阅读起来很枯燥,ASN1是二进制XML,我用XML完成了,而且我没有空间来解码XML太。

也许我不应该使用openssl dump工具来获取字节,因为互操作性问题我不知道。

第二次尝试使用来自库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/#downloadhttps://github.com/jedisct1/libsodium/tree/master/src/libsodium

这是它,我需要因为我几乎没有时间了,如果有人知道一些小的RSA库中真正起作用的与8位的小东西,我们将不胜感激尽快完成这个,否则我将只使用诸如AES和固定密钥之类的东西,但这对安全性来说并不理想。

是否有可能实现RSA加密中:

的问题:(更新现在,我使用ECC曲线,因为他们使用的固定内存量和需要更少的内存也一样,每本论文http://eprint.iacr.org/2013/375.pdf探索)小于15Kb的PIC十六进制代码,还是有一些已知的库,它呢?

参考文献:

encryption : RSA algorithm

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

+0

那么你在这里的任何地方都有具体的问题吗?我无法弄清楚你在做什么...... – Ross 2014-10-20 22:07:23

+0

我只是想要一些方向。也许我应该在另一个地方发帖。 – 2014-10-21 13:29:37

+0

老实说,没有意图的进攻,这听起来像是在你头上。此外,你可能有一些技术上的偏见让你失望; DER解析不应该太痛苦,虽然有很多理由不喜欢ASN.1,但它不是真正意义上的“二进制XML”(除了极其松散的象征意义上的存储方法二进制字符串中的结构化数据)。 – 2014-10-29 12:39:09

回答

2

BigDigits库+ Wikipedia为我工作。 BigDigit库非常小(我只使用1个头文件和1个源文件),但速度非常快,并且已经实现了“取幂和模数”功能,因此编码和解码非常简单。虽然我没有在微控制器上生成密钥。

根据优化,我的代码大小(在ARMv7上)介于38到27 KB之间。

+0

谢谢,这将有所帮助,我以前没有找到。 – 2014-10-29 17:13:59

+0

但是你需要自己实现OAEP填充,这并不那么容易,并且容易导致解密oracle的微妙错误。 – CodesInChaos 2014-10-30 10:59:42

相关问题