algorytm.org

Wstęp do kryptografii



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Wstęp do kryptografii
Ocena użytkowników:***** / 42
SłabyŚwietny 
Wpisany przez Krzysztof Maćkowiak, 28 lipca 2005 22:22

W dziale tym przedstawione zostaną podstawowe algorytmy kryptograficzne.
Zanim jednak przejdę do ich omówienia chciałbym przedstawić kilka podstawowych pojęć, które będą przewijać się w kolejnych tekstach. Osoby znające podstawy kryptografii spokojnie mogą pominąć ten fragment.
Kryptologia (cryptology) jest dziedziną matematyki najogólniej mówiąc zajmująca się szyframi. Można podzielić ją na kryptografię (cryptography) oraz kryptoanalizę (cryptoanalysis). Kryptografia zajmuję się tworzeniem algorytmów kryptograficznych a kryptoanaliza ich łamaniem.
Tekst jawny, czysty, otwarty (plaintext, opentext) - to tekst, który będzie podlegał szyfrowaniu (M)
Tekst zaszyfrowany, szyfrogram (ciphertext)- to tekst będący wynikiem szyfrowania (C)
Szyfrowanie (encryption) - zamiany tekstu jawnego w tekst zaszyfrowany (E)
E(M)=C
Deszyfrowanie (decryption) - jest procesem odwrotnym a w jego wyniku otrzymujemy tekst jawny (D)
D(C)=M
Aby wiadomość mogła być zaszyfrowana a następnie prawidłowo odszyfrowana musi być spełniona następująca zależność:
D(E(M))=M
Algorytm kryptograficzny - jest to funkcja użyta do szyfrowania i deszyfrowania (czasami są to dwie różne funkcje)
Algorytmy kryptograficzne podzielić możemy na algorytmy symetryczne (z kluczem prywatnym) (symmetric algorithm) lub asymetryczne (z kluczem publicznym). W przypadku tych pierwszych do zaszyfrowania i odszyfrowania wiadomości używamy takiego samego klucza. Wśród algorytmów symetrycznych istnieje podział na algorytmy blokowe(block algorithm) jak i strumieniowe (stream algorithm). W pierwszym przypadku tekst jawny dzielony jest na bloki o odpowiedniej długości (najczęściej 64 lub 128 bitów) a następnie każdy blok jest szyfrowany oddzielnie). W algorytmach strumieniowych - tekst jest szyfrowany bit po bicie lub bajt po bajcie. W przypadku algorytmów asymetrycznych do szyfrowania używamy klucza publicznego (public key) osoby, do której przesyłamy wiadomość a do odszyfrowania osoba ta używa własnego klucza prywatnego(private key).
Algorytmy ograniczone (restricted algorithm)- są to algorytmy kryptograficzne, w których trudność deszyfrowania szyfrogramu oparta jest na ukrywaniu algorytmu w tajemnicy.
Szyfry podstawieniowe (substitution cipher) powstają poprzez podstawienie w miejscu litery w tekście jawnym jakiejś innej litery (wg jakiegoś wzoru) w wyniku powstaje szyfrogram.
Wyróżniamy wśród nich:
  • szyfry monoalfabetyczne,jednoalfabetyczne(monoalphabetic cipher) np. szyfr Cezara, ROT13 - każda litera tekstu jawnego zamieniane jest w inną literę na podstawie jednego alfabetu
  • szyfry polialfabetyczne, wieloalfabetyczne (polyalphabetic cipher) np. szyfr Vigenere`a - pojedyncze litery zastępowane są literami z wielu alfabetów
  • szyfry homofoniczne (homophonic cipher) - jest to szyfr odporny na atak typu analizy częstości występowania poszczególnych liter - cechuje się on tym, ze każda litera z tekstu jawnego może mieć kilka swoich odpowiedników w tekście zaszyfrowanym
  • szyfry poligramowe (polygram cipher) - zamieniane są nie pojedyncze litery lecz np. pary liter jak w przypadku szyfru Playfair`a, szyfru Willa, tablicy Polibiusza, metody
  • nihilistycznej czy też szyfru ADFFGVX.
Szyfry przestawieniowe (transposition cipher) powstają poprzez przestawienie liter tekstu jawnego w określony sposób na skutek czego otrzymujemy szyfrogram.
Szyfrator synchroniczny- klucz generowany jest niezależnie od wiadomości
Szyfrator samosynchronizujący- klucz generowany jest na podstawie ustalonej liczby n poprzednich znaków szyfru

Wszystkie algorytmy zaimplementowane zostały w sposób prosty, aby w jak najlepszy sposób przedstawić samą ideę algorytmów. Zostały napisane w języku C++ i skompilowane pod Borlandem C++.
Poprawiony: 15 sierpnia 2005 23:57
Komentarze
photo
+5 # Mat 2014-06-03 14:00
Szyfr homofoniczny jest odporny na atak typu analizy częstości występowania liter,pod warunkiem że nie znamy języka tekstu jawnego. W innym wypadku mając pare szyfrogramów mozna wydedukować ktorym literom odpowiadają poszczegolne znaki.
Odpowiedz | Odpowiedz z cytatem | Cytować
Dodaj komentarz