Brechen der U-Bahn (Reise, Karten) + Algorithmus verschlüsselte Umwandlung in Übereinstimmung mit GOST 28147-89

Auf Seite:


Brechen der U-Bahn (Reise, Karten)

Vertraute Möchten Sie die Rätsel alle zu lösen, so dass alle den Schutz der Moskauer Metro öffnen? Sind zum Beispiel ein "ewigen Ticket"? Aber Metro Experten finden immer anspruchsvollere Möglichkeiten des Schutzes. Metall Tokens wurden durch Kunststoff ersetzt, sie wiederum, Magnetkarten und kontaktlose Karten zu ersetzen magnetische angekommen. Viele Forscher ließ seine Hände - es scheint, als ob der Metropolitan eine uneinnehmbare Festung wurde. Aber jede Verteidigung kann umgangen werden. Und oft ist es offen manchmal einfacher, als zu bauen ...

Wie alles begann

Das Interesse an der U-Bahn-System kam für eine lange Zeit bei mir, können wir sagen, in der Schule, wenn im Verlauf noch waren Karten mit Magnetstreifen. Zur gleichen Zeit (vor zehn Jahren) in Betrieb gesetzt eine berührungslose Karte für soziale Studenten. Ich begann sich zu fragen, was es ist und wie es funktioniert. Aber in jenen Tagen, und ich hatte nicht genug Fähigkeiten und Informationen, vor allem für diese Technologien in der Öffentlichkeit ein wenig war. Wir hatten die Idee der Forschung in den Schrank zu verschieben, aber ich versprach mir, dass Sie sicher, es wird wiederkommen ...

Vor etwa drei Jahren wieder erwachte ich Interesse an dem Thema U-Bahn. aktiv untersucht magnetischen Karten (Informationen zu diesem Thema in das Internet war viel) und brachte sogar ein wenig stanochek für Duplikate der beiden Köpfe der Rolle machen Tonbandgeräte zu Rolle und eine kleine Menge rassypuhi Ich habe. Ich habe nicht vergessen, und über ihre soziale Karte (jetzt Student). Aber nach der Dokumentation des Studiums wurde deutlich, dass das System praktisch uneinnehmbar - Chip MF1S50 Mifare Classic 1K, die auf der Grundlage der sozialen Sicherheit Karten gemacht werden, geschützt durch zwei 48-Bit-Schlüssel. Auf der Hardware-Ebene zu hacken es nicht leicht zu bekommen, und Sie können die Schlüssel zum Ende des Sonnensystems sortieren. Ja, und Kartenleser, die Klassik, die Kosten zu der Zeit von einigen sehr schwer Geld unterstützen (etwa Ebay, ich glaube irgendwie nicht, leider). Das Interesse an Magnetkarten schnell abgekühlt und soziale Karte hatte sich wieder, bis bessere Zeiten verschoben.

Treffen Sie die "Ultralight"

Tickets "Ultralight" erschien vor kurzem in unserer U-Bahn, aber sofort das öffentliche Interesse rasch geweckt. Sie begannen kurochit, reißen, kleben Eisen und gelten andere Methoden cryptanalysis termorektalnogo. Zwar führte der Durst nach Wissen mich raskurochit Paar. Als Ergebnis ihrer Studie, und die Suche hat sich das Internet etabliert - das ist nichts, wie Mifare Ultralight, «lite" Version ist kompatibel Mifare Classic. Eine schnelle Vorschau der Dokumentation für die Standard-Chips machte klar - es gibt keine eingebauten Schutzsysteme für diese Karten. Alles andere ich den Artikel beschreibt im Detail, griffen die erfolgreich ein ähnliches Transportsystem von niederländischen Studenten Hacking. Alle zusammengeschoben mich auf neue Forschung.

Lassen Sie uns gehen!

Um damit zu beginnen, natürlich, nur irgendwo benötigt, um eine drahtlose Kartenleser zu erhalten, die die "Ultralight" unterstützt. Es gab zwei Möglichkeiten: entweder zu erhöhen (was eine lange Zeit in Anspruch nehmen würde), oder ein fertiges Gerät kaufen. Der Gedanke einer zweiten Ausführung, achten die drei Jahre alten Preise, ging ich eine Gänsehaut. Aber ich beschloss, noch Preise zu sehen. Und kein Wunder! Ich war angenehm überrascht zu erfahren, dass Sie ein voll funktionsfähiges Gerät (OmniKey CardMan 5321) kaufen kann, die eine Reihe von verdrahteten und Wireless-Karten zu einem attraktiven Preis unterstützt - 4000 Rubel.

Natürlich nicht wenig, aber auf der anderen Seite ist es nicht 10000; Darüber hinaus machte sich bereit Leser Kauf es möglich, sofort auf die Erforschung von Tickets zu konzentrieren und nicht auf das Design und Debugging von Eisen, die auf unbestimmte Zeit hinziehen. Zusammen mit dem Leser in der gleichen Firma (ISBC) war sehr bequem Produktion ursprünglichen lokalen SDK erworben. Er wiederum erlaubt keine Zeit und Energie auf das Schreiben und Debuggen von nizkourovnevki Arbeit mit Reader-Software zu verschwenden, und konzentrieren sich direkt auf die Tickets. Also, für ein paar Tage leisurely kleines Programm Codierung geboren, durch die es möglich war, auf bequeme Weise die gesamte innere Struktur von "ultraleichten" zu überwachen und zu regeln. Dann begann ich die Karten zu studieren.

leere Wand

In dem Prozess durch meine Leser des Lernens hat viele Tickets übergeben. Einige habe ich die Ärmel hochgekrempelt, bekam "aus dem Müll", die irgendwie zu kaufen - zu beobachten, was sie aufgezeichnet, dann übergeben und sah wieder. Sie waren fast alle Arten von Karten, mit Ausnahme vielleicht der Reise "ultraleicht" auf 70 Fahrten. Nach ein paar Wochen habe ich eine große Datenbank-Dump gesammelt und sortieren verschiedene Tickets, und in verschiedenen Staaten. Es gab mit dem gleichen Ticket Schuss Deponien nach jeder Fahrt, und Tickets für die wenigen metropolitenovskimi Zahlen in Folge. In meiner Sammlung habe ich sogar ein paar Dumps zwei verschiedenen Zeit einheitliche Sozial Ticket (hat man für einen Zeitraum von 5 Tagen ausgestellt worden ist, das andere 30), die von einem bestimmten Zeitintervall genommen. Es stellte sich heraus sehr interessante Exemplare zu sein, und es ist sehr selten (sie misshandelte mich aus erster Hand sofortige Rückkehr, nur zu "lesen").

In der Tat ist es fast die einzige Art von "ultraleicht", die nicht nur in der U-Bahn betreibt, sondern auch über den Landverkehr. Zudem ist nur diese Art der Fahrkarte im Allgemeinen keine Begrenzung für die Anzahl der Fahrten. Später diente sie mir einen großen Dienst ... All diesen Zoo ich für einen bestimmten Zweck gesammelt - zu deutlich die Struktur und Datenaufzeichnungsformat auf dem Ticket zu definieren. Natürlich sind einige Felder auf dem bloßen Auge sichtbar, aber einige können es nicht. Zum Beispiel habe ich nicht erkennen, wo U-Bahn-Ticket-Nummer aufgezeichnet (derjenige, der auf ihm gedruckt wird). Die Erkenntnis kam ganz zufällig. Die Tatsache, dass ich (und ich die meisten von uns denken), in hex suchen, verwendet, um sich auf die Informationen Byte auszurichten und zu denken, zumindest Bytes. Es stellte sich heraus, dass dieser Ansatz falsch ist. Mit Blick auf die Müllkippe Ticket, müssen Sie kleinere Einheiten zu denken - Notebooks und manchmal Bits. Ich verstand es, wenn letzte Nummer des Tickets "sah" - er wurde von vier Bits von Anfang an von Bytes verschoben und die restlichen 4 Bits auf dieser Seite und auf der anderen Seite Zimmer belegt andere Serviceinformationen. Nach einiger Zeit hat sich das Ticket-Datenaufzeichnungsformat fast vollständig klar.

