This page has been robot translated, sorry for typos if any. Original content here.

Brechen der U-Bahn (Reisen, Karten) + TRANSFORMS Kryptografiealgorithmus nach GOST 28147-89

Auf Seite:


Brechen der U-Bahn (Reise, Karten)

Wissen Sie, der Wunsch, alle Rätsel zu lösen alle, aber der Schutz der Moskauer Metro zu öffnen? Fertig zum Beispiel eine „ewige Wiederkehr“? Aber Metro Experten finden immer anspruchsvollere Möglichkeiten des Schutzes. Metall-Token wurden durch Kunststoff ersetzt, sie wiederum, Magnetkarten und kontaktlose Karten ersetzen magnetische angekommen. Viele Forscher ließen seine Hände - es scheint, als ob die Metropolitan eine uneinnehmbare Festung wurde. Aber jede Verteidigung kann umgangen werden. Und oft ist es manchmal zu öffnen einfacher als ein 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) haben wir in Betrieb genommen eine berührungslose Sozialkarte für Studenten. Ich begann sich zu fragen, was es ist und wie es funktioniert. Aber in jenen Tagen, und ich habe nicht genügend Fähigkeiten und Informationen, vor allem über diese Technologien in der Öffentlichkeit ein wenig war. Wir hatten die Idee der Forschung in den Schrank zu verschieben, aber ich versprach mir, dass notwendigerweise wird es wieder ...

Vor etwa drei Jahren wieder erwachte ich Interesse an dem Thema U-Bahn. aktiv untersuchte magnetische Karten (Informationen zu diesem Thema in dem Internet war viel) und brachte sogar ein wenig stanochek für Duplikate der beiden Köpfe der Rolle machen Tonbandgeräte taumeln und eine kleine Menge rassypuhi Ich habe. Ich habe nicht vergessen, ihre soziale Karte (jetzt Student). Aber nach der Dokumentation des Studium wurde klar, 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 hacken es nicht leicht zu bekommen, und die Schlüssel wie möglich vor dem Ende des Sonnensystems zu berühren. Ja, und Kartenleser, die Klassik, im Wert zu der Zeit von einigem sehr schwer Geld unterstützen (über Ebay, ich glaube irgendwie nicht, leider). Das Interesse an magnetischen Tickets schnell abgekühlt und die soziale Karte hatte wieder auf bessere Zeiten verschoben werden.

Treffen Sie die „Ultralight“

Tickets „Ultralight“ erschien vor kurzem in unserer U-Bahn, aber sofort die Öffentlichkeit rasch Interesse genannt. Sie begannen kurochit, reißen, kleben Eisen und gelten andere Methoden cryptanalysis termorektalnogo. Ich muss zugeben, ein Durst nach Wissen führte mich raskurochit Paar. Als Ergebnis ihrer Studie, und suchen im Internet aufgebaut wurde - es ist nichts, wie Mifare Ultralight, «lite“ Version ist kompatibel Mifare Classic. Eine schnelle Vorschau der Dokumentation der Standard-Chips deutlich gemacht, - es gibt keine eingebauten Schutzsysteme für diese Karten. Alles andere, was ich den Artikel angegriffen beschreibt ausführlich den erfolgreichen Einbruch wie Transportsystem von niederländischen Studenten. Insgesamt hat es mich auf neue Forschung geschoben.

Lassen Sie uns gehen!

Um damit zu beginnen, natürlich, nur irgendwo benötigte einen drahtlosen 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. Wenn man über die zweite Option zu denken, unter Berücksichtigung der drei Jahre alten Preise, ging ich eine Gänsehaut. Aber ich beschloss, noch Preise. Und kein Wunder! Ich war angenehm überrascht zu erfahren, dass Sie ein voll funktionsfähiges Gerät (OmniKey CardMan 5321) kaufen können, die eine Reihe von verdrahteten und drahtlosen Karten zu einem attraktiven Preis unterstützt - 4000 Rubel.

Natürlich nicht wenig, aber auf der anderen Seite ist es nicht 10.000; Außerdem machte fertige Leser Kauf es möglich, sofort auf der Erforschung von Tickets zu konzentrieren und nicht auf das Design und Debugging von Eisen, die auf unbestimmte Zeit zu hinziehen. Zusammen mit dem Leser in der gleichen Firma (ISBC) war sehr bequem Produktion ursprüngliche lokale SDK erworben. Er wiederum erlaubt keine Zeit und Energie auf das Schreiben nizkourovnevki und Debugging-Software-Betrieb mit dem Leser zu verschwenden, und konzentrieren sich direkt auf die Tickets. Also, für ein paar Tage gemächlich kleines Programm Codierung geboren, durch die es möglich war, auf bequeme Weise die gesamte innere Struktur von „ultraleicht“ zu überwachen und zu regeln. Dann begann ich die Karten zu studieren.

leere Wand

Im Prozess durch meine Leser des Lernens hat viele Tickets übergeben. Einige ich seine Ärmel hochgekrempelt, bekam „aus dem Müll“, einige gekauft - zu beobachten, was sie aufgezeichnet, dann übergeben und sah wieder. Sie waren fast alle Arten von Karten, mit Ausnahme vielleicht der Reise „Ultralight“ auf 70 Fahrten. Nach ein paar Wochen habe ich eine große Datenbank-Dump angehäuft und sortieren verschiedene Tickets, und in verschiedenen Staaten. Und Deponien wurden mit dem gleichen Ticket nach jeder Fahrt genommen und mit einem paar Tickets metropolitenovskimi Zahlen Reihe erstrecken. In meiner Sammlung fiel noch mehr Dumps zwei verschiedene Zeit einheitliches Sozialticket (ein für einen Zeitraum von 5 Tagen ausgestellt wurde, die andere bei 30) wird nach einem bestimmten Zeitintervall entfernt. Es stellte sich heraus sehr interessante Exemplare zu sein, und es ist sehr selten (ich sie alle aus erster Hand sofortige Rückkehr erhalten, nur zu „lesen“).

