Java Verschüsseln mit mehreren Schlüsseln

ryk

BAZINGA!
ID: 66395
L
4 Mai 2006
3.313
115
Hallo,
ich arbeite seit längerem an einem kleinen OS-Tool mit und bin gerade dabei eine Verschlüsselung eines internen Binärbaums umzusetzen.
Darin sollen alle Leaf-Knoten einen eigenen uniquen Schlüssel haben und der jeweilige Parentknoten soll so verschlüsselt werden, dass er jeweils mit einem der beiden Childknoten entschlüsselt werden kann. Quasi eine Bottom-Up Ver-/Entschlüsselung. Es kommt dabei eine symetrische Verschlüsselung (vorzugsweise AES) zum Gebrauch. Ich habe mir die java.security API schon ein wenig durchgelesen, aber nichts passendes finden können.

Hat vllt jemand eine Idee wie ich das ganze umsetzen könnte und gibt es dafür vllt schon eine schöne Lib? :D

Da der Baum wohl in Zukunft ein Werte je Knoten haben wird, sollte das ganze auch mit vier Schlüsseln funktionieren.

Grüße
ryk
 
Zuletzt bearbeitet:
Die Frage die noch zu klären wäre ist, welcher der beiden Childknoten für die Verschlüsselung des Vaters herhält?
Es sei Du willst beide Childschlüssel dafür verwenden.
Dann bliebe aber immer noch das Problem, Du hast einen Schlüssel mit dem du alle Childspitzen verschlüsselst, welche aber keine gleichheit im Haben sollten (ich meine Gleichheit im Kryptografischen Sinne).

BSP:

Baumtiefe = 3
Schlüssel = K
5 Childs = { 51,52,53,54,55 }

Wenn Child 51 mit K verschlüsselt ist, sollte das Ergebnis G51 != G52 sein, obwohl Child 52 ebensomit K vershlüsselt wurde...
 
Danke für deine Antwort. Also es sollen beide Knoten für die Verschlüsselung des Vaterknotens gleichermaßen verantwortlich sein, da die Childknoten sich gegenseitig nicht kennen.

Bsp:

------------0-------------
----1----------------4----
2------3------- 5--------6

Blatt 2 hat Schlüssel ABC
Blatt 3 hat Schlüssel DEF
Blatt 5 hat Schlüssel GHI
Blatt 6 hat Schlüssel JKL

Vaterknoten 1 soll dann mit ABC und DEF verschlüsselt werden, sodass jeweils mit ABC oder DEF dieser wieder entschlüsselt werden kann ohne das 2 und 3 sich gegenseitig kennen.

Vaterknoten 4 soll mit Schlüssel von 5 und 6 verschlüsselt werden, und Rootknoten 0 wiederrum mit den Schlüsseln 1 und 4.

Die Frage ist nun, wie man aus zwei Schlüssel einen neuen erzeugt, der durch einen der beiden Erzeugerschlüssel wieder entschlüsselt werden kann.
 
Vaterknoten 1 soll dann mit ABC und DEF verschlüsselt werden, sodass jeweils mit ABC oder DEF dieser wieder entschlüsselt werden kann ohne das 2 und 3 sich gegenseitig kennen.

das funktioniert nicht, widerspricht es doch elementaren Regeln der Kryptographie:
wenn ich Daten mit 2 Schlüsseln verschlüsseln möchte (also 2 konkatenierte Operationen), benötige ich auch 2 Entschlüsselungsroutinen und nicht nur eine.

Die Frage ist nun, wie man aus zwei Schlüssel einen neuen erzeugt, der durch einen der beiden Erzeugerschlüssel wieder entschlüsselt werden kann.
das kann auch nicht gehen da für 2 Schlüssel K1 und K2 definiert ist, dass wenn K1 != K2 auch gilt E(K1) != E(K2).
Da für ein Schlüssel K3 = K1 + K2 (gesuchte Operation) auch wieder gelten würde, dass E(K1) != E(K3) und E(K2) != E(K3) funktioniert das eben nicht.
 
Zuletzt bearbeitet:
es wird auch in Zukunft keinerlei Art der kryptographischen Algorithmen geben, die soetwas auch nur im Ansatz realisieren.
Ein einzelner Schlüssel ist nur zum entschlüsseln nötig nicht 4 oder 5 wie Du es willst.
Nehmen wir mal an, Du hast einen Baum der Tiefe 20 ( gleichmäßig aufgespannt = worst case )...
2^20 Schlüssel müsstest Du also irgendwo notieren, um den Spaß hinterher wieder zu entschlüsseln.
Wie hohl is das ???

@ryk: Finger weg von dem was Du machen willst !
 
Das was ich mit dem Baum machen will ist schon ein richtiges Konzept. Es gibt wissenschaftliche Arbeiten die arbeiten mit 2^32 Schlüsseln (als weit mehr als 4 Mrd). In sehr komplexen Systemen ist das keine Größe, zumal das was ich mache eine Art Erweiterung für Hadoop ist und der Baum auch nie komplett entschlüsselt werden soll, sondern je nach Recht nur immer ein gewissen Teilbaum. Der Unterschied ist nur das bei den Arbeiten immer ein öffentlicher Superschlüssel verwendet wird, was ich zuerst nicht wollte, aber wie ich mittlerweile verstanden habe, wird meine erste Idee mit den beiden Schlüsseln so nicht funktionieren. Ich werde mir mal überlegen was eine gute Alternative ist.

es wird auch in Zukunft keinerlei Art der kryptographischen Algorithmen geben, die soetwas auch nur im Ansatz realisieren.
Ein einzelner Schlüssel ist nur zum entschlüsseln nötig nicht 4 oder 5 wie Du es willst.
Nehmen wir mal an, Du hast einen Baum der Tiefe 20 ( gleichmäßig aufgespannt = worst case )...
2^20 Schlüssel müsstest Du also irgendwo notieren, um den Spaß hinterher wieder zu entschlüsseln.
Wie hohl is das ???

@ryk: Finger weg von dem was Du machen willst !
 
Wo wird denn diese Art der Verschlüsselung benutzt ?
Für mich hat sich der Sinn noch nicht erschlossen...
Wenn es einen Superschlüssel gibt, ist dieses Verfahren nach kryptografischen Standards nicht sicher.

Mann könnte ein Verfahren aufbauen, anhand der Tiefe des Zielknotens im Baum, mit der anzahl der vorher durchlaufenden Knoten, etc ...
Was allerdings kein sicheres Verfahren mehr sein wird, denn solche Sachen sind dem "Code-Knacker" kein Dorn im Auge.