4.1. Basisprincipes van encryptie
De essentie van codering met behulp van de vervangingsmethode is als volgt. Laat berichten in het Russisch versleuteld worden en elke letter van deze berichten moet vervangen worden. Dan letterlijk A het bronalfabet wordt vergeleken met een bepaalde reeks symbolen (vervanging van cijfers) M A, B – M B, …, I – M I. De cijfervervangingen worden zo gekozen dat elke twee sets ( M ik En M J, ik ≠ j) bevatte geen identieke elementen ( M ik ∩ MJ = Ø).
De tabel in figuur 4.1 is de sleutel van het vervangende cijfer. Als u dit weet, kunt u zowel codering als decodering uitvoeren.
A | B | ... | I |
M.A | M B | ... | M ik |
Afb.4.1. Cipher-vervangingstabel
Bij het coderen wordt elke letter A open bericht wordt vervangen door een willekeurig teken uit de set M.A. Als het bericht meerdere letters bevat A, dan wordt elk van hen vervangen door een willekeurig teken uit M.A. Hierdoor is het met behulp van één sleutel mogelijk om verschillende versies van het cijfergram voor hetzelfde open bericht te verkrijgen. Sinds de sets M A, M B, ..., M I niet in paren kruisen, dan is het voor elk symbool van het cijfergram mogelijk om ondubbelzinnig te bepalen tot welke set het behoort, en bijgevolg tot welke letter van het open bericht het vervangt. Daarom is decodering mogelijk en wordt het open bericht op een unieke manier bepaald.
De bovenstaande beschrijving van de essentie van vervangingscijfers is van toepassing op al hun varianten, met uitzondering van , waarin dezelfde vervangingscijfers kunnen worden gebruikt om verschillende karakters van het originele alfabet te coderen (dat wil zeggen M ik ∩ MJ ≠ Ø, ik ≠ j).
De vervangingsmethode wordt vaak door veel gebruikers geïmplementeerd bij het werken op een computer. Als u, vanwege vergeetachtigheid, de tekenset op het toetsenbord niet van Latijn naar Cyrillisch verandert, worden in plaats van letters van het Russische alfabet bij het invoeren van tekst letters van het Latijnse alfabet ("cijfervervangingen") afgedrukt.
Er worden strikt gedefinieerde alfabetten gebruikt om originele en gecodeerde berichten op te nemen. De alfabetten voor het opnemen van originele en gecodeerde berichten kunnen verschillen. Tekens van beide alfabetten kunnen worden weergegeven door letters, hun combinaties, cijfers, afbeeldingen, geluiden, gebaren, enz. Als voorbeeld kunnen we de dansende mannen noemen uit het verhaal van A. Conan Doyle () en het manuscript van de runenbrief () uit de roman “Reis naar het middelpunt van de aarde” van J. Verne.
Vervangingscijfers kunnen in de volgende categorieën worden onderverdeeld subklassen(variëteiten).
Afb.4.2. Classificatie van substitutiecijfers
I. Reguliere cijfers. Cijfervervangingen bestaan uit hetzelfde aantal tekens of zijn van elkaar gescheiden door een scheidingsteken (spatie, punt, streepje, enz.).
Slogancode. Voor een bepaald cijfer is de constructie van een cijfervervangingstabel gebaseerd op een slogan (sleutel) - een gemakkelijk te onthouden woord. De tweede regel van de cijfervervangingstabel wordt eerst gevuld met het sloganwoord (en herhaalde letters worden weggegooid) en vervolgens met de overige letters die niet in het sloganwoord voorkomen, in alfabetische volgorde. Als bijvoorbeeld het sloganwoord “OOM” is geselecteerd, ziet de tabel er als volgt uit.
A | B | IN | G | D | E | Jo | EN | Z | EN | Y | NAAR | L | M | N | OVER | P | R | MET | T | U | F | X | C | H | Sch | SCH | Kommersant | Y | B | E | Yu | I |
D | I | EN | N | A | B | IN | G | E | Jo | EN | Z | Y | NAAR | L | M | OVER | P | R | MET | T | U | F | X | C | H | Sch | SCH | Kommersant | Y | B | E | Yu |
Afb.4.4. Tabel met cijfervervangingen voor het slogancijfer
Wanneer u het oorspronkelijke bericht “ABRAMOV” versleutelt met de bovenstaande sleutel, ziet het cijfergram eruit als “YAPDKMI”.
Polybisch vierkant. Het cijfer werd uitgevonden door de Griekse staatsman, commandant en historicus Polybius (203-120 v.Chr.). Met betrekking tot het Russische alfabet en Indiase (Arabische) cijfers was de essentie van codering als volgt. Letters worden geschreven in een vierkant van 6x6 (niet noodzakelijkerwijs in alfabetische volgorde).
1 | 2 | 3 | 4 | 5 | 6 | |
1 | A | B | IN | G | D | E |
2 | Jo | EN | Z | EN | Y | NAAR |
3 | L | M | N | OVER | P | R |
4 | MET | T | U | F | X | C |
5 | H | Sch | SCH | Kommersant | Y | B |
6 | E | Yu | I | - | - | - |
Afb.4.5. Tabel met cijfervervangingen voor het Polybische vierkant
De gecodeerde letter wordt vervangen door de coördinaten van het vierkant (rij-kolom) waarin deze is geschreven. Als het oorspronkelijke bericht bijvoorbeeld “ABRAMOV” is, dan is het cijfergram “11 12 36 11 32 34 13”. In het oude Griekenland werden berichten verzonden met behulp van optische telegrafie (met behulp van fakkels). Voor elke letter van het bericht werd eerst het aantal fakkels verhoogd dat overeenkomt met het rijnummer van de letter en vervolgens het kolomnummer.
Tabel 4.1. Frequentie van verschijnen van Russische letters in teksten
Nee. | Brief | Frequentie, % | Nee. | Brief | Frequentie, % |
1 | OVER | 10.97 | 18 | B | 1.74 |
2 | E | 8.45 | 19 | G | 1.70 |
3 | A | 8.01 | 20 | Z | 1.65 |
4 | EN | 7.35 | 21 | B | 1.59 |
5 | N | 6.70 | 22 | H | 1.44 |
6 | T | 6.26 | 23 | Y | 1.21 |
7 | MET | 5.47 | 24 | X | 0.97 |
8 | R | 4.73 | 25 | EN | 0.94 |
9 | IN | 4.54 | 26 | Sch | 0.73 |
10 | L | 4.40 | 27 | Yu | 0.64 |
11 | NAAR | 3.49 | 28 | C | 0.48 |
12 | M | 3.21 | 29 | SCH | 0.36 |
13 | D | 2.98 | 30 | E | 0.32 |
14 | P | 2.81 | 31 | F | 0.26 |
15 | U | 2.62 | 32 | Kommersant | 0.04 |
16 | I | 2.01 | 33 | Jo | 0.04 |
17 | Y | 1.90 |
Er zijn vergelijkbare tabellen voor letterparen (bigrams). Veel voorkomende bigrams zijn bijvoorbeeld ‘to’, ‘but’, ‘st’, ‘po’, ‘en’, etc. Een andere techniek voor het kraken van cijfergrammen is gebaseerd op het elimineren van mogelijke lettercombinaties. In teksten (als ze zonder spelfouten zijn geschreven) kun je bijvoorbeeld de combinaties “chya”, “shchi”, “b”, enz. niet vinden.
Om de taak van het breken van één-op-één vervangende cijfers te bemoeilijken, werden zelfs in de oudheid spaties en/of klinkers vóór de codering uitgesloten van de originele berichten. Een andere methode die het openen bemoeilijkt, is encryptie bigramen(in paren van letters).
4.3. Polygramcijfers
Polygramvervangingscijfers- dit zijn cijfers waarbij één cijfervervanging overeenkomt met meerdere tekens van de brontekst tegelijk.
Bigram Cipher-poorten. Het Porta-cijfer, gepresenteerd in tabelvorm, is het eerste bekende bigram-cijfer. De grootte van zijn tafel was 20 x 20 cellen; het standaardalfabet was bovenaan horizontaal en verticaal links geschreven (het bevatte niet de letters J, K, U, W, X en Z). In de tabelcellen konden alle cijfers, letters of symbolen worden geschreven - Giovanni Porta gebruikte zelf symbolen - op voorwaarde dat de inhoud van geen van de cellen werd herhaald. Met betrekking tot de Russische taal kan de tabel met cijfervervangingen er als volgt uitzien.
A | B | IN | G | D | E (Jij) | EN | Z | EN (J) | NAAR | L | M | N | OVER | P | R | MET | T | U | F | X | C | H | Sch | SCH | Kommersant | Y | B | E | Yu | I | |
A | 001 | 002 | 003 | 004 | 005 | 006 | 007 | 008 | 009 | 010 | 011 | 012 | 013 | 014 | 015 | 016 | 017 | 018 | 019 | 020 | 021 | 022 | 023 | 024 | 025 | 026 | 027 | 028 | 029 | 030 | 031 |
B | 032 | 033 | 034 | 035 | 036 | 037 | 038 | 039 | 040 | 041 | 042 | 043 | 044 | 045 | 046 | 047 | 048 | 049 | 050 | 051 | 052 | 053 | 054 | 055 | 056 | 057 | 058 | 059 | 060 | 061 | 062 |
IN | 063 | 064 | 065 | 066 | 067 | 068 | 069 | 070 | 071 | 072 | 073 | 074 | 075 | 076 | 077 | 078 | 079 | 080 | 081 | 082 | 083 | 084 | 085 | 086 | 087 | 088 | 089 | 090 | 091 | 092 | 093 |
G | 094 | 095 | 096 | 097 | 098 | 099 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 |
D | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 |
HAAR) | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 |
EN | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 |
Z | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 |
ik (Y) | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 |
NAAR | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 |
L | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | 331 | 332 | 333 | 334 | 335 | 336 | 337 | 338 | 339 | 340 | 341 |
M | 342 | 343 | 344 | 345 | 346 | 347 | 348 | 349 | 350 | 351 | 352 | 353 | 354 | 355 | 356 | 357 | 358 | 359 | 360 | 361 | 362 | 363 | 364 | 365 | 366 | 367 | 368 | 369 | 370 | 371 | 372 |
N | 373 | 374 | 375 | 376 | 377 | 378 | 379 | 380 | 381 | 382 | 383 | 384 | 385 | 386 | 387 | 388 | 389 | 390 | 391 | 392 | 393 | 394 | 395 | 396 | 397 | 398 | 399 | 400 | 401 | 402 | 403 |
OVER | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 419 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 427 | 428 | 429 | 430 | 431 | 432 | 433 | 434 |
P | 435 | 436 | 437 | 438 | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | 448 | 449 | 450 | 451 | 452 | 453 | 454 | 455 | 456 | 457 | 458 | 459 | 460 | 461 | 462 | 463 | 464 | 465 |
R | 466 | 467 | 468 | 469 | 470 | 471 | 472 | 473 | 474 | 475 | 476 | 477 | 478 | 479 | 480 | 481 | 482 | 483 | 484 | 485 | 486 | 487 | 488 | 489 | 490 | 491 | 492 | 493 | 494 | 495 | 496 |
MET | 497 | 498 | 499 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 509 | 510 | 511 | 512 | 513 | 514 | 515 | 516 | 517 | 518 | 519 | 520 | 521 | 522 | 523 | 524 | 525 | 526 | 527 |
T | 528 | 529 | 530 | 531 | 532 | 533 | 534 | 535 | 536 | 537 | 538 | 539 | 540 | 541 | 542 | 543 | 544 | 545 | 546 | 547 | 548 | 549 | 550 | 551 | 552 | 553 | 554 | 555 | 556 | 557 | 558 |
U | 559 | 560 | 561 | 562 | 563 | 564 | 565 | 566 | 567 | 568 | 569 | 570 | 571 | 572 | 573 | 574 | 575 | 576 | 577 | 578 | 579 | 580 | 581 | 582 | 583 | 584 | 585 | 586 | 587 | 588 | 589 |
F | 590 | 591 | 592 | 593 | 594 | 595 | 596 | 597 | 598 | 599 | 600 | 601 | 602 | 603 | 604 | 605 | 606 | 607 | 608 | 609 | 610 | 611 | 612 | 613 | 614 | 615 | 616 | 617 | 618 | 619 | 620 |
X | 621 | 622 | 623 | 624 | 625 | 626 | 627 | 628 | 629 | 630 | 631 | 632 | 633 | 634 | 635 | 636 | 637 | 638 | 639 | 640 | 641 | 642 | 643 | 644 | 645 | 646 | 647 | 648 | 649 | 650 | 651 |
C | 652 | 653 | 654 | 655 | 656 | 657 | 658 | 659 | 660 | 661 | 662 | 663 | 664 | 665 | 666 | 667 | 668 | 669 | 670 | 671 | 672 | 673 | 674 | 675 | 676 | 677 | 678 | 679 | 680 | 681 | 682 |
H | 683 | 684 | 685 | 686 | 687 | 688 | 689 | 690 | 691 | 692 | 693 | 694 | 695 | 696 | 697 | 698 | 699 | 700 | 701 | 702 | 703 | 704 | 705 | 706 | 707 | 708 | 709 | 710 | 711 | 712 | 713 |
Sch | 714 | 715 | 716 | 717 | 718 | 719 | 720 | 721 | 722 | 723 | 724 | 725 | 726 | 727 | 728 | 729 | 730 | 731 | 732 | 733 | 734 | 735 | 736 | 737 | 738 | 739 | 740 | 741 | 742 | 743 | 744 |
SCH | 745 | 746 | 747 | 748 | 749 | 750 | 751 | 752 | 753 | 754 | 755 | 756 | 757 | 758 | 759 | 760 | 761 | 762 | 763 | 764 | 765 | 766 | 767 | 768 | 769 | 770 | 771 | 772 | 773 | 774 | 775 |
Kommersant | 776 | 777 | 778 | 779 | 780 | 781 | 782 | 783 | 784 | 785 | 786 | 787 | 788 | 789 | 790 | 791 | 792 | 793 | 794 | 795 | 796 | 797 | 798 | 799 | 800 | 801 | 802 | 803 | 804 | 805 | 806 |
Y | 807 | 808 | 809 | 810 | 811 | 812 | 813 | 814 | 815 | 816 | 817 | 818 | 819 | 820 | 821 | 822 | 823 | 824 | 825 | 826 | 827 | 828 | 829 | 830 | 831 | 832 | 833 | 834 | 835 | 836 | 837 |
B | 838 | 839 | 840 | 841 | 842 | 843 | 844 | 845 | 846 | 847 | 848 | 849 | 850 | 851 | 852 | 853 | 854 | 855 | 856 | 857 | 858 | 859 | 860 | 861 | 862 | 863 | 864 | 865 | 866 | 867 | 868 |
E | 869 | 870 | 871 | 872 | 873 | 874 | 875 | 876 | 877 | 878 | 879 | 880 | 881 | 882 | 883 | 884 | 885 | 886 | 887 | 888 | 889 | 890 | 891 | 892 | 893 | 894 | 895 | 896 | 897 | 898 | 899 |
Yu | 900 | 901 | 902 | 903 | 904 | 905 | 906 | 907 | 908 | 909 | 910 | 911 | 912 | 913 | 914 | 915 | 916 | 917 | 918 | 919 | 920 | 921 | 922 | 923 | 924 | 925 | 926 | 927 | 928 | 929 | 930 |
I | 931 | 932 | 933 | 934 | 935 | 936 | 937 | 938 | 939 | 940 | 941 | 942 | 943 | 944 | 945 | 946 | 947 | 948 | 949 | 950 | 951 | 952 | 953 | 954 | 955 | 956 | 957 | 958 | 959 | 960 | 961 |
Afb.4.10. Cipher-vervangingstabel voor het poortcijfer
De codering wordt uitgevoerd met behulp van letterparen van het originele bericht. De eerste letter van het paar geeft de rij voor het vervangen van cijfers aan, de tweede - de kolom. Als het oorspronkelijke bericht een oneven aantal letters bevat, wordt er een hulpteken (“leeg teken”) aan toegevoegd. Bijvoorbeeld het originele bericht "AB RA MO V", gecodeerd - "002 466 355 093". De letter “I” wordt gebruikt als hulpsymbool.
Playfair-cijfer (Engels: “Fair game”). Begin jaren 1850. Charles Wheatstone vond het zogenaamde "rechthoekige cijfer" uit. Leon Playfair, een goede vriend van Wheatstone, sprak over dit cijfer tijdens een officieel diner in 1854 met de minister van Binnenlandse Zaken, Lord Palmerston, en prins Albert. En aangezien Playfair goed bekend was in militaire en diplomatieke kringen, werd de naam “Playfair cipher” voor altijd toegekend aan de creatie van Wheatstone.
Dit cijfer was het eerste alfabetische bigramcijfer (Porta's bigramtabel gebruikte symbolen, geen letters). Het was ontworpen om de geheimhouding van telegraafcommunicatie te waarborgen en werd door Britse troepen gebruikt in de Boerenoorlog en de Eerste Wereldoorlog. Het werd ook gebruikt door de kustwacht van de Australische eilanden tijdens de Tweede Wereldoorlog.
Het cijfer zorgt voor de codering van paren symbolen (digrammen). Dit cijfer is dus beter bestand tegen kraken in vergelijking met een eenvoudig substitutiecijfer, aangezien frequentieanalyse moeilijker is. Het kan worden uitgevoerd, maar niet voor 26 mogelijke tekens (Latijns alfabet), maar voor 26 x 26 = 676 mogelijke bigrams. Bigram-frequentieanalyse is mogelijk, maar is aanzienlijk moeilijker en vereist een veel grotere hoeveelheid cijfertekst.
Om een bericht te versleutelen, is het noodzakelijk om het op te splitsen in bigrams (groepen van twee tekens), en als er twee identieke symbolen in het bigram worden gevonden, wordt daartussen een vooraf overeengekomen hulpsymbool toegevoegd (in het origineel - X, voor het Russische alfabet - I). 'Gecodeerd bericht' wordt bijvoorbeeld 'gecodeerd bericht' I mededeling I" Om een sleuteltabel te vormen, wordt een slogan geselecteerd en vervolgens ingevuld volgens de regels van het Trisemus-coderingssysteem. Voor de slogan “UNCLE” ziet de sleuteltabel er bijvoorbeeld zo uit.
D | I | EN | N | A | B |
IN | G | E | Jo | EN | Z |
Y | NAAR | L | M | OVER | P |
R | MET | T | U | F | X |
C | H | Sch | SCH | Kommersant | Y |
B | E | Yu | - | 1 | 2 |
Afb.4.11. Sleuteltabel voor het Playfair-cijfer
Vervolgens worden, op basis van de volgende regels, de karakterparen in de brontekst gecodeerd:
1. Als de bigramsymbolen van de brontekst op één regel voorkomen, worden deze symbolen vervangen door de symbolen in de dichtstbijzijnde kolommen rechts van de overeenkomstige symbolen. Als het teken het laatste teken op een regel is, wordt het vervangen door het eerste teken van dezelfde regel.
2. Als de bigram-tekens van de brontekst in één kolom voorkomen, worden ze omgezet naar de tekens van dezelfde kolom die zich er direct onder bevindt. Als een teken het onderste teken in een kolom is, wordt het vervangen door het eerste teken van dezelfde kolom.
3. Als de bigram-symbolen van de brontekst zich in verschillende kolommen en verschillende rijen bevinden, worden ze vervangen door symbolen die zich in dezelfde rijen bevinden, maar overeenkomen met andere hoeken van de rechthoek.
Versleutelingsvoorbeeld.
Het bigram "voor" vormt een rechthoek - het wordt vervangen door "zhb";
Het bigram "shi" staat in één kolom - vervangen door "yu";
Het bigram “fr” staat op één regel - het wordt vervangen door “xc”;
Het bigram “ov” vormt een rechthoek - het wordt vervangen door “yzh”;
Het bigram “an” staat op één regel - vervangen door “ba”;
Het bigram "maar" vormt een rechthoek - het wordt vervangen door "ben";
Het bigram “es” vormt een rechthoek - het wordt vervangen door “gt”;
Het bigram “oya” vormt een rechthoek - het wordt vervangen door “ka”;
Het bigram "ongeveer" vormt een rechthoek - het wordt vervangen door "pa";
Het bigram “shche” vormt een rechthoek - het wordt vervangen door “shyo”;
Het bigram “ni” vormt een rechthoek - het wordt vervangen door “an”;
Het bigram “ee” vormt een rechthoek en wordt vervangen door “gi”.
De code is "zhb yue xs yzh ba am gt ka pa she an gi."
Om te decoderen moet je de omkering van deze regels gebruiken, waarbij je de karakters weggooit I(of X) als ze niet kloppen in het oorspronkelijke bericht.
Het bestond uit twee schijven: een externe vaste schijf en een interne beweegbare schijf, waarop de letters van het alfabet waren gedrukt. Het coderingsproces omvatte het vinden van de leesbare letter op de externe schijf en deze te vervangen door de letter van de interne schijf eronder. Hierna werd de interne schijf één positie verschoven en werd de tweede letter gecodeerd met behulp van het nieuwe cijferalfabet. De sleutel tot dit cijfer was de volgorde van de letters op de schijven en de beginpositie van de interne schijf ten opzichte van de externe.
Trisemus-tafel. Een van de cijfers uitgevonden door de Duitse abt Trisemus was een multi-alfabetisch cijfer gebaseerd op de zogenaamde "Trisemus-tabel" - een tabel met zijden gelijk aan N, Waar N– het aantal tekens in het alfabet. In de eerste rij van de matrix worden de letters geschreven in de volgorde van hun volgorde in het alfabet, in de tweede - dezelfde reeks letters, maar met een cyclische verschuiving van één positie naar links, in de derde - met een cyclische verschuiving verschuiving met twee posities naar links, enz.
A | B | IN | G | D | E | Jo | EN | Z | EN | Y | NAAR | L | M | N | OVER | P | R | MET | T | U | F | X | C | H | Sch | SCH | Kommersant | Y | B | E | Yu | I |
B | IN | G | D | E | Jo | EN | Z | EN | Y | NAAR | L | M | N | OVER | P | R | MET | T | U | F | X | C | H | Sch | SCH | Kommersant | Y | B | E | Yu | I | A |
IN | G | D | E | Jo | EN | Z | EN | Y | NAAR | L | M | N | OVER | P | R | MET | T | U | F | X | C | H | Sch | SCH | Kommersant | Y | B | E | Yu | I | A | B |
G | D | E | Jo | EN | Z | EN | Y | NAAR | L | M | N | OVER | P | R | MET | T | U | F | X | C | H | Sch | SCH | Kommersant | Y | B | E | Yu | I | A | B | IN |
D | E | Jo | EN | Z | EN | Y | NAAR | L | M | N | OVER | P | R | MET | T | U | F | X | C | H | Sch | SCH | Kommersant | Y | B | E | Yu | I | A | B | IN | G |
E | Jo | EN | Z | EN | Y | NAAR | L | M | N | OVER | P | R | MET | T | U | F | X | C | H | Sch | SCH | Kommersant | Y | B | E | Yu | I | A | B | IN | G | D |
Jo | EN | Z | EN | Y | NAAR | L | M | N | OVER | P | R | MET | T | U | F | X | C | H | Sch | SCH | Kommersant | Y | B | E | Yu | I | A | B | IN | G | D | E |
EN | Z | EN | Y | NAAR | L | M | N | OVER | P | R | MET | T | U | F | X | C | H | Sch | SCH | Kommersant | Y | B | E | Yu | I | A | B | IN | G | D | E | Jo |
Z | EN | Y | NAAR | L | M | N | OVER | P | R | MET | T | U | F | X | C | H | Sch | SCH | Kommersant | Y | B | E | Yu | I | A | B | IN | G | D | E | Jo | EN |
EN | Y | NAAR | L | M | N | OVER | P | R | MET | T | U | F | X | C | H | Sch | SCH | Kommersant | Y | B | E | Yu | I | A | B | IN | G | D | E | Jo | EN | Z |
Y | NAAR | L | M | N | OVER | P | R | MET | T | U | F | X | C | H | Sch | SCH | Kommersant | Y | B | E | Yu | I | A | B | IN | G | D | E | Jo | EN | Z | EN |
NAAR | L | M | N | OVER | P | R | MET | T | U | F | X | C | H | Sch | SCH | Kommersant | Y | B | E | Yu | I | A | B | IN | G | D | E | Jo | EN | Z | EN | Y |
L | M | N | OVER | P | R | MET | T | U | F | X | C | H | Sch | SCH | Kommersant | Y | B | E | Yu | I | A | B | IN | G | D | E | Jo | EN | Z | EN | Y | NAAR |
M | N | OVER | P | R | MET | T | U | F | X | C | H | Sch | SCH | Kommersant | Y | B | E | Yu | I | A | B | IN | G | D | E | Jo | EN | Z | EN | Y | NAAR | L |
N | OVER | P | R | MET | T | U | F | X | C | H | Sch | SCH | Kommersant | Y | B | E | Yu | I | A | B | IN | G | D | E | Jo | EN | Z | EN | Y | NAAR | L | M |
OVER | P | R | MET | T | U | F | X | C | H | Sch | SCH | Kommersant | Y | B | E | Yu | I | A | B | IN | G | D | E | Jo | EN | Z | EN | Y | NAAR | L | M | N |
P | R | MET | T | U | F | X | C | H | Sch | SCH | Kommersant | Y | B | E | Yu | I | A | B | IN | G | D | E | Jo | EN | Z | EN | Y | NAAR | L | M | N | OVER |
R | MET | T | U | F | X | C | H | Sch | SCH | Kommersant | Y | B | E | Yu | I | A | B | IN | G | D | E | Jo | EN | Z | EN | Y | NAAR | L | M | N | OVER | P |
MET | T | U | F | X | C | H | Sch | SCH | Kommersant | Y | B | E | Yu | I | A | B | IN | G | D | E | Jo | EN | Z | EN | Y | NAAR | L | M | N | OVER | P | R |
T | U | F | X | C | H | Sch | SCH | Kommersant | Y | B | E | Yu | I | A | B | IN | G | D | E | Jo | EN | Z | EN | Y | NAAR | L | M | N | OVER | P | R | MET |
U | F | X | C | H | Sch | SCH | Kommersant | Y | B | E | Yu | I | A | B | IN | G | D | E | Jo | EN | Z | EN | Y | NAAR | L | M | N | OVER | P | R | MET | T |
F | X | C | H | Sch | SCH | Kommersant | Y | B | E | Yu | I | A | B | IN | G | D | E | Jo | EN | Z | EN | Y | NAAR | L | M | N | OVER | P | R | MET | T | U |
X | C | H | Sch | SCH | Kommersant | Y | B | E | Yu | I | A | B | IN | G | D | E | Jo | EN | Z | EN | Y | NAAR | L | M | N | OVER | P | R | MET | T | U | F |
C | H | Sch | SCH | Kommersant | Y | B | E | Yu | I | A | B | IN | G | D | E | Jo | EN | Z | EN | Y | NAAR | L | M | N | OVER | P | R | MET | T | U | F | X |
H | Sch | SCH | Kommersant | Y | B | E | Yu | I | A | B | IN | G | D | E | Jo | EN | Z | EN | Y | NAAR | L | M | N | OVER | P | R | MET | T | U | F | X | C |
Sch | SCH | Kommersant | Y | B | E | Yu | I | A | B | IN | G | D | E | Jo | EN | Z | EN | Y | NAAR | L | M | N | OVER | P | R | MET | T | U | F | X | C | H |
SCH | Kommersant | Y | B | E | Yu | I | A | B | IN | G | D | E | Jo | EN | Z | EN | Y | NAAR | L | M | N | OVER | P | R | MET | T | U | F | X | C | H | Sch |
Kommersant | Y | B | E | Yu | I | A | B | IN | G | D | E | Jo | EN | Z | EN | Y | NAAR | L | M | N | OVER | P | R | MET | T | U | F | X | C | H | Sch | SCH |
Y | B | E | Yu | I | A | B | IN | G | D | E | Jo | EN | Z | EN | Y | NAAR | L | M | N | OVER | P | R | MET | T | U | F | X | C | H | Sch | SCH | Kommersant |
B | E | Yu | I | A | B | IN | G | D | E | Jo | EN | Z | EN | Y | NAAR | L | M | N | OVER | P | R | MET | T | U | F | X | C | H | Sch | SCH | Kommersant | Y |
E | Yu | I | A | B | IN | G | D | E | Jo | EN | Z | EN | Y | NAAR | L | M | N | OVER | P | R | MET | T | U | F | X | C | H | Sch | SCH | Kommersant | Y | B |
Yu | I | A | B | IN | G | D | E | Jo | EN | Z | EN | Y | NAAR | L | M | N | OVER | P | R | MET | T | U | F | X | C | H | Sch | SCH | Kommersant | Y | B | E |
I | A | B | IN | G | D | E | Jo | EN | Z | EN | Y | NAAR | L | M | N | OVER | P | R | MET | T | U | F | X | C | H | Sch | SCH | Kommersant | Y | B | E | Yu |
Afb.4.17. Trisemus-tafel
De eerste regel is ook een alfabet voor letters in platte tekst. De eerste letter van de tekst wordt gecodeerd op de eerste regel, de tweede letter op de tweede, enzovoort. Nadat ze de laatste regel hebben gebruikt, keren ze terug naar de eerste. Het bericht “ABRAMOV” zal dus de vorm “AVTGRUZ” aannemen.
Vigenère-coderingssysteem. In 1586 presenteerde de Franse diplomaat Blaise Vigenère aan de commissie van Hendrik III een beschrijving van een eenvoudig maar tamelijk sterk cijfer, gebaseerd op de Trisemus-tabel.
Vóór de codering wordt een sleutel geselecteerd uit alfabetische tekens. De coderingsprocedure zelf is als volgt. Het i-de teken van het geopende bericht in de eerste regel bepaalt de kolom, en het i-de teken van de sleutel in de meest linkse kolom bepaalt de rij. Op het snijpunt van de rij en de kolom wordt het i-de teken in het cijfergram geplaatst. Als de sleutellengte kleiner is dan het bericht, wordt deze opnieuw gebruikt. Het originele bericht is bijvoorbeeld “ABRAMOV”, de sleutel is “UNCLE”, de coderingscode is “DAFIYOYE”.
In alle eerlijkheid moet worden opgemerkt dat het auteurschap van dit cijfer toebehoort aan de Italiaan Giovanni Battista Bellaso, die het in 1553 beschreef. De geschiedenis “negeerde een belangrijk feit en noemde het cijfer naar Vigenère, ondanks het feit dat hij niets deed om het te creëren. .” Bellazo stelde voor om een geheim woord of een geheime zin te noemen wachtwoord(Italiaans wachtwoord; Frans voorwaardelijk woord).
In 1863 publiceerde Friedrich Kasiski een algoritme om dit cijfer aan te vallen, hoewel er al eerder gevallen bekend zijn waarin zijn cijfer werd gebroken door enkele ervaren cryptanalisten. In het bijzonder werd het cijfer in 1854 gekraakt door de uitvinder van de eerste analytische computer, Charles Babbage, hoewel dit feit pas in de 20e eeuw bekend werd, toen een groep wetenschappers de berekeningen en persoonlijke aantekeningen van Babbage analyseerde. Desondanks had het Vigenère-cijfer lange tijd de reputatie extreem resistent te zijn tegen handmatig kraken. Zo noemde de beroemde schrijver en wiskundige Charles Lutwidge Dodgson (Lewis Carroll) in zijn artikel 'The Alphabetic Cipher', gepubliceerd in een kindertijdschrift in 1868, het Vigenère-cijfer onbreekbaar. In 1917 beschreef het populair-wetenschappelijke tijdschrift Scientific American het Vigenère-cijfer ook als onbreekbaar.
Roterende machines. De ideeën van Alberti en Bellaso werden in de eerste helft van de twintigste eeuw gebruikt om elektromechanische roterende machines te creëren. Sommigen van hen werden tot de jaren tachtig in verschillende landen gebruikt. De meeste van hen gebruikten rotoren (mechanische wielen), waarvan de relatieve positie het huidige cijferalfabet bepaalde dat werd gebruikt om de vervanging uit te voeren. De bekendste van de roterende machines is de Duitse Enigma-machine uit de Tweede Wereldoorlog.
De uitgangspinnen van de ene rotor zijn verbonden met de ingangspinnen van de volgende rotor en wanneer het oorspronkelijke berichtensymbool op het toetsenbord wordt ingedrukt, wordt een elektrisch circuit voltooid, waardoor het lampje met het cijfervervangingssymbool oplicht.
Afb.4.19. Enigma-rotorsysteem [www.cryptomuseum.com]
Het versleutelingseffect van de Enigma wordt getoond voor twee toetsen die achter elkaar worden ingedrukt: de stroom vloeit door de rotoren, wordt "gereflecteerd" door de reflector en vervolgens weer door de rotoren.
Afb.4.20. Versleutelingsschema
Opmerking. De grijze lijnen tonen andere mogelijke elektrische circuits binnen elke rotor. Brief A wordt anders gecodeerd wanneer opeenvolgende toetsaanslagen worden gemaakt, eerst in G, dan binnen C. Het signaal neemt een andere route vanwege de rotatie van een van de rotors nadat op de vorige letter van het oorspronkelijke bericht is gedrukt.
3. Beschrijf de soorten vervangingscijfers.
Webontwerpers en -ontwikkelaars houden ervan om jargon en duistere zinnen te gebruiken die soms moeilijk voor ons te begrijpen zijn. Dit artikel zal zich richten op semantische code. Laten we uitzoeken wat het is!
Wat is semantische code?
Zelfs als u geen webontwerper bent, weet u waarschijnlijk dat uw site in HTML is geschreven. HTML was oorspronkelijk bedoeld als middel om de inhoud van een document te beschrijven, en niet om het er visueel aantrekkelijk uit te laten zien. Semantische code keert terug naar dit oorspronkelijke concept en moedigt webontwerpers aan om code te schrijven die de inhoud beschrijft, in plaats van hoe deze eruit zou moeten zien. De paginatitel kan bijvoorbeeld als volgt worden geprogrammeerd:
Dit is de paginatitel
Dit zou de titel groot en vetgedrukt maken, waardoor het lijkt op een paginatitel, maar er staat niets in dat het beschrijft als een “titel” in de code. Dit betekent dat de computer het niet kan herkennen als de titel van de pagina.
Wanneer we een titel semantisch schrijven, moeten we de volgende code gebruiken, zodat de computer deze als een “titel” kan herkennen:
Dit is de titel
Het uiterlijk van de header kan worden gedefinieerd in een apart bestand genaamd “cascading style sheets” (CSS), zonder uw beschrijvende (semantische) HTML-code te verstoren.
Waarom is semantische code belangrijk?
Het vermogen van de computer om inhoud correct te herkennen is om verschillende redenen belangrijk:
- Veel slechtziende mensen vertrouwen op spraakbrowsers om pagina's te lezen. Dergelijke programma's zullen pagina's niet nauwkeurig kunnen interpreteren tenzij ze duidelijk zijn uitgelegd. Met andere woorden, semantische code dient als middel voor toegankelijkheid.
- Zoekmachines moeten begrijpen waar uw inhoud over gaat om u correct te kunnen rangschikken in zoekmachines. Semantische code heeft de reputatie de plaatsingen in zoekmachines te verbeteren, omdat deze gemakkelijk wordt begrepen door crawlers van zoekmachines.
Semantische code heeft ook andere voordelen:
- Zoals je in het bovenstaande voorbeeld kunt zien, is de semantische code korter en gaat het laden sneller.
- Semantische code maakt site-updates eenvoudiger omdat u koptekststijlen op de hele site kunt toepassen in plaats van per pagina.
- Semantische code is gemakkelijk te begrijpen, dus als een nieuwe webontwerper de code oppikt, kan hij deze gemakkelijk analyseren.
- Omdat semantische code geen ontwerpelementen bevat, is het mogelijk om het uiterlijk van een website te wijzigen zonder alle HTML opnieuw te coderen.
- Nogmaals, omdat het ontwerp gescheiden wordt gehouden van de inhoud, stelt semantische code iedereen in staat pagina's toe te voegen of te bewerken zonder dat daarvoor een goed oog voor ontwerp nodig is. U beschrijft eenvoudig de inhoud en CSS bepaalt hoe die inhoud eruit zal zien.
Hoe kunt u ervoor zorgen dat een website semantische code gebruikt?
Er is momenteel geen tool die kan controleren op semantische code. Het komt allemaal neer op het controleren op kleuren, lettertypen of lay-outs in de code in plaats van op het beschrijven van de inhoud. Als codeanalyse eng klinkt, is het een goed startpunt om uw webontwerper te vragen: codeert hij met semantiek in gedachten? Als hij je wezenloos aankijkt of belachelijk begint te kletsen, dan kun je er zeker van zijn dat hij niet op deze manier codeert. Op dit moment moet je beslissen of je hem een nieuwe richting in zijn werk wilt geven, of een nieuwe ontwerper wilt zoeken?!
Semantiek(Franse sémantique van het oudgriekse σημαντικός - aanduiding) - de wetenschap van het begrijpen van bepaalde tekens, reeksen symbolen en andere symbolen. Deze wetenschap wordt op veel gebieden gebruikt: taalkunde, proxemics, pragmatiek, etymologie, enz. Ik kan me niet voorstellen wat deze woorden betekenen en wat al deze wetenschappen doen. En het maakt niet uit, ik ben geïnteresseerd in de kwestie van het gebruik van semantiek in de lay-out van websites.
Opmerking
Ik zal hier niet ingaan op de term Semantisch Web. Op het eerste gezicht lijkt het misschien dat de onderwerpen Semantisch Web en semantische HTML-code bijna hetzelfde zijn. Maar in feite is het Semantische Web een nogal filosofisch concept en heeft het niet veel gemeen met de huidige realiteit.
Semantische lay-out - wat is het?
In een taal heeft elk woord een specifieke betekenis en doel. Als u 'worst' zegt, bedoelt u een voedingsproduct dat bestaat uit gehakt (meestal vlees) in een langwerpig omhulsel. Kortom, je bedoelt worst, geen melk of groene erwten.
HTML is ook een taal; de “woorden” die tags worden genoemd, hebben ook een bepaalde logische betekenis en doel. Om deze reden allereerst semantische HTML-code is een lay-out met het juiste gebruik van HTML-tags, door ze te gebruiken voor het beoogde doel, zoals ze bedoeld zijn door de ontwikkelaars van de HTML-taal en webstandaarden.
microformats.org is een gemeenschap die eraan werkt om de idealistische ideeën van het Semantische Web tot leven te brengen door de pagina-indeling dichter bij diezelfde semantische idealen te brengen.
Waarom en wie heeft überhaupt semantische lay-out nodig?
Als de informatie op mijn website op dezelfde manier wordt weergegeven als op het ontwerp, waarom zou je dan je hersens pijnigen en nadenken over een of andere vorm van semantiek?! Dit is extra werk! Wie heeft dit nodig?! Wie zal dit waarderen, behalve een andere lay-outontwerper?
Dergelijke vragen hoorde ik vaak. Laten we het uitzoeken.
Semantische HTML voor webontwikkelaars
Semantische code voor gebruikers
Verhoogt de beschikbaarheid van informatie op de site. Dit is allereerst van belang voor alternatieve middelen zoals:
- semantische code heeft rechtstreeks invloed op de hoeveelheid HTML-code. Minder code -> lichtere pagina's -> sneller laden, minder RAM vereist aan de gebruikerskant, minder verkeer, kleinere databasegrootte. De site wordt sneller en goedkoper.
- spraakbrowsers voor wie tags en hun attributen belangrijk zijn om de inhoud correct en met de juiste intonatie uit te spreken, of juist niet te veel te zeggen.
- mobiele apparaten die CSS niet volledig ondersteunen en daarom voornamelijk afhankelijk zijn van HTML-code, en deze op het scherm weergeven volgens de gebruikte tags.
- afdrukapparaten zelfs zonder extra CSS zal de informatie met een betere kwaliteit worden afgedrukt (dichter bij het ontwerp), en het creëren van de ideale versie voor afdrukken zal een paar eenvoudige manipulaties met CSS worden.
- Daarnaast zijn er apparaten en plug-ins waarmee je snel door een document kunt navigeren - bijvoorbeeld op koppen in Opera.
Semantische HTML voor machines
Zoekmachines verbeteren voortdurend hun zoekmethoden om ervoor te zorgen dat de resultaten de gewenste informatie bevatten. echt kijken gebruiker. Semantische HTML maakt dit mogelijk omdat... leent zich voor een veel betere analyse - de code is overzichtelijker, de code is logisch (je kunt duidelijk zien waar de koppen staan, waar de navigatie is, waar de inhoud is).
Goede inhoud plus semantische lay-out van hoge kwaliteit is al een serieuze toepassing goede posities in de zoekresultaten van zoekmachines.
De semantiek van HTML-code is altijd een hot topic. Sommige ontwikkelaars proberen altijd semantische code te schrijven. Anderen bekritiseren dogmatische aanhangers. En sommigen hebben zelfs geen idee wat het is en waarom het nodig is. Semantiek wordt in HTML gedefinieerd in tags, klassen, ID's en attributen die het doel beschrijven, maar niet de exacte inhoud specificeren die ze bevatten. Dat wil zeggen, we hebben het over het scheiden van inhoud en formaat.
Laten we beginnen met een duidelijk voorbeeld.
Slechte codesemantiek
Goede code-semantiek
De tekst van een artikel dat door iemand is geschreven. Inko Gnito- de auteur.Titel van artikel
Of u nu denkt dat HTML5 klaar is voor gebruik of niet, het gebruik van de Maar niet alles wordt zo duidelijk weergegeven door HTML5-tags. Laten we eens naar een reeks klassennamen kijken en kijken of ze aan de semantische vereisten voldoen. Geen semantische code. Dit is een klassiek voorbeeld. Elke CSS-rasterwerkbank gebruikt dit soort klassenamen om rasterelementen te definiëren. Of het nu "yui-b", "grid-4" of "spanHalf" is: dergelijke namen zijn dichter bij het specificeren van markup dan bij het beschrijven van inhoud. Het gebruik ervan is echter in de meeste gevallen onvermijdelijk bij het werken met modulaire rastersjablonen. Semantische code. De voettekst heeft een sterke betekenis gekregen in webdesign. Dit is het onderste deel van de pagina, dat elementen bevat zoals herhaalde navigatie, gebruiksrechten, auteursinformatie, enzovoort. Deze klasse definieert een groep voor al deze elementen zonder ze te beschrijven. Als u bent overgestapt op het gebruik van HTML5, kunt u beter het element gebruiken Geen semantische code. Het definieert de inhoud nauwkeurig. Maar waarom moet de tekst groot zijn? Om op te vallen tussen andere kleinere teksten? "standOut" (highlight) is in dit geval geschikter. U kunt besluiten de stijl van de gemarkeerde tekst te wijzigen, maar niets aan de grootte ervan doen, in welk geval de klassenaam u in verwarring kan brengen. Semantische code. In dit geval hebben we het over het bepalen van het belang van een element in de applicatie-interface (bijvoorbeeld een paragraaf of een knop). Een element op een hoger niveau kan felle kleuren en een groter formaat hebben, terwijl elementen op een lager niveau meer inhoud kunnen bevatten. Maar in dit geval is er geen exacte definitie van stijlen, dus de code is semantisch. Deze situatie lijkt sterk op het gebruik van tags Semantische code. Kon elke klassenaam maar zo duidelijk gedefinieerd worden! In dit geval hebben we een beschrijving van een sectie met inhoud waarvan het doel gemakkelijk te beschrijven is, net zoals 'tweets', 'paginering' of 'admin-nav'. Geen semantische code. In dit geval hebben we het over het instellen van de stijl voor de eerste alinea op de pagina. Deze techniek wordt gebruikt om de aandacht van lezers op het materiaal te vestigen. Het is beter om de naam "intro" te gebruiken, waarin het element niet wordt vermeld. Maar het is nog beter om voor dergelijke alinea's een selector te gebruiken, zoals Article p:first-of-type of h1 + p . Geen semantische code. Dit is een zeer algemene klassenaam die wordt gebruikt om de opmaak van elementen te organiseren. Maar er staat niets in dat betrekking heeft op een beschrijving van de inhoud. Verschillende semantische theoretici adviseren in dergelijke gevallen het gebruik van een klassenaam zoals 'groep'. Het is waarschijnlijk dat ze gelijk hebben. Omdat dit element ongetwijfeld dient om verschillende andere elementen te groeperen, zal de aanbevolen naam het doel ervan beter beschrijven zonder in details te duiken. Geen semantische code. Te gedetailleerde beschrijving van het inhoudsformaat. Het is beter om een andere naam te kiezen die de inhoud beschrijft dan het formaat ervan. Semantische code. De klas beschrijft de status van de inhoud heel goed. Een succesbericht kan bijvoorbeeld een heel andere stijl hebben dan een foutmelding. Geen semantische code. In dit voorbeeld wordt geprobeerd het formaat van de inhoud te definiëren in plaats van het doel ervan. "plain-jane" lijkt sterk op "normaal" of "normaal". De ideale CSS-code zou op zo'n manier moeten worden geschreven dat er geen behoefte is aan klassenamen zoals "regular" die het formaat van de inhoud beschrijven. Geen semantische code. Dit soort klassen wordt doorgaans gebruikt om site-elementen te definiëren die niet in de linkketen mogen worden opgenomen. In dit geval is het beter om zoiets als rel=nofollow te gebruiken voor links, maar niet een klasse voor alle inhoud. Geen semantische code. Dit is een poging om het formaat van de inhoud te beschrijven, niet het doel ervan. Stel dat u twee artikelen op uw website heeft. En je wilt ze verschillende stijlen geven. "Filmrecensies" zal een blauwe achtergrond hebben, terwijl "Breaking News" een rode achtergrond en een grotere lettergrootte zal hebben. Een manier om het probleem op te lossen is deze: Een andere manier is deze: Als je verschillende ontwikkelaars interviewt over welke code het meest consistent is met de semantische vereisten, zal de meerderheid zeker op de eerste optie wijzen. Het komt perfect overeen met de stof van deze les: een beschrijving van het doel zonder links naar opmaak. En de tweede optie geeft het formaat aan (“blueBg” is de klassenaam, die is gevormd uit twee Engelse woorden die “blauwe achtergrond” betekenen). Als je plotseling besluit om het ontwerp van filmrecensies te veranderen, bijvoorbeeld door een groene achtergrond te maken, dan zal de klassenaam "blueBg" veranderen in een nachtmerrie voor de ontwikkelaar. En met de naam "filmrecensie" kunt u absoluut eenvoudig de ontwerpstijlen wijzigen met behoud van een uitstekend niveau van code-ondersteuning. Maar niemand beweert dat het eerste voorbeeld zonder uitzondering in alle gevallen beter is. Laten we zeggen dat op veel plaatsen op de site een bepaalde tint blauw wordt gebruikt. Het is bijvoorbeeld de achtergrond voor een deel van de voettekst en gebieden in de zijbalk. U kunt de volgende selector gebruiken: Filmrecensie, voettekst > div:nth-of-type(2), terzijde > div:nth-of-type(4) ( achtergrond: #c2fbff; ) Een effectieve oplossing, omdat de kleur maar op één plek wordt bepaald. Maar dergelijke code wordt moeilijk te onderhouden, omdat deze een lange selector heeft die moeilijk visueel te begrijpen is. U hebt ook andere selectors nodig om unieke stijlen te definiëren, wat zal resulteren in codeherhaling. Of u kunt een andere aanpak kiezen en ze gescheiden houden: Filmrecensie ( achtergrond: #c2fbff; /* Kleurdefinitie */ ) voettekst > div:nth-of-type(2) ( achtergrond: #c2fbff; /* En nog een ding */ ) terzijde > div:nth-of - type(4) ( achtergrond: #c2fbff; /* En nog een ding */ ) Deze stijl zorgt ervoor dat het CSS-bestand overzichtelijker blijft (verschillende gebieden worden in verschillende secties gedefinieerd). Maar de prijs die we moeten betalen is herhaling van definities. Voor grote sites kan het identificeren van dezelfde kleur enkele duizenden keren duren. Vreselijk! Een oplossing zou zijn om een klasse als "blueBg" te gebruiken om de kleur één keer te definiëren en deze in de HTML-code in te voegen wanneer u dat ontwerp wilt gebruiken. Het is natuurlijk beter om het "mainBrandColor" of "secundaryFont" te noemen om de opmaakbeschrijving te verwijderen. U kunt codesemantiek opofferen ten gunste van het besparen van bronnen. WISKUNDE Vestn. Ohm. on-ta. 2016. Nr. 3. P. 7-9. UDC 512.4 VA Romankov OPTIE VOOR SEMANTISCH STERKE ENCRYPTIE GEBASEERD OP RSA* Het belangrijkste doel van het artikel is om een andere manier voor te stellen om een van de belangrijkste parameters te selecteren van een versleutelingsschema gebaseerd op het RSA-cryptografische systeem, voorgesteld door de auteur in eerdere werken. De originele versie is gebaseerd op de rekencomplexiteit van het bepalen van de volgorde van elementen in multiplicatieve groepen modulaire ringen. De voorgestelde methode verandert deze basis in een ander hardnekkig probleem: het bepalen of de elementen van multiplicatieve groepen van modulaire ringen tot de machten van deze groepen behoren. Een speciaal geval van een dergelijk probleem is het klassieke probleem van het bepalen van de kwadraticiteit van een residu, dat rekenkundig als moeilijk wordt beschouwd. Deze taak bepaalt de semantische kracht van het bekende Goldwasser-Micali-coderingssysteem. In de voorgestelde versie is de semantische kracht van het versleutelingsschema gebaseerd op de computationele complexiteit van het probleem van het bepalen of de elementen van multiplicatieve groepen van modulaire ringen tot de bevoegdheden van deze groepen behoren. Trefwoorden: RSA-cryptografisch systeem, publieke sleutel-encryptie, modulaire ring, kwadratische rest, semantische sterkte. 1. Inleiding Het doel van dit werk is om nieuwe elementen te introduceren voor de RSA-gebaseerde versie van het encryptieschema geïntroduceerd door de auteur in . Er wordt namelijk een andere manier voorgesteld om de subgroepen die in dit diagram voorkomen te specificeren. Deze methode leidt tot de vervanging van het onderliggende computationeel complexe probleem van het bepalen van de volgorde van elementen van multiplicatieve groepen van modulaire ringen door het computationeel complexe probleem van het invoeren van gegeven machten van deze groepen. Een speciaal geval van dit laatste probleem is het klassieke probleem van het bepalen van de kwadraticiteit van het residu van een element van de multiplicatieve groep van een modulaire ring. Het RSA-encryptiesysteem voor openbare sleutels werd in 1977 geïntroduceerd door Rivest, Shamir en Adleman. Het wordt over de hele wereld veel gebruikt en is opgenomen in bijna alle cryptografieboeken. Zie bijvoorbeeld over dit systeem en de cryptografische kracht ervan. De basisversie van het systeem is deterministisch en heeft om deze reden niet de eigenschap van semantische geheimhouding, de belangrijkste indicator voor de cryptografische sterkte van een publieke-sleutel-encryptiesysteem. Daarom worden in de praktijk varianten van het systeem gebruikt, met als doel er een probabilistisch element in te introduceren en daarmee de vervulling van de eigenschap van semantische geheimhouding te garanderen. Installatie: encryptieplatform Laat n het product zijn van twee grote verschillende priemgetallen p en q. De restring Zn is gekozen als platform voor het encryptiesysteem. Module n en platform Zn zijn open elementen van het systeem, nummers p en q zijn geheim. * Het onderzoek werd ondersteund door de Russische Stichting voor Basisonderzoek (project 15-41-04312). © Romankov V.A., 2016 Romankov V.A. De Euler-functie wordt aangegeven met φ:N ^ N, waarbij in dit geval de waarde φ(n)= (p-1)(q-1) wordt aangenomen. De volgorde van de multiplicatieve groep Z*n van de ring Zn is dus (p-1)(q-1). Zie bijvoorbeeld over deze concepten. Vervolgens worden twee subgroepen M en H van de groep Z*n van respectievelijk coprime-perioden r en t geselecteerd. Er wordt voorgesteld om deze subgroepen te definiëren via hun genererende elementen M = gr(g1,...,gk), H = gr(j1,...,hl). Bedenk dat de periode t(G) van een groep G het kleinste getal t is, zodat dr = 1 voor elk element geG. De periode van de groep Z*n is het getal t (n), gelijk aan het kleinste gemene veelvoud van de getallen p-1 en q-1. Subgroepen M en H kunnen cyclisch zijn en worden gedefinieerd door één genererend element. De genererende elementen van de subgroepen M en H worden als open beschouwd, terwijl de perioden van de subgroepen r en t als geheim worden beschouwd. In en wordt uitgelegd hoe u de gespecificeerde selectie van subgroepen M en H effectief kunt uitvoeren, waarbij u de geheime parameters p en q kent. Bovendien kun je eerst r en t instellen, dan p en q selecteren, en dan pas verdere acties uitvoeren. Merk op dat de constructie van elementen van bepaalde ordes in eindige velden wordt uitgevoerd door een standaard effectieve procedure, die bijvoorbeeld wordt beschreven. De overgang naar het construeren van elementen van gegeven ordes in multiplicatieve groepen Z*n van modulaire ringen Zn wordt op een voor de hand liggende manier uitgevoerd met behulp van de Chinese Remainder Stelling of . Installatie: selectie van sleutels De encryptiesleutel e is een natuurlijk getal coprime tot r. De decryptiesleutel d = ^wordt berekend op basis van de gelijkheid (te)d1 = 1 (modr). (1) De sleutel d bestaat omdat de parameter d1 wordt berekend vanwege de wederzijdse prioriteit van te en r. sleutel e is openbaar, de sleutel d en de parameter d1 zijn geheim. Versleutelingsalgoritme Om een bericht te verzenden via een open netwerk - m element van de subgroep M, selecteert Alice een willekeurig element h van de subgroep H en berekent het element hm. De transmissie lijkt op c = (hm)e (modn). (2) Decoderingsalgoritme Bob decodeert het ontvangen bericht c als volgt: cd=m(modn). (3) Uitleg van correcte decodering Omdat ed=1 (modr), is er een geheel getal k zodat ed = 1 + rk. Dan cd = (hm)ed = (ht)edi m (mr)k = m (mod n). (4) Het element h wordt dus geschreven als een element van de subgroep H in de vorm van de waarde van het groepswoord u(x1,.,xl) uit de genererende elementen h1t... ,hl van de subgroep H. Sterker nog, wij kies het woord u(x1,.,xl) en bereken vervolgens de waarde ervan h = u(h1t..., hl). Dit betekent in het bijzonder dat de genererende elementen h1t...,hl geopend zijn. Cryptografische kracht van het schema De cryptografische kracht van het schema is gebaseerd op de moeilijkheid om, uit gegeven genererende elementen van de subgroep H van de groep Z*n, de periode of volgorde van deze subgroep te bepalen. Als de volgorde van een element zou kunnen worden berekend door een efficiënt algoritme, dan zouden we door het tellen van de orden o rd(h1), ..., ord(hl) van de genererende elementen van de subgroep H, de periode t = t kunnen vinden (H), gelijk aan hun kleinste gemene veelvoud . Dit zou het mogelijk maken om de schaduwfactor h uit deze encryptieoptie te verwijderen door c1 = met(modri) te transformeren, waardoor de decryptieprocedure wordt teruggebracht tot het klassieke RSA-systeem met een openbare encryptiesleutel et. 3. Een andere manier om de subgroep H te definiëren Dit artikel stelt een andere optie voor om de subgroep H te specificeren in het versleutelingsschema dat wordt overwogen. Laten we eerst eens kijken naar het speciale geval ervan, dat verband houdt met het erkende hardnekkige probleem van het bepalen van de kwadraticiteit van het residu van de groep Z*n. Bedenk dat het residu aeZ^ kwadratisch wordt genoemd als er een element xeZ*n is zodat x2= a (modn). Alle kwadratische residuen vormen een subgroep QZ*n van de groep Z*n. Het probleem van het bepalen van de kwadraticiteit van een willekeurig residu van een groep wordt computationeel als hardnekkig beschouwd. Op deze eigenschap is het bekende semantisch sterke Goldwasser-Micali-coderingssysteem gebaseerd. De semantische stabiliteit ervan wordt volledig bepaald door de hardnekkigheid van het probleem van het bepalen van de kwadraticiteit van een residu. Stel dat de parameters p en q worden gekozen met de voorwaarde p, q = 3 (mod 4), dat wil zeggen p = 4k +3, q = 41 +3. In schema's die verband houden met de kwadratische aard van residuen lijkt deze aanname natuurlijk en komt deze vrij vaak voor. Als dit zo is, is de afbeelding p:QZ*n ^ QZ*n, p:x^x2 een bijectie. De subgroep van kwadratische residuen QZ*n van de groep heeft een index van 4 in Z*n, zie bijvoorbeeld. De volgorde o^^2^) is gelijk aan φ(n)/4 = (4k + 2)(41 + 2)/4= 4kl + 2k + 21 + 1, d.w.z. het is een oneven getal. In het bovenstaande versleutelingsschema gaan we ervan uit dat H = QZ*n. Elk element van de subgroep H heeft een oneven volgorde, aangezien de periode t(Z*n), gelijk aan het kleinste gemene veelvoud van de getallen p - 1 = 4k +2 en q - 1 = 41 +2, deelbaar is door 2 , maar niet deelbaar door 4. De maximale mogelijke keuze voor M is een subgroep van orde 4 waarvan de elementen even orde 2 of 4 hebben. Als er een efficiënte manier is om de orde (of op zijn minst de pariteit ervan) van een willekeurig element te berekenen Semantisch sterke encryptieoptie op basis van RSA groep 2*n, dan is het probleem van het bepalen van de kwadraticiteit van een residu effectief opgelost. Het nadeel van het schema met deze keuze is het lage vermogen van de tekstruimte - subgroep M. In feite dupliceert het schema het reeds genoemde bekende Gol-Dwasser-Micali-schema. Bij onze volgende keuze krijgen we meer kansen. Laten we een priemgetal zijn dat als groot genoeg kan worden beschouwd. Laat p en q priemgetallen zijn zodat tenminste één van de getallen p - 1 of q - 1 deelbaar is door s. Er wordt uitgelegd dat men s kan kiezen en dan effectief p of q kan vinden met de gegeven eigenschap. Laten we zeggen dat er naar het getal p wordt gezocht in de vorm 2sx +1. x wordt gewijzigd en de resulterende p wordt gecontroleerd op eenvoud totdat deze eenvoudig blijkt te zijn. Laten we een ondergroep Н = definiëren, bestaande uit s-machten van elementen van de groep 2*n (voor s = 2 is dit de ondergroep QZ*n). Als p = 52k + su + 1 en q = 521 + sv +1 (of q = sl + V +1), waarbij de getallen u en V niet deelbaar zijn door s, dan is de volgorde o^(H) van de ondergroep H met 2 in de groep *n index b2 (of index s, als q = sl + V +1) is gelijk aan B2k1 + Bku + b1n + w>. Deze volgorde is coprime tot s. Dit betekent in het bijzonder dat de elementen van de subgroep H orden hebben die niet deelbaar zijn door s. Als een element zich buiten de subgroep H bevindt, wordt de volgorde ervan gedeeld door s, aangezien s de volgorde van de groep deelt. Als het probleem van het berekenen van de volgorde van een element van de groep 2*n (of het bepalen van de deelbaarheid ervan door s) effectief oplosbaar is in de groep 2*n, dan wordt het probleem van het binnengaan van een subgroep daarin ook effectief opgelost Wanneer we op deze manier de subgroep H kiezen, hebben we de mogelijkheid om als M een cyclische subgroep van orde r = 52 (of orde s) te kiezen. Zo'n subgroep bestaat omdat de volgorde van de groep 2*n, gelijk aan (p-1)^-1) = (52k + vi)^21 + sv) (of (52k + vi)^1 + V)), is deelbaar door 52 (op s). Om H te specificeren, volstaat het om s te specificeren. Bovendien geldt voor elke keuze van subgroep M M*2 =1. Als het bij het decoderen van een bericht m mogelijk is om een element van de vorm tel te verkrijgen, waarbij ed coprime is met s, dan kunnen we, door de gehele getallen y en z te vinden zodat edy + s2z = 1, teL = m berekenen. De genererende elementen van de subgroep H worden echter niet aangegeven bij het specificeren van het type. Als er dus een algoritme is voor het berekenen van de volgorden van de elementen van de groep 2*n, is het niet mogelijk om de periode van de subgroep te berekenen H, wat mogelijk zou zijn geweest in de originele versie van . De cryptografische kracht van de versie van het schema is gebaseerd op de moeilijkheid om de volgorde van het element van de groep 2*n te bepalen. In de voorgestelde versie is deze gebaseerd op de moeilijkheid om de periode van de Z*s-subgroep te bepalen. Semantische sterkte Laat weten dat c = (hm")e (modn) een gecodeerd bericht is in de vorm (2), waarbij heH, m" = m1 of m" = m2. Encryptie wordt als semantisch sterk beschouwd als deze onmogelijk is om effectief te bepalen wat alle -wel correspondeert met c. Het juiste antwoord mt (i = 1 of 2) wordt verkregen als en slechts als cmje bij H hoort. Dit betekent dat de codering semantisch sterk is als en slechts als het probleem zich voordoet in H is feitelijk onbeslisbaar in het geval dat in dit artikel wordt behandeld: het probleem van het binnengaan van de subgroep van s-residuen Z*s. In het speciale geval s = 2 verkrijgen we het bekende, als hardnekkige probleem van het binnengaan van Q2 *n, waarop de semantische kracht van het Goldwasser-Micali-encryptiesysteem en een aantal andere encryptiesystemen is gebaseerd. LITERATUUR Romankov V. A. Nieuw semantisch sterk encryptiesysteem voor openbare sleutels gebaseerd op RSA // Toegepaste discrete wiskunde. 2015. Nr. 3 (29). blz. 32-40. Rivest R., Shamir A., Adleman L. Een methode voor het verkrijgen van digitale handtekeningen en cryptosystemen met publieke sleutels // Comm. ACM. 1978. Vol. 21, nr. 2. P. 120126. Hinek M. Cryptanalyse van RSA en zijn varianten. Boca Raton: Chapman & Hall/CRC, 2010. Song Y. Y. Cryptanalytische aanvallen op RSA. Berlijn: Springer, 2008. Stempel M., Lage R.M. Toegepaste cryptoanalyse. Cijfers breken in de echte wereld. Hoboken: John Wiley & Sons, 2007. Roman"kov V.A. Nieuwe probabilistische codering met openbare sleutels gebaseerd op het RAS-cryptosysteem // Croups, Complexity, Cryptology. 2015. Vol. 7, nr. 2. P. 153156. Romankov V.A. Inleiding tot cryptografie. M.: Forum, 2012. Menezes A., Ojrschot P.C., Vanstone S.A. Handboek voor toegepaste cryptografie. Boca Raton: CRC-pers, 1996. Goldwasser S., Micali S. Probabilistische codering en hoe je mentaal poker speelt, waarbij je alle gedeeltelijke informatie geheim houdt // Proc. 14e symposium over computertheorie, 1982, blz. 365-377. ,
,
, enzovoort, maar ook voor andere interface-elementen.
Maar...