In der Tat ist es fast die einzige Art von „Ultralight“, das nicht nur in der U-Bahn betreibt, sondern auch auf dem Landverkehr. Darüber hinaus nur diese Art von Karten gibt es keine Beschränkungen für die Anzahl der Fahrten. Später diente sie mir einen großen Dienst ... All dies Zoo ich für einen bestimmten Zweck gesammelt haben - zu deutlich die Struktur und das Format der Datenaufzeichnung auf dem Ticket zu definieren. Natürlich waren einige Felder sofort sichtbar mit dem bloßen Auge, aber einige nicht. Zum Beispiel habe ich nicht erkennen, wo U-Bahn-Ticket-Nummer aufgezeichnet (die, die auf ihn 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 denken - Notebook, und manchmal Bits. Ich erkannte, dass es bei der letzten Nummer des Tickets „sah“ - er um 4 Bits in Bezug auf das Byte, und die restlichen 4 Bits auf dieser Seite und auf der anderen Seite Zimmer sind ausgebucht von anderen Service-Informationen verschoben wurde. Nach einiger Zeit hat sich das Ticket-Datenaufzeichnungsformat fast vollständig klar.

Es wurde offensichtlich, wo und wie speichern alle Daten, Zähler, Identifikatoren. Es blieb nur ein paar Felder, deren Zweck es war nicht klar, einfach wegen der Dump die Daten in ihnen sind die gleichen dump. Aber das ist die Freude und über - es wäre töricht, anzunehmen, dass solche Tickets keinen Schutz haben. Jeder Dump war 32 Bits verschiedener Informationen, nicht mit dem Rest des Inhalts korreliert. Ich nahm es eine Art Prüfsumme, „Hash“ der Daten wurde auf dem Ticket aufgezeichnet. Alle Versuche, zu schätzen oder zu berechnen, die 32-Bit eingeschaltet vollständigen Ausfall (insbesondere, es wurde vorgeschlagen, dass diese eine gewisse Form CRC32 ist, mit Nicht-Standard-Polynom und einem Startwert).

Wenn Sie versuchen, mindestens eineinhalb Bits an Informationen im Ticket Überprüfung Terminal an der U-Bahn zu ändern geflasht „BAD TICKET“ gewichtige Buchse zakolachivaya die letzten Nägel in den Sarg. Natürlich gab es Versuche, das System auch auf andere Weise zu umgehen, zum Beispiel versuchen, ein Ticket für eine saubere Karte eins-zu-eins kopieren (hier leider die Fabrik Seriennummer verhindert, die, wie sich herausstellte, wurde bei der Erzeugung von „Hash“ beteiligt ist) oder die Lock-Bits zu setzen, 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. Die große, starke Betonwand, auf das viele haben eine Gewohnheit, mit einem laufenden Start getötet. Nicht die Foren und Message Boards keine Informationen zu finden, habe ich beschlossen, dass dies mein Studium fertig ist - gibt es nicht mehr Tracks und einen fetten Punkt setzen. Wie sich herausstellte, vergebens ...

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üßer grüner Tee, friedliche Scheidung Gebühr für sein neuestes Handwerk genießen. DipTarce, wenig bashorga, ICQ ... Jemand auf Skype anrufen - ablenken! Wieder, ICQ, wieder DipTrace - im Allgemeinen ist alles wie gewohnt. Wieder einmal in den Vordergrund das Fenster ICQ fiel aus - jemand mir bisher unbekannte, schrieb er: „Hallo.“ Ich Leere sumnyashesya, antwortete er in Art. Die folgende Meldung wird ein Wendepunkt in der Geschichte war: „Sie mögen die U-Bahn sind daran 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 bewacht (vielleicht eine Scheidung oder Basen, und vielleicht sogar „Sonderdienste“ interessiert - Paranoia stammt), aber dann dachte ich: Warum nicht?

Geheimdienste in mir interessiert wären wahrscheinlich 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 in den Gläsern mit einer großen schwarzer Plastiktüte in der Hand. Wir schüttelten sich die Hände, und dann hat er mir eine Tasche mit den Worten: „Auf Sie gehen. Ich interessiere mich nicht nicht nützlich sein, vielleicht werden Sie nützlich sein. " Peering innen, sah ich zwei metroshnyh Terminal Anordnungen von Zeitungen, mehr zufällig verstreuten weißen Plastikkarten und Scheibe in einer Box. 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, weiter, und mein Zug als Zeit! Komm, bye!“.

Damit er weg lief, sprang in die bereits Schließen der Tür des Autos und fuhr davon. Und ich gestehen, ein wenig neponyatkah nach Hause ging. ICQ Kontakt von nur falls ich zum gleichen Zeit kontaktlist entfernt gereinigt und aufgeräumt in den Server-Logs nach oben (hallo wieder, Paranoia). Am Ende schreibt er wieder, 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 zweiten Anschlüsse des Busses erschienen Validator (die schweren, verdammt!); 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 zu bekommen. Etwa eine Stunde von Chaos, das ausgepackt, habe ich in der Lage gewesen, auf dem Computer, dieses Programm zu erstellen und auszuführen. Noch eine Stunde erforderlich war, um seine Struktur zu verstehen. Gekämmten all ini-Dateien (mit Kommentaren, freundlicherweise vom Entwickler links), hatte ich einen vollen Blick auf, was es ist, wie es funktioniert und was gegessen wird. Essen Sie, wie sich herausstellte, einen Leser Parsec PR-P08 daher davon in Abwesenheit, war nicht in der Lage, die Software in Aktion zu versuchen.

große staatliche Auftragnehmer, der ein solches System entwickelt (weitere Informationen finden Sie auf der Website lesen) - Der Entwickler wurde Firma „Smartek“ aufgeführt. Das Programm wurde in Delphi mit einem Laufzeit-bpl'ok geschrieben. Darüber hinaus hat die Software modular aufgebaut und alle Routinen, Klassen und Komponenten werden in einem separaten DLL oder bpl'kah mit dem bezeichnenden Namen befinden (dass es der wichtigste und Faile Entwickler war). Nach einer summarische Prüfung der internen Software, fand ich, dass in erster Linie Informationen über alle ausgestellten Tickets an eine zentrale Datenbank übertragen wird (ü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. Theoretisch dies gibt uns einen Vorsprung.

Vor allem aber ich interessiert an der Schlüsselmechanismus war (ich hatte etwa schon begonnen zu erraten, was es notwendig sein). Also nahm ich den Disassembler und ging zur Arbeit. Der Mechanismus besteht aus zwei Dateien - CryptKeyRef.dll und keys.d (nur „schlaue“ Datei in dem gesamten Programm, das außer auf 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 mit dem internen Inhalt der Tickets für die Arbeit. Da dies ein Runtime-bpl ist, war es genug, nur um es zu betrachten, den Tisch 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.“ In der Tat sind alle U-Bahn-Tickets von dem Header-Abschnitt der festen und Daten mit variablen Bestandteilen aufgebaut. So ist dieses Feld «-Layout» im Header ist nur bestimmt, wie und welche Daten in den Rest des Tickets befindet. Es gibt mehrere Layouts (jeweils unter seiner 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 Einleitungssatz Methoden waren). Deshalb, um herauszufinden, welche in jedem Layout Felder für die Antwort einfach war (noch mit einigen Methodennamen der Exporte zu sprechen!). Garaus vollständig das gesamte 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üsselmechanismus. Tatsächlich war er für die Erzeugung von „Hash“ verantwortlich. Wie funktioniert der Mechanismus war völlig klar, nachdem sie die Methode funktioniert, verantwortlich für die Berechnung des „hash“ zu studieren. Zuerst wird aus einer Datei mit den Tasten (keys.d) der richtige Schlüssel ausgewählt ist.

Das System ist so ausgelegt, dass jeder Kartentyp seine eigene Kennung besitzt (inklusive vorhanden, um eine vollständige Tabelle mit dem IDs und Ticket-Namen in einer Textdatei mit kommagetrennte Werten). Es besteht aus einer Zonenkennung (die Anwendung) und die Art der Kartenkennung. Also, auf der Grundlage dieser Zahlen in der Schlüsseldatei ausgewählt Schlüsselring, innerhalb dem mehrere Schlüssel sein kann (in dem Fall, wenn ein neuer Schlüssel eingeführt wird, und die alten Karten noch im Einsatz). ein neues Ticket Aufnahme kommt mit dem ersten und auf Gültigkeit prüfen - alle Schlüssel in keyringe verwenden. 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 der Daten des Tickets, sowie seine Hardware-Seriennummer und die Anzahl der (Verfahren zur Herstellung einer „hash“ zu erzeugen, die für keyringa in keys.d angegeben) - werden dem ckCalcHashCode Funktion übertragen, die in der gleichen CryptKeyRef.dll ist. 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 wird diese Funktionen von CryptKeyRef.dll und keys.d Datei könnte, wenn überhaupt, die „hash“ in jedem Dump neu zu berechnen. Ich habe alles in ein paar Deponien-doppelt geprüft und erhielt ein positives Ergebnis, links, froh zu schlafen.

Foul Schlüssel

Trotz der theoretischen Erfolg, wollte ich alles sehen, sozusagen „in der Schlacht.“ 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 nicht mehr (anscheinend waren sie wenig alt). Sie können sich natürlich sofort „hergestellt“ „Ultralight versuchen Schreiben“ und gehen Sie überprüfen, aber an diesem Punkt 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, Blick eilte ihr Ticket zu einem frischen 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. Daher ist der Schlüssel wirklich schon verfault, und sie wurden durch neue ersetzt. Dies negiert völlig meine ganze Arbeit. Ich fühlte mich traurig wenig. Ich gebrühten grünen Tee, spielte ein wenig Klavier (ja), und setzte sich auf seine unvollendete Zuchtgebühr auf ...

Es ist nicht alles verloren

Die Idee kam mir unerwartet, als ich aus irgendeinem Grund wieder einmal war, schaute in die Datei mit den Tasten. Ich bemerkte, dass in dem „laufenden“ keyringe waren zwei Tasten (die den 1-, 2- und 5-poezdochnyh und andere „ultraleicht“ zu berechnen verwendet wird) - die neuen (zu der Zeit, natürlich) und offenbar - der alten. Aber es wurde auch Schlüsselbund, die nur einen Schlüssel legen. Ich hatte keine Aufmerksamkeit auf ihn bezahlt, und auf den „laufenden“ konzentriert. Zur Berechnung keine Tickets mit dem Schlüssel, weiß ich nicht. Wenn ich, dass für die Art der Fahrkarte sah zu keyringu angebracht, dann brach ich einen kleinen Funken Hoffnung aus. Die Tatsache, dass diese Art der Fahrkarte war - Väsby. Ja, es ist eine seltene Art von Ticket - eine temporäre Reise auf allen Verkehrsträgern. Ich dachte, dass, wenn ein einziges Ticket, dann sollte diese Option nicht nur in der U-Bahn verwendet werden, sondern auch auf dem 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 gereinigt metroshnuyu Programm aus verschiedenen „trash“, gab es etwas ähnlich wie die alten Archivschlüsseldateien. Ausgegraben und öffnete die ursprüngliche Datei, sah ich, dass es tatsächlich der Fall war. Und vor allem bei allen alten Schlüsseldateien suchen, entdeckte ich, dass dieser Schlüssel unverändert bleibt! Bereits ohne einen Tropfen Zweifel ich meine eigenen Väsby vernietet (zum Glück hatte ich Dumps dieser Art, die manchmal die Aufgabe vereinfacht - Ich habe gerade die Sicherungsdaten und Nummer) und „Hash“ den Schlüssel berechnet. Also, es testet Zeit (vor allem, da ich nur ein wenig durchsichtigen Kunststoff gekauft). Beim Betreten der Halle, habe ich zuerst ein „Ticket“ auf den Prüfpunkt. Auf der Anzeigetafel leuchtete die Gültigkeit des Tickets, die ich habe, und die grüne LED leuchtet. Folglich werden die Arbeiten. Grimasse bildet einfachere und ein schneeweißes Kunststoffhülse versteckt, näherte ich mir den Drehkreuz, legte seine Hand auf den Validator und ... ging ruhig auf einem Spaß grün Feuer gefangen. Dies markierte den endgültigen Sieg.

Was kommt als nächstes?

Und dann begann die Experimente, in denen es viele interessante Dinge gefunden wurde. Zum Beispiel, wie „links“ Väsby kann nur zwei oder drei Tage gehen. Tatsache ist, dass die Zahl, die im Innern des Ticket I „von den Bulldozer“ zitieren, jeder Durchgang in dem Speicher des Drehkreuzes Kopfes gespeichert ist, und nach einiger Zeit mit dem Rest des Datenzentrums gesendet. Es ist wirklich kein System erteilt ein Ticket mit der Nummer und legt ihn zur Disposition, die dann an alle U-Bahn-Drehkreuze gesendet wird. Und so sollte es mit allen Arten von Karten, nicht nur Väsby getan werden - zusätzlich zu dem „Hash“ und häufig wechselnde 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 Setzen der Sperrbits keine Bedeutung für die Tatsache ist, dass es das Ticket funktioniert oder nicht. Die einzige Ausnahme ist ein bisschen OTP-Bereich Sperre, Drehkreuz, die anscheinend immer überprüft, trotz der Tatsache, dass im OTP-Schreiben wird nicht. Später nahm ich Terminals metroshny und Bus auf, führte sie um, studiert und begann auf der Bank. Nun die nächste Vermutung zu testen, hatte nicht mehr mit frisch gebackenem Ticket-Mutante auf der U-Bahn laufen, und es wurde möglich, sie zu testen „vor Ort“. Vor allem war die U-Bahn-Terminal die gleichen alten (alles andere und Buggy), wie meine Schlüssel. Damit ich zu „arbeiten“ und alle anderen Arten von „Ultralight“ Ticket versuchen könnte - etwas konnte ich nie in der U-Bahn „live“ tun. Parallel zu diesen Experimenten setzte ich mit der Software.

Da hat sich über viel diskutiert worden, welche Art von Algorithmus bei der Berechnung von „Hash“ verwendet wird, habe ich beschlossen, es vollständig wiederherstellen, indem Sie den Algorithmus von Grund auf „menschlichen“ Programmiersprache Umschreiben, und im Laufe nur um herauszufinden, Hoffnung, was für einen Algorithmus - das weithin bekannt oder sonst irgendeine Art seiner eigenen, internen Entwicklung -Was. Auf dem Weg dorthin besuchte ich viele verschiedene Ideen (das einschließlich der AES sein kann), aber eine detaillierte Studie bereits Code arbeiten ohne Smartekovskih Bibliotheken ergab, dass der Algorithmus das ist - „nur“ Gäste - Hausverschlüsselungsstandard (alle notwendigen Informationen darüber können Sie im Netz ohne Mühe finden). Insbesondere wird für die "hash" loop Berechnung verwendet, um eine 16-W. „Hash“, in der Tat ist es nichts, wie Standard-Authentifizierungscode.

Die Struktur der Informationen aufgezeichnet auf dem Ticket „Ultralight“

Was ist eine Seite, wo befindet und wie die Hardware-Seriennummer, Lockbits und der OTP-Bereich, können Sie die Original-Dokumentation (Dateispezifikation im PDF-Format mit einer vollständigen Beschreibung des Chips auf einer Platte) lesen. Ich empfehle es von ihrem Lernen zu beginnen. Ich werde die Position der Datenstruktur beschreiben, die U-Bahn in dem Benutzerbereich erzeugte unter Verwendung zum Lesen und Neuschreiben (in Abwesenheit der Sperre, natürlich). Alle Inhalte des Tickets können in einem Kopfteil und zwei vollständig doppelte Datenstücke aufgeteilt werden (dies ist für Redundanz und Fehlerschutz durchgeführt wird). Der Kopfteil der Tickets in der „Ultralight“ ab Seite 4. Ein Teil davon ist die gleiche Struktur in allen Tickets und IDs Metro und Mosgortrans System. Die ersten 10 Bit - der Identifikator; Der folgende 10-Bit - Ausweistyp (was sind Kennungen, die Sie speziell für diese Seitenleiste ausgewählt in andere lesen können). Nachdem der Identifikator 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!) Von 32 Bit. Das letzte 4 Bits - Layout-Feld, das das System sagt, wie die folgenden Daten (so etwas wie Dateiformat) zu behandeln.

Für Tickets „ist Ultralight» Layout-Wert 0x08. Im selben Teil der Kopfende. Ferner ist an dem das Ticket „Ultralight“ enthält das Datum der Formschluss (16 Bits). Alle Termine sind bereits in der Anzahl der Tage seit dem Format 01/01/1992 verstrichene angegeben. Hier wird der Kopfteil der „Ultralight“ Ticket Ende (auf dem Ticket mit einem anderen Layout-kann noch eine Vielzahl von zusätzlichen Informationen aufgezeichnet werden). Die erste Datenbereich geht von der Seite 8. Die ersten 16 Bits Ticketausgabedatum erfasst werden. Nach dieser bestimmten Zeit der Gültigkeit des Tickets in Tagen (ab dem Datum der Ausstellung) - 8 Bit. Die ersten 16 Bits von Seite 9 - Zähler Reisen. Es kann, oder steigt von Null (in Tickets Väsby, ohne die Anzahl der Fahrten zu begrenzen) auf Null (mit Einschränkung der Anzahl der Fahrten und Ticket) entweder abnimmt. Nachdem der Zähler in dem Rest der Seite an jedem Drehkreuzes Durchgang eine eindeutige Kennung einzugeben. Offenbar wird diese verwendet mehrmaligen Durchlauf zu verhindern, ohne für das Ticket zu warten Väsby (Drehkreuze Lobby mit dem Netzwerk verbunden und sie Abfrage), sowie die Möglichkeit durch ein Drehkreuz zu sehen war gemacht Pass (zum Beispiel, wenn ein Fehler oder für statistische ). Page 10 vollständig 32-Bit "hash" besetzt.

Seite 11 leer. Dieser Datenbereich wird für die verbleibenden vier Seiten (12 bis 15) vollständig repliziert. Es stellt sich heraus, dass während des normalen Betriebs dieser beiden Bereiche immer die gleichen Daten enthalten. Getrennt davon 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 eines Tickets (für einen Stopp-Liste) festgelegt. Das abgebrochene Ticket kann nicht gestellt werden. Zum Brennen von nur 30 Bits. Dieser Bereich wird vom System als 100% Hub dargestellt. Mit jeder neuen Reise eine bestimmte Anzahl von Bits gesetzt ist (von dem geringsten zum höchsten), entsprechend wie viele Prozent belegt eine Reise. Zum Beispiel für ein 5-poezdochnogo Ticket mit jeder neuen Reise wird „burn out“ von 6 Bit und 60-poezdochnogo - um einen halben Bit (mit Rundung). Es ist erwähnenswert, dass die erneute Verwendung ticket „Ultralight“ unmöglich ist, nicht nur wegen des „Brennen“ des OTP, sondern auch aufgrund der Tatsache, dass an der Abendkasse, die Ausstellung des Ticket (und vielleicht sogar in seiner Herstellung), fast alle Seiten werden blockiert zu überschreiben . So ist weder die „reload“ oder die Art der Fahrkarte zu einem anderen wechseln hat nicht heraus.

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

Alle Zahlen werden in Dezimalschreibweise angezeigt!

Application Identifiers:

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

Bezeichner wie „Ultralight“ Ticket:

  • 120 - Eine Fahrt.
  • 121 - Zwei Reisen.
  • 126 - Fünf Reisen.
  • 127 - Zehn Reisen.
  • 128 - Twenty-Reisen.
  • 129 - Sechzig Reisen.
  • 130 - + Gepäck Passage.
  • 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 Module des Programms in der klaren (hallo Entwickler!) Und ich hatte keine Probleme, ein kleines Programm zu schreiben, mit dem Inhalt der Karte mit der Taste. Während der Experimente zeigten einige interessante Features, wie zum Beispiel: die unterirdische Speicherung Ticket verwendet die erste Kartensektor und Bodentransport - vierte; kein Schutz, mit Ausnahme von Hardware-Tasten (die, wenn sie in die Software in einer Weise geschrieben wahrscheinlich im Allgemeinen nie seit dem Eintritt in den Betrieb des Systems geändert), wobei diese Karten nicht existieren.

Stattdessen enthält am Ende jeden Blockes der CRC-16, die Daten einfach so vor Schäden zu schützen. Zusätzlich zu den sozialen Karten, zusätzlich zu den Karten verzeichneten viel mehr abwechslungsreiche und interessante Informationen. Zum Beispiel in den 13 und 14 Sektoren, Sozialversicherungskarten mit dem Namen, Vornamen und Vatersnamen des Besitzers. Diese (und andere) können die Daten lesen, einen öffentlichen Schlüssel 0xA0A1A2A3A4A5 verwenden. Während der Versuche war es möglich, den vollen Student SCM sowie mehrere Karten auf Netto-Classic-Karte zu klonen.

Aber das Klonen, wie ich herausstellte, es ist toll, spart System Stop-Listen - so kann das Ticket nicht mehr als zwei Tage verwendet wird, dann wird es abgebrochen werden (obwohl im Gegensatz zu der „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, nicht an mir interessiert, und ich beschlossen, nach dem alle auf dem „Ultralight“ Studie zu konzentrieren.

Das Ende oder zusammenfassen

U-Bahn-System und insbesondere die neuen Karten „Ultralight“, im Gegensatz zu den Meinungen und Mutmaßungen wurden gut geschützt. Sehr erfreut, dass die Entwickler einen zuverlässigen und bewährte verbreiteten Standard, anstatt das Rad neu zu erfinden. Mit einem solchen Schutz zu fälschen Ticket „Ultralight“ ohne Zugang zu vertraulichen Daten (Schlüsselinformationen), ist einfach unmöglich. Bemerkenswerter entworfen und System austauschbarer Tasten und ein Blatt-Anschlagmechanismus. Natürlich nicht ohne Mängel und Fehler. Die größte von ihnen - die Software, die nicht geschützt ist.

Es war genug, um die Verwendung von Runtime-bpl zu beseitigen, und dies würde die Analyse der Dutzend Male erschweren! 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 eines guten (vorzugsweise dunkel oder nach Maß) diese Art von Schutz, aber mit einem Hardware-Key-Programme wäre es unmöglich machen, vollständig zu analysieren. Natürlich ist die Metropolitan - ein modales Unternehmen, aber es ist nicht notwendig, um diese über den menschlichen Faktor vergessen. Immerhin hat Kevin Mitnick gesprochen (und nicht nur gesprochen, sondern auch mit gutem Beispiel demonstriert, für die er setzte, gy), dass manchmal, um Ziele einfacher und effizienter zu erreichen „Social Engineering“ zu verwenden, anstatt zu versuchen, eine undurchdringliche Verteidigung zu brechen. Nun, in diesem Sinne werde ich meine Geschichte Ende. Und Sie, lieber Leser, ich wünsche Ihnen viele interessante und erfolgreiche Studien!








Beschreibung der Algorithmus Verschlüsselungstransformation in Übereinstimmung mit GOST 28147-89

In dieser Norm wird einen gemeinsamen kryptographische Algorithmus für die Transformationen für die Informationsverarbeitungssysteme in Netzwerken von Computern (PC), die einzelne Rechnersysteme und Computer, die Regeldatenverschlüsselung und Authentisierungscodeerzeugungs bestimmt.

Verschlüsselungstransformationsalgorithmus für Hardware oder Software-Implementierung, die Verschlüsselungs erfüllt die Anforderungen und ihre Fähigkeiten erlegt keine Beschränkungen für den Grad der Geheimhaltung der Informationen geschützt werden.

Der Standard ist verpflichtend für Organisationen, Unternehmen und Institutionen, die kryptographischen Schutz von Daten gespeichert und übertrugen in Computer-Netzwerken, einzelne Computersystemen oder Computern verwenden.

Strukturdiagramm Verschlüsselungsumwandlung

Strukturdiagramm Verschlüsselungsumwandlung (kriptoskhema) in 1 dargestellt ist, besteht aus:

  • - ein Schlüsselspeicher (PUV) für 256 Bits aus acht 32-Bit - Akkumulatoren (X 0, X 1, X 2, X 3, X 4, X 5, X 6, X 7);
  • - vier 32-Bit - Akkumulator (N 1, N 2, N 3, N 4);
  • - zwei 32-Bit - Akkumulator (N 5, N 6) mit darin aufgezeichneten konstanten Befüllungs C 2, C 1;
  • - zwei 32-Bit - Addierer modulo 2 32 (SM 1, SM 3);
  • - 32-Bit - Addierer Summations bitweise modulo 2 (CN 2);
  • - 32-Bit - Addierer modulo (2 32 -1) (CM 4);
  • - modulo-2 - Addierer (SM 5) zur Begrenzung des Bit - Addierer SM 5 nicht überlagert;
  • - Substitution Block (C);
  • - zyklisches Schieberegister auf den elf Stufen in Richtung der höchstwertigen Bits (R).

Abbildung 1.

Durch die Substitution besteht darin , den Block von acht Ersatzknoten K 1, K 2, K 3, K 4, K 5, K 6, K 7, K 8 Speicher jeweils 64 Bit. Antragsteller Substitutionsblock 32-Bit-Vektor wird in acht aufeinanderfolgenden 4-Bit-Vektoren aufgeteilt, von denen jeder zu einem 4-Bit-Vektor entsprechenden Ersatzknoten umgewandelt wird jeweils vier Bits in der Abfüllanlage eine Tabelle mit sechzehn Zeilen darstellt. Eingangsvektor die Zeilenadresse in der Tabelle bestimmt, die Füllung der Leitung zugewandt Vektor. Dann wird 4-Bit-Ausgangsvektoren nacheinander kombiniert in einen 32-Bit-Vektor.

Zusätzlich und zyklische Verschiebung binäre Vektoren sind MSB Bits Antriebe mit höheren Zahlen betrachtet.

Wenn die Tasteneingabe (W 1, W 2, ..., W 256), W q Je {0,1}, q = i 256 ÷, ein Wert PUV W 1 in den 1-te Bit - Akkumulator X 0 eingeführt wird, wird der Wert W 2 eingeführt der 2. Ziffer 0 X - Antrieb, ..., W - Wert 32 wird in den 32-te Bit von X 0 Akkumulator eingeführt; W - Wert 33 wird in den Akkumulator 1-te Bit eingeführt , X 1, W 34 Wert wird in dem 2. Entladetreibertransistors X 1 eingegeben, ..., 64 W - Wert wird eingeführt in den 32-te Bit von X 1 Akkumulator; W - Wert 65 in den 1-te Bit - Akkumulator X 2 usw. eingeführt wird, wird der Wert von 256 W in das 32-te Bit X 7 eingeführt Laufwerk.

Wenn der Informationsgehalt des p -ten Bit - Akkumulator (Addierer) Kopieren in einer anderen p - te Bit - Akkumulator neu geschrieben (Addierer).

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

Tabelle 1

Bit - Akkumulator N 6

32

31

30

29

28

27

26

25

24

23

22

21

20

19

18

17

Entlastung Bedeutung

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

1

Bit - Akkumulator N 6

16

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

Entlastung Bedeutung

0

0

0

0

0

0

0

1

0

0

0

0

0

1

0

0

Die konstante Befüllung von C 2 (konstant) N Speicher 5 in Tabelle 2 gezeigt.

Tabelle 2

Bit 5 Laufwerk N

32

31

30

29

28

27

26

25

24

23

22

21

20

19

18

17

Entlastung Bedeutung

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

1

Bit 5 Laufwerk N

16

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

Entlastung Bedeutung

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

1

Schlüssel definieren PUV füllen und Tabellen des Substitutionsblock K sind geheime Elemente und in der vorgeschriebenen Weise zugeführt wird.

Fülleinheit Tabellen über ein Langzeitschlüsselelement gemeinsam mit dem Computernetzwerk zu ersetzen.

Organisation von verschiedenen Arten von Kommunikation erreicht, indem die entsprechende Taste System zu konstruieren. Dies kann durch die Möglichkeit eines Schlüssels (Füllung PUV) -Modus einfaches Austauschen und dessen Codierungsmodus mit einfacher Austausch Simulationsschutzsoftware für die Übertragung über den Kommunikationskanal oder Speicherung im Computerspeicher verwendet werden.

In kriptoskheme vier Betriebsarten sind vorgesehen:

  • - Verschlüsselung (Entschlüsselung) in einem einfachen Datenersetzungsmodus;
  • - Verschlüsselung (Entschlüsselung) in XOR-Datenmodus;
  • - Verschlüsselung (Entschlüsselung) XOR-Daten in einem Rückkopplungsmodus;
  • - Modus des Authentifizierungscode zu generieren.

Verschlüsselung im Modus des einfachen Austausches

Codierung von offenen Daten in einem Modus des einfachen Austausches

Kriptoskhema den Verschlüsselungsalgorithmus in einem einfachen Swap-Modus zu realisieren sollte die Form in Abbildung 2 gezeigt haben.


Abbildung 2

Die nächste Datencodierung sein, wird in Blöcke von 64 Bits unterteilt, die jeweils. 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 Informationen in Antriebe N 1 und N 2 durchgeführt , so dass ein Wert von 1 (0) in die 1-te Bit N 1 eingeführt wird, ein der Wert 2 (0) wird in den 2-te Bit eingeführt N 1 usw., ein Wert von 32 ( 0) wird in die 32-te Bit N 1; Wert B 1 (0) in die 1-te Bit N 2 eingeführt wird, wird der Wert b 2 (0) in der zweiten Entladung N 2 eingeführt, usw., wird der Wert b 32 (0) wird in den 32-te Bit N 2. Das Ergebnis ist ein Zustand (a 32 (0), a 31 (0), ..., a 2 (0), a 1 (0)) Lager N 1 und die Bedingung (b 32 (0), B 31 (0), ... , b 2 (0), b 1 (0)) 2 N Lagerung.

In PUV eingeführt 256-Bit-Schlüssel. Die Inhalte der acht 32-Bit - Akkumulatoren X 0, X 1, ..., X 7 haben die Form:

  • 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)

Codieralgorithmus 64-Bit-Einheitsdaten in den offenen Modus der einfachen Austausch besteht aus 32 Zyklen.

Im ersten Zyklus wird die Erstbefüllung des Akkumulators 1 summiert N modulo 2 32 SM 1 im Addierer - Akkumulator Befüllung mit X 0, füllen Sie der Akkumulator N 1 gehalten wird.

Das Ergebnis der Summierung wird im Block K umgewandelt und Substituieren des resultierenden Vektors eingegeben wird in das Register R, die für elf Schritte zur MSBs gedreht wird. Verschiebungser wird SM bitweise Modulo - 2 - Addierer summiert 2 mit einer 32-Bit - Akkumulator Füllung aus N 2. Resultierende in CM 2 Ergebnisse aufgezeichnet in N 1 ist , wird der alte Wert in N überschrieben 1 N 2. Der erste Zyklus endet.

Folgezyklen werden in ähnlicher Weise durchgeführt, während der zweite Zyklus des Füllens PUV gelesen X 1, im 3. Zyklus der Füllung PUV gelesen X 2 usw. gelesen wird , X 7 in der 8 - ten Zyklus der PUV füllt. In den Zyklen von der 9. bis 16., und in Zyklen von 17 bis 24 Minuten PUV Füllung sind 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 mit einem 25-ten bis 32-ten Ordnung Lese Füllungen PUV Reverse: X 7 X 6 X 5 X 4 X 3 X 2 X 1 X 0.

Somit wird, wenn Codierung wird in 32 Zyklen des folgenden Auswahlverfahren Speichertank durchgeführt wird:

  • 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.

Der 32. Zyklus, wird das Ergebnis vom Addierer SM 2 wird in den Akkumulator eingeführt N 2 und N in den Akkumulator 1 ist alt Füllung gespeichert.

Erhalten nach dem Zyklus Codierung Füllung 32. antreibt N 1 und N 2 Blockdaten entsprechend dem Block der offenen Daten verschlüsselt sind.

Entschlüsseln der verschlüsselten Daten in einem Modus des einfachen Austausches

Kriptoskhema Realisieren Entschlüsselungsalgorithmus in einem einfachen Ersetzungsmodus hat die gleiche Form wie (vgl. Abbildung 2), und dass für die Verschlüsselung. In PUV eingeführt 256 Bits derselben Taste, die Codierung durchgeführt wurde. Verschlüsselte Daten zu Entschlüsseln, aufgeteilt in Blöcke von jeweils 64 Bit. Geben Sie ein beliebigen Block T w = (a 1 (32), 2 (32), ..., und 32 (32), b 1 (32), b 2 (32), ..., b 32 (32)) in dem Speicher N 21 und N werden durchgeführt , so dass ein Wert 1 (32) in die 1-te Bit N 1 eingeführt wird, ein Wert 2 (32) in dem 2. Rang N 1 eingeführt, usw., wird ein Wert von 32 (32) injiziert in 32-te Bit N 1; b der Wert 1 (32) wird in den 1-te Bit eingeführt N 2, b - Wert 2 (32) wird in den 2.en Entladungs N 2 eingeführt, usw., wird der Wert b 32 (32) in die 32-te Bit N 2 eingeführt wird.

Entschlüsselung erfolgt , um den gleichen Algorithmus wie die offene Datencodierung verwendet wird , mit der Änderung , dass die Füllung Plattenlaufwerke X 0, X 1, ..., 7 X von 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.

Erhielt nach 32 Betriebszyklen des Füllens Lager N 1 und N 2 bildet einen öffentlichen Datenblock.

T 0 = (a 1 (0), a 2 (0), ..., a 32 (0), b 1 (0), b 2 (0), ..., b 32 (0)) an den Block von verschlüsselten Daten entsprechen, bei diesem Wert a 1 (0) des Blocks T 0 entspricht der Gehalt an 1-te Bit N 1, ein Wert 2 (0) entspricht der Inhalt der 2. Kategorie N 1 usw., und der Wert von 32 (0) entspricht dem Inhalt 32 te Bit N 1; Wert b 1 (0) entspricht der Inhalt der ersten Entladung N 2, wird der Wert b 2 (0) 2 zu dem Inhalt der zweiten Entladungs N entspricht usw., wobei der Wert b 32 (0) 32 entspricht dem Inhalt des Rangs N 2 .

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

XOR-Modus

Codierung der offenen Daten in der XOR-Operation

Kriptoskhema den Verschlüsselungsalgorithmus in der XOR-Operation zu realisieren, sollte die Form in Abbildung 3 gezeigt hat.


Abbildung 3

Die nächsten 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 verschlüsselt , indem eine bitweise Modulo-2 - Addition in einem Addierer SM 5 mit gamma cipher T w, die in Blöcken von 64 Bits erzeugt wird, d.h.

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

wobei M - von der Datenmenge bestimmt wird, verschlüsselt werden.

T w(i) - i-ten 64-Bit - Block, i = 1 ÷ Ì, die Anzahl der Bits in dem Block T 0(M) kann weniger als 64, das nicht benutzt wird Kodierteil gamma Chiffre vom Block T w(M) verworfen.

In PUV eingeführt 256-Bit-Schlüssel. Die Antriebe N 1, N 2 in dieser eingeführt 64-Bit - Binärsequenz (sinhroposylka) S = (S 1, S 2, ..., 64 S), eine Quelle für die Speicherung zur nachfolgenden Erzeugung von M gamma cipher Blöcken gefüllt wird . Sinhroposylka eingeführt in die N 1 und N 2 , so dass der Wert von S 1 in dem N 1-ten Bits 1 eingeführt wird, wird der Wert von S 2 in die N - 2-ten Bits 1 eingeführt wird, usw., wird der Wert von S 32 in dem 32-ten Bit eingeführt 1 N; Wert von 33 S in die 1-te Bit N 2, Wert wird in den 2.en Entladungs N 2 etc., S 64 eingegebene Wert S 34 eingeführt wird , wird in dem 32-ten Bit N 2 eingetragen.

Erstbefüllung von Akkumulatoren N 1 und N 2 (sinhroposylka S) wird in einem einfachen Ersetzungsmodus in Übereinstimmung mit den Anforderungen des Absatzes 1.3.1 verschlüsselt. Das Ergebnis der Verschlüsselung wird umgeschrieben in 32 Speicherbits N 3 und N 4 , so dass die Füllung in 1 N N neu geschrieben wird 3 N 2 eine Füllung entspricht N 4.

Filling Akkumulator N 4 aufsummiert modulo (2 32 -1) in einem Addierglied SM 4 mit einem 32-Bit - Konstante C aus dem Stapler 1 N 6, wird das Ergebnis in der N 4 geschrieben.

Füllen Akkumulator 3 N summiert wird Modulo-2 - Addierer 32 in der SM-3 mit 32-Bit - Konstante C aus dem Stapler 2 N 5, wird das Ergebnis in N 3 geschrieben.

Füllen N 3 entspricht N 1, N 4 und Befüllung neu geschrieben in N 2, wodurch Füllung N 3, N 4, konserviert ist.

Füllen N 1 und N 2 wird im Modus des einfachen Austausches in Übereinstimmung mit den Vorschriften des Absatzes 3.1 verschlüsselt. Die sich ergebende Codierung Füllung aus N 1, N 2 bildet einen ersten 64-Bit - Block Gamut cipher T w(1), die bitweise Modulo - 2 - Addierer SM 5 mit dem ersten 64-Bit - Block der offenen Daten T summiert wird 0(1) = (t 1(1), T 2(1), ..., t 63(1), t 64(1)). Das Ergebnis , das durch den 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 der SM 5 Werte t 1(1) des Block T 0(1) mit dem Wert des 1. Rang N 1, der Wert von τ 2(1) Einheit w T (1) ist das Ergebnis der Summierung Modulo 2 5 SM Wert t 2(1) des Blocks T 0(1) mit dem Wert 2 des Rangs N 1 usw., wobei der Wert von τ 64(1) Einheit T w(1) es ist das Ergebnis der Summierung Modulo 2 des SM 645 Werte T (1) T 0 des Blockes (1) mit einem Wert von 32 - te Bit N 2.

Für im Addierer SM 4 mit konstantem C 1 von N 6, N 3 den nächsten Stapels Füllung 4 N modulo (2 32 -1) , 64-Bit - Blockchiffre gamma T Füllung w(2) Modulo-2 - Addierer 32 in dem SM summiert wird 3 C ist eine konstante von 2 N 5. Neu N 3 Füllung neu geschrieben wird, in N 1 und N 4 neue Füllung 2 in N neu geschrieben, und die Füllung 3 N 4 und N erhalten ist.

Füllen N 1 und N 2 wird im Modus des einfachen Austausches in Übereinstimmung mit den Vorschriften des Absatzes 3.1 verschlüsselt. Die sich ergebende Füllung Codierung N 1, N 2 bildet einen zweiten 64-Bit - Blockchiffre gamma T w(2), die bitweise Modulo - 2 - Addierers 5 wird die SM zu dem zweiten offenen Datenblock T summiert wird , 0(2). Analog cipher Keystream Blöcke T w(3) T w(4) ... w r (M) und die verschlüsselten Datenblocks offen T 0(3), T 0(4) ..., T 0(M) erzeugt wird . Wenn die Länge des letzten M-ten offenen Datenblock T 0(M) kleiner als 64 Bit ist, das letzte M-te Schlüsselblockbereich T w(M) verwendet wird , nur eine entsprechende Anzahl von Skalen Bits des Chiffre zu verschlüsseln, werden die verbleibenden Bits verworfen.

Der Kommunikationskanal oder Computerspeicher sind sinhroposylka S und T Blöcke von verschlüsselten Daten , w(1), T m(2) übertragen, ..., w T (M).

Entschlüsseln der verschlüsselten Daten in der XOR-Operation

Wenn die Entschlüsselung kriptoskhema die gleiche Form wie die für die Verschlüsselung hat (siehe. Abbildung 3). In PUV 256 Bit - Schlüssel eingegeben, durch die die Codierung von Daten , T 0(1), T 0(2), ..., T 0(M) , wobei T 0(M) kann weniger als 64 Bits umfassen.

XOR-Modus Feedback

Codieren von Daten in einem öffentlichen Modus XOR-Feedback

Kriptoskhema die XOR-Modus Feedback implementiert, muss von der Form in Abbildung 4 dargestellt.


Abbildung 4

Die nächsten 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 - Addition in einem Addierer SM 5 mit gamma cipher T verschlüsselt w, die in Blöcken erzeugt wird 64 Bits, d.h. T m = (T w(1), T m(2), ..., r w(M)), wobei M - definiert durch den Umfang verschlüsselte Daten T w(i) - i-ten 64-Bit - Block, i = 1 ÷ Ì. Die Anzahl der Bits in dem Block T 0(M) kann weniger als 64.

In PUV eingeführt 256-Bit-Schlüssel. Die Antriebe N 1, N 2 in dieser eingeführt 64-Bit - Binärsequenz (sinhroposylka) S = (S 1, S 2, ..., S 64). Sinhroposylka eingeführt in die N 1 und N 2 , so dass der Wert von S 1 in dem N 1-ten Bits 1 eingeführt wird, wird der Wert von S 2 in die N - 2-ten Bits 1 eingeführt wird, usw., wird der Wert von S 32 in dem 32-ten Bit eingeführt 1 N; Wert von 33 S in die 1-te Bit N 2, Wert wird in den 2.en Entladungs N 2 etc., S 64 eingegebene Wert S 34 eingeführt wird , wird in dem 32-ten Bit N 2 eingetragen.

Erstbefüllung von Akkumulatoren N 1 und N 2 ist in einem einfachen Ersatz - Modus 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 - Gammablockchiffre 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), T 2(1), ..., t 63(1), t 64(1)).

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

