Concealed Data Aggregation: Difference between revisions
(21 intermediate revisions by the same user not shown) | |||
Line 60: | Line 60: | ||
** eine große Ganzzahl <math>g</math> |
** eine große Ganzzahl <math>g</math> |
||
<math>g</math> sollte vielen kleinen Divisoren haben und gleichzeitig sollten vielen kleinen Ganzzahlen, die kleiner als <math>g</math> sind, existieren, die modulo <math>g</math> invertiert werden können |
<math>g</math> sollte vielen kleinen Divisoren haben und gleichzeitig sollten vielen kleinen Ganzzahlen, die kleiner als <math>g</math> sind, existieren, die modulo <math>g</math> invertiert werden können |
||
* der geheime Schlüssel: |
|||
** <math>k = (r{,}g^')</math> |
|||
<math>r \in {Z}_g</math> |
** <math>r \in {Z}_g</math> ist so zu wählen, daß <math>r^{-1} \bmod g</math> existiert und <math>\log_{g^'} g</math> eine Ganzzahl mit kleinem <math>g^'</math> ist |
||
Klartext: <math>{Z} _{g^'}</math><br/> |
* Klartext: <math>{Z} _{g^'}</math><br/> |
||
Ciphertext: <math>({Z}_g)^d</math> |
* Ciphertext: <math>({Z}_g)^d</math> |
||
====Verschlüsselung:==== |
====Verschlüsselung:==== |
||
<math>{a} \in {Z}_{g^'}</math> wird zufällig in ein Geheimnis <math>a_1,\ldots,a_d</math> zerlegt, so daß <math>a = \sum_{j=1}^d a_j\ \bmod\ g^'</math> und <math>a_j \in {Z}_{g^'}</math> gilt |
|||
Nun wird folgende Berechnung durchgeführt: |
Nun wird folgende Berechnung durchgeführt: |
||
<math>E_k(a) = (a_1r^1\ \bmod\ g, a_2r^2\ \bmod\ g,\ldots,a_dr^d\ \bmod\ g)</math> |
<math>E_k(a) = (a_1r^1\ \bmod\ g, a_2r^2\ \bmod\ g,\ldots,a_dr^d\ \bmod\ g)</math> |
||
====Entschlüsselung:==== |
====Entschlüsselung:==== |
||
Um <math>a_j \bmod\ g</math> zu erhalten, muß die j-te Koordinate durch <math>r^{-j} \bmod g</math> berechnet werden. |
|||
<math>D_k (E_k (a)) = \sum_{j=1}^d (a_j\ \bmod\ g^')</math> |
Um <math>a</math> zu erhalten, muß <math>D_k (E_k (a)) = \sum_{j=1}^d (a_j\ \bmod\ g^')</math> berechnet werden. |
||
Die Ciphertext-Operation <math>\ +</math> wird komponentenweise durchgeführt. |
|||
Für die Ciphertext-Operation <math>\times</math> werden alle Terme in <math>Z_g</math> kreuzmultipliziert, wobei wir beim Grad <math>m_1</math> von <math>a</math> und dem Grad <math>m_2</math> und einen Term mit dem Grad <math>(m_1 + m_2)</math> erhalten. Terme mit dem gleichen Grad werden einfach addiert. |
|||
====Data Aggregation:==== |
|||
Die Sensor-Knoten <math>S_1 \ldots S_n \in S_t</math> verschlüsseln ihre aufgezeichneten Daten <math>s_1, \ldots, s_n</math> woraus sich <math>s^'_1 = E_{(r,g^')}(s_1), \ldots, s^'_n = E_{(r,g^')}(s_n)</math> ergibt. Danach werden die verschlüsselten Daten an einen Aggregator_knoten <math>A \in A_t</math> gesendet. <math>A</math> führt auf den verschlüsselten Daten Operationen aus und berechnet <math>y^' = f(s^'_1, \ldots, s^'_n)</math>. Anschließend wird <math>y^'</math> zum Zielknoten <math>R</math> gesendet. <math>R</math> entschlüsselt <math>y^'</math> und leitet die akkumulierten Daten mit <math>y = D_{(r,g^')}(y^')</math> ab. |
|||
In diesem Verfahren ist es unerheblich, wie viele Hops die Quell-Knoten, die die Daten verschlüsseln, entfernt sind. Da die Auswahl der Aggregator-Knoten nicht fest steht und immer wider neu ausgehandelt werden kann, werden die Daten zeitlich nicht synchronisiert sein. |
|||
===Was machen wir mit dem Schlüssel?=== |
===Was machen wir mit dem Schlüssel?=== |
||
Der einfachste Weg wäre der eines netzwerkweiten Schlüssel einem Network-Shared-Key. Damit würden wir eine größtmögliche Routing-Flexibilität erreichen und hätten ein simples Keymanagement. Doch würde das auf Kosten der Sicherheit erkauft werden. Wenn nur ein Knoten korrumpiert wird, ist sofort das gesamte Netzwerk betroffen, da damit der Netzwerkschlüssel bekannt ist und der ganze Netzwerkverkehr überall mitgelauscht und entschlüsselt werden kann. |
|||
Ein anderer Ansatz ist das Topology-Aware-Group-Keying. Damit wird das Netzwerk in verschiedene Regionen aufgeteilt, die jeden einen Netzwerkschlüssel haben. Da die Größe der Regionen kann flexibel festgelegt werden. Durch diesen Ansatz haben wir weiterhin eine hohe Routingflexibilität. Das Keymanagement fällt relativ moderat aus und ist von der Anzahl der Regionen abhängig. Wenn nun ein Knoten im Netzwerk korrumpiert wird, verlieren wir die Sicherheit genau einer Region. Alle anderen Regionen sind davon nicht betroffen. Allerdings lassen sich die Daten nur innerhalb einer Region beliebig routen. |
|||
⚫ | |||
⚫ | |||
Eine andere Möglichkeit ist das Topology-aware-Group-keying. Wir haben weiterhin eine hohe Routingflexibilität und ein moderates Key-Management. Zusätzlich ist durch einen korrumpierten Knoten nicht das ganze Netzwerk, sondern nur eine Region des Netzwerkes betroffen. |
|||
⚫ | |||
⚫ | |||
Da wir ein selbstorganisierendes Netzwerk haben wollen, bleibt die Frage, wie die Schlüssel verteilt werden können, ohne in die Konfiguration eines jeden Knoten eingreifen zu müssen, oder Schwachstellen, die das gesamte Netzwerk kompromittieren würden, aufzutun. |
|||
Es gibt 4 Phasen: |
|||
Die Schlüsselverteilung läuft dabei in 4 Phasen ab: |
|||
====1.Pre-Configuration:==== |
====1. Pre-Configuration:==== |
||
Bevor die Sensorknoten ausgeliefert werden, wird jeder Knoten vorkonfiguriert und mit dem gleichen Schlüsselpool <math>K^*</math> und deren Schlüssel IDs <math>ID_k, k \in K^*</math>. Dabei gilt <math>|K^*| \ll |K|</math> und <math>|K^*| \ll |N|</math>. Die größe des Schlüsselpools ist von der Größe des Speicherplatzes auf den Knoten begrenzt. <math>|K*|</math> ist unabhängig von <math>|N|</math> und skaliert auch in großen Netzwerken. |
|||
====2. |
====2. Roll-Out:==== |
||
Die Knoten werden zufällig in einer Region verteilt und der Sink-Node sollte im Zentrum plaziert werden. |
Die Knoten werden zufällig in einer Region verteilt und der Sink-Node sollte im Zentrum plaziert werden. Jeder KNoten enthält den gleichen Schlüsselpool <math>K^*</math> und die zugehörigen IDs. |
||
====3.Bootstrapping==== |
====3. Bootstrapping==== |
||
Eine Teilmenge von Knoten, nahe des Sink-Nodes wählt eine Schlüsselliste aus und |
Eine Teilmenge von Knoten, nahe des Sink-Nodes wählt eine Schlüsselliste <math>\{k_1,\ldots,k_r\} \in K^*</math>aus und sendet deren IDs <math>ID_{k_1}\Vert\ldots \Vert ID_{k_r}</math> an alle umliegenden Knoten. |
||
Die Knoten, die diese Liste empfangen löschen entweder ihren gesamten Schlüsselpool, oder wählen zufällig einen Schlüssel aus der Liste |
Die Knoten, die diese Liste empfangen löschen entweder ihren gesamten Schlüsselpool, oder wählen zufällig einen Schlüssel aus der Liste <math>k \in \{k_1,\ldots,k_r\}</math> aus.<math>ID_{k_1}\Vert\ldots\Vert ID_{k_r}\to del(K^*)</math>, mit <math>P\left(i,l\right)</math> oder <math>del (K^*) \setminus \{k\}</math>, sonst. |
||
Was die Knoten tun, hängt von einer Wahrscheinlichkeitsfunktion, basierend auf der Distanz und Maximaldistanz der Knoten, ab. |
|||
Werden noch andere Schlüssellisten empfangen, werden diese ignoriert. |
Werden noch andere Schlüssellisten empfangen, werden diese ignoriert. |
||
Die Knoten |
Die Knoten senden <math>ID_{k_1} \| \dots \| ID_{k_r}</math> an alle noch weiter entfernten Knoten. |
||
====4.Cleansing==== |
====4. Cleansing==== |
||
Die Knoten, die keine Nachrichten nach einer bestimmten Zeit nach dem Roll-Out empfangen haben, löschen ihren gesamten Schlüsselpool, so daß unerreichbare Knoten keine sensiblen Daten mehr speichern. |
Die Knoten, die keine Nachrichten <math>ID_{k_1}\Vert\ldots\Vert ID_{k_r}</math> nach einer bestimmten Zeit nach dem Roll-Out empfangen haben, löschen ihren gesamten Schlüsselpool <math>K^*</math>, so daß unerreichbare Knoten keine sensiblen Daten mehr speichern. |
||
Latest revision as of 16:28, 10 January 2007
Main Page --> S2006-IPI --> 15. Security in DTN
Concealed Data Aggregation for Reverse Multicast Traffic in Sensor Networks
NOT THE FINAL VERSION
UNDER HEAVY DEVELOPMENT
Szenario:
Wir haben ein Sensor Netzwerk gegeben, welches eine baumartige Struktur besitzt, so daß ein "Reverse Multicast" möglich ist. Die einzelnen Knoten haben folgende Eigenschaften:
- den Aufgaben entsprechende Sensoren (z.B. Wärmesensoren für die Erkennung von Waldbränden)
- eine einfache CPU ( meist keine FPU, auf niedrigen Energieverbrauch optimiert)
- eine Funk-Netzwerkschnittstelle
- die Stromversorgung erfolgt durch Batterie oder Solarzellen
- die Knoten sind nicht fälschungssicher
Die Sensorknoten werden über ein Gebiet verteilt und formen ein selbstorganisierendes Multihop-Netzwerk. Wir gehen davon aus, daß die Knoten in dem Sensornetzwerk stationär sind, obwohl auch mobile Knoten denkbar sind.
Folgende Anforderungen sind für das Szenario entscheidend:
- Reduzierung des Energieverbrauchs
- die Möglichkeit der Zusammenfassung von Daten in den Knoten
- statistische Berechnungen auf den Daten im Netzwerk
Das hier dargestellte Netzwerk ist statisch mit dicht verteilten Knoten. Durch den Graphen kann dieses Netzwerk beschrieben werden. Dabei sind die Knoten und die Kanten. ist der Zielknoten, mit bezeichnen wir die Menge der Aggregator-Knoten, kennzeichnet die Menge der Forwarding-Knoten, die Menge der Sensorknoten und bezeichnet die Menge der Idle-Knoten. Die Menge der Aggregator-Knoten zum Zeitpunkt kann sich von der Menge der Aggregator-Knoten zum Zeitpunkt unterscheiden. Dieses Verhalten trifft auch auf die Forwarding-, Sensor- und Idle-Knoten zu. Nur der Zielknoten ist zu jedem Zeitpunkt fest. In diesem Szenario gehen wir von einem Verhältnis des Energieverbrauchs der einzelnen Operationen aus:
- Senden/Empfangen 100 Energieeinheiten
- Berechnungen 10 Energieeinheiten
- Schlafzustand 1 Energieeinheit.
Das Problem:
Wir möchten Nachrichten in unserem Netzwerk vertraulich übermitteln, das heißt der Netzwerkverkehr muß gegen Abhören geschützt werden. Dafür müssen wir zu Verschlüsselung greifen. Weitere wichtige Sicherheitsaspekte sind die Integrität der Knoten, sprich die Fälschungssicherheit der Knoten, was durch die Authentifizierung der Knoten untereinander gewährleistet werden könnte. Dieses Problem wird an dieser Stelle aber nicht betrachtet, da wir im folgenden mit der fehlenden Fälschungssicherheit zu leben lernen werden.
Die Lösung:
Die einfachste Methode, die Daten auf dem Weg zu verschlüsseln, ist eine Hop-by-Hop-Verschlüsselung. Das heißt, jeder Knoten verschlüsselt die Daten und sendet sie anschließend an den nächsten Knoten. Der entschlüsselt sie wieder, aggregiert die Daten eventuell, verschlüsselt sie wieder und sendet sie weiter. Für ein zuverlässiges Sicherheitskonzept ist es notwendig für jedes Knotenpaar innerhalb des Netzwerks unterschiedliche Schlüssel zu verwenden. Die statistischen Berechnungen lassen sich leicht auf den Knoten realisieren, da alle erhaltenen Daten auf dem Knoten unverschlüsselt sind. Ein großes Problem ist allerdings die Unflexibilität. Wenn ein Forwarding-Knoten ausfällt, lassen sich die Daten, die über diesen Knoten geleitet wurden, nicht über andere Knoten leiten, da dafür die entsprechenden Schlüsselpaare fehlen. Wenn sehr zentrale Knoten in unserem Netzwerk ausfallen, gehen dadurch große Teile des Netzwerkes verloren. Schlüssel für Alternativrouten zu berechnen und auf den einzelnen Knoten vorrätig zu halten, ist aus Kapaziätsgründen keine Lösung. Ein weiterer Nachteil ergibt sich aus der Manipulierbarkeit der Knoten, welche sich aus der fehlenden Fälschungssicherheit ergibt. Wenn ein Angreifer nur einen Knoten unter seine Kontrolle bringen kann, ist der gesamte Netzwerkverkehr der über diesen Knoten läuft, durch die vollständige Entschlüsselung aller empfangenen Daten, kompromittiert. Dies wird besonders kritisch, wenn zentrale Knoten angegriffen werden, da in diesem Fall ein Großteil des Netzwerkverkehrs mitgelauscht werden kann. Ein großes Problem bereitet auch der Energieaufwand für Ver- und Entschlüsselung, der der Reduzierung des Energiebedarfs zuwiderläuft.
Ein andere Möglichkeit die Daten zu verschlüsseln, ist die End-zu-End-Verschlüsselung. Vorteilhaft sind der niedrigere Energieverbrauch, da auf den Forwarding-Knoten nicht entschlüsselt werden müssen, beziehungsweise nicht entschlüsselt werden können. Das Routing kann flexibel gehalten werden, da keine Notwendigkeit besteht, die Daten über bestimmte Knoten zu routen. Jeder sich in der Nähe befindliche Knoten, kann als Forwarding-Knoten fungieren und die verschlüsselten Daten weiterleiten. Wenn ein Knoten kompromittiert wird, stellt dies kein gravierendes Problem dar, da nur die auf dem Knoten gewonnen Daten unverschlüsselt, alle von anderen Knoten empfangenen Daten sind verschlüsselt und können nicht einfach entschlüsselt werden. Das gesamte System bietet eine Gute Verschlüsselung der Daten. Problematisch wird bei steigender Zahl der Knoten die hohe Komplexität des Systems, welche aber beherrschbar bleibt. Doch wie lassen sich in einem Netzwerk mit End-zu-End-Verschlüsselung Berechnungen auf den gesammelten Daten anstellen? Dafür lassen sich sogenannte Privacy-Homomorphismen verwenden. Mit Hilfe derer auf den verschlüsselten Daten Berechnungen angestellt werden können ohne diese in irgendeiner Weise zu entschlüsseln. Daten können mit Hilfe der Privacy-Homomorphismen auch aggregiert werden, um sie gebündelt weiterzuleiten, was unter anderem die Energieeffizienz erhöht. Es sind effiziente sysmetrische Verschlüsselungen bekannt, unter anderem der Privacy-Homomorphismus von Domingo-Ferrer, auf den im folgenden näher eingegangen wird. Wünschenswert wäre eine effiziente asymmetrische Verschlüsselung um die Vorteile einer Public-Private-Key-Verschlüsselung nutzen zu können, doch leider ist bisher keine effizienter Ansatz bekannt.
Doming-Ferrer-PH:
Aufbau:
- die öffentlichen Parameter:
- eine nichtnegative ganze Zahl
- eine große Ganzzahl
sollte vielen kleinen Divisoren haben und gleichzeitig sollten vielen kleinen Ganzzahlen, die kleiner als sind, existieren, die modulo invertiert werden können
- der geheime Schlüssel:
- ist so zu wählen, daß existiert und eine Ganzzahl mit kleinem ist
- Klartext:
- Ciphertext:
Verschlüsselung:
wird zufällig in ein Geheimnis zerlegt, so daß und gilt
Nun wird folgende Berechnung durchgeführt:
Entschlüsselung:
Um zu erhalten, muß die j-te Koordinate durch berechnet werden.
Um zu erhalten, muß berechnet werden.
Die Ciphertext-Operation wird komponentenweise durchgeführt.
Für die Ciphertext-Operation werden alle Terme in kreuzmultipliziert, wobei wir beim Grad von und dem Grad und einen Term mit dem Grad erhalten. Terme mit dem gleichen Grad werden einfach addiert.
Data Aggregation:
Die Sensor-Knoten verschlüsseln ihre aufgezeichneten Daten woraus sich ergibt. Danach werden die verschlüsselten Daten an einen Aggregator_knoten gesendet. führt auf den verschlüsselten Daten Operationen aus und berechnet . Anschließend wird zum Zielknoten gesendet. entschlüsselt und leitet die akkumulierten Daten mit ab. In diesem Verfahren ist es unerheblich, wie viele Hops die Quell-Knoten, die die Daten verschlüsseln, entfernt sind. Da die Auswahl der Aggregator-Knoten nicht fest steht und immer wider neu ausgehandelt werden kann, werden die Daten zeitlich nicht synchronisiert sein.
Was machen wir mit dem Schlüssel?
Der einfachste Weg wäre der eines netzwerkweiten Schlüssel einem Network-Shared-Key. Damit würden wir eine größtmögliche Routing-Flexibilität erreichen und hätten ein simples Keymanagement. Doch würde das auf Kosten der Sicherheit erkauft werden. Wenn nur ein Knoten korrumpiert wird, ist sofort das gesamte Netzwerk betroffen, da damit der Netzwerkschlüssel bekannt ist und der ganze Netzwerkverkehr überall mitgelauscht und entschlüsselt werden kann.
Ein anderer Ansatz ist das Topology-Aware-Group-Keying. Damit wird das Netzwerk in verschiedene Regionen aufgeteilt, die jeden einen Netzwerkschlüssel haben. Da die Größe der Regionen kann flexibel festgelegt werden. Durch diesen Ansatz haben wir weiterhin eine hohe Routingflexibilität. Das Keymanagement fällt relativ moderat aus und ist von der Anzahl der Regionen abhängig. Wenn nun ein Knoten im Netzwerk korrumpiert wird, verlieren wir die Sicherheit genau einer Region. Alle anderen Regionen sind davon nicht betroffen. Allerdings lassen sich die Daten nur innerhalb einer Region beliebig routen. Das Problem bei diesem Ansatz besteht in der Abwägung von Sicherheit und Routingflexibilität. Es nicht möglich gleichzeitig höchste Sicherheit und höchste Flexibilität gleichzeitig zu haben.
Die Schlüsselverteilung
Da wir ein selbstorganisierendes Netzwerk haben wollen, bleibt die Frage, wie die Schlüssel verteilt werden können, ohne in die Konfiguration eines jeden Knoten eingreifen zu müssen, oder Schwachstellen, die das gesamte Netzwerk kompromittieren würden, aufzutun. Die Schlüsselverteilung läuft dabei in 4 Phasen ab:
1. Pre-Configuration:
Bevor die Sensorknoten ausgeliefert werden, wird jeder Knoten vorkonfiguriert und mit dem gleichen Schlüsselpool und deren Schlüssel IDs . Dabei gilt und . Die größe des Schlüsselpools ist von der Größe des Speicherplatzes auf den Knoten begrenzt. ist unabhängig von und skaliert auch in großen Netzwerken.
2. Roll-Out:
Die Knoten werden zufällig in einer Region verteilt und der Sink-Node sollte im Zentrum plaziert werden. Jeder KNoten enthält den gleichen Schlüsselpool und die zugehörigen IDs.
3. Bootstrapping
Eine Teilmenge von Knoten, nahe des Sink-Nodes wählt eine Schlüsselliste aus und sendet deren IDs an alle umliegenden Knoten. Die Knoten, die diese Liste empfangen löschen entweder ihren gesamten Schlüsselpool, oder wählen zufällig einen Schlüssel aus der Liste aus., mit oder , sonst. Was die Knoten tun, hängt von einer Wahrscheinlichkeitsfunktion, basierend auf der Distanz und Maximaldistanz der Knoten, ab. Werden noch andere Schlüssellisten empfangen, werden diese ignoriert. Die Knoten senden an alle noch weiter entfernten Knoten.
4. Cleansing
Die Knoten, die keine Nachrichten nach einer bestimmten Zeit nach dem Roll-Out empfangen haben, löschen ihren gesamten Schlüsselpool , so daß unerreichbare Knoten keine sensiblen Daten mehr speichern.
Main Page --> S2006-IPI --> 15. Security in DTN