Rompre métro (voyage, cartes) + Algorithme transformation cryptographique conformément à GOST 28147-89

À la page:


Briser le métro (Voyage, cartes)

Familier Désirez-vous résoudre tous les puzzles afin d'ouvrir toute la protection du métro de Moscou? Faites, par exemple, un «billet perpétuel»? Mais les experts Metro sont constamment trouver des moyens plus sophistiqués de protection. jetons métalliques ont été remplacés par le plastique, ils, à leur tour, les tickets magnétiques et les cartes sans contact pour remplacer arrivés magnétique. De nombreux chercheurs ont baissé ses mains - il semble que si le Metropolitan est devenu une forteresse imprenable. Mais toute la défense peut être contournée. Et souvent, il est ouvert à des moments plus facile que de construire ...

Comment tout a commencé

L'intérêt pour le système de métro est venu me pendant une longue période, on peut dire, à l'école, quand, au cours étaient encore des billets avec des bandes magnétiques. Dans le même temps (il y a dix ans) ont mis en service une carte sans contact pour les étudiants sociaux. Je commençais à me demander ce qu'elle est et comment il fonctionne. Mais en ces jours, et je n'ai pas eu suffisamment de compétences et de l'information, en particulier pour les technologies dans le domaine public était un peu. Nous avons dû reporter l'idée de la recherche dans le placard, mais je me suis promis que sûr que ça va revenir ...