Verschlüsselte Blockdaten T w(1) gleichzeitig auch der Anfangszustand von N 1, N 2 , um einen zweiten Block Cipher gamma T Erzeugen w(2) und die Rückkopplungs geschrieben werden in die Speicher. Der Wert von τ 1(1) in die 1-te Bit N 1 eingeführt wird, wird der Wert von τ 2(1) in die N - 2-ten Bits 1 eingeführt, usw., wird der Wert von τ 32(1) in den 32-te Bit eingeführt N 1; Wert τ 33(1) in die 1-te Bit N 2 eingeführt wird, wird der Wert von τ 34(1) in den 2.en Entladungs N 2 eingeführt, usw., wird der Wert von τ 64(1) in den 2 N 32-te Bit eingeführt.

Füllen N 1, N 2 im Modus des einfachen Austausches in Übereinstimmung mit den Vorschriften des Absatzes 3.1 verschlüsselt. Die sich ergebende Füllung Codierung N 1, N 2 bildet einen zweiten 64-Bit - Blockchiffre gamma T w(2), die bitweise Modulo - 2 - Addierers 5 wird die SM zu dem zweiten offenen Datenblock T summiert wird , 0(2).

Formulierung nachfolgende gamma Blockchiffre T w(i) und Codieren jeweilige offene Datenblöcke T 0(i) (i = 3 ÷ I) ist ähnlich. Wenn die Länge des letzten M-ten Datenblock offenen T 0(M) kleiner ist als 64 Bits, dann r w(M) Es wird nur die entsprechende Anzahl von Skalen Bits des Chiffre verwendet, werden die verbleibenden Bits verworfen.

Der Kommunikationskanal oder Computerspeicher sind sinhroposylka S und T Blöcke von verschlüsselten Daten , w(1), T m(2) übertragen, ..., w T (M).

Entschlüsseln der verschlüsselten Daten in der XOR-Operation mit Rückmeldung

Wenn die Entschlüsselung kriptoskhema die gleiche Form wie die für die Verschlüsselung hat (siehe. Abbildung 4). In PUV eingeführt 256 Bits des gleichen Schlüssels, die T - Codierung durchgeführt wurde 0(1), T 0(2), ..., T 0(M). Sinhroposylka eingeführt in die N 1, N 2, so dass der Wert von S 1 in die 1-te Bit N 1 eingeführt wird, wird der Wert von S 2 in die N - 2-ten Bits 1 eingeführt, usw., 32 der Wert von S in den 32-te Bit eingeführt wird 1 N; Wert von 33 S in die 1-te Bit N 2, Wert wird in den 2.en Entladungs N 2 etc., S 64 eingegebene Wert S 34 eingeführt wird , wird in dem 32-ten Bit N 2 eingetragen.

Erstbefüllung von Akkumulatoren N 1 und N 2 (sinhroposylka S) wird in einem einfachen Ersetzungsmodus in Übereinstimmung mit den Anforderungen des Absatzes 3.1 verschlüsselt. Die sich ergebende Füllung Codierung N 1, N 2 bildet einen ersten 64-Bit - Blockchiffre gamma 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 Block von Daten offen T 0(1).