Es wurde offensichtlich, wo und wie zu speichern alle Daten, Zähler, Bezeichner. Es blieb nur ein paar Felder, deren Zweck es war nicht klar, einfach wegen der Müllkippe, die in ihnen enthaltenen Daten sind gleich zu entleeren. Aber das ist alles Spaß und endete - es wäre töricht anzunehmen, dass solche Karten können ungeschützt gelassen werden. Jeder Speicherauszug betrug 32 Bits von verschiedenen Informationen, nicht mit dem Rest des Inhalts korrelieren. Ich nahm es eine Art Prüfsumme, "Hash" der Daten wurde auf dem Ticket aufgezeichnet. Alle Versuche, zu schätzen oder diese 32 Bits verwandelte sich in einen vollständigen Ausfall berechnen (insbesondere wurde vorgeschlagen, dass dies eine Art der CRC32, mit einem nicht-Polynom und einem Startwert).

Wenn Sie versuchen, mindestens eine und eine halbe Bits von Informationen innerhalb der Ticketvalidierungsterminal in der U-Bahn zu ändern geflasht "BAD TICKET" gewichtige Buchse zakolachivaya die letzten Nägel in den Sarg. Natürlich gibt es Versuche, das System auch auf andere Weise zu umgehen, waren zum Beispiel versuchen, ein Ticket für eine saubere Karte Eins-zu-eins zu kopieren (hier leider verhindert die Fabrik Seriennummer, die, wie sich herausstellte, auch bei der Erzeugung von "Hash" teilgenommen hat) oder die Lock-Bits gesetzt, so zu verbieten, das Drehkreuz der Inhalt des Tickets zu ändern. Verification Terminal solche "ewigen" Ticket zugelassen, aber weigerte sich, das Drehkreuz zu lassen ... Also, ich in eine Wand lief. Das große, starke Betonwand, auf dem viele haben die Gewohnheit, mit einem laufenden Anfang getötet. Kann nicht auf Foren und Message Boards keine Informationen zu finden, habe ich beschlossen, dass dies mein Studium fertig sind - gibt es nicht mehr Tracks und einen fetten Punkt setzen. Wie sich herausstellte, vergebens ...

Eine seltsame Vertrautheit

Die Nacht September war es nicht anders von den anderen. Es war fast Einbruch der Nacht, die Straße war kühl und feucht. Ich saß vor dem Bildschirm, und eine warme, leicht süßen grünen Tee, friedliche Scheidung Gebühr für die nächste Handwerk genießen. DipTarce, wenig bashorga, ICQ ... Jemand auf Skype anrufen - ablenken! Wieder DipTrace ICQ wieder - in der Regel ist alles wie gewohnt. Wieder einmal fiel das Vordergrundfenster aus ICQ - jemand bisher unbekannte mir, er schrieb: "Hallo." Ich Leere sumnyashesya, antwortete er in Art. Die nächste Meldung ein Wendepunkt in der Geschichte war: "Sie mögen die U-Bahn sind interessiert sind, habe ich einige einige Chancen bekommen und dort endet. Wenn Sie interessiert sind, treffen Sie mich, ich werde weitergeben. " Zuerst war ich ein wenig durch sie verwirrt und alarmiert (vielleicht eine Scheidung oder eine Einrichtung, und kann, und "Sonderdienste" interessiert - Paranoia stammt), aber dann dachte ich: warum nicht?

Geheimdienste an mir interessiert wäre wahrscheinlich noch nicht begonnen haben, und die Gründe für die Scheidung, und noch mehr, für die Basen und es scheint nicht zu sein. Nach einem kurzen Gespräch, einigten wir uns am Nachmittag zu treffen, in der Mitte des Raumes eine der Stationen der Moskauer Metro. Der Fremde war ein hochgewachsener junger Mann, Brille, mit einem großen schwarzen Plastikbeutel in der Hand zu tragen. Wir schüttelten uns die Hände, und dann gab er mir eine Tasche mit den Worten: "Auf Sie gehen. Ich interessiere mich nicht nicht nützlich sein, vielleicht würden Sie nützlich sein. " Blick ins Innere, sah ich zwei metroshnyh Terminal Arrangements von Zeitungen, mehrere zufällig verstreut weiße Plastikkarten in einer Box und einer Scheibe. Auf meine Frage, wie viel ich dafür sollte (Geld), schüttelte der Mann den Kopf, lächelte und sagte: "Was meinst du, niemand niemand tun sollte ... Also, ich muss schon laufen, und mein Zug heraus, wie wieder! Komm, bye! ".

Damit lief er weg, sprang in ein bereits Schließen der Tür des Autos und fuhr davon. Und ich gestehen, ein wenig neponyatkah nach Hause ging. Kontakt ICQ von nur falls ich zur gleichen Zeit kontaktlist entfernt gereinigt und an den Server-Logs (hallo wieder, Paranoia) aufräumte. Am Ende schreiben einmal, wenn überhaupt. Aber je mehr habe ich nicht schreiben ...

Das Phänomen der Software Menschen

Als ich nach Hause kam, machte ich das Paket aus. Die zweite der Anschlüsse erschien Bus-Validator (die schwer, verdammt noch mal!); Karten sind Mifare Classic 1K (netto) und eine einzelne Datei auf der Festplatte zur Schau gestellt. Nachdem ein flüchtiger Bekannter mit dem Inhalt stellte sich heraus - es ist Software, die an der Abendkasse Metro verwendet wird. Abgesehen von der Klemme und den Validator, entschied ich mich mit dem Studium der interessanten Software in den Griff bekommen. Etwa eine Stunde von Chaos, das ausgepackt wird, war ich in der Lage, dieses Programm auf Ihrem Computer zu erstellen und auszuführen. Eine weitere Stunde war erforderlich, um seine Struktur zu verstehen. Kämmte alle ini-Dateien (mit Kommentaren, freundlicherweise vom Entwickler links), hatte ich schon einen vollen Blick auf, was es ist, wie es funktioniert und was gegessen wird. Essen Sie, wie sich herausstellte, ein Leser Parsec PR-P08 daher davon in Abwesenheit, war nicht in der Lage, die Software in Aktion zu versuchen.

Der Entwickler wurde notiertes Unternehmen "Smartek" - große staatliche Auftragnehmer, der ein solches System entwickelt (Sie können mehr auf ihrer Website lesen). Das Programm wurde in Delphi mit einer Laufzeit-bpl'ok geschrieben. Darüber hinaus hat die Software modular aufgebaut und alle Routinen, Klassen und Komponenten in separaten DLL oder bpl'kah untergebracht mit Namen sprechen (hier und es war die wichtigsten Entwickler Faile). Nach einer summarische Prüfung der internen Software, fand ich, dass in erster Linie Informationen über alle ausgestellten Tickets an eine zentrale Datenbank übermittelt werden (übrigens ist Oracle) und zum anderen das Programm einen Mechanismus der Schlüssel verwendet. Das Programm kann mit der Datenbank nicht nur in Echtzeit kommunizieren. Wir schließen daraus, dass alle Vorgänge im System mit einer gewissen Verzögerung auftreten können. In der Theorie gibt uns einen Vorsprung.

Vor allem aber ich interessiert an der Schlüsselmechanismus war (hatte ich schon begonnen, darüber zu spekulieren, warum es notwendig sein könnte). Also nahm ich den Disassembler und ging zur Arbeit. Der Mechanismus besteht aus zwei Dateien - CryptKeyRef.dll und keys.d (nur "schlaue" Datei in das gesamte Programm, das, außer über die Datei mit den Tasten, sonst nichts nicht mag). Und zu verwenden, um alle diese gute Runtime-bpl'ina SmLayout.bpl. Diese Bibliothek war ein Geschenk des Himmels für meine Forschung - es Klassen enthalten sind, um mit inneren Füllung von Tickets zu arbeiten. Da dies eine Runtime-BPL ist, war es genug, nur um es zu betrachten, den Tisch zu haben 60 Prozent exportiert zu verstehen, was was ist. Eine detailliertere Analyse wird alles an seinem Platz gestellt. Denken Sie daran, am Anfang dieses Artikels, was ich darüber in der "ultraleichten" Struktur sprach es noch eine Reihe von Feldern sind, deren Zweck es war nicht klar?

