RSA Datei Signieren ist es so richtig

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Andy16823.

    RSA Datei Signieren ist es so richtig

    Hallo,
    ich bin gerade dabei meine Update Packete zu Signieren, ich wollte mal fragen ob es so richtig ist (keys sind Vorhanden):

    Signieren
    1. Datei Signieren
    2. Signatur Bytes in String umwandeln
    Valdieren

    1. Public Key in Software
    2. Eben Erstellten Signatur String in das Packet mit rein (zip)
    3. Updater lesst die Signatur Datei aus
    4. Der Updater prüft anhand der Signatur und den Public Key die Zip
    Könnte man dann aber nicht einfach die Signatur datei austauschen ? ?(
    Hi @Andy16823:,

    warum willst du die Bytes denn in nen String umwandeln? Arbeite doch einfach mit denen...
    Wie signierst du die Datei?

    Nein, der Updater prüft nicht mit dem PublicKey und der Signatur das Archiv, sondern mit der Signatur und den Bytes des Archives... Ja, man kann die Signatur austauschen, aber das bringt dir 0,0, denn du hast ja noch den Public Key... Zudem verwaltet die RSA-Klasse das intern so, dass das trotzdem sicher ist, das ist ja das schöne.



    Ich empfehle dir wirklich zur Sicherheit, lies dir das durch:
    de.wikipedia.org/wiki/Asymmetrisches_Kryptosystem
    msdn.microsoft.com/de-de/libra…graphy.rsa(v=vs.110).aspx
    msdn.microsoft.com/de-de/libra…ceprovider(v=vs.110).aspx
    msdn.microsoft.com/de-de/library/aa331388(v=vs.71).aspx
    msdn.microsoft.com/de-de/library/55yk5665(v=vs.110).aspx
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Trade“ ()

    Ich lese mit readallbytes die Zip ein, signiere mit signdata(dateibyte,0,dateibyteLenght, getType(SHA1)) und da bekomme ich ein Bytearray Zurück, diese wandele ich in ein String um. Diesen String schreibe ich nun in eine Datei, und speichere die zip mit writeallbytes()

    so nun im Updater lese ich den String wieder ein wandele es in ein byte Array um, lese die zip mit readallbytes ein und prüfe mit dem Public Key mit verifiData(zipbyte(), getType(SHA1), signdata()) ob der Schlüßel stimmt.

    würde nun wer das Packet austauschen müsste er es ja signieren, aber das wäre ja false weil ein anderes Schlüßelpaar verwendet wurde.
    Ja, das ist korrekt. Zum Signieren musst du halt auch den PrivateKey verwenden, dann passt es.
    Aber warum willst du Byte[] in String umwandeln und dann wieder zurück. Schreib die Signatur halt gleich als Bytes in die Datei und lese sie als Bytes wieder aus... Ist doch leichter.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Danke erstmal ;)

    ich will die Signatur in der xml speichern, also der Updater ließt aus der xml alle informationen die er benötigt aus. Macht das was wenn jemand die Signatur seht. Der PublicKey ist im Updater selbst ?
    Nein, die Signatur kann er ja ruhig sehen... Ja, dem PublicKey musst du in der Anwendung mitliefern. Du musst natürlich in einem Projekt immer die selben Keys verwenden, damit das funktioniert. Wenn du eine gute Stärke wählst dürfte das reichen...

    Also PrivateKey auf dem Entwickler-PC speichern und mit dem in einem Projekt immer ne neue Signatur erstellen. Der PublicKey muss in einem Projekt immer der gleiche bleiben.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Gut, dann passt das ;)
    BTW: In nUpdate hatte ich nicht bedacht, dass man immer die selben Keys verwenden muss pro Projekt, denn ich hatte das ja gleich getestet und nicht dran gedacht, dass der Entwickler das Paket ja noch garnicht hat und somit auch noch keinen Key eintragen kann :rolleyes:

    Ich überarbeite das grade, aber bei dir passt das so weit ich das jetzt gesehen habe...
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!: