PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Visual Studio - Signieren mit Strongname - Passwort ?!


BigKid
2019-02-14, 16:41:30
Hallo,

mal eine Frage:
Ich habe eine Assembly die ich mit einem Strongname signieren soll.
Den Strongname habe ich erzeugt und mit Passwort geschützt.
(Über die Visual Studio Oberfläche unter "Signatur"...)

Jetzt hätte ich erwartet, dass mich Visual Studio nach dem Passwort fragt sobal dich Build klicke... So wie mich das "SN" Tool ja auch nach dem PW fragt wenn ich zB den Public-Key mit -p extrahiere...

Tut es aber nicht... Hat anscheinend das PW gespeichert...
Genau das WILL ich aber nicht ...

Geht das irgendwie ?

Monger
2019-02-14, 17:25:08
Das ist eine Signatur, keine Verschlüsselung. Da wird ein Schlüssel erzeugt, mit einem Passwort das nur du kennst, und einem öffentlichen Schlüssel . Ergo, wenn jemand überprüfen will ob die Anwendung von dir stammt, dann passt die Signatur nur zu deinem Zertifikat.
Da steht also eben nicht dein Passwort drin, aber er braucht es zum generieren.

Demirug
2019-02-14, 23:15:37
Das Passwort steht nicht in dem SNK File aber der Private Teil des Schlüsselpaars. Wenn also jemand das SNK File hat kann er eine modifizierte Assembly damit auch neu signieren.

Es gibt nun Mittle und Wege dafür zu sorgen das das SNK File nicht im Quellcode Verwaltungssystem ist und nur berechtigte Personen die finale Signierung durchführen können. Durchaus auch mit einer Passwort abfrage.

Die eigentliche Frage bei Strongnames ist aber IMHO was ist eure Motivation dafür? Es gibt nämlich nur ein paar wenige Situationen wo es Sinn macht Strong Names zu verwenden.

BigKid
2019-02-15, 15:55:55
Das Passwort steht nicht in dem SNK File aber der Private Teil des Schlüsselpaars. Wenn also jemand das SNK File hat kann er eine modifizierte Assembly damit auch neu signieren.

Es gibt nun Mittle und Wege dafür zu sorgen das das SNK File nicht im Quellcode Verwaltungssystem ist und nur berechtigte Personen die finale Signierung durchführen können. Durchaus auch mit einer Passwort abfrage.

Die eigentliche Frage bei Strongnames ist aber IMHO was ist eure Motivation dafür? Es gibt nämlich nur ein paar wenige Situationen wo es Sinn macht Strong Names zu verwenden.
Lizenz... Wir nutzen in dem Projekt ein Produkt... Wir müssen unser Binary mit einem Strongname signieren damit dieses Produkt dann prüfen kann ob Lizenzfile und aufrufende Binaries zusammen passen. Dazu bekommen wir vom Hersteller ein spezielles Lizenzfile (das unseren Public Key kennt)...

Was ich nun eigentlich erreichen wollte, ist dass ich unser pfx File mit beiden Schlüsseln ins CVS nehmen kann weil es ja Passwort geschützt ist. Ich hatte naiver Weise angenommen, dass nun jedesmal wenn der Schlüssel genutzt werden soll zuerst das PW abgefragt wird...

Demirug
2019-02-16, 11:02:00
Lizenz... Wir nutzen in dem Projekt ein Produkt... Wir müssen unser Binary mit einem Strongname signieren damit dieses Produkt dann prüfen kann ob Lizenzfile und aufrufende Binaries zusammen passen. Dazu bekommen wir vom Hersteller ein spezielles Lizenzfile (das unseren Public Key kennt)...

Sehr sicher ist das eher nicht. Aber das hängt wohl primär von der Kriminellen Energie euer Kunden ab.

Was ich nun eigentlich erreichen wollte, ist dass ich unser pfx File mit beiden Schlüsseln ins CVS nehmen kann weil es ja Passwort geschützt ist. Ich hatte naiver Weise angenommen, dass nun jedesmal wenn der Schlüssel genutzt werden soll zuerst das PW abgefragt wird...

Der Build Prozess verwendet das pfx nicht direkt sondern ein SNK file in das die relevanten Informationen exportiert wurden. Das kommt zum Teil auch daher das in vielen Fällen heute ja Buildserver eingesetzt werden die gar keine Benutzerinteraktion haben. Zudem sollen StrongNames ja auch eigentlich nicht für Sicherheitskritische Zwecke benutzt werden.

Unter Umständen kannst du dir mit dieser Methode etwas erstellen was deinen Vorstellungen näher kommt. https://docs.microsoft.com/de-de/dotnet/framework/app-domains/delay-sign-assembly

BigKid
2019-02-18, 10:52:22
Sehr sicher ist das eher nicht. Aber das hängt wohl primär von der Kriminellen Energie euer Kunden ab.



Der Build Prozess verwendet das pfx nicht direkt sondern ein SNK file in das die relevanten Informationen exportiert wurden. Das kommt zum Teil auch daher das in vielen Fällen heute ja Buildserver eingesetzt werden die gar keine Benutzerinteraktion haben. Zudem sollen StrongNames ja auch eigentlich nicht für Sicherheitskritische Zwecke benutzt werden.

Unter Umständen kannst du dir mit dieser Methode etwas erstellen was deinen Vorstellungen näher kommt. https://docs.microsoft.com/de-de/dotnet/framework/app-domains/delay-sign-assembly
Wobei ich jetzt gerade ein Kollegen habe auschecken und übersetzen lassen - und siehe da - ging nicht... Er bekam eine Fehlermeldung, dass das pfx File passwortgeschützt sei und er es neu laden müsse - als er das tat musste er auch das PW eingeben.
Es sieht also so aus das wir das pfx einigermassen beruhigt ins CVS nehmen können - da kommt sowieso nur jemand rann der im Firmennetz hängt...
Ich denke für unsere Zwecke ist das ausreichend...
Danke für deine Hinweise !
In Bezug auf Sicherheit: Das haben wir uns leider nicht ausgedacht - das macht der Anbieter der Software halt so... Ich vermute auch, dass es einfach nicht _zu_ einfach sein soll ;) - die Lizenzen laufen sowieso immer nur ein Jahr... Und es ist eher ein exoten Thema...