Big-Integer-Arithmetik in C#

Finally, meine Diplomarbeit mit dem vollständigen Titel

Big-Integer-Arithmetik in C#
und ihre Anwendung auf digitale Signaturen

ist fertig, benotet und abgegeben. Hervorheben möchte ich an dieser Stelle einen Performancevergleich mit der im .NET-Framework seit der Version 4.0 enthaltenen Big-Integer-Arithmetik BigInteger von Microsoft. (Sieg! :))

Inhalt

Integrität und Ursprung von elektronischen Dokumenten wollen genauso sichergestellt werden können, wie die Authentizität physischer Schriftstücke. Bei letzteren ist die händische Unterschrift das übliche Mittel zum Zweck, während immaterielle Bits & Bytes aufgrund der Leistungsfähigkeit zeitgemäßer Computersysteme mit einem deutlich höheren Aufwand geschützt werden müssen. Für eine sogenannte digitale Signatur hinreichende mathematische Methoden sind Gegenstand der vorliegenden Arbeit, wobei sowohl auf eine ausführliche Behandlung der dafür notwendigen theoretischen Grundlagen als auch auf eine nahezu praxistaugliche Implementierung Wert gelegt wurde.

Die in den vorgestellten Algorithmen implizit oder explizit verwendeten mathematischen Sätze werden inklusive (hoffentlich leicht) verständlichem Beweis angeführt, sollte es sich nicht gerade um Grundlagen aus Vorlesungen der ersten Semester für einen Studenten der technischen Mathematik handeln. Als Programmiersprache wurde C# .NET in der aktuellen Version 4.0 gewählt, da es sich dabei um eine moderne, gut lesbare, aber auch relativ leistungsstarke Technologie handelt — maschinennahe Optimierungen wie bei C oder sogar Assembler sind hier natürlich nicht möglich, aber im Rahmen dieser Arbeit mit mathematischem Fokus auch nicht angebracht.

Der Hauptteil der nun folgenden Seiten gliedert sich in sechs Kapitel: zu Beginn werden Techniken erarbeitet, die es ermöglichen, mit für aktuelle Computer unüblich großen Zahlen zu rechnen — an dieser Stelle seien ganz unbescheiden Abschnitt 1.9 sowie Abschnitt 5.8 hervorgehoben: die vorgestellte Big-Integer-Arithmetik ist trotz ihrer kurzen Entwicklungszeit relativ schnell! Danach werden mit Hilfe dieser Techniken Primzahlen zufälliger Natur erzeugt, um dann im dritten Teil der vorliegenden Arbeit als Grundlage für prominente Kryptosysteme verwendet zu werden. Bevor endlich anhand von praktischen Beispielen die Verwendung von digitalen Signaturen demonstriert werden kann, werden noch in einer eigenen Passage drei ausgewählte Hashfunktionen behandelt. Zum Abschluss werden mit Hilfe von weiteren mathematischen Methoden die Algorithmen dieser Arbeit noch einmal beschleunigt, um mittels größerer Schlüsselpaare entsprechend sicherere “Unterschriften” erzeugen zu können.

Download

SharePoint 2010 Tracing

In älteren Versionen von SharePoint war es notwendig mit umständlichen Interop Geschichten zu arbeiten, um in die Trace Logs von SharePoint hineinschreiben zu können, während bei der 2010er Generation immer öfters von der Komponente PortalLog die Rede ist — diese bietet praktische Hilfsmethoden für’s eigene Logging. Nachteil: es ist die teure Server Edition notwendig, der SharePoint Foundation fehlt das dazugehörige Assembly.

Dabei ist im “Basis”-Assembly Microsoft.SharePoint auch ein entsprechendes Werkzeug enthalten: das SPDiagnosticsService. Dessen Handhabung ist annähernd genauso trivial.

var logService = SPDiagnosticsService.Local;
var logTarget = logService.Areas["SharePoint Foundation"].Categories["Unknown"];

logService.WriteTrace(0815, logTarget, TraceSeverity.Unexpected, "Test.");

Das gehört natürlich noch verpackt, um analog zu PortalLog mit Einzeilern tracen zu können.

How-to edit InfoPath forms manually

Dass ein .xsn-File nichts anderes als ein CAB-Container ist, findet man leicht heraus. Allerdings wird in der Regel vorgeschlagen, mittels Änderung der Dateiendung das Formular im Windows Explorer zu zerlegen, um es anschließend (nach einer manuellen Anpassung) mittels MAKECAB wieder zusammen zu fügen.

Wieso so kompliziert, wenn es auch einfacher geht?

Das direkte Editieren der .xslt- bzw. .xml-Dateien eines Formulars ist grundsätzlich von InfoPath vorgesehen und wird auch halbwegs einfach ermöglicht: zuerst muss man den Menüpunkt Export finden. In der aktuellen Version versteckt sich dieser im Abschnitt Publish — eh klar. ^^

Gut — das händische Zerlegen des Formulars ist auch ohne diese Funktionalität nicht so mühsam. Das danach notwendige Zusammensetzen mittels MAKECAB jedoch schon. Dabei genügt ein Rechtsklick. Und ein Linksklick. Wie bei einer gewöhnlichen .xsn-Datei. :)

Ein Schutz des eigenen XSLTs ist auch noch möglich…