Verschlüsselte Blockdaten T w(1) ist die Erstbefüllung von N 1, N 2 , um einen zweiten Block Cipher gamma T Erzeugen w(2). Block T w(1) in N geschrieben 1, N 2. Der Wert von τ 1(1) in die 1-te Bit N 1 eingeführt wird, wird der Wert von τ 2(1) in die N - 2-ten Bits 1 eingeführt, usw., wird der Wert von τ 32(1) in den 32-te Bit eingeführt N 1; Wert τ 33(1) in die 1-te Bit N 2 eingeführt wird, wird der Wert von τ 34(1) in den 2.en Entladungs N 2 eingeführt, usw., wird der Wert von τ 64(1) in den 2 N 32-te Bit eingeführt. Empfangene Füllung N 1, N 2 ist in einer einfachen Ersetzungsmodus in Übereinstimmung mit den Anforderungen des Absatzes 3.1 der sich ergebende Block T verschlüsselt w(2) aufsummiert bitweise Modulo - 2 - Addierer 5 dem SM zu dem zweiten Chiffretext - Blockdaten T w(2). Das Ergebnis ist ein Block von Daten offen T 0(2).

Ähnlich, N 1, N 2 aufeinanderfolgenden aufgezeichnete Blöcke von verschlüsselten Daten T w(2) T w(3), ..., T m(M-1), von denen nur ein Modus , um die erzeugten Blöcke ersetzt gamma cipher T w(3), T w(4), ..., w D (M). Gamma - Einheiten cipher aufsummiert bitweise Modulo - 2 - Addierer SM 5 mit Blöcken von verschlüsselten Daten T w(3) T w(4), ..., T m(M) offene Datenblocks T 0(3) zu erhalten, T 0( 4), ..., T 0(M), wobei die letztere offene Datenblocklänge T 0(M) kann weniger als 64-Bits.