Eines dieser Felder - die so genannte "Layout-Kennung". Im Wesentlichen werden alle U-Bahn-Tickets aus einem festen und einem variablen Teil des Kopfbereiches der Daten aufgebaut. So ist dieses Feld «Aufbau» ist der Titel nur bestimmt, wie und welche Daten in den Rest des Tickets befindet. Es gibt mehrere Layouts (jeweils für ihren eigenen Art der Fahrkarte) und SmLayout.bpl jeder von ihnen hatte seine eigene Klasse (plus einen gemeinsamen Elternklasse, die für die Arbeit mit dem Kopfteil Methoden waren). Deshalb, um zu verstehen, welche in jedem Layout-Felder für die Antwort einfach war (noch mit einigen Methodennamen der Exporte zu sprechen!). Abschließende vollständig alle Layout 8 und überprüfen, ob alle Felder in der Struktur des Tickets (die in der "ultraleichten" verwendet wird) Ich hatte die richtige Idee, nahm ich den Schlüssel-Mechanismus. Tatsächlich war er für die Erzeugung von "Hash" verantwortlich. Wie funktioniert der Mechanismus war ganz klar, nachdem die Methode funktioniert, verantwortlich für die Berechnung der "Raute" zu studieren. Zuerst wird aus einer Datei mit den Tasten (keys.d) wählt den richtigen Schlüssel.

Das System ist so konzipiert, dass jeder Ticket-Typ seine eigene Kennung hat (im Lieferumfang vorhanden eine vollständige Tabelle mit IDs und Karten Namen in einer Textdatei mit kommagetrennte Werte). Es besteht aus einer Zonenkennung (Anwendung) und der Art der Kartenkennung. So, auf der Grundlage dieser Zahlen in der Schlüsseldatei ausgewählten Schlüsselring, in dessen Innerem mehrere Schlüssel sein kann (in dem Fall, wenn ein neuer Schlüssel eingeführt wird, und die alten Karten noch in Gebrauch). ein neues Ticket Aufnahme kommt mit dem ersten, und überprüfen Sie die Gültigkeit - mit allen Schlüsseln in keyringe. Als nächstes wird die ausgewählte Taste CryptKeyRef.dll entschlüsselt (warum sie verschlüsselt gespeichert werden, ich werde nie wissen). Danach wird der entschlüsselten Schlüssel und fast alle Daten des Tickets, sowie seine Hardware-Seriennummer und die Anzahl der (Verfahren zur Erzeugung von "hash", die für keyringa in keys.d angegeben) - werden dem ckCalcHashCode Funktion übertragen, in der gleichen CryptKeyRef.dll entfernt. Am Ausgang erhalten wir den Wert, an dem ich zu einer Zeit und "hängen bleiben" - das gleiche "Hash". Natürlich habe ich ein kleines Programm, das, geprüft und werden diese Funktionen von CryptKeyRef.dll und keys.d Datei könnte, wenn überhaupt, die "Raute" in jedem Dump neu zu berechnen. Ich doppelt überprüft alles auf mehreren Deponien und erhielt ein positives Ergebnis, links, zufrieden Schlaf.

Foul der Schlüssel

Trotz der theoretischen Erfolg, wollte ich alles zu sehen, sozusagen "in Aktion." Am nächsten Tag von der Arbeit zurückkehrte, kaufte ich mir speziell frisch "Ultralight" für eine Reise, um zu sehen, ob meine Schlüssel sind, oder haben nicht (anscheinend waren sie wenig alt). Sie können sich natürlich sofort "hergestellt" "Ultralight versuchen schriftlich" und gehen zu überprüfen, aber zu der Zeit lief ich eine leere Karte, und ein wenig beängstigend gehen "zufällig" - plötzlich? Bei der Ankunft zu Hause, ich vor allem, auch ohne seine Hände zu waschen, auf der Suche eilte ihr Ticket, frische Schlüssel zu überprüfen. Und hier war ich für eine große Enttäuschung wartet - "hash" auf dem Ticket geschrieben geht nicht auf eine der Tasten. Also, die Schlüssel wirklich schon verfault, und sie wurden durch neue ersetzt. Dies negiert vollständig alle meine Werke. Ich fühlte mich traurig wenig. Ich gebraut grüner Tee, spielte ein wenig Klavier (ja), und setzte sich auf seine unvollendete Zuchtgebühr ...

Es ist nicht alles verloren

Die Idee kam mir plötzlich, als ich wieder einmal aus irgendeinem Grund mit dem Schlüssel in die Datei gesucht. Ich bemerkte, dass in der "laufenden" keyringe (die verwendet wird, um die 1-, 2- und 5-poezdochnyh andere "ultraleicht" zu berechnen) zwei Tasten waren - die neue (zu der Zeit, natürlich) und offenbar - das alte. Aber es wurde auch Schlüsselbund, die nur eine einzige Taste legen. Bevor ich habe nicht darauf geachtet zu ihm, und konzentrierte sich auf "läuft". Um jedes Ticket berechnen diesen Schlüssel verwendet wird, weiß ich nicht. Als ich, dass für die Art der Fahrkarte sah zu keyringu angebracht, dann brach ich einen kleinen Funken Hoffnung aus. Die Tatsache, dass dies die Art der Fahrkarte war - Väsby. Ja, es ist eine seltene Art von Ticket - eine temporäre Reise auf alle Verkehrsträger. Ich dachte, dass, wenn ein einziges Ticket, dann sollte diese Option nicht nur in der U-Bahn verwendet werden, sondern auch auf den Landverkehr, wo es sehr schwierig und zeitaufwendig ist, einen neuen zu ersetzen.

Darüber hinaus ist eine der Schlüssel keyringe nur das bestätigt sich indirekt meine Vermutung. Alles andere, erinnerte ich mich, dass, wenn metroshnuyu Programm aus verschiedenen "trash" Reinigung aus, es etwas ähnlich wie die alten Archivschlüsseldateien war. Ausgegraben und öffnete die ursprüngliche Datei, sah ich, dass es in der Tat der Fall war. Und was am wichtigsten ist, bei allen alten Schlüsseldateien suchen, entdeckte ich, dass dies der Schlüssel blieb unverändert! Auch ohne einen Tropfen Zweifel ich meine eigenen Väsby vernietet (zum Glück hatte ich Deponien dieser Art, die manchmal die Aufgabe vereinfacht - Ich habe gerade die Sicherungsdaten und Nummer) und "Raute" den Schlüssel berechnet. Also, es testet Zeit (vor allem, da ich nur ein wenig durchsichtigen Kunststoff gekauft). Beim Betreten der Halle, habe ich Ihr "Ticket" zum Testanschluss zuerst. Auf der Anzeigetafel blitzte die Gültigkeit des Tickets, die ich habe, und die grüne LED leuchtet. Folglich sind die Werke. Machen Sie Grimasse und leichter durch in einem schneeweißen Kunststoffhülse versteckt, näherte ich mich dem Drehkreuz, legte seine Hand auf den Validator und ... leise ging auf einen Spaß grün Feuer gefangen. Dies markierte den endgültigen Sieg.

Und was kommt als nächstes?

Und dann begannen wir Experimente, in denen es viele interessante Dinge gefunden wurde. Beispielsweise eine solche "links" Väsby kann nur zwei oder drei Tagen gehen. Tatsache ist, dass die Zahl, die im Inneren des Ticket I "von Baldy" zitieren, jeder Durchlauf im Speicher des Drehkreuzes Kopf gespeichert ist, und nach einiger Zeit, zusammen mit dem Rest des Rechenzentrums gesendet. Es ist wirklich kein System erteilt ein Ticket mit dieser Nummer und legt ihn zur Disposition, die dann an allen U-Bahn-Drehkreuze verteilt wird. Und so soll es mit allen Arten von Tickets, nicht nur Väsby getan werden - zusätzlich zu den "Hash", und häufig wechselnden Tasten ist sehr gute Verteidigung. Die Abhilfe ist, aus offensichtlichen Gründen, nicht möglich ist.

Es wurde auch beobachtet, dass die Einstellung oder nicht die Lockbits Einstellung auf keinen Effekt hat, was das Ticket ausgelöst oder nicht. Die einzige Ausnahme ist ein bisschen OTP-Bereich Sperre, Drehkreuz, die anscheinend immer, trotz der Tatsache, überprüfen Sie, dass im OTP-Schreiben wird nicht. Später nahm ich die metroshny und Bus-Terminals auf, führte sie um, studierte und begann auf der Bank. Nun die nächste Vermutung zu testen, hatte nicht mehr mit frisch gebackenem Ticket-Mutante in der U-Bahn zu laufen, und es wurde möglich, sie zu testen "vor Ort". Darüber hinaus war die U-Bahn-Terminal die gleiche alte (alles andere und Buggy), wie meine Schlüssel. So konnte ich versuchen, zu "arbeiten", und jede andere Art von "Ultralight" Ticket - etwas, das ich nie "live" in der U-Bahn zu tun. Parallel zu diesen Experimenten setzte ich Software zu üben.

