Hi,
ich komme auf keinen grünen Zweig. Ich hoffe jemand von euch hat eine Idee wie ich meine Anforderung umsetzen kann. Ich weiß jetzt echt nicht mehr weiter.
Ich habe eine Java Application welche an Kunden herausgegeben wird. Diese App schickt einen Datensatz an einen Datenbank-Server welcher durch eine Unique ID gekennzeichnet ist. Wird ein neuer Datensatz mit der selben Unique ID geschickt, so muss der vorherige Datensatz geupdated werden und kein neuer angelegt.
Dann gibt es eine zweite App, welche nur ausgewählte Personen bekommen (Und die auch nich in Java sein muss) mit der man die verschlüsselten Daten komplett vom Server zieht (Es werden maximal so 500-1000 Datensätze sein, von daher ist es nicht schlimm, dass durch die verschlüsselung die DB eigentlich ausgehebelt wird), die diese Daten dann entschlüsselt und man sie sich ansehen und editieren kann.
Jetzt kommen die Anforderungen die erfüllt werden müssen:
Die Unique ID selber muss verschlüsselt auf dem Server sein!
Der Server selber darf die Daten nciht entschlüsseln können!
Der Schlüssel zum Entschlüsseln darf nicht in der Java App vorhanden sein (Zu leicht zu decompilieren)!
Ich dachte also, ich mache eine asynchrone Verschlüsselung und gebe der Java App nur den Public key. Das funktioniert so aber nicht, da ich mit einer RSA Verschlüsselung ja nur KeyLength/8-11 Zeichen verschlüsseln kann. Mache ich eine synchrone Verschlüsselung, dann ist der Key zum Entschlüsseln auch in der Java App. Da kann ich mir das Verschlüsseln auch gleich sparen.
Die einzige Idee die ich jetzt noch hätte wäre, dass ich bei jedem Verschlüsseln in der Java App einen neuen synchronen Key erzeuge, damit verschlüssele und dann diesen Key mit dem RSA Public key verschlüssele und das Ganze dann an denr Server schicke. Das würde aber bedeuten, dass die App die die Daten entschlüsselt, für jeden Datensatz erstmal den synchronen Key mit seinem private key entschlüsseln muss um dann mit diesem Key die Daten synchron zu entschlüsseln. Ganz schön aufwendig.
usserdem, wie sicher ist denn so eine synchrone AES Verschlüsselung in dem Fall dann überhaupt? Kann man eine AES Verschlüsselung ohne den Key zu haben entschlüsseln und wenn ja wieviel Aufwand ist das?
Hat jemand vielleicht noch eine ganz andere Idee wie ich mich da aus der Affäre ziehen kann?
Gruß
Claus
ich komme auf keinen grünen Zweig. Ich hoffe jemand von euch hat eine Idee wie ich meine Anforderung umsetzen kann. Ich weiß jetzt echt nicht mehr weiter.
Ich habe eine Java Application welche an Kunden herausgegeben wird. Diese App schickt einen Datensatz an einen Datenbank-Server welcher durch eine Unique ID gekennzeichnet ist. Wird ein neuer Datensatz mit der selben Unique ID geschickt, so muss der vorherige Datensatz geupdated werden und kein neuer angelegt.
Dann gibt es eine zweite App, welche nur ausgewählte Personen bekommen (Und die auch nich in Java sein muss) mit der man die verschlüsselten Daten komplett vom Server zieht (Es werden maximal so 500-1000 Datensätze sein, von daher ist es nicht schlimm, dass durch die verschlüsselung die DB eigentlich ausgehebelt wird), die diese Daten dann entschlüsselt und man sie sich ansehen und editieren kann.
Jetzt kommen die Anforderungen die erfüllt werden müssen:
Die Unique ID selber muss verschlüsselt auf dem Server sein!
Der Server selber darf die Daten nciht entschlüsseln können!
Der Schlüssel zum Entschlüsseln darf nicht in der Java App vorhanden sein (Zu leicht zu decompilieren)!
Ich dachte also, ich mache eine asynchrone Verschlüsselung und gebe der Java App nur den Public key. Das funktioniert so aber nicht, da ich mit einer RSA Verschlüsselung ja nur KeyLength/8-11 Zeichen verschlüsseln kann. Mache ich eine synchrone Verschlüsselung, dann ist der Key zum Entschlüsseln auch in der Java App. Da kann ich mir das Verschlüsseln auch gleich sparen.
Die einzige Idee die ich jetzt noch hätte wäre, dass ich bei jedem Verschlüsseln in der Java App einen neuen synchronen Key erzeuge, damit verschlüssele und dann diesen Key mit dem RSA Public key verschlüssele und das Ganze dann an denr Server schicke. Das würde aber bedeuten, dass die App die die Daten entschlüsselt, für jeden Datensatz erstmal den synchronen Key mit seinem private key entschlüsseln muss um dann mit diesem Key die Daten synchron zu entschlüsseln. Ganz schön aufwendig.
usserdem, wie sicher ist denn so eine synchrone AES Verschlüsselung in dem Fall dann überhaupt? Kann man eine AES Verschlüsselung ohne den Key zu haben entschlüsseln und wenn ja wieviel Aufwand ist das?
Hat jemand vielleicht noch eine ganz andere Idee wie ich mich da aus der Affäre ziehen kann?
Gruß
Claus
2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.
Pre-Kaffee-Posts sind mit Vorsicht zu geniessen
Pre-Kaffee-Posts sind mit Vorsicht zu geniessen