Articles

Sicherheit drahtloser Sensornetzwerke gegen böswillige Angriffe mit Hilfe der Hamming-Residue-Methode

In der digitalen Kommunikation werden Hamming-Codes verwendet, um Fehler zu erkennen und zu korrigieren; daher kennen alle Kommunikationssysteme diese Codes. WSNs sind autonom und benötigen weniger Energie, und solche Codes können zur Sicherung von WSN-Systemen ohne zusätzliche Infrastruktur verwendet werden. Bei dem vorgestellten Ansatz werden anfängliche (vom Benutzer definierte) Sicherheitsbits verwendet und eine Reihe zusätzlicher Sicherheitsprüfbits angehängt, um das Sicherheitscodewort zu erzeugen. Abhängig von der Länge des Sicherheitskodeworts „n“ und der Anzahl der anfänglichen Sicherheitsbits „k“ können Hamming-Codes (n, k) (wie z. B. (6, 3) und (7, 4) Codes) oder viele andere verwendet werden. Das Sicherheitscodewort „W“ erhält man durch Anhängen von n – k Sicherheitsprüfbits „SC“ an die anfänglichen Sicherheitsbits „S“ (siehe Gl. 1)

$$ W={W}_1..{W}_2..{W}_3\dots {W}_n={S}_1..{S}_2..{S}_3\dots {S}_k{SC}_1..{SC}_2..{SC}_3\dots {SC}_p $$
(1)

mit p = n – k

„Si“ ist das i-te Bit von „S“, i = 1, 2, 3…. k

„SCj“ ist das j-te Bit von „SC“, j = 1, 2, 3… p

„Wm“ ist das m-te Bit von „W“, m = 1, 2, 3… n

Wenn die Anzahl der anfänglichen Sicherheitsbits k ist, dann wird der mögliche anfängliche Sicherheitsbit-Matrixblock „SB“ dargestellt als

$$ {\mathrm{S}}_{\mathrm{B}}=\left(\begin{array}{c}{\mathrm{S}}_{11}\kern1em {\mathrm{S}}_{12}\cdot \cdots {\mathrm{S}}_{1k}\\ {}{\mathrm{S}}_{21}\kern1em {\mathrm{S}}_{22}\cdot \cdots {\mathrm{S}}_{2k}\\ {}dots \dots \dots \dots \dots \dots \dots \dots {}{\mathrm{S}}_{q1}\kern1em {\mathrm{S}}_{q2}\cdot \cdots {\mathrm{S}}_{qk}\end{array}\right) $$
(2)

wobei Sab das Element der ath-Zeile und b-ten Spalte darstellt, q = 2k = Gesamtzahl der Zeilen und k = Gesamtzahl der Spalten in SB.

In diesem Ansatz wird der (7, 4) Hamming-Code verwendet, um das Sicherheits-Codewort „W“ zu erzeugen. Man kann jedoch den Hamming-Code je nach den gewünschten anfänglichen Sicherheitsbits und der Länge des Sicherheitscodeworts wählen. Hier sind die anfänglichen Sicherheitsbits 4 und der mögliche anfängliche Sicherheitsbitmatrixblock ist (d.h., 0-15 dargestellt in binären Bits)

$$ {\mathrm{S}}_{\mathrm{B}}=\left(\begin{array}{c}0\kern0.5em 0\kern0.5em 0\kern0.5em 0\\\ {}0\kern0.5em 0\;0\kern0.5em 1\\ {}0\kern0.5em 0\;1\kern0.5em 0\\\ {}begin{array}{l}..\dots \dots \\ {}1\kern0.5em 1\kern0.5em 11\end{array}\end{array}\right) $$
(3)

Hier, in dem vorgestellten Ansatz, sind die anfänglichen Sicherheitsbits am Quellknoten 0 0 0 0 (d.h., Hop 0), bei Hop 1 sind die Sicherheitsbits 0 0 0 1 und so weiter bis Hop 15, da der vorgeschlagene Ansatz nur bis zu 15 Hops ausgelegt ist. Somit kann man einfach sagen, dass die anfänglichen Sicherheitsbits das binäre Äquivalent der Hopfenzahl sind.

$$ \mathrm{Initial}\ \mathrm{Sicherheit}\ \mathrm{bits}=\mathrm{hop}\ \mathrm{number}\ \left(\mathrm{represented}\ \mathrm{in}\ \mathrm{a}\ \mathrm{binary}\ \mathrm{system}\right) $$

Nach der Gewinnung der anfänglichen Sicherheitsbits, werden die Sicherheitsprüfbits zu ihnen hinzugefügt. Diese Prüfbits werden durch Multiplikation und Modulo-2-Addition der anfänglichen Sicherheitsbits mit der Sicherheitsmatrix gemäß Gleichung erzeugt. 4