Wie bereits viel darüber diskutiert, welche Art von Algorithmus bei der Berechnung der "Raute" verwendet wird, habe ich beschlossen, es komplett zu restaurieren durch den Algorithmus von Grund auf neu zu schreiben, Sprache "der Mensch" Programmierung, und im Laufe von nur hoffen, einen Algorithmus zu verstehen, welche Art von - dass -Das ist weithin bekannt, oder einige eigene, interne Entwicklung. Auf dem Weg, besuchte ich viele verschiedene Ideen (auch das, was AES sein kann), aber die detaillierte Studie bereits Code arbeiten ohne Smartekovskih Bibliotheken ergab, dass der Algorithmus das ist - "nur" GOST - Inlandsverschlüsselungsstandard (alle notwendigen Informationen darüber kann man im Netz ohne Mühe zu finden). Speziell für die Berechnung der "Raute" verwendet Zyklus 16-Z. "Hash", in der Tat ist nicht mehr als ein Nachrichtenauthentifizierungscode zu GOST.

Die Struktur der Informationen auf dem Ticket aufgezeichneten "Ultralight"

Was für eine Seite ist, wie und wo sind die Hardware-Seriennummer, Lock-Bits und die OTP-Bereich befindet, können Sie die Original-Dokumentation (Dateispezifikation im PDF-Format mit einer vollständigen Beschreibung des Chips auf einer Platte ist) gelesen. Ich empfehle es von ihr Lernen zu beginnen. Ich werde die Position der Datenstruktur beschreiben, die von den U-Bahn-Systeme im Benutzerbereich zur Verfügung ausgebildet zum Lesen und Überschreiben (in Abwesenheit von Schlössern, natürlich). Der gesamte Inhalt des Tickets kann in einen Kopfabschnitt und zwei vollständig doppelte Datenstücke aufgeteilt werden (dies ist für Redundanz und Fehlerschutz durchgeführt wird). Der Header der Tickets in der "Ultralight" beginnt auf Seite 4. Ein Teil davon die gleiche Struktur in allen Tickets und IDs Metro und Mosgortrans System ist. Die ersten 10 Bit - der Identifikator; Die folgenden 10-Bit - Ausweistyp (was sind Kennungen, die Sie speziell für diese Seitenleiste ausgewählt in anderen lesen können). Nach Kennung die Seriennummer des Tickets ist (es ist auf der Rückseite der Eintrittskarte abgestempelt wird, nicht zu verwechseln mit der Hardware - sind zwei verschiedene Dinge!) Größe von 32 Bit. Die letzten 4 Bits - Layout-Feld, das das System sagt, wie die nachfolgenden Daten (so etwas wie das Dateiformat) zu interpretieren.

Für Tickets "ist Ultralight» Layout-Wert 0x08. Im selben Teil der Kopfenden. Neben dem Ticket "Ultralight" das Datum, an dem der Formschluss (16 Bit). Alle Termine sind bereits in der Anzahl der Tage seit dem Format 01/01/1992 verstrichene angegeben. Hier wird der Kopfteil der "Ultralight" Ticket Enden (in Karten mit einem anderen Layout-kann noch eine Vielzahl von zusätzlichen Informationen aufgezeichnet werden). Die erste Datenbereich beginnt auf Seite 8 Registriert 16-Bit-Ticket Ausgabetag. Nach dieser bestimmten Zeit der Gültigkeit des Tickets in Tagen (ab dem Tag der Ausstellung) - 8 Bit. Die ersten 16 Bits von Seite 9 - Zähler Reisen. Es kann entweder Abnahme auf Null (alle Tickets mit begrenzten Anzahl von Fahrten) oder steigt von Null (in Tickets Väsby, ohne die Anzahl der Fahrten zu begrenzen) sein. Nach dem Zähler in dem Rest der Seite mit jedem Durchlauf das Drehkreuz Ihre eindeutige Kennung eingeben. Anscheinend wird es verwendet, Wieder Pass zu verhindern, ohne ein Ticket zu verzögern Väsby (Drehkreuze in der Lobby mit dem Netzwerk verbunden sind und sich gegenseitig abfragen), sowie in der Lage sein zu sehen, durch ein Drehkreuz Pass gemacht wurde (zum Beispiel im Falle von Fehlern oder für die Statistik ). Page 10 vollständig 32-Bit "hash" besetzt.

Seite 11 leer. Dieser Datenbereich wird auf die übrigen 4 Seiten (12 bis 15) vollständig repliziert. Es stellt sich heraus, dass in dem normalen Betrieb dieser beiden Bereiche immer dieselben Daten enthalten. Separat, sollte es über die Verwendung von OTP-Bereich System gesagt werden. Es wird verwendet für jede Reise nach und nach "Brennen" Ticket (Väsby Tickets sind nicht betroffen). Die beiden höchstwertigen Bits sind am Aussterben oder Stornierung des Tickets (die Stop-Liste) festgelegt. Der abgebrochene Ticket kann nicht wiederhergestellt werden. Für die Brennreste von nur 30 Bits. Diese Zone wird dem System als 100% Hub. Mit jedem neuen Besuch eine bestimmte Anzahl von Bits aufweisen (von Junior bis Senior), entsprechend, wie viele Prozent eine Fahrt dauert. Zum Beispiel wird ein 5-poezdochnogo Ticket mit jeder neuen Reise wird "burn out" bei 6 Bits und die 60-poezdochnogo - bei der Bit-Hälfte (mit Rundung). Es ist erwähnenswert, dass die erneute Verwendung Ticket "Ultralight" unmöglich ist, nicht nur wegen der "Brennen" der OTP, sondern auch aufgrund der Tatsache, dass an der Abendkasse, die Ausstellung des Tickets (und vielleicht sogar in seiner Herstellung), fast alle Seiten blockiert werden überschrieben . So ist weder die "Neu laden" oder die Art der Fahrkarte zu einem anderen wechseln funktioniert nicht.

Beispiele für geeignete U-Bahn-Ticket-IDs

Alle Zahlen werden in Dezimalschreibweise angezeigt!

Application Identifiers:

  • 262 - Ticket Moskauer Metro.
  • 264 - Ticket Landverkehr Moskau.
  • 266 - Einheitliche Sozial Moskau und Umgebung.
  • 270 - Ticket "Licht U - Bahn".

Bezeichner wie "Ultralight" Ticket:

  • 120 - Eine Fahrt.
  • 121 - Zwei Reise.
  • 126 - Fünf Reisen.
  • 127 - Zehn Reisen.
  • 128 - Twenty-Reisen.
  • 129 - Sechzig Reisen.
  • 130 - Gepäck + Pass.
  • 131 - Gepäck nur.
  • 149 - Single "Ultralight" (70 Fahrten).
  • 150 - Väsby.

Mifare Classic

Er richtete seine Aufmerksamkeit auf sein Studium, und ich unglücklich Mifare Classic 1K. Wie Sie wissen, ist das wichtigste Hindernis für die "Klassiker" waren Hardware-Tasten A und B. Durch einen glücklichen Zufall, die Schlüssel waren in einem der Programmmodule in der klaren (hallo Entwickler!) Und ich hatte keine Probleme, ein kleines Programm zu schreiben, für mit dem Inhalt der Karte mit den Tasten erhalten. Im Laufe der Experimente zeigten wir einige interessante Features, wie zum Beispiel: die unterirdische Speicherung Ticket verwendet die erste Kartensektor und Bodentransport - vierte; kein Schutz außer den Hardware-Tasten (die, wenn sie in die Software als solche, wahrscheinlich im Allgemeinen geschrieben haben nie seit dem Eintritt in den Betrieb des Systems geändert), werden diese Karten nicht existieren.

Stattdessen enthält am Ende jedes Blocks der CRC-16, einfach die Daten vor einer Beschädigung zu schützen. Außerdem auf soziale Karten, abgesehen Tickets für viele abwechslungsreiche und interessante Informationen aufgezeichnet. Zum Beispiel, 13 und 14 Sektoren, Sozialversicherungskarten mit dem Namen, Vornamen und Vatersnamen des Besitzers. Diese (und andere) können die Daten lesen, den öffentlichen Schlüssel 0xA0A1A2A3A4A5 verwenden. Während der Versuche gelang es vollständig Klon SCM Schüler sowie mehrere Karten auf netto Klassische Karten.

