ContikiにはLLSEC(リンクレイヤセキュリティ)レイヤがあります。このレイヤーは、ハードウェアに直接アクセスするのではなく、一般的なAESドライバAPIを使用するため、ハードウェアに依存しません。 Contikiには複数のAESドライバが実装されています。ソフトウェア専用のバージョンと、CC2420(Tmote Skyの無線チップ)を含むハードウェアアクセラレーションバージョンがいくつかあります。
Coojaの問題点は、CC2420のHWアクセラレーション機能がmspsim
エミュレータで実装されていないことです。実際のTmote Skyノードとは対照的に、Hoの加速はCoojaでは機能しません。明示的な構成で、ソフトウェアベースのAESドライバを選択する必要があります。
#define AES_128_CONF aes_128_driver
一番下の行は、AES暗号化がCoojaに動作しますが、遅くなるということです。今
LLSECの構成例
- そこに少しLLSECドキュメントは周りですが、基本的なセットアップは、この
README fileで説明されています。有効にするために、あなたの
project_conf.h
にこれらの行を追加します
noncoresec
:
#undef LLSEC802154_CONF_ENABLED
#define LLSEC802154_CONF_ENABLED 1
#undef NETSTACK_CONF_FRAMER
#define NETSTACK_CONF_FRAMER noncoresec_framer
#undef NETSTACK_CONF_LLSEC
#define NETSTACK_CONF_LLSEC noncoresec_driver
#undef NONCORESEC_CONF_SEC_LVL
#define NONCORESEC_CONF_SEC_LVL 1
NONCORESEC_CONF_SEC_LVLは、MICの長さ、および 暗号化が有効かどうかを定義します。
重要PARAMTERは、ここでは0x0から0x07のに数値で、IEEE 802.15.4フレーマセキュリティレベルに対応する、NONCORESEC_CONF_SEC_LVL
あります。
は、暗号化を有効に0x4のにそれを設定するには:
#define NONCORESEC_CONF_SEC_LVL 0x4
他の値は次のとおりです。
- は0x00ませセキュリティデータは暗号化されません。データの真正性は検証されません。
- 0x01 AES-CBC-MAC-32 MIC-32データは暗号化されていません。データの真正性が検証されます。
- 0x02 AES-CBC-MAC-64 MIC-64データは暗号化されていません。データの真正性が検証されます。
- 0x03 AES-CBC-MAC-128 MIC-128データは暗号化されません。データの真正性が検証されます。
- 0x04 AES-CTR ENCデータが暗号化されています。データの真正性は検証されません。
- 0x05 AES-CCM-32 AES-CCM-32データが暗号化されています。データの真正性が検証されます。
- 0x06 AES-CCM-64 AES-CCM-64データが暗号化されています。データの真正性が検証されます。
- 0x07 AES-CCM-128 AES-CCM-128データが暗号化されています。データの真正性が検証されます。
は、暗号化と認証の両方を有効に0x5、0x6にまたはを0x7にレベルを設定します。
もう1つの有用な設定パラメータは、ネットワーク全体の共有鍵NONCORESEC_CONF_KEY
です。
その他の質問については、ハードウェアアクセラレーションのサポートはありませんセンサノードでの非対称暗号化。また、メインラインのContikiには、ソフトウェアベースの実装はありません。このOSでは、リンク層のセキュリティとは対照的に、エンドツーエンドのセキュリティのサポートはまだありません。 はです。ContikiのDTLSとIPSECを開発したいくつかのプロジェクトですが、これはこの答えを超えています。
出典
2016-05-30 16:20:29
kfx