So signieren Sie eine XML-Datei. So signieren Sie ein Dokument mit digitaler Signatur. So signieren Sie eine Datei mit EDS

In einem der laufenden Projekte wurde das Problem des Signierens (elektronische Signatur - elektronische Signatur) von XML-Dokumenten, nämlich SOAP-Paketen, gelöst. Das empfohlene Format war OASIS Standard 200401 mit X.509 Certificate Token Profile. Diese Dokumente beschreiben die Verwendung des XML Digital Signature (XMLDSig)-Formats, das vom www-Konsortium (W3C) in SOAP-Nachrichten erstellt wurde. XML-Signaturen unterstützen wie andere Arten elektronischer Signaturen die Authentifizierung, Datenintegrität und die Nichtabstreitbarkeit der Datensignatur.

Es gibt mehrere Funktionen des XMLDSig-Formats:

1. Nicht das gesamte XML-Dokument kann als Signierobjekt dienen, sondern nur ein Teil davon, d.h. einen bestimmten Knoten. Gemäß OASIS Standard 200401 ist das zu signierende Objekt der Körper (Knoten Körper) SOAP-Nachrichten.

2. Verschiedene Teile eines XML-Dokuments können von mehreren Ausführenden signiert werden.

3. Die XML-Signatur kann in Bezug auf das signierte Objekt auf verschiedenen Ebenen sein:

  • die Signaturstruktur kann enthalten URI(einheitliche Ressourcenkennung);
  • Die XML-Signatur kann sich auf derselben Ebene wie der zu signierende Knoten befinden;
  • Die XML-Signatur kann sich innerhalb des zu signierenden Knotens befinden;
  • der zu signierende Knoten kann sich innerhalb einer XML-Signaturstruktur befinden.

4. Zur Überprüfung der Gültigkeit der elektronischen Signatur ist ein Zugriff auf den Signaturgegenstand erforderlich.

SOAP-Abdeckungsstruktur

Im Allgemeinen besteht eine Nachricht aus einem Header und einem Body: Header und Körper. Header enthält Metadaten und Körper Daten. XML-Signatur wird im Knoten platziert Header.

Kryptografische Algorithmen und Kanonisierung.

Um das Problem zu lösen, haben wir GOST R 34.11-94- Russischer kryptografischer Standard zur Berechnung der Hash-Funktion und GOST R 34.10-2001- Standard für elektronische Signaturen.

Aufgrund der Flexibilität von XML-Kompositionsregeln können dieselbe Dokumentstruktur und dieselbe Information durch verschiedene XML-Dokumente dargestellt werden. Betrachten Sie zwei Dokumente:

Aus logischer Sicht sind sie äquivalent, dh sie haben das gleiche XML-Schema. Die XML-Dateien dieser Auflistungen enthalten jedoch nicht die gleiche Zeichenfolge, was beispielsweise beim Abrufen eines Hash-Werts zu unterschiedlichen Ergebnissen führt.

Um solche Verwirrung zu vermeiden, wurden strenge Formatierungsregeln und Anforderungen an den Inhalt von XML-Nachrichten eingeführt. Der Prozess der Konvertierung von XML-Dokumenten in eine einheitliche (kanonische) Form wird als . bezeichnet Kanonisierung(Englische Kanonisierung). Beispiele für Regeln sind die Anwendung eines bestimmten Codierungsschemas (UTF-8), die Normalisierung von Attributwerten, die Verwendung von doppelten Anführungszeichen für Attributwerte, das Ordnen von Attributen und Namespace-Deklarationen usw. Die XML-Kanonisierung kann verschiedene Arten haben, die sich in der Zusammensetzung der Regeln unterscheiden . Weitere Details zum Kanonisierungsprozess finden Sie in der offiziellen W3C-Spezifikation (russischsprachige Artikel zu diesem Thema sind zu finden)

SIRCrypt-Bibliothek

Um die XML-Signierung in DIRECTUM zu implementieren, wurde eine COM-Bibliothek geschrieben, in der 3 Klassen beschrieben sind: Hasher, Unterzeichner und XMLCanonicalizer um einen Hash, einen ES-Wert bzw. eine Kanonisierung von XML-Dokumenten zu erhalten.

Die Bibliothek benötigt Krypto PRO CSP(getestet auf Version Crypto PRO CSP 3.6.6497 KC2) und .NETZ(mindestens 2,0).

Das Registrieren der Bibliothek erfolgt durch Ausführen des folgenden Befehls:

> regasm.exe "Pfad zur DLL" / codebase / tlb

Hasher-Objekt zur Berechnung des Hashs nach GOST

Enthält Felder Inhalt (Geben Sie "String" ein) und HashValueAsBase64 (Typ "string"), sowie eine Methode zur Berechnung des Wertes der Hash-Funktion Hash ()... Um zu berechnen, ist es notwendig zu bedeuten Inhalt , rufe die Methode auf Hash (), wodurch im Feld HashValueAsBase64 schreibt den Wert der Hash-Funktion in Base64.

Signer-Objekt zum Empfangen des ES-Wertes nach GOST

Enthält Felder Inhalt (Geben Sie "Zeichenfolge" ein), Containername (Geben Sie "Zeichenfolge" ein), ZertifikatAsPEM (Geben Sie "Zeichenfolge" ein), BESignatureValueAsBase64 (Typ "Zeichenfolge"), Methode Unterschrift ()... Nachdem Sie das Objekt initialisiert haben, müssen Sie bedeuten Inhalt (Daten zum Unterschreiben), Containername (der Name des privaten Containerschlüssels des Zertifikats), rufen Sie die Methode auf Unterschrift ()... Dann im Feld ZertifikatAsPEM erhält das Zertifikat, das dem privaten Schlüssel in Base64 entspricht, und im Feld BESignatureValueAsBase64 der Signaturwert als Base64-String.

XMLCanonicalizer-Objekt für die XML-Kanonisierung

Enthält Felder XML-Inhalte (Geben Sie "Zeichenfolge" ein), CanonicalXML (Typ "Zeichenfolge"), Methode C14NExc ()... Um das kanonische XML-Formular zu erhalten, müssen Sie meinen: XML-Inhalte , Anruf C14NExc (), erhalten Sie das Ergebnis aus dem Feld CanonicalXML .

XML-Signaturstruktur

Die Erstellung der Signatur sieht so aus: Zuerst wird die Basis des Seifenpakets gebildet, die Knoten Header und Körper. Körper mit Daten gefüllt und ein Attribut hinzufügen wsu: ID = "Körper"- die Kennung der zu signierenden Daten.

Füllen der Struktur Sicherheit erfolgt in folgender Reihenfolge:

  1. Der Hash-Wert wird in kanonischer Form aus dem Body-Knoten entnommen und in den DigestValue-Knoten gestellt.
  2. Knoten SignedInfo auf die kanonische Form reduziert, mit der elektronischen Signatur unterschrieben. Das Ergebnis im Base64-String-Format geht an den Knoten Signaturwert.
  3. Der öffentliche Schlüssel des signierten Zertifikats wird in den Knoten gelegt BinarySecurityToken im Base64-String-Format.

Um die erzeugte elektronische Signatur zu überprüfen, müssen alle Schritte in umgekehrter Reihenfolge durchgeführt werden, nämlich:

  1. Holen Sie sich die kanonische Form eines Elements SignedInfo.
  2. Prüfen Sie anhand des Ergebnisses des vorherigen Schrittes, ob der Wert des EP aus dem Knoten Signaturwert mit der Hilfe Öffentlicher Schlüssel Zertifikat. Auf diese Phase lediglich die Richtigkeit der elektronischen Signatur wird überprüft, was die Unveränderlichkeit der Daten nicht garantiert.
  3. Wenn die Gültigkeitsprüfung der digitalen Signatur erfolgreich ist, wird der Hash des Knotens verglichen DigestValue und einen Hash vom Datenknoten. Wenn sie nicht gleich sind, wurden die signierten Daten geändert und die gesamte elektronische Signatur ist ungültig.