Aber das Klonen, wie sich herausstellte, es ist toll, spart System Stop-Blätter - so kann das Ticket nicht mehr als zwei Tage verwendet werden, dann wird es abgebrochen werden (obwohl im Gegensatz zu den "Ultralight" Karte "Classic" kann nach der Absage wieder hergestellt werden, aber die Stoppliste es spart nicht). Da kein Schutz auf der Classic die Karte nicht verwenden, haben sie schnell genug, ich bin nicht daran interessiert, und ich beschlossen, immer noch auf der "Ultralight" Studie zu konzentrieren.

Das Ende oder zusammenfassen

U-Bahn-Systeme, insbesondere die neuen Karten "Ultralight", im Gegensatz zu den Meinungen und Mutmaßungen wurden gut geschützt. Sehr erfreut, dass die Entwickler eine zuverlässige und bewährte verwendeten Standard, anstatt das Rad neu zu erfinden. Mit einem solchen Schutz zu fälschen Ticket "Ultralight" ohne Zugriff auf sensible Daten (Schlüsseldaten), ist es einfach unmöglich. Große Gedanken und System von austauschbaren Tasten und Bremsmechanismus Blätter. Natürlich nicht ohne Mängel und Fehler. Die größte von ihnen - die Software, die nicht in irgendeiner Weise geschützt ist.

Es war genug, um die Verwendung der Laufzeit-BPL zu beseitigen, und es wäre schwierig, dutzende Male zu analysieren! Alternativ - Behandlung von kritischen Teilen oder AsProtect'om ExeCryptor'om Programm, gefolgt von allen MoleBox'om Dateien Einwickeln würde die Fähigkeit reduzieren, um fast auf Null zu analysieren. Instrumentierung etwas billig. Und die Verwendung von gut (vorzugsweise dunkel oder nach Maß) diese Art von Schutz, aber mit Hardwareschlüsseln würde es unmöglich machen, in vollem Umfang das Programm analysieren. Natürlich ist die Metropolitan - ein modaler Unternehmen, aber es ist nicht notwendig, um diese über den menschlichen Faktor vergessen. Immerhin sagte auch Kevin Mitnick (und nicht nur gesprochen, sondern auch mit gutem Beispiel demonstriert, für die er saß, gee), dass manchmal, um Ziele einfacher und effektiver zu erreichen "Social Engineering" zu verwenden, anstatt zu versuchen, eine undurchdringliche Verteidigung zu brechen. Nun, in diesem Sinne werde ich meine Geschichte zu Ende. Und Sie, lieber Leser, wollen interessanter und ein erfolgreiches Studium!








Beschreibung des Algorithmus verschlüsselte Umwandlung in Übereinstimmung mit GOST 28147-89

Diese Norm legt einen gemeinsamen Algorithmus für die verschlüsselte Umwandlung von Datenverarbeitungssystemen in Netzwerken von Computern (PC), separate Computersysteme und Computer, die die Regeln für die Datenverschlüsselung und Nachrichtenauthentifizierungscode-Generierung bestimmt.

Kryptotransformationsalgorithmus für Hardware oder Software-Implementierung, erfüllt die Verschlüsselungsanforderungen und nach seinen Fähigkeiten auf den Grad der Privatsphäre geschützt Informationen stellen keine Beschränkungen auferlegen.

Der Standard ist verpflichtend für Organisationen, Unternehmen und Institutionen, die kryptographischer Schutz der Daten gespeichert und übertragen in Computer-Netzwerken, einzelne Computersysteme oder Computer verwenden.

Blockschaltbild des Algorithmus verschlüsselte Umwandlung

Blockschaltbild des Algorithmus Verschlüsselungstransformation (kriptoskhema), die in 1 dargestellt, enthält:

  • - Ein Schlüsselspeicher (PUV) auf 256 Bits, die (3, X 4, X 5, X 6, X 7 X 0, X 1, X 2,X) von acht 32-Bit - Akkumulatoren besteht;
  • - Vier 32-Bit - Akkumulator (N 1, N 2, N 3, N 4);
  • - Zwei 32-Bit - Akkumulator (N 5, N 6) in ihrer permanenten Füllung von C 2, C 1 aufgezeichnet wird ;
  • - Zwei 32-Bit - Modulo-2 - Addierer 32 (SM 1, SM 3);
  • - 32-Bit - Addierer bitweise Modulo-2 (cm 2);
  • - 32-Bit - Addierer Modulo (2 32 -1) (CM 4);
  • - Modulo-2 - Addierer (SM 5), über die Begrenzung des Bit - Addierer SM 5 wird nicht erhoben;
  • - Ersatz-Block (K);
  • Registrieren zyklische Verschiebung auf elf Schritte in Richtung MSB (R) -.

Abbildung 1.

Durch den Block Substitution besteht aus acht Knoten Ersatz K 1, K 2, K 3, K 4, K 5, K 6, K 7, K 8 Speicher jeweils 64 Bit. Die Anmelder Substitutionsblock für einen 32-Bit-Vektor wird in acht aufeinanderfolgenden 4-Bit-Vektoren aufgeteilt, von denen jede in einen 4-Bit-Vektor umgewandelt wird, um den entsprechenden Knoten zu ersetzen, die eine Tabelle mit sechzehn Reihen mit jeweils vier Bits in der Abfüllanlage. Der Eingangsvektor definiert die Adresse der Zeichenfolge in der Tabelle in dieser Zeile Füllung entsteht Vektor. Dann wurden 4-Bit-Ausgangsvektoren nacheinander kombiniert in ein 32-Bit-Vektor.

Darüber hinaus und zyklische Verschiebung von binären Vektoren betrachtet MSB Ebene Antriebe mit höheren Zahlen.

Wenn die Taste Aufnahme (W 1, W 2, ..., 256W), W q Je {0,1}, q = i 256 ÷ wird der â PUV Wert von W 1 in der 1. Klasse der Antriebs eingeführt X 0,2 der Wert von W eingeführt wird die zweite Ziffer 0 X - Antrieb, ..., W 32 Wert in der 32-te Bit von X 0 Laufwerk eingegeben; der Wert von W 33 ist in dem ersten Rang Speicher X 1, eingeführt W 34 Wert wird in der zweiten Kategorie von Laufwerk X 1, eingetragen ..., W 64 Wert in der 32-te Bit von X 1 Akkumulator eingegeben; W 65 Wert in der 1. Kategorie von Laufwerk X 2 usw. eingegeben wird, wird der Wert von W 256 in der 32-ten Bit eingegeben X 7 - Laufwerk.

Wenn Sie den Inhalt der Informationen p - ten Bit eines Antriebs (Addierer) Umschreiben kann ein anderes Laufwerk (Addierer) in der p - ten Bit neu geschrieben werden.

Die konstante Füllung von 1 (konstant) N Antrieb 6 in Tabelle 1 gezeigt.

Tabelle 1

Rang 6 Antrieb N

32

31

30

29

28

27

26

25

24

23

22

21

20

19

18

17

Abgabewert

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

1

Rang 6 Antrieb N

16

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

Abgabewert

0

0

0

0

0

0

0

1

0

0

0

0

0

1

0

0

Die konstante Füllung von C 2 (konstant) Antrieb N 5 ist in Tabelle 2 angegeben.

Tabelle 2

Rang 5 N Antriebs

32

31

30

29

28

27

26

25

24

23

22

21

20

19

18

17

Abgabewert

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

1

Rang 5 N Antriebs

16

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

Abgabewert

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

1

Keys definieren PUV und Tabellennachschlag Block K Füllung sind geheime Elemente und in Übereinstimmung mit festgelegten Verfahren geliefert.

Befülleinheit Substitutionstabellen Es ist ein Schlüsselelement der langfristigen, ein gemeinsames Computernetzwerk.

Organisation von verschiedenen Arten von Kommunikation erreicht durch die entsprechende Schlüsselsystem zu konstruieren. Dies kann die Chance genutzt werden, Schlüssel (fill PUV) in einem Modus, der einen einfachen Austausch und mit Simulationsschutz-Software für die Übertragung über Kommunikationskanäle oder Speicherung im Computerspeicher in einem Modus, der einen einfachen Austausch kodieren, zu erzeugen.

In kriptoskheme vier Betriebsarten stehen zur Verfügung:

  • - Verschlüsselung (Entschlüsselung) der Daten im Modus der einfachen Austausch;
  • - Verschlüsselung (Entschlüsselung) der Daten in der XOR-Operation;
  • - Verschlüsselung (Entschlüsselung) der Daten in der XOR-Operation mit Rückkopplung;
  • - Art der Authentifizierungscode zu erzeugen.