$$ SC=S\times {SP}_m $$
(4)

wobei SPm die (k × p) Sicherheitsmatrix ist, die wie folgt dargestellt wird

$$ {SP}_m=\left(\begin{array}{c}{l}_{11}\kern1em {l}_{12}\kern0.5em \cdot \cdots {l}_{1p}\\ {}{l}_{21}\kern1em {l}_{22}\cdot \cdots {l}_{2p}\\\ {}\dots \dots \dots \dots \dots \dots \dots {}{L}_{k1}\kern1em {l}_{k2}\cdot \cdots {k}_{kp}\end{array}\right) $$
(5)

wobei „lrf“ das Element der r-ten Zeile und f-ten Spalte darstellt.

Die Sicherheitsmatrix ist die Paritätsmatrix des (7, 4)-Hamming-Codes, die man entweder aus seiner Paritätsprüfungsmatrix oder aus seiner Generatormatrix erhält. Diese beiden Matrizen sind bereits für Hamming-Codes definiert. In dem vorgestellten Modell ist die SPm allen Quellknoten im Netz gemeinsam und ist definiert als

$$ {SP}_m=\left(\begin{array}{c}1\kern0.62em 1\kern1em 0\\ {}0\kern1em 1\kern1em 1\\ {}1\kern1em 1\kern0.62em 1\kern1em 0\kern1em 1\end{array}\right) $$

Beim Quellknoten beispielsweise sind die anfänglichen Sicherheitsbits (0 0 0 0); daher sind die Sicherheitsprüfbits

$$ {SC}_{h0}={S}_{h0}\mal {SP}_m=\left\mal \left(\begin{array}{c}1\kern1em 1\kern1em 0\\\ {}0\kern1em 1\kern0.24em 1\\\ {}1\kern0.24em 1\kern0.24em 1\\\ {}1\kern0.24em 0\kern0.24em 1\end{array}\right)=\left(0\kern0.62em 0\kern0.24em 0\kern0.62em 0\kern0.24em 1\end{array}\right) $$

wobei SChr die Prüfbits beim r-ten Hop sind

Shr sind die Sicherheitsbits beim r-ten Hop, r = 0, 1, 2, 3 ….

Das Sicherheitscodewort am Quellknoten ergibt sich also durch Anhängen von SCℎ0 an die Sicherheitsbits des Quellknotens und kann dargestellt werden als

$$ {W}_{h0}={S}_1\kern0.5em {S}_2\kern0.5em {S}_3\kern0.5em {S}_4\kern0.5em {C}_1\kern0.5em {C}_2\kern0.5em {S}_3=0\kern0.5em 0\kern0.5em 0\;0\kern0.5em 0\kern0.5em 0\kern0.5em 0 $$

wobei Wℎr das Sicherheitscodewort bei Hop r ist, r = 0, 1, 2,….

Nach der Auswertung des Sicherheitscodeworts wird der quadratische Rest verwendet, um zusätzliche Sicherheit zu bieten, da nur Hamming-Codes möglicherweise nicht effizient genug sind, um die gewünschte Sicherheit für WSNs zu bieten. Quadratische Residuen sind benutzerdefiniert, sicher, einfach zu implementieren und leicht verfügbar. In diesem Ansatz wird der Rest von 7 berücksichtigt, da die Länge des erhaltenen Sicherheits-Codeworts 7 beträgt und die maximalen Bits im Sicherheits-Codewort abdeckt, um die Sicherheit zu erhöhen. Die Reste von 7 sind 1, 2 und 4; in dem hier vorgestellten Ansatz werden diese Bitpositionen (d. h. 1, 2 und 4) im Codewort ergänzt. Das erzeugte endgültige Sicherheitscodewort kann also wie folgt dargestellt werden:

$$ {R}_{w0}=1\kern1em 1\kern0.24em 0\kern0.62em 1\kern0.62em 0\kern0.62em 0\kern0.24em 0 $$

wobei „Rw0“ das endgültige Sicherheitscodewort (nach Komplementierung der Restpositionen in Wℎ0) beim r-ten Hop ist. Neben der Synchronisierung des endgültigen Sicherheitskodewortes wird die Packet Delivery Ratio (PDR) (siehe Gl. 6) der Knoten kontinuierlich überwacht. Nur wenn der PDR-Wert akzeptabel ist, werden die Daten übertragen, und wenn er über der akzeptablen Grenze liegt, werden die Daten nicht weitergegeben. Auf ähnliche Weise wird dieser Prozess bis zum Zielknoten fortgesetzt.