Erzeugen Authentifizierungscode-Modus

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

Der erste Block von offenen Daten T 0(1) = (t 1(1), T 2(1), ..., t 64(1)) = (a 1(1) (0), a 2(1) (0) , ..., a 32(1) (0), b 1(1) (0), b 2(1) (0), ..., b 32(1) (0)) wird in dem Speicher N geschrieben 1 und N 2, wobei der Wert t 1(1) = a 1 (1) (0) in die 1-te Bit N 1 eingeführt wird, wird eine der Wert t 2(1) = 2(1) (0) in die zweiten Rang N 1 eingeführten der Wert usw., t 32(1) = a 32(1) (0) in die 32-te Bit N 1 eingeführt; 33 der Wert T (1) = b 1 (1) (0) in den 1-te Bit eingeführt N 2 etc., t 34 - Wert (1) = b 32(1) (0) in den 32-te Bit eingeführt N 2.

Füllen N 1 und N 2 durchläuft eine Transformation in einfachen Ersetzungsmodus zu den ersten 16 Zyklen des Verschlüsselungsalgorithmus entspricht, in Übereinstimmung mit Absatz 3.1. In PUV somit ist es mit dem gleichen Schlüssel , die öffentlichen Datenblocks 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).

Erhielt nach 16 Zyklen N 1 und N 2 der Formfüllung (a 1(1) (16), a 2(1) (16), ..., a 32(1) (16), b 1(1) ( 16), b 2(1) (16), ..., b 32(1) (16)), in dem SM - 5 modulo 2 zu einer zweiten Einheit t zusammengefasst 0(2) = (t 1(2), t 2( 2), ..., t 64(2)). Das Ergebnis der Summierung wird in N 1 und N 2 gelagert und wird einer Umwandlung unterzogen, um die ersten 16 Zyklen Verschlüsselungsalgorithmus in einem einfachen Ersetzungsmodus entsprechen.