Verschlüsselung in einem Modus, der einen einfachen Austausch

Encoding von offenen Daten in einem Modus, der einen einfachen Austausch

Kriptoskhema Umsetzung Verschlüsselungsalgorithmus im Modus der einfachen Austausch muss von der Form in Abbildung 2 gezeigt werden.


Abbildung 2

Offene Daten zu kodieren, aufgeteilt in Blöcke von jeweils 64 Bit. Geben Sie einen beliebigen Block T 0 = (a 1 (0), a 2 (0), ..., a 32 (0), b 1 (0), b 2 (0), ..., b 32 (0)) der binären Information in N Akkumulatoren 1 und N 2 durchgeführt , so dass ein Wert von 1 (0) eingegeben wird im 1. Rang N 1, einen Wert 2 (0) in der zweiten Rang N eingetragen 1 usw., einen Wert von 32 ( 0) , wird eingeführt in das 32-te Bit N 1; b den Wert 1 (0) in das 1-te Bit N 2 eingeführt wird, wird der Wert b 2 (0) in der zweiten Bit N 2 eingegeben usw., den Wert 32 b (0) in den 32-ten Rang N 2 eingeführt wird. Das Ergebnis ist ein Zustand (a 32 (0), ein 31 (0), ..., a 2 (0), a 1 (0)) Laufwerk N 1 und Bedingung (b 32 (0), b 31 (0), ... , b 2 (0), b 1 (0)) N 2 -Speicherung.

Die PUV führte eine 256-Bit-Schlüssel. Der Inhalt der acht 32-Bit - Akkumulatoren X 0, X 1, ..., X 7 ist:

  • X 0 = (W 32, W 31, ..., W 2, W 1)
  • X 1 = (W 64, W 63, ..., W 34, W 33)
  • . . . . . . . . . . . . .
  • X 7 = (W 256, W 255, ..., W 226, W 225)

Verschlüsselungsalgorithmus 64-Bit-Block der offenen Daten in dem Modus der einfachen Austausch besteht aus 32 Zyklen.

Im ersten Zyklus wird die Erstbefüllung von AKKU 1 N Modulo - 2 - Addierer 32 mit der Füllung SM 10 X - Antrieb summiert, und der Antrieb 1 N Füllung bleibt.

Wird einem Summationsblock K umgewandelt und Substituieren des resultierenden Vektors eingegeben wird in das Register R, die für elf Schritte zur MSBs gedreht wird. Das Ergebnis der Verschiebung wird bitweise Modulo - 2 - Addierer SM 2 mit 32-Bit - Akkumulator mit N 2 gefüllt zugegeben. Die sich ergebende CM 2 im Ergebnis in N 1 geschrieben wird, wird der alte Wert in N 1 N 2 überschrieben. Der erste Zyklus endet.

Folgezyklen werden in ähnlicher Weise durchgeführt, während im 2. Zyklus von PUV Befüllen gelesen X 1, im 3. Zyklus der Füllung PUV gelesen X 2, und so weiter, gelesen X 7 im achten Zyklus der PUV füllt. In den Zyklen vom 9. bis 16., und in Zyklen von 17. bis 24. Füllen von PUV werden in der gleichen Reihenfolge gelesen: X 0, X 1, X 2, X 3, X 4, X 5, X 6, X 7.

In den letzten acht Zyklen von 25. bis 32 - ter Ordnung Lesen Deckungen PUV umkehren: X 7 X 6 X 5 X 4 X 3 X 2 X 1, X 0.

Somit wird, wenn Codierung in 32 Zyklen des folgenden Verfahrens durchgeführt für Speicher auswählen:

  • X 0, X 1, X 2, X 3, X 4, X 5, X 6, X 7, X 0, X 1, X 2, X 3, X 4, X 5, X 6, X 7,
  • X 0, X 1, X 2, X 3, X 4, X 5, X 6, X 7 X 7 X 6 X 5 X 4 X 3 X 2 X 1 X 0.

In dem 32 - ten Zyklus des Ergebnisses aus dem Addierer SM 2 eingeführt in das Laufwerk von N 2 und N 1 in dem Laufwerk gespeichert , die alte Füllung.

Erhalten nach 32 Zyklen der Befüllung der Speichercodierung N 1 und 2 N Blockdaten verschlüsselt an den offenen Datenblock entspricht.

Entschlüsseln der verschlüsselten Daten in einem Modus, der einen einfachen Austausch

Kriptoskhema Realisieren Entschlüsselungsalgorithmus in dem Modus der einfachen Austausch, hat die gleiche Form (vgl. Abbildung 2), wie bei der Codierung. Die PUV Eingang 256 Bits des gleichen Schlüssel, die Codierung durchgeführt wurde. Die verschlüsselten Daten, Entschlüsseln jeweils in Blöcke von 64 Bits aufgeteilt werden. Geben Sie einen beliebigen Block T w = (a 1 (32), 2 (32), ..., und 32 (32), b 1 (32), b 2 (32), ..., b 32 (32)) in der Speicher N 21 und N durchgeführt , so dass ein Wert 1 (32) in der 1. Rang N 1 eingeführt wird, einen Wert 2 (32) im zweiten Rang N 1 eingeführt, usw., einen Wert von 32 (32) 32 in den N-ten Bits 1 eingeführt; b den Wert 1 (32) wird in das erste Bit N 2 eingeführt, b - Wert 2 (32) in dem zweiten Bit N 2 eingeführt, usw., wird der Wert 32 b (32) eingeführt wird in den 32-ten Rang N 2.

Entschlüsselung erfolgt mit dem gleichen Algorithmus wie die Verschlüsselung der öffentlichen Daten verwenden, mit der Modifikation , dass die Füllung Antriebe X 0, X 1, ... X 7 aus der Entschlüsselungs PUV in Zyklen in der folgenden Reihenfolge gelesen:

  • X 0, X 1, X 2, X 3, X 4, X 5, X 6, X 7 X 7 X 6 X 5 X 4 X 3 X 2 X 1 X 0,
  • X 7 X 6 X 5 X 4 X 3 X 2 X 1 X 0 X 7 X 6 X 5 X 4 X 3 X 2 X 1 X 0.

Erhalten nach 32 Betriebszyklen Laufwerke füllen N 1 und N 2 offene Datenblock bilden.

T 0 = (a 1 (0), a 2 (0), ..., a 32 (0), b 1 (0), b 2 (0), ..., b 32 (0)) an den Block verschlüsselter Daten entsprechen, bei diesem Wert eine 1 (0) T 0 entspricht Inhalt 1. Klasse N 1,2 und den Wert (0) auf den Inhalt der zweiten Klasse N 1, etc. und den Wert von 32 (0) 32 entspricht dem Inhalt entspricht blockieren te Kategorie N 1; der Wert von b 1 (0) zu dem Inhalt der ersten Kategorie entspricht , N 2, entspricht der Wert von b 2 (0) , um den Inhalt der zweiten Klasse N 2 etc., der Wert von b 32 (0) entspricht dem Inhalt des 32-ten Bits von N 2 .

Ähnlich werden die verbleibenden Blöcke verschlüsselten Daten entschlüsselt.

XOR-Modus

Encoding von offenen Daten in XOR-Modus

Kriptoskhema Umsetzung Verschlüsselungsalgorithmus in der XOR-Modus, sollte die Form in Abbildung 3 gezeigt haben.


Figur 3

Offene Daten, unterteilt in 64-Bit - Blöcke T 0(1), T 0(2), ..., T 0(M-1), T 0(M) sind in der XOR - Operation durch eine bitweise Modulo - 2 - Addierer SM verschlüsselt 5 mit gamma cipher T w, die in Blöcken von 64 Bits erzeugt wird, d.h.

T w = (r w(1), G w(2), ..., w D (M-1), G w(M)),

wo M - wird durch das Volumen der verschlüsselten Daten bestimmt.

T m(i) - i-ten 64-Bit - Block, i = 1 ÷ Ì, die Anzahl der Bits in dem Block T 0(M) kann weniger als 64, während nicht verwendete für die Codierung von Teil Gamma Chiffre Block T w(M) verworfen.