$$ \mathrm{PDR}=\mathrm{No}.\mathrm{of}\ \mathrm{R}.\mathrm{P}/\mathrm{No}.\mathrm{of}\ \mathrm{T}.\mathrm{P} $$
(6)

wobei R.P die empfangenen Pakete und T.P die gesendeten Pakete sind

Knotenanpassungsprozess

Abbildung 1 zeigt ein Multi-Hop-Netzwerk, in dem der Quellknoten über Zwischenknoten mit dem Zielknoten kommuniziert. Der Quellknoten sendet Rw0 an alle seine Nachbarknoten, die einen Hop vom Quellknoten entfernt sind. Die erforderlichen Vorgänge bei den verschiedenen Sprüngen werden in den Abschnitten 4.1.1 und 4.1.2 erörtert.

Abbbb. 1
figure1

Multi-Hop-Netzwerk mit rivalisierendem Knoten

Am Hop 1

Die anfänglichen Sicherheitsbits sind 0 0 0 1; die Sicherheitsprüfbits werden durch Multiplikation dieser Bits mit 푆푃푚

$$ {C}_{h1}{\displaystyle \begin{array}{c}={S}_{h1}\times {SP}_m\\ {}=\left(1\kern1.12em 0\kern1.5em 1\right)\end{array}} $$

Und das Codewort an Hop 1 kann wie folgt ausgewertet werden

$$ {W}_{h1}=0\kern1em 0\kern0.62em 0\kern0.24em 1\kern0.62em 1\kern0.5em 0\kern0.24em 1 $$$

Komplementierung der Reste (von 7) Positionen (d.h., erste, zweite und vierte Position) in Wℎ1, wird das endgültige Sicherheitscodewort bei Hop 1 wie folgt dargestellt

$$ {R}_{w1}=1\kern1em 1\kern1em 0\kern1em 0\kern1em 1\kern1em 0\kern1em 1 $$

Wenn der Nachbarknoten Rw1 als Bestätigung an den Quellknoten sendet und sein PDR-Wert akzeptabel ist, dann wird der Quellknoten die ursprünglichen Daten an diesen Nachbarknoten übertragen. Die Bestätigung sollte die vorgesehene Time to Live (TTL) nicht überschreiten. Nun wird dieser Nachbarknoten zum Quellknoten für andere Knoten im Netz und überträgt Rw1 an seine Nachbarknoten.

Bei Hop 2

Die Sicherheitsbits sind 0 0 1 0, und die Prüfbits sind

$$ {\displaystyle \begin{array}{l}{C}_{h2}={S}_{h2}\times {SP}_m\\ {}kern2.5em =\left(1\kern1em 1\kern0.62em 1\right)\end{array}} $$
$$ {W}_{h2}=0\kern1em 0\kern0.62em 1\kern0.62em 0\kern1em 1\kern1em 1\kern1em 1 $$$

Durch Komplementierung der Restpositionen in Wℎ2 kann das endgültige Sicherheitscodewort bei Hop 2 wie folgt berechnet werden

$$ {R}_{w2}=1\kern0.5em 1\kern0.5em 1\kern0.5em 1\kern0.5em 1\;1\;1 $$

Wenn der Quellknoten mit Rw2 quittiert wird, dann leitet er die Daten an den Knoten weiter, von dem er die Quittung erhalten hat. Ist dies nicht der Fall, wird der Knoten als rivalisierender Knoten betrachtet und die Daten werden nicht an diesen Knoten übertragen. Dieser Prozess wird fortgesetzt, bis die Informationen oder Daten vom Zielknoten empfangen werden. Dieser Prozess lässt sich anhand des Protokolldiagramms leicht nachvollziehen (siehe Abb. 2). Da das Sicherheitscodewort bei jedem Hop geändert wird und es für die rivalisierenden Knoten sehr schwierig wird, den aktiven Knoten im Netzwerk in die Irre zu führen, verbessert der vorgestellte Ansatz nicht nur die Authentifizierung des aktiven Knotens, sondern bietet auch mehr Vertraulichkeit für die Endknoten, indem mehrere Codewörter im Netzwerk entworfen werden. Aus Abb. 2 ist ersichtlich, dass die Daten vom Quellknoten an den Zwischenknoten 1 (IN1) übertragen werden, der die positive Bestätigung (+ACK), d.h. 푅푤1, an den Quellknoten gibt. Sobald die Daten von IN1 empfangen wurden, fungiert er als Quellknoten für seine Nachbarknoten und sendet 푅푤1 an diese weiter. Die Daten werden nicht an den Zwischenknoten 2 (IN 2) übertragen, da er IN1 eine negative Bestätigung (-ACK) gibt und daher als rivalisierender Knoten betrachtet wird.

Abb. 2
figure2

Protokolldiagramm