Arduinoでシンプルで高速なHMACを実装する方法

こんにちは私は、制御エリアネットワーク(CAN)の通信を確保するために働いている研究学生です。私はこれらのCANの1つをシミュレートするためにArduinosを使用しています。

私の目標は、HMACを使用してパケットのメッセージ認証を実装することです。アルゴリズムは非常に高速でなければなりません(元々はFNV1aの使用を考えていました)。しかし、このためのArduinoライブラリはありません(私はそれを見つけましたが、SHAを使用していますが、これはおそらくCANにとっては遅すぎる可能性があります)。私はたくさんの暗号とハッシュアルゴリズムの練習をしているわけではなく、それらの使い方しかありません。

だから基本的に、私はC言語でFNVやFNV1a関数を書くのに助けが必要です。入力のためのメッセージは文字列(char配列)と連結されたキーです(明らかに)。また、十分なセキュリティを確保するために、ハッシュ値を128〜256ビットにする必要があります。

副作用として:CANメッセージ/パケットは 7df#02010d のように見え、実際のデータ部分は 010d (2バイト)です。たとえば、整数として、 010d の配列は{1,13}になります。

-

私はこのメッセージがArduinoよりも暗号にもっと適用されることも知っていますが、私はこのコミュニティの誰かが私の特定のタスクに関するより多くの経験を持っているかもしれないと思っています。

- ありがとう


EDIT: I found this FNV1a implementation in C/C++ that might work. But I have not tested it yet.

3
追加された 著者 Dave X,

1 答え

I ended finding a Arduino library called Spritz which can be found here:
https://github.com/abderraouf-adjal/ArduinoSpritzCipher

Also, for anyone else who comes across this task, here is a very simple Hashed Message Authentication Code (HMAC) example I scrapped together:
https://github.com/zach-king/ArduinoStash/blob/master/src/Spritz_HMAC/Spritz_HMAC.ino

このライブラリは暗号化もサポートしていますが、私の場合は必要ありません。

--EDIT--
The SpritzCipher library was actually too slow (about a 50% reduction in network speed) so I must try a different approach. I have found a MD5 library for Arduino which I will try next:
https://github.com/tzikis/ArduinoMD5

3
追加された
@mixdevこれは数年経っているので、パフォーマンスの詳細は覚えていませんが、私はMD5の実装を終わらせたと思います。私の目的のために、MD5はスピードとビット長のセキュリティで十分でした。
追加された 著者 rovsen,
ArduinoMD5の実装はどうでしたか?
追加された 著者 mixdev,