Die PUV führte eine 256-Bit-Schlüssel. Der Speicher N 1, N 2 wurde eine 64-Bit - Binärsequenz (sinhroposylka) S = (S 1, S 2, ..., S 64), die für die weitere Entwicklung der M Bereichsblockchiffre der Erstbefüllung des Speicher ist. Sinhroposylka in N verabreicht 1 und N 2 , so dass der Wert von S 1 in das erste Bit N eingegeben 1, S 2 Wert in der 2. Rang N 1 usw. eingegeben wird, wird der Wert von S 32 in das 32-te Bit eingeführt 1 N; in der 1. Kategorie N 2, der Wert von S 33 S 34 Wert eingegeben wird in der 2. Kategorie N 2 etc., S 64 Wert wird eingegeben in dem 32-ten Bit von N 2 eingegeben wird.

Erstbefüllung von Speicher N 1 und N 2 (sinhroposylka S) verschlüsselt im Modus der einfachen Austausch in Übereinstimmung mit den Anforderungen des Absatzes 1.3.1. Das Ergebnis der Codierung entspricht 32 Bits von Speicher N 3 und N 4, so dass die Füllung des N 1 entspricht N 3 und die Füllung des N 2 entspricht N 4.

Auffüllen von Speicherstapel 4 N modulo (2 32 -1) in einem Addierglied SM 4 32-Bit - Konstante C aus dem Stapler 16 N, wird das Ergebnis in der N 4 geschrieben.

N 3 Filling Akkumulator modulo-2 - Addierer 32 in dem SM-3 summiert mit 32-Bit - Konstante C aus dem Stapler 2 N 5 wird das Ergebnis geschrieben in N 3.

Füllen neu geschrieben 3 N N 1 und 4 N in N neu geschrieben Füllung 2, wodurch N Füllung 3, N 4 verbleibt.

Füllen N 1 und N 2 wird im Modus der einfachen Austausch in Übereinstimmung mit den Vorschriften des Absatzes 3.1 verschlüsselt. Die resultierende Codierung Füllung von N 1, N 2 bildet einen ersten 64-Bit - Blockbereich Chiffre T w(1), die bitweise Modulo - 2 - Addierer SM 5 mit dem ersten 64-Bit - Block von offenen Daten T 0(1) summiert = (t1(1), t2(1), ..., t63(1), t64(1)). Das Ergebnis , das durch die 64-Bit - verschlüsselten Datenblock T Summieren w(1) = (τ1(1), τ2(1), ..., τ63(1), τ64(1)).

Der Wert von τ 1(1) Einheit T w(1) ist das Ergebnis der Summierung Modulo - 2 - SM - 5 - Werte t 1(1) des Blocks T 0(1) mit dem Wert der ersten Klasse N 1 Wert τ 2(1) des Blocks w T (1) ist das Ergebnis Modulo - 2 - Summe in den SM - Wert 52 t (1) T 0 des Blocks (1) mit dem Wert 2 von Rang N 1, usw., wird der Wert von τ 64(1) Einheit T w(1) es ist das Ergebnis modulo 2 Addition in der SM 645 Werte t (1) T 0 des Blocks (1) mit einem Wert von 32 th Bit N 2.

Für den Addierer 4 mit dem konstanten CM C 16 von N, N - Füllung nächsten Füllung 3 N 4 modulo summiert (2 32 -1) 64-Bit - Blockchiffre Bereich T w(2) durch Modulo - 2 - Addierer 32 summiert wird CM 3 mit einer konstante C 2 N 5. N nachzufüllen 3 entspricht N 1 und N 4 Nachfüllung neu geschrieben in N 2, dadurch Abfüll- und N 3 N 4 gehalten wird.

Füllen N 1 und N 2 wird im Modus der einfachen Austausch in Übereinstimmung mit den Vorschriften des Absatzes 3.1 verschlüsselt. Die resultierende Füllung Codierung N 1, N 2 bildet einen zweiten 64-Bit - Blockchiffre Bereich T w(2), die bitweise Modulo - 2 - Addierer 5 die zweite CM - Daten Außeneinheit T 0(2) summiert wird. Ähnlich w erzeugt Gamma Chiffre Blöcke T (3), G w(4), ..., T m(M) und die verschlüsselten Blöcke von offenen Daten T 0(3), T 0(4) ..., T 0(M). Wenn die Länge des letzten M-ten Block der offenen Daten T 0(M) weniger als 64 Bits ist, der letzte Block - Chiffre M - ten Bereich F w(M) verwendet wird , nur die entsprechende Anzahl von Skalen Bits der Chiffre zu verschlüsseln, werden die verbleibenden Ziffern verworfen.

Die Kommunikationsverbindung oder ein Computerspeicher und übermittelt sinhroposylka S T Blöcke von verschlüsselten Daten w(1), T m(2), ..., w T (M).

Entschlüsseln der verschlüsselten Daten an die XOR-Modus

Wenn kriptoskhema Dechiffrieren hat es die gleiche Form wie bei der Codierung (siehe. Abbildung 3). In PUV 256 Bit Schlüssel , durch die eingegebenen Daten durch Codierung T 0(1), T 0(2), ..., T 0(M) , wobei T 0(M) kann mindestens 64 Bits umfassen.

XOR-Feedback-Modus

Encoding Daten in einem öffentlichen Modus XOR-Feedback

Kriptoskhema die XOR-Modus Feedback implementiert sollte wie sein, in Abbildung 4 dargestellt.


Abbildung 4

Offene Daten, unterteilt in 64-Bit - Blöcke T 0(1), ..., T 0(M) sind in der XOR - Operation mit Rückkopplung durch bitweise Modulo-2 - Addierer SM 5 Gamut cipher T verschlüsselt w, die in Blöcken erzeugt wird , 64 Bits, d.h. T w = (r w(1), G w(2), ..., D w(M)), wobei M - durch das Volumen der verschlüsselten Daten D bestimmt wird w(i) - i-ten 64-Bit - Block, i = 1 ÷ Ì. Die Anzahl der Bits in dem Block T 0(M) kann weniger als 64.

Die PUV führte eine 256-Bit-Schlüssel. Der Speicher N 1, N 2 wurde eine 64-Bit - Binärsequenz (sinhroposylka) S = (S 1, S 2, ..., S 64). Sinhroposylka in N verabreicht 1 und N 2 , so dass der Wert von S 1 in das erste Bit N eingegeben 1, S 2 Wert in der 2. Rang N 1 usw. eingegeben wird, wird der Wert von S 32 in das 32-te Bit eingeführt 1 N; in der 1. Kategorie N 2, der Wert von S 33 S 34 Wert eingegeben wird in der 2. Kategorie N 2 etc., S 64 Wert wird eingegeben in dem 32-ten Bit von N 2 eingegeben wird.

Erstbefüllung von Speicher N 1 und N 2 wird im Modus der einfachen Austausch in Übereinstimmung mit den Vorschriften des Absatzes 3.1 verschlüsselt. Die sich ergebende Codierung Füllen von N 1 und N 2 bildet einen ersten 64-Bit - Bereich Block Cipher T w(1), die bitweise Modulo - 2 - Addierer SM 5 mit dem ersten 64-Bit - öffentlichen Datenblock T 0(1) = (t summiert wird 1(1), t2(1), ..., t63(1), t64(1)).

Das Ergebnis , das durch die 64-Bit - verschlüsselten Datenblock T Summieren w(1) = (τ1(1), τ2(1), ..., τ63(1), τ64(1)).

Verschlüsselten Blockdaten T w(1) gleichzeitig auch der Anfangszustand von N 1, N 2 , um einen zweiten Chiffreblockbereich T Erzeugen w(2) und die Rückkopplungs geschrieben in die Lagerung. Der Wert von τ 1(1) in der ersten Klasse N 1 eingeführt wird, wird der Wert von τ 2(1) in der 2. Klasse N 1 eingeführt, usw., wird der Wert von τ 32(1) in der 32. Rang N eingegeben 1; Wert τ 33(1) in der ersten Klasse N 2 eingeführt,34 der Wert von τ (1) in der zweiten Klasse N 2 usw. eingeführt wird, wird der Wert von τ 64(1) in der 32-ten Bit von N 2 eingetragen.

Füllen N 1, N 2 im Modus der einfachen Austausch in Übereinstimmung mit den Vorschriften des Absatzes 3.1 verschlüsselt. Die resultierende Füllung Codierung N 1, N 2 bildet einen zweiten 64-Bit - Blockchiffre Bereich T w(2), die bitweise Modulo - 2 - Addierer 5 die zweite CM - Daten Außeneinheit T 0(2) summiert wird.