Anwendungsbeispiel

Entwicklungskit und Bibliothek

Beispiele für XML-Signierung auf ISBL (Skript): dev.zip (5,95 KB)

Für den dauerhaften Einsatz wurde der Code, der das typische Signieren des fertigen SOAP-Umschlags durchführt, in die Funktion verschoben ZeichenSOAP ().

Zum Signieren wird ein Zertifikat aus dem persönlichen Zertifikatspeicher des aktuellen Benutzers verwendet.

Ich kann die Mechanismen zum Signieren von XML-Dokumenten nicht allgemein verstehen. Ich wäre dankbar für Ihre Hilfe, um es herauszufinden)

Meine Situation ist so:

1) Es gibt eine Zertifizierungsstelle, deren ausgestellte Zertifikate auf den Servern im Windows-Speicher angebracht sind.. in persönlicher, vertrauenswürdiger usw... nicht der Punkt.

Beim Einloggen in die Anwendung signiert der Benutzer einen zufällig generierten String mit dem Zertifikat seiner Wahl. Diese Signatur wird auf dem Server verifiziert:

CAPICOM.SignedData _signedData = new CAPICOM.SignedData (); _signedData.Verify (signedData, false, CAPICOM_SIGNED_DATA_VERIFY_FLAG.CAPICOM_VERIFY_SIGNATURE_AND_CERTIFICATE); if (_signedData.Content! = data) throw new Exception ("Signierter Inhalt stimmt nicht mit empfangenem Inhalt überein"); var _certificate = _signedData.Certificates; // Benutzerzertifikat

So erhalten wir das Zertifikat des Benutzers (öffentlicher Schlüssel). Wichtig ist, dass die Signatur nur dann verifiziert wird, wenn sich der entsprechende öffentliche Schlüssel des Zertifikats auf dem Server im Zertifikatsspeicher befindet. Das ist es, was wir brauchen, um nur diejenigen zu lassen, deren Zertifikate wir selbst ausgestellt haben) Hier scheint es klar zu sein.

2) Jetzt müssen die gleichen Benutzer mit ihren XML-Zertifikaten signieren. Meine Software auf dem Client generiert XML selbst und signiert diese mit einem benutzerdefinierten Zertifikat:

Public static void SignXml (XmlDocument xmlDoc, / * RSA * / AsymmetricAlgorithm Key) (SignedXml signedXml = new SignedXml (xmlDoc); signedXml.SigningKey = Key; Reference reference = new Reference (); reference.Uri = ""; // Signatur ganzes XML-Dokument XmlDsigEnvelopedSignatureTransform env = new XmlDsigEnvelopedSignatureTransform (); reference.AddTransform (env); signedXml.AddReference (Referenz); KeyInfo keyInfo = new KeyInfo (); keyInfo.AddClause (RSKeyInfo.GetClause // KeyInfo) GOST signedXml.KeyInfo = keyInfo ; signedXml.ComputeSignature (); XmlElement xmlDigitalSignature = signedXml.GetXml (); xmlDoc.DocumentElement.AppendChild (xmlDoc.ImportNode (xmlDigitalSignature, true));)

XmlDocument doc = neues XmlDocument (); doc.PreserveWhitespace = true; doc.Load (Pfad); SignedXml sx = neues SignedXml (doc); XmlNodeList nodeList = doc.GetElementsByTagName ("Unterschrift"); sx.LoadXml ((XmlElement) nodeList); return sx.CheckSignature();

Der Code funktioniert, aber ich habe Verständnisfragen: In diesem Fall können Sie die XML mit absolut jedem Zertifikat signieren, das nicht von unserer CA ausgestellt wurde, und da die Informationen über den öffentlichen Schlüssel in der signierten XML selbst gespeichert sind, wird die Signatur überprüft . Diese Option passt mir nicht. Die CheckSignature-Methode verfügt über eine Überladung mit einem Parameter vom Typ AsymmetricAlgorithm, der das Signaturzertifikat auf Vorhandensein im Speicher, seine Gültigkeit, sein Ablaufdatum usw. überprüft. Dies ist, was ich brauche, aber ich weiß im Voraus nicht, welcher der Benutzer die signierte xml gesendet hat.

Bitte sagen Sie mir: Wie überprüft man die XML-Signatur oder wie erstellt man sie richtig, damit nur diejenigen XML-Dateien, die nur von unseren Zertifikaten (die im Store installiert sind) signiert sind, die Signaturprüfung bestehen?

P.s. Und was ist der allgemeine Sinn, sowohl die Signatur selbst als auch den öffentlichen Schlüssel zum Entschlüsseln der Signatur in XML aufzubewahren? Wenn Sie die Zeile signedXml.KeyInfo = keyInfo; , dann schlägt die Überprüfung der XML-Signatur fehl.

Gemäß Gesetz 218-FZ "Über die staatliche Registrierung von Immobilien" müssen elektronische XML-Dokumente und gescannte Bilder von Dokumenten unterzeichnet werden Fortgeschrittene elektronische Unterschrift . Alle Programme der Serien "Polygon", "Polygon Pro" und des Programms "Signature Pro" sind mit einer solchen Signatur versehen.

Zur Unterschrift:

    Erhalten Signaturschlüssel(Zertifikat) im Zertifizierungszentrum. Die Liste der akkreditierten Zertifizierungsstellen ist auf der Rosreestr-Website (Liste der Zertifizierungsstellen) veröffentlicht. Ein Zertifikat erhalten Sie in unserem Zertifizierungszentrum, Program Center LLC.

    Kaufen Sie zusammen mit der Signatur das Programm und installieren Sie es auf Ihrem Computer CryptoPro CSP (enthält die erforderlichen russischen Signaturstandards), die auch bei unserem Certification Center LLC Program Center erworben werden können.

Andere Programme zum Signieren werden nicht benötigt: CryptoARM (die Fähigkeiten von CryptoARM in Bezug auf die Signatur ähneln denen der Programme der "Polygon", "Polygon Pro"-Reihe und des "Signature Pro"-Programms).

Programmmodule der Polygon Pro-Plattform

Unterschreiben Sie ein elektronisches Dokument im Programm "Polygon Pro"

Gehen Sie wie folgt vor, um die XML-Datei zu signieren:

  • Generieren Sie ein elektronisches Dokument ohne Fehler.


Sie können die XML-Datei sofort im " XML-Viewer", Klicken Sie dazu in der Symbolleiste auf die Schaltfläche - "XML-Datei signieren".

  • Nach dem Anklicken öffnet sich ein Fenster mit einer Liste der installierten Zertifikate. Wählen Sie das gewünschte aus und klicken Sie auf "OK".

  • Das Programm signiert das Hauptdokument und zeigt eine Erfolgsmeldung an.

Im selben Ordner wie die signierte Datei wird eine Signaturdatei mit demselben Namen und derselben Erweiterung generiert * .sig.

Signieren Sie eine Gruppe von Dateien im Programm Polygon Pro

Das Programm hat die Möglichkeit, eine Gruppe von Dateien gleichzeitig zu signieren. Gehen Sie dazu wie folgt vor:

  • Auf Band Softwaremodul in der Registerkarte "Heim" Drücken Sie die Taste und wählen Sie aus dem Untermenü. Es öffnet sich ein Fenster mit einer Auswahl an Projektdateien (standardmäßig sind alle Projektdateien ausgewählt).
  • Wenn die Liste Dateien enthält, die Sie nicht signieren müssen, deaktivieren Sie sie.

  • Drück den Knopf "Unterschrift"... Es öffnet sich ein Fenster mit einer Liste der installierten Zertifikate. Wählen Sie das gewünschte aus und klicken Sie auf "OK".
  • Das Programm signiert alle Dokumente und zeigt eine Erfolgsmeldung an.

    Treten beim Signieren Fehler auf, wird ein Verifizierungsprotokoll mit Warnungen und/oder Fehlern angezeigt. Korrektes Signieren erfordert das Korrigieren von Fehlern.

    Signieren Sie die Datei in den Programmmodulen der Polygon Pro-Plattform

    Das Programm kann absolut jede Datei signieren.

      Es öffnet sich ein Fenster mit einer Liste der installierten Zertifikate. Wählen Sie die gewünschte aus und klicken Sie auf " OK».

    • Das Programm signiert die Dokumente und zeigt eine Erfolgsmeldung an.

    Im selben Ordner wie die signierte Datei eine Signaturdatei mit demselben Namen und derselben Erweiterung * .sig.

    Überprüfen Sie die elektronische Signatur im Programm "Polygon Pro"

    Wenn Sie eine signierte Datei von außen erhalten haben und prüfen möchten, ob diese geändert wurde, oder einfach nur die Richtigkeit der generierten Dateisignatur überprüfen möchten, gehen Sie folgendermaßen vor:

    • Auf der Multifunktionsleiste des Programmmoduls im " Heimat"Im Untermenü der Schaltfläche" Alle unterschreiben"Klicken Sie auf die Schaltfläche" Verifizieren…».

    • Wählen Sie die Datei mit der Signatur (mit der Erweiterung * .sig) zu verifizieren oder eine signierte Datei.

    Wenn sich diese beiden Dateien in unterschiedlichen Ordnern befinden, zeigt das Programm ein Warnfenster an. Drücke den " Wiederholen"Und wählen Sie die Quelldatei aus.

    • Es öffnet sich ein Protokoll mit der Information, ob das Dokument von wem und wann korrekt signiert wurde.

    Signature Pro-Programm

    Für die bequeme Interaktion mit der Zertifizierungsstelle, der digitalen Zertifikatsverwaltung und private Schlüssel EDS sowie zum Signieren verschiedener Dateien mit einer elektronischen Signatur wurde ein Programm entwickelt.

    Wie signiere ich eine Datei digital?

    Diese Anleitung ist ein ungefährer Wert, bestimmte Schritte können davon abhängen, was auf Ihrem Computer installiert ist Software... Ein Teil der Schulung wurde im Februar 2012 abgeschlossen, unsere Programme bieten jedoch eine bequemere Möglichkeit, elektronische Dokumentendateien zu signieren verbesserte qualifizierte elektronische Signatur.

    So signieren Sie Dateien mit elektronischen Dokumenten: Grenzplan, Kartenplan, technischer Plan Bei einer elektronischen Signatur müssen Sie sicherstellen, dass installierte Programme:

      Krypto-Anbieter "CryptoPro CSP";

      "Krypto-AWP" - dieses Programm ist nur erforderlich, wenn Sie die Programme der Serie "Polygon" nicht verwenden, dieses Programm ist in Bezug auf das Signieren mit den Programmen der Serie "Polygon" identisch und wird daher nicht benötigt; um Dateien mit Programmen der Serie "Polygon" zu signieren, siehe die vorherige Seite der Anleitung; Sie können sowohl mit den Programmen der "Polygon" -Serie als auch mit dem CryptoARM-Programm signieren, wenn Sie der Meinung sind, dass dies bequemer ist, als die vorhandenen Fähigkeiten der Programme der "Polygon" -Serie zu verwenden;

    Jede Datei (XML, Scan eines gedruckten Dokuments und Antragsdateien) muss unterschrieben werden, da die Katasterbehörde nur Dateipaare akzeptiert: die Originaldatei und die dazugehörige Signaturdatei. Um eine Datei zu signieren, wählen Sie sie im Explorer-Fenster aus und klicken Sie mit der rechten Maustaste (RMB), Kontextmenü, darin sollten Sie den Punkt "CryptoARM" auswählen und dann " Unterschrift…».



    Stellen Sie dann sicher, dass der Dateiname korrekt ist



    Wichtig! Stellen Sie den Schalter auf " DER-Codierung", Legen Sie den Ordner für die Ausgabedateien nach eigenem Ermessen fest. Drücken Sie den Knopf " Weiter". Im nächsten Fenster Signaturparameter zuweisen


    In diesem Fenster ist das Wichtigste, das Kästchen " Signatur in separater Datei speichern". Drücke den " Weiter". Klicken Sie im nächsten Fenster auf " Auswählen»


    ein Fenster zur Auswahl eines Zertifikats öffnet sich


    Wählen Sie darin das Zertifikat Ihres Schlüssels aus (sehen Sie nach dem Namen des Besitzers). Drücken Sie nach der Auswahl die Taste " OK" und " Weiter". Drücken Sie im letzten Fenster vor dem Unterschreiben des Dokuments die Schaltfläche " Bereit».

    Wichtig! Für jede Datei muss eine Signaturdatei erstellt werden, da nur ein Paar akzeptiert wird: die Originaldatei (xml oder andere) + die Signatur dazu (Sig-Datei).

ML, oder eXtensible Markup Language, wird jetzt auf normale Weise Transport von Informationen ins Web (und nicht nur). Darüber hinaus gibt es immer mehr Add-Ons, die XML-Syntax verwenden (XML-Anwendungen). Dazu gehört beispielsweise das Simple Object Access Protocol (SOAP), in dem XML als generisches Mittel zur Darstellung von Remote Procedure Call (RPC)-Parametern fungiert. Ein weiteres Beispiel für ein Add-In ist das Resource Description Framework (RDF). Sie können sich die Website des Weltkonsortiums ansehen Wide-Web(W3C), das Standards in diesem Bereich entwickelt (http://www.w3.org/), und dafür zu sorgen, dass XML wirklich viel Aufmerksamkeit bekommt.

Denken Sie daran, dass der Hauptzweck von XML darin besteht, die Struktur und Semantik eines Dokuments zu beschreiben. Der Hauptvorteil von XML gegenüber anderen elektronischen Dokumentformaten besteht darin, dass es die Beschreibung der externen Präsentation des Dokuments von der Struktur des Dokuments und seinem Inhalt trennt. XML ist eine flexible Sprache, die für eine Vielzahl von Zwecken verwendet werden kann, jedoch mit vielen Systemen und Datenbanken zusammenarbeiten kann. So wird XML bereits heute in vielen verwendet Informationssysteme als wichtigstes Datenaustauschformat. Darüber hinaus haben die Hersteller von Datenbankmanagementsystemen einen starken Schritt in Richtung XML getan. Beispielsweise hat die Oracle Corporation das XSU (XML-SQL Utility) veröffentlicht, ein JDBC-Add-On, mit dem Sie XML-Daten in einer Datenbank speichern und abrufen können (http://otn.oracle.com/tech/xml/xdk_java/content .html). XSU ist eine Java-Klassenhierarchie zum Transformieren von Daten aus Tabellen und Ansichten einer objektrelationalen Datenbank in XML, zum Einfügen von Daten aus XML-Dokumenten in Tabellen und Ansichten und für andere nützliche Operationen.

Die Notwendigkeit, XML-Dokumente zu sichern

ML ist ein leistungsstarkes Tool, das häufig zum Austausch von Daten über das Internet verwendet wird. Aber leider bietet es allein nicht den notwendigen Schutz für die Daten, die es "transportiert". Mit anderen Worten, es gibt ernsthafte Sicherheitsbedenken bei der Verwendung von XML (sowie bei der Verwendung anderer Formate).

XML kann leicht verwendet werden, um Transaktionsnachrichten zwischen einer Bank und einem Geldautomaten, vertrauliche oder halbvertrauliche Informationen über Einzelpersonen, Informationen über elektronische Transaktionen oder einfach geschlossene Dokumente in diesem Format zu übertragen. Gleichzeitig muss jedoch der Schutz von Informationen vor unfreiwilligen oder vorsätzlichen Verzerrungen sowohl seitens der Nutzer von Informationssystemen als auch bei der Übermittlung über Kommunikationskanäle gewährleistet werden. Der Schutz sollte auf der Leistung der folgenden Funktionen basieren:

  • Authentifizierung von interagierenden Parteien;
  • Bestätigung der Authentizität und Integrität der Informationen;
  • kryptographischer Verschluss der übertragenen Daten.

Um den angegebenen Informationsschutz zu gewährleisten, empfiehlt es sich, Methoden der elektronischen Digitale Unterschrift(EDS) und Datenverschlüsselung. Darüber hinaus bietet EDS in der Regel die Authentifizierung, die Bestätigung von Authentizität und Integrität, und der Datenabschluss wird durch Verschlüsselung erreicht.

Allgemeine Informationen zur elektronischen digitalen Signatur

EDS und die Möglichkeit seiner Fälschung

Eine elektronische digitale Signatur sind Daten, die dem ursprünglichen Informationsblock (Dokument) hinzugefügt werden, der als Ergebnis seiner kryptographischen Transformation erhalten wurde (abhängig vom geheimen Schlüssel und dem ursprünglichen Informationsblock oder Dokument). EDS gewährleistet die Integrität von Nachrichten (Dokumenten) mit garantierter Identifizierung ihres Autors (der Person, die das Dokument unterschrieben hat), die meistens über ungeschützte Telekommunikationskanäle öffentlicher Nutzung übermittelt werden.

Die Verifizierung der elektronischen digitalen Signatur des Informationsblocks erfolgt durch kryptografische Umwandlung des EDS unter Verwendung des öffentlichen Schlüssels, der dem geheimen Schlüssel entspricht, der am Prozess der Installation des EDS teilgenommen hat.

Die Unmöglichkeit, eine elektronische digitale Signatur zu fälschen, wird durch sehr viele mathematische Berechnungen erreicht (zum Beispiel kann die Unmöglichkeit der Fälschung einer Signatur auf die Komplexität der Lösung des Problems des diskreten Logarithmus in einem Feld von p Elementen zurückzuführen sein - El-Gamals Signaturschema). Das Anbringen einer Signatur an einem Dokument ändert nicht das Dokument selbst, sondern ermöglicht nur die Überprüfung der Authentizität und Urheberschaft der erhaltenen Informationen (d. h., dem Dokument selbst oder separat davon wird ein Datenblock hinzugefügt - das EDS davon dokumentieren).

Zertifizierungsstelle

Oben haben wir die Begriffe "privater Schlüssel" und "öffentlicher Schlüssel" erwähnt. Woher kamen diese Schlüssel? Sie werden von einer Zertifizierungsstelle gebildet – einer Struktur (Organisation), die Zertifikate verwaltet. Ein öffentliches / privates Schlüsselzertifikat ist der folgende Datensatz:

  • der Name des Subjekts oder Objekts des Systems, der es im System eindeutig identifiziert;
  • öffentlicher / privater Schlüssel eines Subjekts oder Objekts des Systems;
  • zusätzliche Attribute, die durch die Anforderungen für die Verwendung des Zertifikats im System bestimmt werden;
  • eine elektronische digitale Signatur des Herausgebers (Zertifizierungsstelle), die die Gesamtheit dieser Daten bescheinigt.

So enthält beispielsweise ein Private-Key-Zertifikat den Private-Key selbst und zusätzliche Informationen darüber.

Die Zertifizierungsstelle (SC) erzeugt für jeden registrierten Benutzer des Informationssystems zwei Zertifikate – ein Private-Key-Zertifikat und ein Public-Key-Zertifikat. In diesem Fall verteilt der erste SC persönlich an den registrierten Benutzer (zB auf einer Diskette) und an alle anderen - dies ist die "Unterschrift". Das zweite Zertifikat - offen - veröffentlicht der SC in einem öffentlichen Speicher, damit jeder Interessierte es leicht finden kann.

Generierung und Verifizierung von EDS

Der Absender von Informationen verschlüsselt die in digitaler Form präsentierten übertragenen Informationen mit einem geheimen Schlüssel und einem asymmetrischen Algorithmus (EDS-Algorithmus), der nach Vereinbarung zwischen den Teilnehmern vorgewählt wird, und erhält so eine digitale Signatur der Daten. Ferner sendet der Sender der Informationen über einen offenen Kommunikationskanal die unverschlüsselten Informationen und die durch das oben beschriebene Verfahren erhaltene digitale Signatur an den Empfänger.

Der Empfänger der Nachricht unter Verwendung des öffentlichen Schlüssels (der öffentlich zugänglich ist) und des EDS-Algorithmus, der nach Vereinbarung zwischen den Teilnehmern ausgewählt wird, gibt die digitale Signatur frei. Anschließend vergleicht er die von ihm erhaltenen unverschlüsselten Informationen und die beim Entschlüsseln der digitalen Signatur gewonnenen Informationen. Wenn die digitale Signatur nicht gefälscht ist und die übertragenen offenen Informationen nicht verzerrt sind, müssen diese beiden Informationen vollständig übereinstimmen. Wenn die Signatur gefälscht wird, unterscheiden sich die erhaltenen öffentlichen Informationen und die bei der Entschlüsselung erhaltenen Informationen erheblich (Abb. 1).

Hash-Funktionen

In dem oben beschriebenen Interaktionsschema zwischen Sender und Empfänger fehlt eine Operation. Es ist der Stufe der Datenverschlüsselung zugeordnet, in der ein EDS generiert wird. Wenn wir nur einen EDS generieren, wird dieser (je nach Algorithmus) in der Regel ungefähr die gleiche Länge wie der ursprüngliche Datenblock haben und wir müssen eine Nachricht doppelter Länge über das Netzwerk übertragen. Dies würde sich natürlich negativ auf den gesamten Ablauf des Systembetriebs auswirken. Daher werden vor dem Generieren eines EDS die Anfangsdaten unter Verwendung einer Hash-Funktion verarbeitet, und somit wird die Signatur kompakt. Um das richtige Ergebnis zu erhalten, muss der Empfänger natürlich dieselbe Transformation mit dem empfangenen Datenblock durchführen.

Die verwendete Hash-Funktion muss in der Lage sein, eine Nachricht beliebiger Länge in eine binäre Folge fester Länge umzuwandeln. Darüber hinaus muss es folgende Anforderungen erfüllen:

  • die Nachricht nach Anwendung der Hash-Funktion muss von jedem Bit der ursprünglichen Nachricht und von ihrer Reihenfolge abhängen;
  • die gehashte Version der Nachricht kann nicht verwendet werden, um die Nachricht selbst wiederherzustellen.

Verschlüsselung verstehen

Datenverschlüsselung und ihr Unterschied zu EDS

Die Informationsverschlüsselung ist eine mathematische (kryptografische) Eins-zu-Eins-Transformation in Abhängigkeit vom Schlüssel (geheimer Transformationsparameter), der dem Block entspricht Informationen öffnen, dargestellt in einer digitalen Kodierung, ein Block verschlüsselter Informationen, auch in digitaler Kodierung dargestellt. Die Verschlüsselung kombiniert zwei Prozesse: die Verschlüsselung und die Entschlüsselung von Informationen (Abb. 2).

Der grundlegende Unterschied zwischen EDS und Verschlüsselungsverfahren (wir betrachten jetzt asymmetrische Algorithmen, bei denen unterschiedliche, aber mathematisch verwandte Schlüssel zum Ver- und Entschlüsseln verwendet werden) besteht darin, dass der öffentliche Schlüssel des Empfängers zum Verschlüsseln und der private Schlüssel zum Entschlüsseln verwendet wird. während der EDS-Algorithmus den geheimen Schlüssel des Autors erfordert, um eine Nachricht zu signieren, und den öffentlichen Schlüssel des Autors, um den EDS zu verifizieren.

Brechen

Theoretisch kann jeder Verschlüsselungsalgorithmus, der einen Schlüssel verwendet, geknackt werden, indem alle Schlüsselwerte aufgezählt werden. Bei Übereinstimmung des Schlüssels wächst die benötigte Rechenleistung exponentiell mit zunehmender Schlüssellänge. Ein 32-Bit-Schlüssel erfordert 232 (ca. 109) Schritte. Eine solche Aufgabe liegt in der Macht jedes Amateurs und kann auf einem Heimcomputer gelöst werden. Systeme mit einem 40-Bit-Schlüssel (zum Beispiel die amerikanische Exportversion des RC4-Algorithmus) benötigen 240 Schritte - eine solche Rechenleistung ist in den meisten kleinen Unternehmen vorhanden. Systeme mit 56-Bit-Schlüsseln (DES) sind mit erheblichem Aufwand zu knacken, können aber mit spezieller Hardware leicht gebrochen werden. Die Kosten für solche Geräte sind beträchtlich, aber für die Mafia, große Unternehmen und Regierungen erschwinglich. 64-Bit-Schlüssel können derzeit von großen Staaten geöffnet werden, und in den nächsten Jahren werden sie kriminellen Organisationen, großen Unternehmen und kleinen Staaten zur Verfügung stehen. 80-Bit-Schlüssel könnten in Zukunft angreifbar werden. 128-Bit-Schlüssel werden voraussichtlich auf absehbare Zeit für Brute-Force-Angriffe unzugänglich bleiben. Es können auch längere Schlüssel verwendet werden.

Die Schlüssellänge ist jedoch nicht alles. Viele Chiffren können gebrochen werden, ohne alle möglichen Kombinationen auszuprobieren, aber mit einem speziellen Algorithmus (zum Beispiel mit polynomialer Komplexität). Im Allgemeinen ist es sehr schwierig, eine Chiffre zu finden, die nicht mit einer anderen Methode, die effektiver als Brute-Force ist, hätte gebrochen werden können.

Bitte beachten Sie, dass der Grad der Zuverlässigkeit kryptografisches System wird durch sein schwächstes Glied bestimmt. Kein Aspekt des Systemdesigns sollte übersehen werden, von der Auswahl des Algorithmus bis hin zu Schlüsselverwendungs- und Verteilungsrichtlinien.

Elektronische digitale Signatur von XML-Dokumenten

Diejenigen, die mit XML arbeiten, wissen seit langem, wie wichtig ein Mechanismus zur Kontrolle der in XML übertragenen und präsentierten Daten ist. Die Hauptanforderungen an die übermittelten Daten sind die Authentifizierung der interagierenden Parteien und die Bestätigung der Authentizität und Integrität der Informationen im XML-Dokument. Solche Aufgaben werden durch die digitale Signatur von XML-Dokumenten gelöst.

XML-EDS-Spezifikationen vom W3C

Das W3C entwickelt derzeit die Spezifikation XML - Signature Syntax and Processing und andere zugehörige Dokumente. Bisher hat es einen Empfehlungsstatus (http://www.w3.org/TR/xmldsig-core/). Dieses Dokument sieht die Signatur sowohl des gesamten XML-Dokuments als auch eines Teils davon vor. Um den XML-Signierungsprozess konsistent zu gestalten, wird der Begriff einer kanonischen Darstellung von XML-Daten definiert. Beispielsweise können in einem XML-Dokument Tags auf derselben Ebene im Hierarchiebaum vermischt werden, wodurch Mehrdeutigkeiten für den Signierprozess entstehen. Die kanonische Darstellung von XML ist eine Art Sortierung (bzw. Reduktion auf die einfachste Form), die solche Freiheiten nicht zulässt. Methoden und Regeln zur XML-Kanonisierung sind beschrieben in separates Dokument- "Canonical XML" (http://www.w3.org/TR/xml-c14n), das ebenfalls einen Empfehlungsstatus hat. Weitere Materialien zum Signieren eines XML-Dokuments sind unter http://www.w3.org/Signature/ verfügbar.

Schild - XML-Signatur

Die Empfehlung XML - Signature Syntax and Processing legt fest, dass die Signatur und Informationen dazu in einem Tag enthalten sein sollten , das aus folgenden Teilen besteht (sie werden hauptsächlich für die Signaturprüfung benötigt):

  • CanonicalizationMethod definiert einen bestimmten Satz von Regeln, um eine XML-Instanz vor dem Signieren zu vereinfachen und zu strukturieren. Diese Informationen stellen sicher, dass die zu signierenden Daten für den Verifizierungsalgorithmus geeignet sind, um ein positives Ergebnis zu liefern, wenn die aussagekräftigen Daten nicht geändert wurden;
  • die Signaturmethode (SignatureMethod) definiert den Algorithmus zum Signieren des Message Digest. Ein Message Digest ist eine eindeutige Zeichenkette fester Größe, er ist das Ergebnis der Datenverarbeitung unter Verwendung einer Einweg-Hash-Funktion, die durch die Digest-Methode spezifiziert wird;
  • Digest-Methode (DigestMethod) – ein Algorithmus zum Erstellen eines mit der angegebenen Signaturmethode zu signierenden Nachrichten-Digests. Durch die Angabe einer bestimmten Digest-Methode wird sichergestellt, dass die Daten auf die gleiche Weise verarbeitet werden;
  • Digest-Wert (DigestValue) – der Nachrichten-Digest selbst, d. h. ein String mit fester Länge, der als Ergebnis der Datenverarbeitung mit dem Digest-Algorithmus zurückgegeben wird. Eine solche Zeichenfolge ist einzigartig und irreversibel: Es ist fast unmöglich, sie aus anderen Inhalten zu erhalten, ebenso wie es unmöglich ist, die Originaldaten daraus wiederherzustellen. Es ist wie ein Fingerabdruck für die zu signierenden Daten; ein positiver Vergleich der Digest-Werte garantiert die Integrität des Inhalts;
  • die Signatur selbst (SignatureValue) sind die Daten, die nach der Verarbeitung durch das Signaturverfahren erhalten wurden;
  • Informationen über den öffentlichen Schlüssel (KeyInfo) - ein Schlüssel zur Überprüfung der digitalen Signatur. Genauer gesagt kein Schlüssel, sondern ein Zertifikat, da neben dem Schlüssel selbst auch der Name des Besitzers und der EDS-Algorithmus angegeben werden können.

Dies ist natürlich keine erschöpfende Information darüber, was das Tag enthalten kann. ... Hier einfachstes Beispiel eine solche Signatur (Listing 1).

Bildung von EDS-XML

Es ist zu beachten, dass sich der XML-Signierprozess vom klassischen unterscheidet. Der Punkt ist, dass der Prozess des Signierens einer XML-Instanz mit der Kanonisierung beginnt, dh mit der Vereinfachung der Datenstruktur. Wie bereits erwähnt, ist dieses Verfahren notwendig, damit das EDS für dasselbe XML-Dokument, das auf unterschiedliche Weise präsentiert wird, korrekt verifiziert werden kann. Das bedeutet, dass vor dem Signieren alle XML-Dokumente in eine einzige kanonische Form konvertiert werden müssen. Weitere Aktionen sind ähnlich Standardprozess digital signieren: Für die Daten wird mit der angegebenen Methode ein Digest-Wert generiert, dann wird dieser Wert mit dem privaten Schlüssel des Dokumentautors signiert.

XML-EDS-Verifizierung

Um die Signatur zu überprüfen, müssen Sie zwei Schritte ausführen: die Signatur selbst überprüfen und den Digest-Wert überprüfen.

Die Signatur selbst wird zuerst verifiziert, um sicherzustellen, dass der Besitzer authentifiziert ist und um eine Nichtabstreitbarkeit zu verhindern. Der Digest-Wert wird dann überprüft, um sicherzustellen, dass sich die Daten nicht geändert haben, und die Integrität des XML-Inhalts wird überprüft.

Verschlüsseln von XML-Dokumenten

W3C XML-Verschlüsselungsspezifikationen

Kommen wir zur Verschlüsselung, die es uns ermöglicht, die übertragenen Daten zu schließen (dh sie in eine Form zu konvertieren, in der die Bedeutung nicht verstanden wird), und sie auf der Empfangsseite wiederherzustellen. Das W3C-Konsortium erstellt Arbeitsgruppe(http://www.w3.org/Encryption/2001/), die sich speziell mit der Verschlüsselung von XML-Daten befasst. Die Spezifikation XML - Encryption Syntax and Processing ist jetzt eine Empfehlung und steht unter http://www.w3.org/TR/xmlenc-core/ zur Verfügung.

Schild

  • Verschlüsselungsverfahren (EncryptionMethod) beschreibt den Datenverschlüsselungsalgorithmus. Fehlt dieses Tag, muss der Verschlüsselungsalgorithmus der Empfängerseite bekannt sein, sonst ist eine Entschlüsselung der Nachricht nicht möglich;
  • verschlüsselte Daten (CipherData) - die eigentlichen verschlüsselten Daten oder ein Link zu ihrem Standort. Die Vielfalt der zu verschlüsselnden Datentypen und Methoden ihrer logischen Organisation ist praktisch unbegrenzt;
  • Informationen über Schlüssel (KeyInfo) - Informationen über die Schlüssel, mit denen die Verschlüsselung und dementsprechend die Entschlüsselung durchgeführt wird. Sie können an anderer Stelle gespeichert und in der XML-Instanz durch einen URL-Link ersetzt werden;
  • andere Informationen (zum Beispiel über die beabsichtigten Empfänger).

Beispiel-Tag in Listing 2 gezeigt.

Verschlüsselungs- und Entschlüsselungsprozess

XML-Datenverschlüsselung ist abgeschlossen traditionelle Methoden Kryptografie mit öffentlichem Schlüssel. Zunächst werden die Daten selbst in der Regel mit einem zufällig generierten geheimen Schlüssel verschlüsselt, der dann auch mit dem öffentlichen Schlüssel des vorgesehenen Empfängers verschlüsselt wird. Diese Informationen werden so verpackt, dass nur der beabsichtigte Empfänger den geheimen Schlüssel extrahieren und die Daten entschlüsseln kann. Um den geheimen Schlüssel zu entschlüsseln, wird ein versteckter Schlüssel verwendet, und dann werden die Daten unter Verwendung des gefundenen geheimen Schlüssels entschlüsselt.

Implementieren von Sicherheit für XML-Dokumente

Wir haben überlegt allgemeine Grundsätze digitale Signaturarbeit und Spezifikationen, die das W3C in diesem Bereich entwickelt hat. Das ist schön und gut, aber was ist, wenn die beschriebenen XML-Datenschutzschemata wirklich implementiert werden müssen?

Trotz der Tatsache, dass die W3C-Standards erst vor kurzem erschienen sind, haben einige Unternehmen auch heute die Veröffentlichung ihrer Pakete (Klassenbibliotheken) angekündigt, die sowohl digitale Signaturen als auch Verschlüsselung implementieren. Betrachten wir die Möglichkeiten einiger von ihnen.

XML-Sicherheitssuite (IBM)

Dieses Paket basiert auf der Sprache Java-Programmierung, verfügbar unter http://www.alphaworks.ibm.com/tech/xmlsecuritysuite. XML Security Suite ist ein Tool, das Sicherheitselemente wie digitale Signaturen, Verschlüsselung und Zugriffskontrolle für XML-Dokumente bereitstellt. Es kann verwendet werden, um einen größeren Erfolg zu erzielen als die Fähigkeiten von Sicherheitsprotokollen der Transportschicht (z. B. Secure Sockets Layer, SSL).

Dieses Paket implementiert drei Technologien:

  • Das EDS basiert auf der Spezifikation XML - Signature Syntax and Processing des W3C und der IETF (und der Canonical XML-Spezifikation);
  • die Verschlüsselung wird basierend auf der XML - Encryption Syntax and Processing Spezifikation des W3C implementiert;
  • Zugriffskontrolle für XML-Dokumente (XML Access Control Language).

XML Security Suite ist eines der besten modernen Tools zum Schutz von XML-Dokumenten. Neben dem Archiv (JAR) mit der Klassenbibliothek selbst enthält es eine ausführliche Dokumentation und Beispiele, um schnell in der Klassenhierarchie zu navigieren.

XML-Sicherheit (Apache)

XML-basierter Datenschutz

Markup-Sprache für Sicherheitsansprüche (SAML)

Ein anderer, aber eng mit dem Schutz von XML-Daten verbundener Bereich ist die Verbesserung der Sicherheit und Sicherheit von XML-basierten Systemen (Protokollen). In diesem Fall werden andere Dokumente / Systeme / Anwendungen mit XML geschützt. Das Sicherheitskomitee der Organisation for the Advancement of Structured Information Standards (OASIS) entwickelt derzeit eine Security Assertion Markup Language (SAML).

Bundesgesetz "Über die elektronische digitale Signatur"

Ziele

Lassen Sie uns ein wenig von den Gesetzgebern im Bereich des Webs abschweifen und betrachten wir das Bundesgesetz "Über elektronische digitale Signaturen", das am 10. Januar 2002 vom Präsidenten der Russischen Föderation verabschiedet wurde (http://www.internet-law .ru/intlaw/laws/ecp.htm). Die Verabschiedung dieses Gesetzes lieferte rechtliche bedingungen die Verwendung einer elektronischen digitalen Signatur in elektronischen Dokumenten, bei der eine elektronische digitale Signatur in einem elektronischen Dokument einer handschriftlichen Unterschrift in einem Papierdokument gleichgestellt wird. Damit ist der Grundstein für die Schaffung eines rechtlich bedeutsamen elektronischen Dokumentenflusses gelegt.

Bedingungen der Gleichwertigkeit von EDS und ordentlicher Unterschrift

Das Gesetz definiert die im EDS-Verfahren verwendeten Grundbegriffe wie Zertifikat, öffentliche und private Schlüssel, Bestätigung der Authentizität einer elektronischen digitalen Signatur (wir haben sie zuvor untersucht) usw. Darüber hinaus bestimmt das Gesetz die Bedingungen, unter denen ein Die elektronische digitale Signatur in einem elektronischen Dokument entspricht einer Signatur in einem Dokument auf Papier. Dies bedeutet zunächst, dass das zu dieser elektronischen digitalen Signatur gehörende Signaturschlüsselzertifikat zum Zeitpunkt der Prüfung bzw. zum Zeitpunkt der Unterzeichnung des elektronischen Dokuments nicht ungültig geworden ist. Zudem muss die Authentizität der elektronischen digitalen Signatur und die Verwendung des EDS gemäß den Angaben im Signaturschlüsselzertifikat bestätigt werden.

Zertifikate und Zertifizierungsstellen

Das Gesetz beschreibt detailliert, woraus das Signaturschlüsselzertifikat besteht (eindeutige Registrierungsnummer, vollständiger Name des Besitzers, öffentlicher EDS-Schlüssel, Name und Standort der Zertifizierungsstelle usw.); Bedingungen und Verfahren zur Aufbewahrung des Zertifikats in der Zertifizierungsstelle. Die Aufbewahrungsdauer des Signaturschlüsselzertifikats in Form eines elektronischen Dokuments in der Zertifizierungsstelle wird also durch die Vereinbarung zwischen der Zertifizierungsstelle und dem Inhaber des Signaturschlüsselzertifikats bestimmt. Hinsichtlich der Speicherung ist diese gesetzlich bestimmt. Russische Föderationüber Archive und Archivangelegenheiten.

Den Zertifizierungsstellen ist ein eigenes Kapitel des Gesetzes gewidmet. Die Erstellung und Verifizierung des EDS selbst kann ohne Beteiligung von Zertifizierungsstellen erfolgen, wenn dies von den Parteien bestätigt wird. In öffentlichen Informationssystemen und in vielen Unternehmensinformationssystemen ist die Verwendung digitaler Signaturen jedoch ohne das Funktionieren von Zertifizierungsstellen nicht möglich, da dies zu relativ einfachen Mechanismen der Signaturfälschung führt.

Private (geheime) Schlüssel

EDS kann seine Funktionen nur erfüllen, wenn der Unterzeichner über Informationen verfügt, die für Außenstehende nicht zugänglich sind. Diese Informationen ähneln dem Verschlüsselungsschlüssel und werden daher als „privater Schlüssel einer elektronischen digitalen Signatur“ bezeichnet (früher wurde der ähnliche Begriff „geheimer Schlüssel“ verwendet). Sowohl der private Schlüssel als auch der Verschlüsselungsschlüssel müssen geheim gehalten werden, da die Kenntnis des privaten Schlüssels der Signatur einem vom Besitzer des privaten Schlüssels unterzeichneten leeren Blatt Papier entspricht, auf das ein Angreifer jeden beliebigen Text schreiben kann, der ihm zugeschrieben würde der wahre Besitzer des privaten Schlüssels. Kunst. 12 des Gesetzes weist unmittelbar auf die Verpflichtung des Inhabers des Signaturschlüsselzertifikats hin, den privaten Schlüssel geheim zu halten und unverzüglich die Aussetzung des Signaturschlüsselzertifikats zu verlangen, wenn Grund zur Annahme besteht, dass das Geheimnis des privaten Signaturschlüssels verletzt wurde .

Kunst. 5 des Gesetzes legt das Verfahren zur Erstellung von privaten Signaturschlüsseln unter Berücksichtigung der strikten Einhaltung des Geheimnisses ihrer Erstellung fest. Der gleiche Umstand wird von Art. 9 des Gesetzes über die Tätigkeit von Zertifizierungsstellen. In betrieblichen Informationsstrukturen ist das Thema Fertigung und Versand geschlossen EDS-Schlüssel mit eigenen Methoden gelöst werden kann, der Benutzer der digitalen Signatur muss sich jedoch der möglichen Konsequenzen einer solchen Organisation der Funktionsweise der digitalen Signatur bewusst sein. Es ist durchaus möglich, dass eine logische Folge als privater Schlüssel verwendet wird, wie dies bei der Verwendung eines Passwortsystems der Fall ist.

Inländische Standards für EDS-Algorithmen

El Gamal-Schema

1994 wurde der erste nationale Standard im Bereich der elektronischen Signatur verabschiedet - GOST R34.10 - 94 " Informationstechnologie. Kryptografischer Schutz Information. Verfahren zur Erzeugung und Verifizierung einer elektronischen digitalen Signatur basierend auf einem asymmetrischen kryptographischen Algorithmus". Es definiert die Verfahren für die Arbeit mit EDS basierend auf dem El-Gamal-Schema. Die Unmöglichkeit, eine Signatur zu fälschen, liegt an der Komplexität der Lösung des Problems des diskreten Logarithmus in einem Körper von p Elementen oder der Komplexität der Definition der Zahl x gegeben einer großen Primzahl p und Zahlen a, b aus dem Intervall von 2 bis p-1, die im Vergleich durchgeführt wird:

Ax == bmodp.

Die Mathematiker bleiben jedoch nicht stehen, und in letzter Zeit wurden große Fortschritte bei der Entwicklung von Methoden zur Lösung des Problems des diskreten Logarithmus auf einem Gebiet der p Elemente gemacht. In letzter Zeit wurde das sogenannte Zahlenfeldsiebverfahren entwickelt. Es kann verwendet werden, um den durch das obige Verfahren erzeugten EDS zu knacken (zumindest im Fall eines 512-Bit-Moduls p).

Eine der einfachsten Lösungen für dieses Problem besteht darin, die Länge des Moduls p zu erhöhen. Aber leider verschlechtern sich mit zunehmendem p die Betriebseigenschaften des Algorithmus, da die Länge des öffentlichen Schlüssels und die Zeit zum Erzeugen und Verifizieren der Signatur zunehmen.

Elliptische Kurve

Letztendlich kamen russische Wissenschaftler zu dem Schluss, dass es möglich ist, das El-Gamal-Schema etwas zu komplizieren und damit ohne zusätzlichen Rechenaufwand die Komplexität des Schmiedens eines EDS um ein Vielfaches zu erhöhen. Die neue Version des Schemas von El Gamal verwendet den Apparat elliptischer Kurven über einem endlichen Körper von p Elementen, die als eine Menge von Zahlenpaaren (x, y) definiert sind (jedes davon liegt im Bereich von 0 bis p-1 ), die den Vergleich erfüllt (Zahlen a und b sind festgelegt und entsprechen einer zusätzlichen Bedingung):

Y2 == x3 + ax + bmodp.

Andere Ressourcen

  • Informationen zum Oracle XML-SQL-Dienstprogramm - http://otn.oracle.com/tech/xml/xdk_java/content.html
  • SAML-Spezifikationen - http://www.oasis-open.org/committees/security/
  • XKMS-Spezifikation - http://www.w3.org/TR/xkms/
  • Bundesgesetz "Über die elektronische digitale Signatur" -

Gemäß Gesetz 218-FZ "Über die staatliche Registrierung von Immobilien" müssen elektronische XML-Dokumente und gescannte Bilder von Dokumenten unterzeichnet werden erweiterte qualifizierte elektronische Signatur... Alle Programme der Serien "Polygon", "Polygon Pro" und des Programms "Signature Pro" sind mit einer solchen Signatur versehen.

Zur Unterschrift:

    Erhalten Signaturschlüssel(Zertifikat) in Zertifizierungszentrum... Die Liste der akkreditierten Zertifizierungsstellen ist auf der Rosreestr-Website (Liste der Zertifizierungsstellen) veröffentlicht. Ein Zertifikat erhalten Sie in unserem Zertifizierungszentrum LLC "Programmzentrum".

    Kaufen Sie zusammen mit der Signatur das Programm und installieren Sie es auf Ihrem Computer CryptoPro CSP(enthält die erforderlichen russischen Signaturstandards), die auch bei unserem Zertifizierungszentrum LLC "Programmzentrum".

Notiz: andere Signatursoftware nicht benötigt: CryptoARM (die Fähigkeiten von CryptoARM in Bezug auf die Signatur ähneln denen der Programme der Serie " Polygon», « Polygon Pro"Und Programme" Signatur-Pro»).

Notiz: Wenn Sie den Signaturschlüssel vor der Ausstellung des Gesetzes 63-FZ "Über elektronische Signaturen" (vor dem 01.07.2013) bei der Zertifizierungsstelle erhalten haben, ist dieser bis 01.01.2014 gültig. Sie muss 2017 durch eine neue ersetzt werden. Dies liegt daran, dass die Unterschrift nach dem neuen Gesetz die Zertifikatsnummer der SNILS (Pensionskasse der Russischen Föderation) enthalten muss.

Programmmodule der Polygon Pro-Plattform

Unterschreiben Sie ein elektronisches Dokument in den Softwaremodulen der Polygon Pro-Plattform

Gehen Sie wie folgt vor, um die XML-Datei zu signieren:

Notiz: werden Fehler gefunden, so wird unterhalb der Struktur der XML-Datei ein Protokoll zur Prüfung des elektronischen Dokuments mit Warnungen und/oder Fehlern angezeigt. Es wird empfohlen, Fehler zu korrigieren und auch Warnungen zu beachten.

Ebenso können Sie eine XML-Datei direkt aus dem Fenster " SichtXML", Klicken Sie dazu auf die Schaltfläche in der Symbolleiste - « UnterschriftXML-Datei» .

  • Nach dem Anklicken öffnet sich ein Fenster mit einer Liste der installierten Zertifikate. Wählen Sie das gewünschte aus und klicken Sie auf « OK» .

  • Als nächstes signiert das Programm das Hauptdokument und zeigt eine Erfolgsmeldung an.

Hinweis: Im selben Ordner wie die signierte Datei wird eine Signaturdatei mit demselben Namen mit der Erweiterung * erstellt. . sig.

Signieren Sie eine Gruppe von Dateien in den Programmmodulen der Polygon Pro-Plattform

Das Programm hat die Möglichkeit, eine Gruppe von Dateien gleichzeitig zu signieren. Gehen Sie dazu wie folgt vor:

Notiz: Wenn die Liste Dateien enthält, die nicht signiert werden müssen, deaktivieren Sie sie, um sie vom Signiervorgang auszuschließen.

  • Klicken Sie auf die Schaltfläche « Unterschrift» , woraufhin sich ein Fenster mit einer Liste der installierten Zertifikate öffnet. Wählen Sie das gewünschte aus und klicken Sie auf « OK» .

  • Als nächstes signiert das Programm alle Dokumente und gibt eine Meldung zum Signieren aus.

Notiz: Treten beim Signieren Fehler auf, wird ein Verifizierungsprotokoll mit Warnungen und/oder Fehlern angezeigt. Korrektes Signieren erfordert das Korrigieren von Fehlern.

Signieren Sie die Datei in den Programmmodulen der Polygon Pro-Plattform

Das Programm hat die Möglichkeit, jede vorhandene Datei zu signieren, zum Beispiel Dateien, die an das Projekt angehängt sind (gescannte Dokumente oder Bilddateien), einschließlich auf die gleiche Weise wie Sie ein elektronisches Dokument (XML-Datei) signieren können.

  • Heimat"Im Untermenü der Schaltfläche" Alle unterschreiben"Klicken Sie auf die Schaltfläche -" Unterschrift…", Danach öffnet sich das Dateiauswahlfenster.

  • Wählen Sie im sich öffnenden Fenster die Datei aus, die Sie signieren möchten, und klicken Sie auf " Offen».

    Es öffnet sich ein Fenster mit einer Liste der installierten Zertifikate. Wählen Sie die gewünschte aus und klicken Sie auf " OK».

  • Als nächstes signiert das Programm das ausgewählte Dokument und zeigt eine Meldung über die Bereitschaft an.

Notiz: im selben Ordner wie die signierte Datei wird eine Signaturdatei mit demselben Namen mit der Erweiterung . erzeugt * . sig.

Überprüfen Sie die elektronische Signatur in den Softwaremodulen der Polygon Pro-Plattform

Wenn Sie eine signierte Datei von außen erhalten haben und überprüfen möchten, ob die empfangene Datei nach dem Signieren geändert wurde, oder nur die Richtigkeit der generierten Dateisignatur überprüfen möchten, führen Sie Folgendes aus:

    Auf der Multifunktionsleiste des Programmmoduls im " Heimat"Im Untermenü der Schaltfläche" Alle unterschreiben"Klicken Sie auf die Schaltfläche" Verifizieren…».

    Wählen Sie die Datei mit der Signatur (mit der Erweiterung *. sig) zu prüfen oder ggf. eine signierte Datei. Wenn sich diese beiden Dateien in unterschiedlichen Ordnern befinden, zeigt das Programm ein Warnfenster an, in dem Sie auf die Schaltfläche " Wiederholen"Und wählen Sie die Quelldatei aus.

  • Sie erhalten ein Protokollfenster mit Informationen, ob das Dokument von wem und wann korrekt signiert wurde, oder Informationen über die Abweichung von der Originaldatei oder ob sonstige Fehler aufgetreten sind.

Signature Pro-Programm

Für eine bequeme Interaktion mit ZertifizierungszentrumLLC "Programmzentrum", Verwaltung digitaler Zertifikate und privater Schlüssel der elektronischen Signatur, sowie zum Signieren verschiedener Dateien mit einer elektronischen Signatur wurde das Programm SignaturePro entwickelt.

Anleitung zum Signieren von Dateien, wenn die Programme der Serien "Polygon", "Polygon Pro" oder "Signature Pro" nicht verwendet werden.

Wie signiere ich eine Datei digital?

Diese Anweisungen sind ungefähre Angaben, die einzelnen Schritte können von der auf Ihrem Computer installierten Software abhängen. Ein Teil der Schulung wurde im Februar 2012 abgeschlossen, unsere Programme bieten jedoch eine bequemere Möglichkeit, elektronische Dokumentendateien zu signieren verbesserte qualifizierte elektronische Signatur.

So signieren Sie Dateien mit elektronischen Dokumenten: Grenzplan, Kartenplan, technischer Plan Bei einer elektronischen Signatur müssen Sie sicherstellen, dass die installierten Programme verfügbar sind:

    Krypto-Anbieter "CryptoPro CSP";

    "Krypto-AWP" - dieses Programm ist nur erforderlich, wenn Sie die Programme der Serie "Polygon" nicht verwenden, dieses Programm ist in Bezug auf das Signieren mit den Programmen der Serie "Polygon" identisch und wird daher nicht benötigt; um Dateien mit Programmen der Serie "Polygon" zu signieren, siehe die vorherige Seite der Anleitung; Sie können sowohl mit den Programmen der "Polygon" -Serie als auch mit dem CryptoARM-Programm signieren, wenn Sie der Meinung sind, dass dies bequemer ist, als die vorhandenen Fähigkeiten der Programme der "Polygon" -Serie zu verwenden;

Jede Datei (XML, Scan eines gedruckten Dokuments und Antragsdateien) muss unterschrieben werden, da die Katasterbehörde nur Dateipaare akzeptiert: die Originaldatei und die dazugehörige Signaturdatei. Um eine Datei zu signieren, müssen Sie sie im Explorer-Fenster auswählen und mit der rechten Maustaste (RMB) klicken, ein Kontextmenü wird angezeigt, darin sollten Sie den Punkt "CryptoARM" auswählen und dann " Unterschrift…».



Stellen Sie dann sicher, dass der Dateiname korrekt ist



Wichtig! Stellen Sie den Schalter auf " DER-Codierung", Legen Sie den Ordner für die Ausgabedateien nach eigenem Ermessen fest. Drücken Sie den Knopf " Weiter". Im nächsten Fenster Signaturparameter zuweisen


In diesem Fenster ist das Wichtigste, das Kästchen " Signatur in separater Datei speichern". Drücke den " Weiter". Klicken Sie im nächsten Fenster auf " Auswählen»


ein Fenster zur Auswahl eines Zertifikats öffnet sich


Wählen Sie darin das Zertifikat Ihres Schlüssels aus (sehen Sie nach dem Namen des Besitzers). Drücken Sie nach der Auswahl die Taste " OK" und " Weiter". Drücken Sie im letzten Fenster vor dem Unterschreiben des Dokuments die Schaltfläche " Bereit».

Wichtig! Für jede Datei muss eine Signaturdatei erstellt werden, da nur ein Paar akzeptiert wird: die Originaldatei (xml oder andere) + die Signatur dazu (Sig-Datei).