|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
dreael Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 2507 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 02.01.2011, 19:18 Titel: FreeBasic-Beispiel mit Signatur |
|
|
Eine hübsche Kleinigkeit, wovon vermutlich der eine oder andere von Euch auch schon geträumt hat:
http://beilagen.dreael.ch/QB/Hallo_Welt_signiert.exe
Applikation selber ist nur ein kleines "Hallo Welt" und deswegen nichts für "Projektvorstellungen" hier im Forum, aber mit einer Besonderheit betreffend Sicherheit (auf die berühmte Microsoft-Sicherheitswarnung einmal genau achten!). Am besten mit dem Internet Explorer in einen NTFS-formatierten Ordner downloaden (Stichwort Zone.Identifier-ADS!) und dann wie jeder Donwload mit "Start", "Ausführen..." oder Doppelklick einmal testen (Windows XP ab SP2/Vista/7 notwendig)...
Hinweis: Evtl. ist es notwendig, vorher noch das Stammzertifikatsupdate mittels Windows Update (benutzerdefinierte Suche) einzuspielen!
Details, um so etwas auch machen zu können, folgen von mir später noch.
/edit: Eine winzig kleine Unschönheit befindet sich noch in der Signatur, die ich aber bereits mit meinem Anbieter am Abklären bin. Wer findet sie heraus (nette kleine Rätselaufgabe für alle!)? _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
|
Michael Frey
Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
|
Nach oben |
|
|
dreael Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 2507 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 03.01.2011, 12:48 Titel: |
|
|
Zum Rätsel: Der Moderator im Fernsehratespiel würde antworten "Leider nicht die richtige Antwort. Nächster Kandidat." ;-) Eine kleine Hilfe gebe ich aber noch fürs Rätsel: Es hat mit der Internet-Norm Nr. 3161 zu tun...
Ansonsten ist das Ganze eine nette Anwendung der bei uns neu eingeführten SuisseID, d.h. eine solche nenne ich seit Kurzen auch mein eigen. Eignet sich übrigens auch für die zertifikatsbasierte Anmeldung auf Webseiten (=man braucht dann keine Passwörter, womit Single Sign On erst richtig möglich wird), wofür derzeit ebenfalls eine von mir aufgesetzte Testinstallation läuft.
Das Ganze ist aber bekanntlich nicht nur an Software-Pakete wie SwissSigner in meinem Fall gebunden, sondern eignet sich für praktisch jede X.509-Zertifikatsanwendung unter Windows, unter anderem auch für Microsoft Authenticode, weil das Signatur-Zertifikat auf der SuisseID-Smartcard auch das Zulassungsmerkmal (Verwendungszweck) für Codesignierung besitzt, was ich hier im Wesentlichen einmal mit einem kleinen FreeBasic-Programm erfolgreich getestet habe. => In diesem Sinn kann ich also downloadbare .EXE-Dateien als echt aus meiner Feder stammend verteilen.
Für die Interessierten: Es braucht dazu SIGNTOOL.EXE aus dem Microsoft Platform SDK. Dieses Werkzeug unterstützt auch Zertifikat auf Chipkarten wie in meinem Fall, d.h. PFX-Datei ist überhaupt nicht notwendig. Dinge wie eine AboutURL kann ich logischerweise ebenfalls mitgeben, wie Michael Frey richtig beobachtet hat.
Experimente mit selbstsignierten Zertifikaten kann übrigens jeder von Euch ebenfalls starten, nur wird sie Windows natürlich nicht als gültig qualifizieren. Dies ist in etwa derselbe Prozess wie ein Fantasie-Ausweis mit Tintenstrahldrucker und Laminiergerät zu erstellen und verteilen: Dieser entspricht dann nicht den System "Staat X" sondern dem System "Privatperson Hans Muster" -> jeder muss dann selber entscheiden, ob er ein solches Kärtchen als vertrauenswürdig betrachtet und akzeptiert, wenn er beispielsweise beim Alkoholausschank eine Alterkontrolle durchführen muss.
Genau hier liegt natürlich der Vorteil meiner SuisseID-Signierung: Zertifikat auf der Chipkarte wurde von einem offiziellen Aussteller herausgegeben, den Microsoft daher offiziell in sein Stammzertifikatsupdate aufgenommen hat, insbesondere, weil es auch ein vom schweizerischen Staat akkreditierter Herausgeber ist, unter anderem, weil ich mich für den Erwerb der SuisseID ganz offiziell mit Pass ausweisen musste. Aus diesem Grund trägt der Common Name auch den Zusatz "Qualified Signature", weil dieses Zertifikat die gesetzlichen Richtlinien für eine qualifizierte Signatur erfüllt.
In Österreich gibt es als Pendant die Bürgerkarte. -> Weil hier im Forum doch diverse auch von Österreich her kommen, würde ich es toll finden, wenn sich jemand dort ebenfalls eine solche Bürgerkarte als E-Card (Chipkarte, d.h. nicht die Handy-Variante!) erwerben würde und ebenfalls einmal den Versuch machen würde, damit ein compiliertes FreeBasic-Programm zu signieren.
Benutzer aus Deutschland müssen diesbezüglich noch etwas warten, bis der nPA ebenfalls offiziell draussen ist (oder ist dieser bereits erhältlich?). Alternative ansonsten für jeden ist der Erwerb eines klassischen Codesignier-Zertifikats bei VeriSign oder Thawte. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
|
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 06.01.2011, 13:12 Titel: |
|
|
Ich kann doch aber auch mit irgendeinem Cert meinen Code signieren, nur wird Windows dann wahrscheinlich ein wenig rumschreien...? |
|
Nach oben |
|
|
dreael Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 2507 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 06.01.2011, 22:30 Titel: |
|
|
@28398:
Selbstverständlich kannst Du problemlos eine eigene PKI aufbauen (Anleitung für Linux/openssl). => Ist vergleichbar wie in einem Verein mit Farbtintenstrahldrucker und Laminiergerät Mitgliederausweise herstellen. Diese Kärtchen stellen absolut vollwertige Ausweise dar, aber sie werden jedoch nur von Personen, die Dich persönlich kennen (=in deren Gehirn bist Du bzw. der Verein quasi als vertrauenswürdiges Stammzertifikat gespeichert!) akzeptiert.
Genauso hier: Erst wenn der Benutzer Dein PKI-Stammzertifikat aufnimmt, behandelt Windows die Datei als gültig signiert. VeriSign & Co. gelten wie Behörden und Ämter quasi soweit allgemein vertrauenswürdig, weil jeder von uns im Normalfall davon ausgeht, dass der Staat bei der Ausstellung eines amtlichen Passes für eine Person mit einer konstanten Sorgfaltspflicht herangeht, so dass Du z.B. als Verkäufer vom Alkoholausschank, der das Alter von Jugendlichen überprüfen möchte, den Pass gegenüber unserem Vereinsausweiskärtchens als etwas Vertrauenswürdiges zur Bestimmung des Alters betrachtest. Dabei entsprechen die Fälschungs-Sicherheitsmerkmale am Pass dem Inhalt vom öffentlichen Schlüssel im Zertifikat.
An dieser Stelle zur Lektüre: Microsoft Root Certificate Program
Ebenfalls ganz wichtig: www.cabforum.org
Hier sind alle namhaften Browserhersteller und CAs dabei! _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
|
dreael Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 2507 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 03.04.2011, 23:55 Titel: Problem und Rätsel gelöst |
|
|
Inzwischen konnte ich die zu Beginn genannte Unschönheit übrigens lösen (wenn auch mit gewissen Einschränkungen), so dass Interessierte von Euch das Beispiel neu herunterladen und testen können.
An dieser Stelle noch die Lösung zum zu Beginn genannten Rätsel:
http://beilagen.dreael.ch/Diverses/XP_Sig_Zs_inkorrekt.PNG
Mit der "Internet-Norm Nr. 3161" war natürlich RFC 3161 gemeint. An dieser Stelle die notwendige Hintergrundinformation: Meine SuisseID besitzt nur eine befristete Gültigkeit ähnlich einem normalen Ausweis => heute/jetzt erstellte Signaturen sollen jedoch auch in Zukunft gültig bleiben, wofür es eine sog. Zeitstempel-Gegensignatur braucht, also quasi einen elektronischen "Notar", welcher den Zeitpunkt der Signierung beurkundet, so dass ein Windows auch in 50 Jahren mein jetziges .EXE-Beispiel als gültig signiert erkennt.
Microsoft hat für AuthentiCode die Zeitstempelung zwar auch schon von Anfang an vorgesehen, jedoch dafür ein eigenes Protokollformat für den Zeitstempelserver verwendet ("legacy Authenticode timestamp URL"). Klassische Codesignierungsdienste von VeriSign und Thawte unterstützen dies meines Wissens auch jetzt noch (Tipp: Schaut Euch eine z.B. vom Adobe Acrobat Reader heruntergeladene Setup-Datei bezüglich Signatur etwas genauer an!), jedoch nicht mein SuisseID-Herausgeber, weshalb es seinerzeit mit der Option
Code: | /t http://tsa.swisssign.net |
nicht geklappt hat. Weil für qualifizierte elektronische Signaturen die Zeitstempelung genauso benötigt wird, hat sich mein SuisseID-Anbieter an den RFC 3161-Standard gehalten. Diesen allgemeinen Standard hat Microsoft übrigens erst bei ihrem jüngsten Platform SDK v7.1 ebenfalls übernommen mit der /tr-Option bei SIGNTOOL.EXE:
Code: | D:\DATEN\FreeBasic\Hallo_Welt_signiert>"%programFiles%\Microsoft SDKs\Windows\v7.1\Bin\signtool" sign /v /a /tr http://tsa.swisssign.net /du http://www.dreael.ch/Deutsch/Download/ Hallo_Welt_signiert.exe
The following certificate was selected:
Issued to: Andreas Hermann Meile (Qualified Signature)
Issued by: SwissSign Qualified Platinum CA 2010 - G2
Expires: Sat Dec 14 19:44:19 2013
SHA1 hash: 7E3B2BD26E3875647F685E1A9C1B4B0DE436598B
Done Adding Additional Store
Successfully signed and timestamped: Hallo_Welt_signiert.exe
Number of files successfully Signed: 1
Number of warnings: 0
Number of errors: 0
D:\DATEN\FreeBasic\Hallo_Welt_signiert>ECHO %ERRORLEVEL%
0
D:\DATEN\FreeBasic\Hallo_Welt_signiert>_ |
Ergebnis:
http://beilagen.dreael.ch/Diverses/Win7_Sig_Zs_korrekt.png
Einzige Einschränkung: Nur unter Windows 7(!) erscheint die Signatur korrekt, Windows XP meldet immer noch den fehlenden Zeitstempel, wie jeder hier beim Prüfen feststellen kann. Auch klappt bei XP die /tr-Option trotz installiertem .NET 4-Framework ebenfalls noch nicht:
Code: | P:\FreeBasic\Hallo_Welt_signiert>"%programFiles%\Microsoft SDKs\Windows\v7.1\Bin\signtool" sign /v /a /tr http://tsa.swisssign.net /du http://www.dreael.ch/Deutsch/Download/ Hallo_Welt_signiert.exe
The following certificate was selected:
Issued to: Andreas Hermann Meile (Qualified Signature)
Issued by: SwissSign Qualified Platinum CA 2010 - G2
Expires: Sat Dec 14 19:44:19 2013
SHA1 hash: 7E3B2BD26E3875647F685E1A9C1B4B0DE436598B
Done Adding Additional Store
SignTool Error: A required function is not present.
This error likely means that you are running SignTool on an OS that
does not support the options you've specified.
P:\FreeBasic\Hallo_Welt_signiert>ECHO %ERRORLEVEL%
1
P:\FreeBasic\Hallo_Welt_signiert>_ |
Somit muss ich also aktuell fürs Signieren ausschliesslich eine Windows 7-Station einsetzen.
Sonst unabhängig von FreeBasic gibt es noch eine neue SuisseID-Beispielanwendung zum Ausprobieren: Wie vielleicht in Zukunft Geschäfte mit Verträge abgeschlossen werden könnten. Für Benutzer aus Deutschland: Sollte mit dem neuen Personalausweis ebenfalls funktionieren, wenn die entsprechenden Funktionen aktiviert sind. Dito für Österreicher mit der Bürgerkarte. Bitte in beiden Fällen sich vorher bei mir mit Privatnachricht melden, da ich einmal noch die Stammzertifikate für .de und .at zur Ergänzung auf meinem Test-Webserver benötige. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|