Die Entwicklung der Chiffre D nächsten Bereich Block w(i) und Codieren der entsprechenden offenen Datenblöcke T0(i) (i = 3 ÷ I) ist ähnlich. Wenn die Länge des letzten M-ten Datenblock offener T 0(M) kleiner als 64 Bits ist, dann r w(M) wird nur die entsprechende Anzahl von Skalen Bits des Chiffre verwendet, werden die verbleibenden Bits verworfen.

Die Kommunikationsverbindung oder ein Computerspeicher und übermittelt sinhroposylka S T Blöcke von verschlüsselten Daten w(1), T m(2), ..., w T (M).

Entschlüsselung von verschlüsselten Daten XOR Rückkopplungsmodus

Wenn kriptoskhema Dechiffrieren hat es die gleiche Form wie bei der Codierung (siehe. Abbildung 4). Die PUV Eingang 256 Bits des gleichen Schlüssel, der Codierung T durchgeführt wurde 0(1), T 0(2) ..., T 0(M). Sinhroposylka eingeführt in N 1, N 2, so dass der Wert von S 1 in das erste Bit N eingegeben 1, S 2 Wert in der 2. Rang N 1 usw. eingegeben wird, 32 ist der Wert von S in das 32-te Bit eingeführt wird 1 N; in der 1. Kategorie N 2, der Wert von S 33 S 34 Wert eingegeben wird in der 2. Kategorie N 2 etc., S 64 Wert wird eingegeben in dem 32-ten Bit von N 2 eingegeben wird.

Erstbefüllung von Speicher N 1 und N 2 (sinhroposylka S) verschlüsselt im Modus der einfachen Austausch in Übereinstimmung mit den Vorschriften des Absatzes 3.1. Die sich ergebende Füllung Codierung N 1, N 2 bildet einen ersten 64-Bit - Blockchiffre Bereich T w(1), die bitweise Modulo - 2 - Addierers 5 mit dem CM Block von verschlüsselten Daten T summiert wird w(1). Das Ergebnis ist ein erster Datenblock des offenen T 0(1).

Block - verschlüsselten Daten T w(1) ist die Erstbefüllung von N 1, N 2 zu erzeugen , einen zweiten Bereich Blockchiffre F w(2). Block T w(1) in N 1, N 2 aufgezeichnet. Der Wert von τ 1(1) in der ersten Klasse N 1 eingeführt wird, wird der Wert von τ 2(1) in der 2. Klasse N 1 eingeführt, usw., wird der Wert von τ 32(1) in der 32. Rang N eingegeben 1; Wert τ 33(1) in der ersten Klasse N 2 eingeführt,34 der Wert von τ (1) in der zweiten Klasse N 2 usw. eingeführt wird, wird der Wert von τ 64(1) in der 32-ten Bit von N 2 eingetragen. Die sich ergebende Füllung aus N 1, N 2 wird in dem Modus der einfachen Austausch in Übereinstimmung mit den Anforderungen des Absatzes 3.1, die sich ergebende Einheit T verschlüsselt w(2) bitweise Modulo - 2 - Addierer SM 5 mit dem zweiten Block von verschlüsselten Daten T w(2) zugegeben wird. Das Ergebnis ist ein öffentlicher Datenblock T 0(2).

In ähnlicher Weise N 1, N 2 aufeinanderfolgend aufgezeichneten Blöcken von verschlüsselten Daten T w(2) T w(3), ..., T m(M-1), von denen lediglich Modus die erzeugten Blöcke ersetzt gamma cipher T w(3), T w(4), ..., w r (M). Gamma - Einheiten Chiffre summierten bitweise Modulo - 2 - Addierer SM 5 Blocks von verschlüsselten Daten T w(3) T w(4), ..., T m(M) öffentliche Datenblöcke T 0(3) zu erhalten, T 0( 4), ..., T 0(M), mit dem letzten offenen Datenblocklänge T 0(M) kann weniger als 64-Bit.

Nachrichtenauthentifizierungscode-Erzeugungsmodus

Zur Simulation Schutz der öffentlichen Datenbereitstellungs bestehend aus 64-Bit - M 0 T (1) Blöcke T 0(2), ..., T 0(M), M ≥ 2, erzeugt zusätzlichen Block von L Bits (Nachrichtenauthentifizierungscode und l). Der Prozess Authentifizierungscode zu erzeugen, ist einheitlich für alle Verschlüsselungsmodi.

Der erste Block von offenen Daten T 0(1) = (t1(1), t2(1), ..., t64(1)) = (a1(1) (0), a 2 (1) (0) , ..., a 32(1) (0), b 1(1) (0), b 2(1) (0), ..., b 32 (1) (0)) wird in den Speichervorrichtungen N geschrieben 1 und N 2, und der Wert t 1(1) = a1 (1) (0) eingeführt wird in den 1. Rang N 1, der Wert t 2(1) = a2 (1) (0) in den zweiten Rang N 1 eingeführt der Wert usw., t 32(1) = a32 (1) (0) in das 32-te Bit N 1 eingeführt; Wert von 33 t (1) = b1 (1) (0) in den N 2 etc. 1-te Bit eingeführt, t 34 - Wert (1) = b32 (1) (0) in das 32-te Bit eingeführt N 2.

Füllen N 1 und N 2 wird einer Transformation auf die ersten 16 Zyklen des Verschlüsselungsalgorithmus einfacher Ersetzungsmodus entspricht, in Übereinstimmung mit den Anforderungen des Absatzes 3.1. In PUV somit ist es mit dem gleichen Schlüssel , die öffentlichen Datenblöcke T 0(1), T 0(2) verschlüsselt ist, ..., T 0(M) in Blöcken der verschlüsselten Daten T entsprechenden w(1), T m(2) ..., w T (M).

Erhalten nach 16 Zyklen Auffüllen von N 1 und N 2 der Form (a 1(1) (16), a 2(1) (16), ..., a 32(1) (16), b 1(1) ( 16), b 2(1) (16), ..., b 32 (1) (16)) wird in dem CM 5 modulo 2 zu einer zweiten Einheit t zusammengefasst 0(2) = (t1(2), t2( 2), ..., t64(2)). Das Ergebnis der Summierung wird in N 1 und N 2 gespeichert und unterliegt einer Transformation auf die ersten 16 Zyklen des Verschlüsselungsalgorithmus einfacher Ersetzungsmodus entspricht.

Empfangene Füllung N 1 und N 2 ist im SM 5 modulo 2 zu dem dritten Block T 0(3) zusammengefaßt usw. der letzte Block T 0(M) = (t1(M), t2(m), ... , t 64(M)), gegebenenfalls ergänzt um den vollständigen 64-Bit - Nullen Block in SM 5 modulo 2 zur Füllung N 1, a 1(M-1) (16), a 2(M-1) zusammengefasst ( 16), ..., a 32(M-1) (16), b 1(M-1) (16), b 2(M-1) (16), ..., b 32(M-1) (16) . Das Ergebnis der Summierung ist in der N 1, N 2 eingegeben, und in einem Modus , der einen einfachen Austausch für die ersten 16 Zyklen des Algorithmus verschlüsselt. Aus den erhaltenen Füllung Antriebe N 1 und N 2 und gewählten Segment l = [a 32- l +1 (M) (16), eine 32- l +1 (M) (16), ..., a 32(M) (16 )].

L Authentifizierungscode und ist am Ende der verschlüsselten Daten über einen Kommunikationskanal oder in einem Computerspeicher übertragen, d.h. W T (1) T w(2), ..., w T (M), und l.

Empfangenen verschlüsselten Daten T w(1), T m(2), ..., T m(M) aus den empfangenen öffentlichen Datenblöcke T 0(1) decodiert werden, T 0(2), ..., T 0(M) erzeugt Nachrichtenauthentifizierungscode und "l, die dann mit dem Nachrichtenauthentifizierungscode und l verglichen wird, empfangen zusammen mit den verschlüsselten Daten aus dem Kommunikationskanal oder Computerspeicher. Im Falle von Abweichungen imitovstavok offenen Datenblöcke empfangen T 0(1), T 0(2), ..., T 0(M) wird als falsch.

Der Wert von l (die Anzahl der Bits in der Authentifizierungscode - Nachricht) wird durch die aktuellen Verschlüsselungsanforderungen bestimmt, unter Berücksichtigung , dass die Wahrscheinlichkeit der falschen Daten aufzuerlegen gleich 2 - l.