Empfangene Füllung N 1 und N 2 ist im SM 5 modulo 2 zu dem dritten Block T 0(3) zusammengefaßt, usw., die letzten Block T 0(M) = (t 1(M), t 2(M), ... , t 64(M)), falls erforderlich , ergänzt auf die volle 64-Bit - Nullen - Einheit, in SM 5 modulo 2 N Füllung zusammengefasst 1, a 1(M-1) (16), ein 2(M-1) ( 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 und verschlüsselter Modus durch einfaches Ersetzen der ersten 16 Zyklen des Algorithmus gespeichert. Aus den resultierenden Füllung Antrieben N 1 und N 2 und die Segmentauswahl l = [einen 32-l + 1(M) (16), ein 32- l + 1(M) (16), ..., a 32(M) (16 )].

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

Empfangenen verschlüsselten Daten T w(1), T m(2), ..., T w(M) aus den empfangenen öffentlichen Datenblöcke T 0 entschlüsselt wird(1), T 0(2), ..., T 0(M) erzeugt Nachrichten - Authentifizierungscode und ‚l, die dann mit dem Nachrichtenauthentifizierungscode und L verglichen wird, empfangen zusammen mit den verschlüsselten Daten von dem Kommunikationskanal oder Computerspeicher. Im Falle einer Nichtübereinstimmung imitovstavok offenen Datenblöcke erhalten T 0(1), T 0(2), ..., T 0(M) wird als falsch sein.

Der Parameter L (Anzahl der Bits in dem Nachrichtenauthentifizierungscode) von den geltenden Verschlüsselungsanforderungen bestimmt, unter Berücksichtigung , dass die Wahrscheinlichkeit falscher Daten gleich 2 Auferlegung - l.