Il y a environ trois ans, je me suis réveillé à nouveau l'intérêt pour le thème Metro. J'ai étudié activement des billets magnétiques (informations sur ce sujet dans l'Internet avait beaucoup) et même apporté un peu stanochek pour faire des copies des deux têtes de la bobine à bobine magnétophones et une petite quantité rassypuhi. Je n'oublie pas et sur leur carte sociale (maintenant étudiant). Mais après avoir étudié la documentation, il est devenu clair que le système est pratiquement inexpugnable - chip MF1S50 Mifare Classique 1K, qui sont faites sur la base des cartes de sécurité sociale, protégée par deux clés de 48 bits. Au niveau du matériel pirater pas facile à obtenir, et vous pouvez trier les clés à la fin du système solaire. lecteurs Oui, et de cartes qui prennent en charge classique, le coût au moment de l'argent très lourd (environ Ebay, je ne pensais pas en quelque sorte, hélas). L'intérêt pour les billets magnétiques rapidement refroidi, et la carte sociale a de nouveau reporté à des temps meilleurs.

Rencontrer le "UltraLight"

Billets "UltraLight" est apparu dans notre métro récemment, mais a immédiatement suscité l'intérêt public rapide. Ils ont commencé à kurochit, larme, bâton de fer et d'appliquer d'autres méthodes termorektalnogo cryptanalyse. Certes, la soif de connaissance m'a amené quelques raskurochit. À la suite de leur étude, et une recherche sur Internet a été établie - ce qui est rien comme Mifare Ultralight, «lite" version est compatible Mifare Classic. Un aperçu rapide de la documentation pour les puces standards a clairement - il n'y a pas de systèmes de protection intégrés pour ces cartes. Tout le reste, j'ai attaqué l'article décrit en détail le succès de piratage d'un système de transport similaire par les étudiants néerlandais. Tous ensemble m'a poussé à de nouvelles recherches.

Allons-y!

Pour commencer, bien sûr, juste besoin d'un endroit pour obtenir un lecteur de carte sans fil qui prend en charge le "UltraLight". Il y avait deux options: soit d'élever (ce qui prendrait beaucoup de temps), ou acheter un appareil prêt à l'emploi. La pensée d'un second mode de réalisation, conscient des trois ans des prix, je suis allé la chair de poule. Mais je encore décidé de voir les prix. Et pas étonnant! Je fus agréablement surpris d'apprendre que vous pouvez acheter un appareil entièrement fonctionnel (OmniKey CardMan 5321), qui prend en charge un tas de cartes filaires et sans fil à un prix attractif - 4000 roubles.

Bien sûr, pas un peu, mais d'un autre côté, il est 10 000; En outre, l'achat de prêt-reader a permis de se concentrer immédiatement sur la recherche de billets et non pas sur la conception et la mise au point de fer, qui pourrait traîner pendant une période indéterminée. Ensemble avec le lecteur dans la même entreprise (ISBC) a été acheté très pratique de la production locale d'origine SDK. Il, encore une fois, a permis de ne pas perdre du temps et de l'énergie sur l'écriture et le débogage de travail nizkourovnevki avec un logiciel de lecture, et de se concentrer directement sur les billets. Donc, pour un couple de jours de codage tranquillement petit programme né, à travers lequel il a été possible d'une façon pratique de surveiller et de régir l'ensemble de la structure interne de "ultra-léger". Puis j'ai commencé à étudier les billets.

mur blanc

Dans le processus d'apprentissage par mon lecteur a passé beaucoup de billets. Certains Je levai les manches, a obtenu "hors de la poubelle", qui l'achat d'une certaine manière - à regarder ce qu'ils ont enregistré, puis ont passé et regardé à nouveau. Ils étaient presque tous les types de billets, à l'exception, peut-être, du Voyage "ultra-léger" sur 70 voyages. Après quelques semaines, j'ai accumulé un grand dépotoir de base de données et de trier les différents billets, et dans différents états. Il y avait des décharges prises avec le même billet après chaque voyage, et des billets pour les quelques numéros de metropolitenovskimi, consécutifs. Dans ma collection, je suis même un peu dumps deux temps différents billets sociale unifiée (a été émis pour une période de 5 jours, les 30 autres), prise par un certain intervalle de temps. Il est avéré être des spécimens très intéressants, et il est très rare (ils me battues retour de première main immédiate, pour «lire»).

En fait, il est presque le seul type de "ultra-léger", qui fonctionne non seulement dans le métro, mais aussi sur les transports terrestres. En outre, seul ce type de billet généralement pas de limite au nombre de voyages. Plus tard, ils me servaient un grand service ... Tout ce zoo je collectionnais pour un seul but - de définir clairement le format de la structure et l'enregistrement de données sur le billet. Bien sûr, certains champs sont visibles à l'œil nu, mais certains ne peuvent pas. Par exemple, je ne savais pas le numéro de ticket de métro où enregistré (celui qui est imprimé dessus). La réalisation est venu tout à fait par hasard. Le fait que je (et je pense que la plupart d'entre nous), en regardant dans l'hexagone, utilisé pour s'aligner sur l'octet de l'information et de penser, au moins octets. Il est avéré que cette approche est erronée. En regardant le billet de vidage, vous devez penser à des unités plus petites - ordinateurs portables, et parfois bits. Je l'ai compris quand "vu" dernier numéro du billet - il a été décalé de 4 bits à partir du début d'octets, et les 4 bits restants de ce côté et sur les autres pièces à main occupé d'autres informations de service. Après un certain temps, le format d'enregistrement de données de billets est devenu presque complètement clair.

Il est devenu évident où et comment stocker toutes les dates, les compteurs, les identificateurs. Il ne restait plus que quelques domaines, dont le but était pas clair, simplement à cause de la décharge pour vider les données qu'ils sont les mêmes. Mais tout cela est amusant et a fini - il serait insensé de supposer que ces billets peuvent être laissés sans protection. Chaque décharge était de 32 bits d'information différente, ne correspond pas avec le reste du contenu. Je suppose que ce fut une sorte de contrôle, "hash" des données enregistrées sur le billet. Toutes les tentatives pour estimer ou calculer ces 32 bits transformé en un échec complet (en particulier, il a été suggéré que ce soit une sorte de CRC32, avec un non-polynomiale et une valeur de départ).

Lorsque vous essayez de modifier les bits au moins un an et demi d'information dans le terminal de validation de billets dans le métro flashé "BAD TICKET" jack de poids zakolachivaya les clous final dans le cercueil. Bien sûr, il y avait des tentatives de contourner le système dans d'autres façons, par exemple, essayer de copier un billet pour une carte propre one-to-one (ici, hélas, empêché le numéro de série de l'usine, qui, comme il est apparu, a également participé à la production de "hash") ou définir les bits de verrouillage de sorte d'interdire le tourniquet pour modifier le contenu du ticket. terminal de vérification tel billet «éternel» admis, mais a refusé de laisser le tourniquet ... Alors, je suis tombé sur un mur. Ce grand, fort mur de béton, sur laquelle beaucoup ont l'habitude d'être tué avec un début de course. Impossible de trouver sur les forums et les babillards pas d'informations, je décidai que cette mes études sont terminées - il n'y a pas d'autres pistes, et de mettre un point de graisse. En fait, en vain ...

Une étrange familiarité

La nuit Septembre n'a pas été différente des autres. Il était presque tombée de la nuit, la rue était fraîche et humide. Je me suis assis en face de l'écran, et en sirotant un thé chaud, légèrement sucré vert, les frais de divorce paisible pour vos prochaines artisanat. DipTarce, peu bashorga, ICQ ... Quelqu'un appeler sur Skype - distrayant! Encore une fois ICQ nouveau DipTrace - en général, tout est comme d'habitude. Encore une fois, la fenêtre de premier plan est tombé ICQ - quelqu'un jusqu'ici inconnu pour moi, écrivait-il, "Salut." Je sumnyashesya vide, il a répondu en nature. Le message suivant a été un point tournant dans l'histoire: «Vous êtes comme le métro intéresse, j'ai des quelques chances et se termine là. Si vous êtes intéressé, me rencontrer, je vais passer. " Au début, je un peu confus par elle et alerté (peut-être un divorce ou d'une configuration, et peut, et "services spéciaux" intéressés - la paranoïa est originaire), mais je pensais: pourquoi pas?

Les agences de renseignement intéressés à moi ne seraient probablement pas ont commencé, et les motifs de divorce, et plus encore, pour les bases et il semble y avoir aucune. Après une brève conversation, nous avons accepté de rencontrer dans l'après-midi, au milieu de la pièce l'une des stations du métro de Moscou. L'étranger était un grand jeune homme, portant des lunettes, avec un grand sac en plastique noir dans sa main. Nous nous sommes serré la main, puis il m'a remis un sac avec les mots: "On vous allez. Je ne me soucie pas ne vient pas à portée de main, peut-être vous être utile. " Regarder à l'intérieur, je l'ai vu deux arrangements terminaux metroshnyh de journaux, plusieurs cartes en plastique blanc dispersées au hasard dans une boîte et un disque. Pour ma question au sujet de combien je devrais pour cela (l'argent), le gars secoua la tête, sourit et dit: «Que voulez-vous dire, personne ne personne ne devrait le faire ... Alors, je l'ai déjà à courir, et mon train comment encore une fois! Allez, au revoir! ".

Avec cela, il est parti, a sauté dans un déjà en fermant la porte de la voiture et a conduit loin. Et je l'avoue, un peu neponyatkah rentra chez lui. Contacter ICQ à partir juste au cas où je l'ai enlevé en même kontaktlist temps nettoyé et rangé dans les journaux du serveur (bonjour à nouveau, de la paranoïa). En fin de compte, écrire une fois, si cela. Mais plus je n'ai pas écrit ...

Le phénomène du peuple de logiciels

Quand je suis rentré, je fis le paquet. La seconde des bornes est apparu bus validateur (le lourd, bon sang!); Les cartes sont Mifare Classique 1K (net), et affichait un seul fichier sur le disque. Après une connaissance superficielle avec le contenu avéré - c'est un logiciel qui est utilisé au box-office Metro. Mis à part le terminal et le validateur, je décide de venir à bout de l'étude du logiciel intéressant. Environ une heure de chaos, qui est déballée, je suis en mesure de construire et exécuter sur votre ordinateur ce programme. Une heure a été nécessaire pour comprendre sa structure. Peigné tous les fichiers ini (avec des commentaires, veuillez laissé par le développeur), je l'ai déjà eu une vue complète de ce qu'elle est, comment il fonctionne et ce qui est mangé. Mangez, car il est avéré, un lecteur Parsec PR-P08, par conséquent, en l'absence de celui-ci, n'a pas pu essayer le logiciel en action.

Le développeur a été société cotée "Smartek" - grand entrepreneur de l'Etat qui développe un tel système (vous pouvez en lire plus sur leur site web). Le programme a été écrit en Delphi utilisant un runtime-bpl'ok. En outre, le logiciel a une structure modulaire, et toutes les routines, les classes et les composants logés dans DLL ou bpl'kah séparés avec des noms de langue (ici et il était les développeurs les plus importants Faile). Après une analyse rapide du logiciel interne, je trouve que, en premier lieu, des informations sur tous les billets émis est transféré à une base de données centralisée (en passant, est Oracle) et, d'autre part, le programme utilise un mécanisme de clés. Le programme peut communiquer avec la base de données, non seulement en temps réel. Nous en concluons que toutes les opérations dans le système peuvent avoir lieu avec un certain retard. En théorie, cela nous donne une longueur d'avance.

Mais surtout je me suis intéressé dans le mécanisme clé (je l'avais déjà commencé à spéculer sur la raison pour laquelle il pourrait être nécessaire). Donc, je pris le désassembleur et suis allé travailler. Le mécanisme se compose de deux fichiers - CryptKeyRef.dll et keys.d (seul fichier "rusé" dans l'ensemble du programme, qui, sauf le fichier avec les touches, rien d'autre n'aime pas). Et d'utiliser tout ce bon runtime-bpl'ina SmLayout.bpl. Cette bibliothèque a été une aubaine pour mes recherches - il contenait des classes pour travailler avec le remplissage interne de billets. Puisque c'est un runtime-bpl, il suffisait de le regarder exporte la table d'avoir 60 pour cent pour comprendre ce qui est quoi. Une analyse plus détaillée mettra tout à sa place. Rappelez-vous, au début de cet article, je parlais à ce sujet dans la structure "ultra-léger" il y a encore un certain nombre de domaines, dont l'objet n'a pas été clair?

L'un de ces domaines - la soi-disant "identificateur de mise en page". Essentiellement, tous les tickets de métro sont construits en une partie fixe et une partie variable de la partie d'en-tête des données. Donc, ce champ est «mise en page» le titre est juste détermine comment et quelles données se trouve dans le reste du billet. Il y a plusieurs dispositions (chacun pour son propre type de billet), et SmLayout.bpl chacun d'eux avait sa propre classe (plus une classe parente commune, qui étaient des méthodes pour travailler avec la partie d'en-tête). Par conséquent, pour comprendre quels champs dans chaque mise en page pour cette réponse était simple (toujours, en parlant avec certains noms de méthode dans les exportations!). Finition complètement toute mise en page 8 (qui est utilisé dans le "ultra-léger") et double-vérifier si tous les champs de la structure du billet, j'ai eu la bonne idée, je pris le mécanisme clé. En effet, il était responsable de la génération de "hash". Comment le mécanisme était tout à fait clair, après avoir étudié les travaux de la méthode, en charge du calcul de "hash". Tout d'abord, à partir d'un fichier avec les touches (keys.d) sélectionne la bonne clé.

Le système est conçu de telle sorte que chaque type de billet a son propre identifiant (inclus présente un tableau complet avec ID et tickets noms dans un fichier texte avec des valeurs séparées par des virgules). Il se compose d'un identificateur de zone (application) et le type d'identificateur de carte. Donc, sur la base de ces chiffres dans le fichier sélectionné la clé keyring, à l'intérieur duquel peuvent être plusieurs touches (dans le cas où une nouvelle clé est introduite, et les anciens billets encore en usage). Enregistrement d'un nouveau ticket est livré avec la première, et vérifier la validité - avec toutes les clés de keyringe. Ensuite, la clé sélectionnée est déchiffré en utilisant CryptKeyRef.dll (pourquoi ils sont stockés cryptés, je ne saurai jamais). Après cela, la clé décryptée et la quasi-totalité des données du billet, ainsi que son numéro de série matériel et le nombre de (méthode de génération de "hachage", qui est indiquée pour keyringa dans keys.d) - sont transférés à la fonction ckCalcHashCode, située dans le même CryptKeyRef.dll. A la sortie, nous obtenons la valeur sur laquelle je en même temps et "coincé" - le même "hash". Bien sûr, je l'ai écrit un petit programme qui, en utilisant ces fonctions de CryptKeyRef.dll et le fichier keys.d pourrait être vérifié et, le cas échéant, de recalculer le "hash" dans toute décharge. Je tout en double-vérifié sur plusieurs décharges, et a reçu un résultat positif, à gauche, le sommeil satisfait.

faute des clés

Malgré le succès théorique, je voulais tout voir, pour ainsi dire, «en action». Le lendemain, en revenant du travail, je spécifiquement acheté frais "UltraLight" pour un voyage, pour voir si mes clés sont ou ont pas (apparemment, ils étaient peu vieux). Vous pouvez, bien sûr, a été immédiatement essayer d'écrire "fabriquée" "UltraLight" et allez vérifier, mais à l'époque je manqué une carte vierge, et d'aller un peu effrayant "au hasard" - tout d'un coup? Sur arrivée à la maison, je tout d'abord, même sans se laver les mains, l'air se précipita pour vérifier ses nouvelles touches de billets. Et là, je suis en attente d'une grosse déception - "hash" écrit sur le billet ne passe pas sur l'une des touches. Ainsi, les touches vraiment déjà pourri, et ils ont été remplacés par de nouveaux. Cela nie complètement l'ensemble de mes œuvres. Je me sentais peu triste. J'infusé le thé vert, a joué un petit piano (oui), et assis sur ses frais de reproduction inachevée ...

Tout est pas perdu

L'idée me vint tout à coup, quand je une fois de plus pour une raison quelconque, regardé dans le fichier avec les touches. Je remarquai que dans le keyringe "running" (qui est utilisé pour calculer le 1 -, 2 - et 5-poezdochnyh et autres «ultra-léger») étaient deux touches - la nouvelle (à l'époque, bien sûr) et, apparemment - l'ancien. Mais il y avait aussi KeyRing, qui se trouvait juste une seule touche. Avant, je ne faisais pas attention à lui, et concentré sur "marche". Pour calculer tout billet utilisé cette touche, je ne sais pas. Quand je vis que pour le type de billet fixé à keyringu, puis je me suis cassé une petite étincelle d'espoir. Le fait que ce fut le type de billet - Väsby. Oui, il est un type rare de billets - un Voyage temporaire sur tous les modes de transport. Je pensais que si un seul billet, cette option doit être utilisé non seulement dans le métro, mais aussi sur les transports terrestres, où il est très difficile et prend du temps pour remplacer un nouveau.

En outre, le keyringe clé seul qui est indirectement confirmé ma conjecture. Tout le reste, je me suis rappelé que lors du nettoyage de programme metroshnuyu de divers "trash", il y avait quelque chose de similaire aux anciens fichiers clés d'archives. Déterrés et ouvert le fichier original, je l'ai vu qu'il était bien le cas. Et surtout, en regardant tous les anciens fichiers clés, je découvris que c'est la clé est restée inchangée! Même sans une goutte de doute, je rivé mon Väsby (heureusement, je devais les décharges de ce type, qui a parfois simplifié la tâche - Je viens de modifier les dates de vidage et le nombre) et "hash" calculé en utilisant la clé. Donc, il est temps de tester (surtout depuis que je viens d'acheter un peu de plastique transparent). Entrer dans le hall d'entrée, j'ai mis votre "ticket" à la borne de test. Sur le tableau de bord flashé la validité du billet, que je l'ai, et allume la LED verte. Par conséquent, les travaux. Faire grimace et plus facile en se cachant dans un manchon en plastique blanc de neige, je me suis approché du tourniquet, mis sa main au validateur et ... allé tranquillement sur un green fun pris feu. Cela a marqué la victoire finale.

Et quelle est la prochaine?

Et puis nous avons commencé des expériences dans lesquelles il a été trouvé beaucoup de choses intéressantes. Par exemple, un tel «gauche» Väsby peut aller seulement deux ou trois jours. Le fait est que le nombre qui se trouve dans le billet, je cite "de baldy", chaque passe est stocké dans la mémoire de la tête de tourniquet, et après un certain temps, envoyé avec le reste du centre de données. Il n'y a vraiment pas de système émis un billet avec ce numéro et de le soumettre à l'stoplist, qui est ensuite distribué à tous les tourniquets du métro. Et il doit être fait avec tous les types de billets, non seulement Väsby - en plus des touches fréquemment changeantes "hash" et est très bonne défense. La solution de contournement est, pour des raisons évidentes, n'est pas possible.

Il a également été observé que le réglage ou non le réglage des bits de verrouillage n'a aucun effet sur ce qui a déclenché le billet ou non. La seule exception est une zone OTP verrouillage de bits, Tourniquet qui, apparemment, toujours vérifier, en dépit du fait que l'écriture dans le bureau du Procureur ne va pas. Plus tard, je pris les bornes de metroshny et de bus, les conduit dans l'ordre, étudié et commencé sur le banc. Maintenant, pour tester la prochaine proposition, n'a plus à courir avec mutant de billets fraîchement cuit dans le métro, et il est devenu possible de les tester "sur place". Par ailleurs, le terminal de métro était le même vieux (tout le reste et le buggy), comme mes clés. Je pourrais essayer de «travail», et tout autre type de ticket "Ultralight" - quelque chose que je ne pourrais jamais faire "live" dans le métro. Parallèlement à ces expériences, je continuais à pratiquer le logiciel.

Comme a eu beaucoup de débats sur ce genre d'algorithme est utilisé dans le calcul du "hash", je décidé de rétablir complètement en réécrivant l'algorithme à partir de zéro, "l'humain" langage de programmation, et dans le cadre de tout espoir de comprendre quel genre d'un algorithme - qui -Que est largement connu, ou un développement propre, interne. Sur le chemin, je me suis rendu beaucoup d'idées différentes (y compris celle qui peut être AES), mais l'étude détaillée du code de travail déjà sans bibliothèques Smartekovskih révélé que l'algorithme est-ce - "seulement" GOST - norme de cryptage interne (toutes les informations nécessaires à ce sujet, vous pouvez trouver sur le net sans effort). Plus précisément, pour le calcul de "hash" utilisé cycle 16-Z. "Hash", en fait, est rien de plus qu'un code d'authentification de message à GOST.

La structure de l'information enregistrée sur le ticket "UltraLight"

Quelle est une page, comment et où se trouvent le numéro de série du matériel, les bits de verrouillage et la zone OTP, vous pouvez lire la documentation d'origine (spécification de fichier en format PDF avec une description complète de la puce est sur un disque). Je recommande de commencer à l'apprendre d'elle. Je vais décrire l'emplacement de la structure de données, formé par les systèmes souterrains dans la zone utilisateur disponibles pour la lecture et la réécriture (en l'absence de serrures, bien sûr). Tout le contenu du billet peut être divisé en une partie d'en-tête et deux pièces entièrement en double de données (cela se fait pour la redondance et protection contre les erreurs). L'en-tête des billets dans le "UltraLight" commence à la page 4. Une partie est la même structure dans tous les billets et le système ID Metro et Mosgortrans. Les 10 premiers bits - l'identifiant; Les 10 bits suivants - identité type de carte (ce sont des identificateurs que vous pouvez lire dans d'autres spécialement sélectionnés pour cette barre latérale). Après identifiant est le numéro de série du billet (il est gravé sur le dos du billet, à ne pas confondre avec le matériel - sont deux choses différentes!) Taille de 32 bits. Les 4 derniers bits - champ Mise en page, qui indique au système comment interpréter les données suivantes (quelque chose comme le format de fichier).

Pour obtenir des billets «valeur UltraLight» Mise en page est 0x08. Dans cette même partie des extrémités d'en-tête. A côté du ticket "UltraLight" la date à laquelle l'ajustement de forme (16 bits). Toutes les dates sont déjà spécifiés dans le nombre de jours écoulés depuis le format 01/01/1992. Voici la partie d'en-tête des extrémités de billets "Ultralight" (en billets avec une autre mise en page peut encore être enregistré une variété d'informations supplémentaires). La première zone de données commence à la page 8. Première enregistré 16-bit date d'émission du billet. Après cette période déterminée de validité du ticket en jours (à partir de la date d'émission) - 8 bits. Les 16 premiers bits de page 9 - voyages de compteur. Il peut être soit en baisse à zéro (tous les billets avec un nombre limité de voyages), ou des augmentations de zéro (en billets Väsby, sans limiter le nombre de voyages). Après le compteur dans le reste de la page à chaque passe le tourniquet entrez votre identifiant unique. Apparemment, il est utilisé pour empêcher la ré-pass sans délai un billet Väsby (tourniquets dans le hall sont connectés au réseau et d'interroger les uns des autres), ainsi que pour être en mesure de voir à travers un tourniquet a fait passer (par exemple, dans le cas d'erreurs ou pour les statistiques ). Page 10 entièrement occupé 32-bit "hash".

Page 11 vide. Cette zone de données est entièrement répliquée sur les 4 pages restantes (12 à 15). Il se trouve que dans le fonctionnement normal de ces deux zones contiennent toujours les mêmes données. Par ailleurs, il faut dire à propos de l'utilisation d'OTP système de zone. Il est utilisé pour progressivement "brûler" ticket pour chaque voyage (billets Väsby ne sont pas affectés). Les deux bits les plus significatifs sont fixés à l'extinction ou l'annulation du billet (le stop-liste). Le billet annulé ne peut pas être restauré. Pour les restes brûlants de seulement 30 bits. Cette zone apparaît au système 100% Voyage. Avec chaque nouvelle visite présentent un certain nombre de bits (de junior à senior), correspondant à combien pour cent prend un seul voyage. Par exemple, un billet de 5-poezdochnogo avec chaque nouveau voyage sera «burn out» à 6 bits, et le 60-poezdochnogo - à la moitié du bit (avec arrondi). Il est à noter que le billet réutilisation "UltraLight" est impossible, non seulement à cause de la «brûler» le Bureau du Procureur, mais aussi en raison du fait que, au box-office, l'émission du billet (et peut-être même dans sa fabrication), presque toutes les pages sont bloquées pour écraser . Ainsi, ni le «recharger» ou changer le type de billet à un autre ne fonctionne pas.

Exemples d'ID de billets de métro utiles

Tous les numéros sont indiqués dans la notation décimale!

Identifiants d'application:

  • 262 - Ticket de métro de Moscou.
  • 264 - Ticket transport terrestre Moscou.
  • 266 - Unified Moscou sociale et la région de Moscou.
  • 270 - Ticket "métro léger".

Identifiants tels que ticket "Ultralight":

  • 120 - Un voyage.
  • 121 - Deux voyage.
  • 126 - Cinq voyages.
  • 127 - Dix voyages.
  • 128 - Vingt-voyages.
  • 129 - Soixante voyages.
  • 130 - Bagages + forfait.
  • 131 - bagages seulement.
  • 149 - Single "UltraLight" (70 voyages).
  • 150 - Väsby.

Mifare classique

Il tourna son attention vers ses études, et je malheureuse Mifare Classique 1K. Comme vous le savez, l'obstacle le plus important pour les «classiques» étaient les clés matérielles A et B. Par un heureux hasard, les clés étaient dans l'un des modules de programme en clair (bonjour les développeurs!) Et je n'a eu aucune difficulté à écrire un petit programme pour avec le contenu de la carte en utilisant les clés obtenues. Au cours des expériences que nous avons révélé quelques caractéristiques intéressantes, telles que: le billet de stockage souterrain utilise le premier secteur de la carte, et le transport terrestre - quatrième; aucune protection, sauf les clés matérielles (qui, lorsqu'il est écrit dans le logiciel en tant que tel, probablement en général ont jamais changé depuis l'entrée en fonctionnement du système), ces billets n'existent pas.

Au lieu de cela, à la fin de chaque bloc contient le CRC-16, il suffit pour protéger les données contre les dommages. En outre, sur les cartes sociales, des billets à part est enregistrée pour beaucoup d'informations variées et intéressantes. Par exemple, 13 et 14 secteurs, cartes de sécurité sociale avec le nom, le prénom et le patronyme du propriétaire. Ceux-ci (et d'autres) peuvent lire les données en utilisant la clé publique 0xA0A1A2A3A4A5. Au cours des expériences, il a réussi à complètement clone SCM étudiant, ainsi que plusieurs billets sur les cartes classiques net.

Mais le clonage, car il est avéré, il est grand arrêts système stop-feuilles - de sorte que le billet peut être utilisé plus de deux jours, puis elle sera annulée (bien que, contrairement à la carte "UltraLight" "Classic" peut être restauré après l'annulation, mais le stop-liste il ne sauvera pas). Comme aucune protection sur le Classic ne pas utiliser la carte, ils sont devenus assez vite, je ne suis pas intéressé, et je décidé de se concentrer encore sur l'étude "UltraLight".

La Fin, ou résumer

systèmes de métro, et en particulier, les nouveaux billets "UltraLight", contrairement aux opinions et conjectures, étaient bien protégés. Très heureux que les développeurs ont utilisé un standard fiable et éprouvée par le temps plutôt que de réinventer la roue. Avec une telle protection aux faux billets "Ultralight" sans accès à des données sensibles (données clés), il est tout simplement impossible. Grande pensée et système de clés interchangeables et des feuilles de mécanisme de frein. Bien sûr, pas sans ses défauts et les erreurs. Le plus grand d'entre eux - le logiciel qui ne sont pas protégés en aucune façon.

Il suffisait d'éliminer l'utilisation de runtime-bpl, et il serait difficile d'analyser des dizaines de fois! Alternativement, - le traitement des parties critiques ou programme ExeCryptor'om AsProtect'om, puis en enveloppant tous les fichiers MoleBox'om réduirait la capacité d'analyser presque à zéro. Instrumentation quelque chose de bon marché. Et l'utilisation d'une bonne clés (de préférence obscurs ou sur mesure) cette sorte de protection, mais avec le matériel, il serait impossible d'analyser pleinement le programme. Bien sûr, le Metropolitan - une entreprise modale, mais il ne faut pas oublier à ce sujet le facteur humain. Après tout, même Kevin Mitnick dit (et pas seulement parlé, mais aussi démontré par exemple, pour lequel il était assis, gee), que, parfois, dans le but d'atteindre des objectifs plus facile et plus efficace d'utiliser «ingénierie sociale» plutôt que d'essayer de briser une défense impénétrable. Eh bien, sur cette note, je vais terminer mon histoire. Et vous, cher lecteur, voulez des études plus intéressantes et réussies!








Description de la transformation cryptographique de l'algorithme en conformité avec GOST 28147-89

Cette norme établit un algorithme commun pour la transformation cryptographique des systèmes de traitement des données dans les réseaux d'ordinateurs (PC), des systèmes informatiques distincts et l'ordinateur, qui détermine les règles pour le chiffrement des données et l'authentification des messages génération de code.

algorithme de transformation cryptographique de matériel ou de mise en œuvre du logiciel, répond aux exigences cryptographiques et selon sa capacité n'impose pas de restrictions sur le degré de confidentialité des informations protégées.

La norme est obligatoire pour les organisations, les entreprises et les institutions qui utilisent la protection cryptographique des données stockées et transmises dans les réseaux informatiques, les systèmes informatiques individuels ou ordinateur.

Schéma de la transformation cryptographique algorithme

Schéma de la transformation de l'algorithme cryptographique (de kriptoskhema), illustré à la figure 1, contient:

  • - Une mémoire de clé (VUP) à 256 bits, ce qui se compose de huit accumulateurs 32 bits (X 0, X 1, X 2, X 3, X 4, X 5, X 6, X 7);
  • - Quatre 32 bits accumulateur (N 1, N 2, N 3, N 4);
  • - Deux accumulateur 32 bits (N 5, N 6) enregistrées dans leur remplissage permanent de C 2, C 1;
  • - Deux 32-bit additionneur modulo 2 32 (SM 1, SM 3);
  • - 32-bit au niveau du bit additionneur modulo 2 (cm 2);
  • - 32-bit additionneur modulo (2 32 -1) (CM 4);
  • - Modulo-2 additionneur (SM 5), sur la limitation de la SM bit additionneur 5 est pas imposée;
  • - Bloc de Substitution (K);
  • - Enregistrez décalage cyclique sur onze étapes vers MSB (R).

La figure 1.

En remplaçant le bloc est composé de huit noeuds de remplacement K 1, K 2, K 3, K 4, K 5, K 6, K 7, K 8 mémoire 64 bits chacun. bloquer les candidats de substitution pour un vecteur de 32 bits est divisé en huit consécutifs vecteurs 4 bits, dont chacun est converti en un vecteur de 4 bits remplace le noeud correspondant, qui est une table de seize rangées contenant chacune quatre bits dans la ligne de remplissage. Le vecteur d'entrée définit l'adresse de la chaîne dans la table, le remplissage de cette ligne se dessine vecteur. Ensuite, les vecteurs de sortie à 4 bits combinés successivement dans un vecteur de 32 bits.

En outre, et décalage cyclique des vecteurs binaires MSB considéré comme les lecteurs de niveau avec des chiffres plus élevés.

Lorsque la touche d' enregistrement (W 1, W 2, ..., 256W), W q Je {0,1}, q = i ÷ 256, la valeur a PUV de W 1 est introduit dans la première catégorie de lecteur X 0, la valeur de W 2 est introduit le 2ème chiffre 0 lecteur X, ..., W 32 valeur entrée dans le 32-ème bit de X 0 lecteur; la valeur de W 33 est introduit dans le premier stockage de rang X 1, W 34 valeur est entrée dans la deuxième catégorie de lecteur X 1, ..., W 64 valeur entrée dans le 32-ème bit de X 1 accumulateur; W 65 valeur est entrée dans la 1 ère catégorie de lecteur X 2, etc., la valeur de W 256 est entré dans le 32-ème bit X 7 lecteur.

Lorsque la réécriture du contenu du bit de -ème informations p d'un lecteur (additionneur) peut être réécrite dans le p ième bit un autre lecteur (additionneur).

Le remplissage constant de 1 (constante) N conduire 6 présentés dans le tableau 1.

tableau 1

Rang 6 Entraînement N

32

31

30

29

28

27

26

25

24

23

22

21

20

19

18

17

valeur de décharge

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

1

Rang 6 Entraînement N

16

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

valeur de décharge

0

0

0

0

0

0

0

1

0

0

0

0

0

1

0

0

Le remplissage constant de C 2 (constante) N entraînement 5 est donnée dans le tableau 2.

tableau 2

Rang 5 N entraînement

32

31

30

29

28

27

26

25

24

23

22

21

20

19

18

17

valeur de décharge

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

1

Rang 5 N entraînement

16

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

valeur de décharge

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

1

Touches définissant le remplissage PUV et le tableau bloc de recherche K sont des éléments secrets et fournis conformément à la procédure établie.

Remplissage des tables de substitution de l'unité Il est un élément clé de long terme, un réseau informatique commun.

Organisation des différents types de communication obtenus par la construction du système de clés approprié. Ceci peut être utilisé la possibilité de générer des clés (remplir PUV) dans un mode de remplacement simple et les coder dans un mode de remplacement simple avec le logiciel de protection de simulation pour la transmission via des canaux de communication ou de stockage dans la mémoire de l'ordinateur.

En kriptoskheme quatre types de fonctionnement sont prévus:

  • - Le chiffrement (déchiffrement) des données dans le mode de simple remplacement;
  • - Le chiffrement (déchiffrement) des données dans l'opération XOR;
  • - Le chiffrement (déchiffrement) des données dans l'opération XOR avec rétroaction;
  • - Mode de génération de code d'authentification.

Encryption dans un mode de simple remplacement

Encodage des données ouvertes dans un mode de simple remplacement

Kriptoskhema mise en œuvre de l'algorithme de chiffrement dans le mode de simple remplacement doit être de la forme représentée sur la figure 2.


Figure 2

Les données ouvertes à l'encodage, divisé en blocs de 64 bits chacun. Entrez un bloc T 0 = (a 1 (0), 2 (0), ..., 32 (0), b 1 (0), b 2 (0), ..., b 32 (0)) de l'information binaire dans N accumulateurs 1 et N 2 est effectuée de telle sorte que la valeur 1 (0) est entrée dans le 1 er rang N 1, une valeur 2 (0) est entré dans le 2ème rang N 1, etc., une valeur de 32 ( 0) est introduite dans la 32 ième à N bits 1; b la valeur 1 (0) est introduit dans le bit 1-ème N 2, la valeur b 2 (0) est entré dans le 2ème bit N 2, etc., la valeur 32 b (0) est introduit dans le rang 32-ème N 2. Le résultat est un état (32 (0), un 31 (0), ..., 2 (0), un 1 (0)) entraînement N 1 et de l' état (b 32 (0), b 31 (0), ... , b 2 (0), b 1 (0)) N 2 stockage.

Le PUV introduit une clé de 256 bits. Le contenu des huit accumulateurs 32 bits X 0, X 1, ..., X 7 est:

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

algorithme de chiffrement bloc de 64 bits de données ouvertes dans le mode de simple remplacement se compose de 32 cycles.

Dans le premier cycle du remplissage initial de l' accumulateur 1 est résumée N modulo 2 additionneur 32 avec le remplissage SM 10 X lecteur et le disque 1 N remplissage reste.

Est converti en un bloc de sommation K, et son remplacement par le vecteur résultant est entré dans le registre R, qui est mis en rotation pendant onze étapes vers MSBs. Le résultat du décalage est ajouté au niveau du bit modulo 2 additionneur SM 2 avec accumulateur 32 bits rempli de N 2. Le CM 2 entraîne le résultat est écrit dans le N 1, l'ancienne valeur est écrasée en N 1 N 2. Le premier cycle se termine.

Les cycles suivants sont effectués de manière similaire, tandis que dans le 2 e cycle de remplissage PUV lire X 1, en 3e cycle de remplissage PUV lire X 2, et ainsi de suite, lisez le remplissage X 7 dans le 8e cycle de la PUV. Dans les cycles de 9 e à 16 e, et dans les cycles de 17 au 24 remplissage de PUV sont lus dans le même ordre: X 0, X 1, X 2, X 3, X 4, X 5, X 6, X 7.

Au cours des huit derniers cycles de 25 e à 32 e ordre des couvertures de lecture PUV inverse: X 7 X 6 X 5 X 4 X 3 X 2 X 1, X 0.

Ainsi, lorsque le codage est effectué en 32 cycles de la procédure suivante pour sélectionner le réservoir de stockage:

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

Dans le 32 e cycle de résultat de l'additionneur SM 2 introduit dans le lecteur de N 2 et N 1 dans le lecteur sauvé le vieux remplissage.

Obtenu après 32 cycles de remplissage encodage de stockage N 1 et N 2 sont cryptées données de bloc correspondant au bloc de données ouvert.

Décryptage des données cryptées dans un mode de remplacement simple,

Kriptoskhema réaliser algorithme de déchiffrement dans le mode de remplacement simple, a la même forme (voir. Figure 2), comme dans le codage. L'entrée de VUP 256 bits de la même clé, qui a été effectué le codage. Les données cryptées, déchiffrage être divisés en blocs de 64 bits chacun. Entrer dans un bloc T w = (a 1 (32), 2 (32), ..., et 32 (32), b 1 (32), b 2 (32), ..., b 32 (32)) dans le stockage N 1 et N 2 est effectuée de sorte qu'une valeur 1 (32) est introduit dans le 1 er rang N 1, une valeur 2 (32) est inséré dans le 2e rang N 1, etc., une valeur de 32 (32) 32 est introduit dans le bit de nième 1; b la valeur 1 (32) est inséré dans le 1er bit N 2, b valeur 2 (32) est inséré dans le 2e bit N 2, etc., la valeur 32 b (32) est introduit dans le rang 32-ème N 2.

Déchiffrage est réalisé en utilisant le même algorithme que le cryptage des données publiques, avec la modification que les unités de remplissage X 0, X 1, ... X 7 sont lues à partir du VUP de décryptage en cycles dans l'ordre suivant:

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

Obtenu après 32 cycles de lecteurs d'opération de remplissage N 1 et N 2 constituent ouvert bloc de données.

T 0 = (a 1 (0), 2 (0), ..., a 32 (0), b 1 (0), b 2 (0), ..., b 32 (0)) correspondant au bloc de données cryptées, à cette valeur un 1 (0) T 0 correspond à bloquer le contenu 1st grade N 1,2 et la valeur (0) correspond au contenu de 2ème catégorie N 1, etc., et la valeur de 32 (0) 32 correspond au contenu catégorie ème N 1; la valeur de b 1 (0) correspond au contenu de la première catégorie N 2, la valeur de b 2 (0) correspond au contenu de la deuxième catégorie N 2, etc, la valeur de b 32 (0) correspond au contenu de la 32-ième bit de N 2 .

De même, les blocs restants sont décryptées les données cryptées.

Mode XOR

Encodage des données ouvert en mode XOR

Kriptoskhema mise en œuvre de l'algorithme de chiffrement en mode XOR, devrait avoir la forme représentée sur la figure 3.


Figure 3

Les données ouvertes, divisées en blocs de 64 bits T 0(1), T 0(2), ..., T 0(M-1), T 0(M) sont chiffrés dans l'opération XOR par Bitwise modulo 2 additionneur SM 5 avec Tw gamma de chiffrement, qui est produite dans des blocs de 64 bits, à savoir

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

où M - est déterminé par le volume de données cryptées.

T m(i) - i-ème bloc de 64 bits, i = 1 ÷ Ì, le nombre de bits dans le bloc T 0(M) peut être inférieure à 64, tandis utilisé pour coder la partie gamma de chiffrement du bloc T w(M) mis au rebut.

Le PUV introduit une clé de 256 bits. Le stockage N 1, N 2 introduit une séquence binaire 64 bits (sinhroposylka) S = (S 1, S 2, ..., S 64), qui est le remplissage initial de la mémoire pour le développement ultérieur du bloc de plage M algorithme de chiffrement. Sinhroposylka administré en N 1 et N 2 , de sorte que la valeur de S 1 est entré dans le 1er bit N 1, S valeur 2 est entré dans le 2ème rang N 1, etc., la valeur de S 32 est introduit dans le 32-ème bit 1 N; la valeur de S 33 est entré dans la 1ère catégorie N 2, S 34 valeur est entrée dans la 2ème catégorie N 2, etc., S 64 valeur est entrée dans le 32-ème bit de N 2.

Premier remplissage du stockage N 1 et N 2 (sinhroposylka S) crypté dans le mode de remplacement simple conformément aux prescriptions du paragraphe 1.3.1. Le résultat du codage correspond à 32 bits de mémoire N 3 et N 4, de sorte que le remplissage de la N 1 correspond à N 3, et le remplissage de la N 2 correspond à N 4.

Remplissage pile de stockage 4 N modulo (2 32 -1) , dans un additionneur 4 SM constante de 32 bits à partir du bac d' empilement C 16 N, le résultat est écrit dans le N 4.

N 3 accumulateur de remplissage est additionné modulo 2 additionneur 32 dans le SM-3 avec une constante de 32 bits C à partir de l'empileur 2 N 5, le résultat est écrit dans le N 3.

Remplissage réécrites 3 N N 1 et N 4 est réécrite comblons N 2, remplissant ainsi N 3, N 4 reste.

Remplissage N 1 et N 2 est chiffré dans le mode de remplacement simple conformément aux prescriptions du paragraphe 3.1. Le remplissage de codage résultant de N 1, N 2 forme un premier 64-bit plage de chiffrement par bloc T w(1), qui se résume au niveau du bit modulo 2 additionneur SM 5 avec le premier bloc de 64 bits de données ouvertes T 0(1) = (t1(1), t2(1), ..., t63(1), t64(1)). Le résultat obtenu en additionnant les 64 bits de données cryptées bloc T w(1) = (τ1(1), τ2(1), ..., τ63(1), τ64(1)).

La valeur de τ 1(1) Unité de T w(1) est le résultat de sommation modulo 2 SM 5 valeurs t 1(1) du bloc T 0(1) avec la valeur de la 1ère année N 1 Valeur τ 2(1) du bloc w T (1) est le résultat modulo 2 sommation de la valeur SM 52 t (1) T 0 du bloc (1) avec la valeur 2 de rang N 1, etc., la valeur de τ 64(1) unité T w(1) est le résultat modulo 2 sommation dans la SM 645 valeurs t (1) t 0 du bloc (1) à une valeur de 32 - ième bit N2.

Pour l'additionneur 4 avec le CM constante C 16 de N, N prochain remplissage de remplissage 3 N 4 additionnées modulo (2 32 -1) 64 bits plage de chiffrement par bloc T w(2) est résumée par modulo 2 additionneur 32 CM 3 avec une constante C 2 de N 5. N recharge 3 correspond à N 1 et N 4 recharge réécrite en N 2, remplissant ainsi et N 3 N 4 est maintenu.

Remplissage N 1 et N 2 est chiffré dans le mode de remplacement simple conformément aux prescriptions du paragraphe 3.1. La résultante de remplissage encodage N 1, N 2 forme un deuxième 64-bit plage de chiffrement par bloc T w(2), qui est résumée par bit modulo 2 additionneur 5 secondes données de CM unité extérieure T 0(2). produites même gamma blocs de chiffrement T w(3), G w(4), ..., T m(M) et les blocs chiffrés de données ouvertes T 0(3), T 0(4) ..., T 0(M). Si la longueur de la dernière M-ième bloc de données ouvertes T 0(M) est inférieure à 64 bits, le dernier chiffre de bloc de plage Mth F w(M) est utilisée pour chiffrer uniquement le nombre de bits correspondant à l'échelle de l'algorithme de chiffrement, les chiffres restants sont éliminés.

La liaison de communication ou une mémoire d'ordinateur et transmis sinhroposylka S T blocs de données cryptées w(1), T m(2), ..., w T (M).

Décryptage des données cryptées au mode XOR

Lorsque le déchiffrement kriptoskhema il a la même forme que dans le codage (voir. Figure 3). VUP à 256 bits clé entrée par laquelle des données transportées codant pour T 0(1), T 0(2), ..., T 0(M) , dans lequel T 0(M) peut comprendre au moins 64 bits.

Mode de rétroaction XOR

les données de codage dans une rétroaction XOR mode publique

Kriptoskhema qui implémente XOR rétroaction en mode devrait être comme, représenté sur la figure 4.


Figure 4

Les données ouvertes, divisées en blocs de 64 bits T 0(1), ..., T 0(M) sont chiffrés dans l'opération XOR avec retour par bitwise additionneur modulo 2 SM 5 gamme de chiffrement T w, qui est produite dans des blocs de 64 bits, à savoir T w = (r w(1), G w(2), ..., D w(M)), où M - est déterminé par le volume de données cryptées D w(i) - i-ième bloc de 64 bits, i = 1 ÷ Ì. Le nombre de bits dans le bloc T 0(M) peut être inférieure à 64.

Le PUV introduit une clé de 256 bits. Le stockage N 1, N 2 introduit une séquence binaire 64 bits (sinhroposylka) S = (S 1, S 2, ..., S 64). Sinhroposylka administré en N 1 et N 2 , de sorte que la valeur de S 1 est entré dans le 1er bit N 1, S valeur 2 est entré dans le 2ème rang N 1, etc., la valeur de S 32 est introduit dans le 32-ème bit 1 N; la valeur de S 33 est entré dans la 1ère catégorie N 2, S 34 valeur est entrée dans la 2ème catégorie N 2, etc., S 64 valeur est entrée dans le 32-ème bit de N 2.

Premier remplissage du stockage N 1 et N 2 est chiffré dans le mode de remplacement simple conformément aux prescriptions du paragraphe 3.1. Le remplissage de codage résultant de N 1 et N 2 forme un premier 64-bit bloc de plage de chiffrement T w(1), qui se résume au niveau du bit modulo 2 additionneur SM 5 avec le premier 64-bit bloc de données publiques T 0(1) = (t1(1), t2(1), ..., t63(1), t64(1)).

Le résultat obtenu en additionnant les 64 bits de données cryptées bloc T w(1) = (τ1(1), τ2(1), ..., τ63(1), τ64(1)).

Encrypted T de données de bloc w(1) est en même temps aussi l'état initial de N 1, N 2 pour générer un second chiffrement gamme de bloc T w(2) et les commentaires écrits dans ledit stockage. La valeur de τ 1(1) est introduit dans la 1ère catégorie N 1, la valeur de τ 2(1) est introduit dans la 2ème catégorie N 1, etc., la valeur de τ 32(1) est entré dans le 32e rang N 1; valeur τ 33(1) est introduit dans la 1ère catégorie N 2, la valeur de τ 34(1) est introduit dans la 2ème catégorie N 2, etc., la valeur de τ 64(1) est entré dans le 32-ème bit de N 2.

Remplissage N 1, N 2 est chiffré dans le mode de remplacement simple conformément aux prescriptions du paragraphe 3.1. La résultante de remplissage encodage N 1, N 2 forme un deuxième 64-bit plage de chiffrement par bloc T w(2), qui est résumée par bit modulo 2 additionneur 5 secondes données de CM unité extérieure T 0(2).

Développement du prochain bloc de plage de chiffrement D w(i) et codant pour le correspondant des blocs de données ouverte T0(i) (i = 3 ÷ i) est similaire. Si la longueur du dernier M-ième bloc de données d'ouverture T 0(M) est inférieure à 64 bits, alors r w(M) est utilisé uniquement le nombre de bits correspondant à l'échelle de l'algorithme de chiffrement, les bits restants sont éliminés.

La liaison de communication ou une mémoire d'ordinateur et transmis sinhroposylka S T blocs de données cryptées w(1), T m(2), ..., w T (M).

Le décryptage du mode de rétroaction crypté XOR de données

Lorsque le déchiffrement kriptoskhema il a la même forme que dans le codage (voir. Figure 4). L'entrée de VUP 256 bits de la même clé, qui a été effectué un codage T 0(1), T 0(2) , ..., T 0(M). Sinhroposylka introduit dans N 1, N 2, de sorte que la valeur de S 1 est entré dans le 1er N bits 1, S valeur 2 est entrée dans le 2ème rang N 1, etc., la valeur de S 32 est introduit dans le 32-ème bit 1 N; la valeur de S 33 est entré dans la 1ère catégorie N 2, S 34 valeur est entrée dans la 2ème catégorie N 2, etc., S 64 valeur est entrée dans le 32-ème bit de N 2.

Premier remplissage du stockage N 1 et N 2 (sinhroposylka S) crypté dans le mode de remplacement simple conformément aux prescriptions du paragraphe 3.1. La résultante de remplissage encodage N 1, N 2 forme un premier 64-bit plage de chiffrement par bloc T w(1), qui est résumée par bit modulo 2 additionneur 5 avec le bloc CM des données chiffrées T w(1). Le résultat est un premier bloc de données de l'ouverture T 0(1).

Bloquer les données cryptées T w(1) est le remplissage initial de N 1, N 2 pour produire un deuxième bloc de chiffrement gamme F w(2). Bloc T w(1) est enregistrée dans N 1, N 2. La valeur de τ 1(1) est introduit dans la 1ère catégorie N 1, la valeur de τ 2(1) est introduit dans la 2ème catégorie N 1, etc., la valeur de τ 32(1) est entré dans le 32e rang N 1; valeur τ 33(1) est introduit dans la 1ère catégorie N 2, la valeur de τ 34(1) est introduit dans la 2ème catégorie N 2, etc., la valeur de τ 64(1) est entré dans le 32-ème bit de N 2. Le remplissage résultant de N 1, N 2 est chiffré dans le mode de remplacement simple , en conformité avec les prescriptions du paragraphe 3.1, l'unité résultant T w(2) est ajouté au niveau du bit modulo 2 additionneur SM 5 avec le deuxième bloc de données chiffrées T w(2). Le résultat est un bloc de données publiques T 0(2).

des blocs de même, N 1, N 2 enregistrées successivement des données cryptées T w(2) T w(3), ..., T (m-1), dont le mode simple remplacement des blocs produits gamma chiffrement T w(3), T w(4), ..., p r (M). Gamma unités de chiffrement résumé binaire modulo 2 additionneur SM 5 blocs de données chiffrées T w(3) T w(4), ..., T m(M) pour obtenir des blocs de données publiques T 0(3), T 0( 4), ..., T 0(M), avec le dernier bloc de données ouvert longueur T 0(M) peut contenir moins de 64-bits.

le mode de génération de code d'authentification de message

Pour assurer la protection de la simulation des données publiques consistant en 64-bit M 0 T (1) blocs T 0(2), ..., T 0(M), M ≥ 2, généré bloc supplémentaire de l bits ( un message de code d'authentification et l). Le processus de génération de code d'authentification est uniforme pour tous les modes de chiffrement.

Le premier bloc de données ouvertes T 0(1) = (t1(1), t2(1), ..., t64(1)) = (a1(1) (0), 2 (1) (0) , ..., 32(1) (0), b 1(1) (0), b 2(1) (0), ..., b 32 (1) (0)) est écrite dans les dispositifs de stockage N 1 et N 2, et la valeur t 1(1) = a1 (1) (0) est introduit dans le 1 er rang N 1, la valeur t 2(1) =2 (1) (0) est introduit dans le 2e rang N 1 etc, la valeur de t 32(1) = a32 (1) (0) est introduite dans le 32-ième bit N 1; valeur de 33 t (1) = b1 (1) (0) est introduit dans le bit 1-ème N 2, etc., t 34 valeur (1) = b32 (1) (0) est introduit dans le 32-ème bit N 2.

Remplissage N 1 et N 2 subit une transformation correspondant aux 16 premiers cycles de l'algorithme de chiffrement du mode de remplacement simple, conformément aux dispositions du paragraphe 3.1. Dans VUP il est donc la même clé qui est cryptée blocs de données publiques T 0(1), T 0(2), ..., T 0(M) en blocs de données chiffrées T w(1), T m(2) correspondant ..., w T (M).

Obtenu après 16 cycles de remplissage de N 1 et N 2 de la forme (a 1(1) (16), 2(1) (16), ..., 32(1) (16), b 1(1) ( 16), b 2(1) (16), ..., b 32 (1) (16)), est résumée dans le CM 5 modulo 2 à une seconde unité t 0(2) = (t1(2), t2( 2), ..., t64(2)). Le résultat de l'addition est mémorisé dans N 1 et N 2 et subit une transformation correspondant aux 16 premiers cycles de l'algorithme de chiffrement du mode de remplacement simple.

A reçu le remplissage N 1 et N 2 est résumée dans le SM 5 modulo 2 au troisième bloc T 0(3), etc., le dernier bloc T 0(M) = (t1(M), t2(m), ... t 64(M)), le cas échéant additionné à la totalité des zéros 64 bits bloquer résumées dans le SM 5 modulo 2 au remplissage N 1, un 1(M-1) (16), 2(M-1) ( 16), ..., 32(M-1) (16), b 1(M-1) (16), b 2(M-1) (16), ..., b 32(M-1) (16) . Le résultat de la sommation est entré dans les N 1, N 2, et chiffré en un mode de remplacement simple pour les 16 premiers cycles de l'algorithme. Des disques résultant de remplissage N 1 et N 2 et choisi le segment l = [a 32- l +1 (M) (16), un 32- l +1 (M) (16), ..., 32(M) (16 )].

L code d'authentification est transmis sur un canal de communication ou dans une mémoire d'ordinateur à la fin des données chiffrées, i.e. W T (1) T w(2), ..., w T (M) et l.

Reçu crypté T de données w(1), T m(2), ..., T m(M) sont décodées à partir des blocs de données publiques reçues T 0(1), T 0(2), le code d'authentification de message ..., T 0(M) est générée et "l, qui est alors comparé au code d'authentification de message et l, reçu en même temps que les données cryptées à partir du canal de communication ou de la mémoire de l' ordinateur. En cas de divergence imitovstavok ouverts blocs de données reçus T 0(1), T 0(2), ..., T 0(M) est considérée comme fausse.

La valeur de l (le nombre de bits dans le code d'authentification de message) est déterminé par les exigences cryptographiques actuelles, en tenant compte du fait que la probabilité d'imposer des fausses données est égal à 2 - l.