1 Tomasz Siroń Liceum Ogólnokształcące im. Bohaterów Porytowego Wzgórza ul. Jana Pawła II 1 23-300 Janów Lubelski tel. 15872 03 56 Opiekun prowadzący: mgr Wiesława Siczek Walidacja numerów identyfikacyjnych – suma kontrolna w modelu matematycznym. 2. Źródło: http://web.securityinnovation.com/ 1. Źródło: http://www.edmond.nl/typo3temp/pics/9d47d865fe.gif
16
Embed
Walidacja numerów identyfikacyjnych – suma kontrolna w modelu …liceum.fc.pl/pliki/publikacje/walidacja_numerow.pdf · Przykład karty debetowej. Ostatnia liczba jest sumą kontrolną.
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
1
Tomasz Siroń Liceum Ogólnokształcące im. Bohaterów Porytowego Wzgórza ul. Jana Pawła II 1 23-300 Janów Lubelski tel. 15872 03 56 Opiekun prowadzący: mgr Wiesława Siczek
W dzisiejszych czasach mamy do czynienia z dużym przepływem informacji. Często
nie zdajemy sobie nawet sprawy z ich ilości podczas przeprowadzania codziennych zajęć.
Przy występowaniu takiego ogromu danych nie trudno o błąd, czy to poprzez czynnik ludzki,
czy poprzez błąd systemu. Można sobie wyobrazić co by się stało, gdyby podczas wykony-
wania płatności kartą w sklepie, doszło do błędu jednej z cyfry w tak niefortunny sposób, iż
należność zostałaby pobrana z konta innej osoby. Innym bardziej niebezpiecznym przykładem
jest zakłócenie przez np. pracujący telefon komórkowy informacji przepływających przez
magistralę CAN1 w samochodzie osobowym. Mogłoby ono doprowadzić do odcięcia paliwa
podczas jazdy lub detonacji poduszek powietrznych.
W prawdzie ostatni przykład jest dosyć „egzotyczny” i mało prawdopodobny, jednak jest
możliwy. Aby zmniejszyć jego prawdopodobieństwo należy zastosować specjalny algorytm
matematyczny, który sprawdziłby czy zawarte dane są spójne z danymi wejściowymi. Jeśli
wynik tego testu byłby negatywny, algorytm ten miałby (w miarę możliwości) naprawić dane
wyjściowe lub jeśli uszkodzenia pakietu danych byłyby zbyt duże odrzucić je. Najprostszym
sposobem jest zsumowanie (lub wymnożenie) wszystkich liczb i podzielenie ich przez ich
liczbę. Dzięki temu zostanie uzyskana tak zwana suma kontrolna (ang. checksum). Służy ona
do sprawdzania poprawności danych. Wszelako taki algorytm jest bardzo zawodny i ławo go
oszukać. Może ono nastąpić poprzez podstawienie liczby spełniające to równanie lub poprzez
1 CAN (Controller Area Network) – wewnętrzna, szeregowa magistrala komunikacyjna mająca zastosowanie w przemyśle motoryzacyjnym. Jej zadaniem jest połączenie ze sobą głównych systemów samochodu (sterowanie pracą silnika, system ABS, itp).
Rysunek 4. Sieć CAN, z podziałem na podsieci. Źródło: http://www.auobd2.com
Rysunek 3. Przykład karty debetowej. Ostatnia liczba jest sumą kontrolną. Przedstawiony numer karty jednak nie jest poprawny (nie waliduje się algorytmem Luhna). Źródło: http://www.aliorbank.pl
3
tzw. czeski błąd, czyli przestawienie kolejności znaków. Każde dodatkowe działanie matema-
tyczne zwiększa skomplikowanie, niemniej jednak zmniejsza prawdopodobieństwo przekła-
mania sumy kontrolnej. Aby sprawdzić poprawność danych wystarczy, aby komputer (lub
inne urządzenie teleinformatyczne) obliczył sumę kontrolną odebranego pakietu i porównał ją
z sumą zawartą w tym pakiecie.
Rysunek 5. Karta debetowa podczas skanowania w terminalu płatniczym. Źródło: http://www.chfi.com/
4
Suma kontrolna jako cyfra kontrolna
w weryfikacji numerów PESEL, REGON, numer dowodu osobistego, NIP, ISBN etc.
PESEL
Jednym z zastosowań sumy kontrolnej jest tzw. cyfra kontrolna. Znajduje ona zasto-
sowanie w wszelkiego rodzaju numerach, które należą do systemów ewidencyjnych. Przykła-
dem może być numer PESEL. Zawiera on w sobie datę urodzenia, numer serii z oznaczeniem
płci i cyfrę kontrolną.
99010113954 990101 – data urodzenia obywatela (dla osób urodzonych w XX wieku odpowiada dacie uro-dzenia w postaci zapisu RRMMDD), 1395 – numer serii z oznaczeniem płci (ostatnia cyfra nieparzysta „5” oznacza płeć, w tym wypadku mężczyzna), cyfry 1, 3, 5, 7, 9 – oznaczają płeć męską, cyfry 0, 2, 4, 6, 8 – oznaczają płeć żeńską, 4 – cyfra kontrolna.
Rysunek 6. Przykładowy numer PESEL. Numer przedstawiony na przykładzie nie jest jednak poprawny (ostatnia cyfra jest cyfrą kontrolną). Źródło: http://www.nportal.no
5
GENEROWANIE POPRAWNEGO NUMERU PESEL
Znamy już jak wygląda specyfikacja numeru PESEL, nie wiemy jednak jakim algo-
rytmem się „waliduje” . Algorytm ten nie należy do skomplikowanych. Należy założyć, iż
kolejne cyfry numeru są kolejno literami alfabetu. Następnie należy wykonać działanie:
Otrzymujemy więc numer PESEL: 85082301234 i możemy sprawdzić, czy jest on poprawny
za pomocą odpowiednich kalkulatorów on-line.
6
Jak widać numer ten jest poprawny i pokazuje przyjęte przez nas założenia.
Rysunek 7. Sprawdzanie numeru PESEL. Zrzut ekranowy strony internetowej: http://www.kalkulatory.gofin.pl/Sprawdzanie-pesel-weryfikacja-pesel,12.html
Rysunek 8. Numer PESEL można znaleźć wszędzie. Źródło: http://www.kont.umcs.lublin.pl/zdj/lukowicz/lukowicz_pesel.jpg
7
Numer dowodu osobistego obowiązującego na terenie RP
Numer dowodu osobistego różni się znacznie od numeru PESEL zawiera on w sobie
nie tylko cyfry lecz także litery.
AWU105446
AWU – jest to seria dowodu osobistego
105446 – numer dowodu osobistego przy czym pierwsza liczba jest cyfrą kontrolną
Rysunek 10. Przykładowy awers dowodu osobistego z wy-różnionym jego numerem. Numer ten jest poprawny pod względem walidacji. Źródło: http://www.pocztowy.pl
Rysunek 9. Dowody osobiste obowiązujące na terenie RP. Źródło: http://www.express.olsztyn.pl/
8
GENEROWANIE POPRAWNEGO NUMERU DOWODU OSOBISTTEGO
Podczas obliczania cyfry kontrolnej wartości literowe serii dowodu zamienia się na cyfry we-
dług wzoru:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Walidacja numeru plastikowych kart płatniczych, algorytm Luhna
Współcześnie trudno jest wyobrazić
sobie świat, bez obecności krat płatniczych. Ich
posiadanie sprawia, że nie musimy się martwić
o posiadanie przy sobie gotówki, wystarczy
niewielki, 8,5 cm kawałek plastiku.
Karty płatnicze wprowadziły rewolucję
w dokonywaniu płatności, a także przyczyniły
się do zmiany stylu życia współczesnego czło-
wieka. Pierwsze egzemplarze kart płatniczych zaczęły pojawiać się już w pierwszej połowie
XX w. Początkowo karty kredytowe znacznie różniły się od obecnych, nie posiadały one żad-
nych normalizacji. Był to zwykle kawałek metalowej blaszki z wygrawerowanymi danymi
klienta.
W dzisiejszych czasach budowę karty określają odpowiednie normy (z reguły standard ISO
IEC_7812). Standard mówi także o tym jak ma wyglądać numer takiej karty. Zgodnie z nor-
mą ISO długość numeru plastikowej karty to 16 cyfr. Waliduje go algorytm Luhna (nazwa
algorytmu pochodzi od nazwiska niemieckiego naukowca Hansa Petera Luhna pracującego
dla firmy IBM). Podobnie jak w algorytmie walidującym numer PESEL, na końcu ciągu cyfr
doklejana jest cyfra kontrolna. Algorytm ten ma także inne zastosowania, np. numer IMEI3.
3 IMEI – numer identyfikacyjny telefonów komórkowych oraz innych urządzeń pracujących w sieci GSM/UMTS (np. modemów). Jest on indywidualny dla każdego urządzenia.
Rysunek 10 Widok na chip karty płatniczej oraz na pierwsze 8 cyfr jej numeru. Źródło: http://skiingbusiness.com
Przykładowy numer karty płatniczej Visa, który poprawnie waliduje się:
4485 2339 0394 5601 4 – Identyfikator Dziedziny Gospodarki, informuje on o tym jakiej dziedziny dotyczy nu-mer karty. 1, 2 – linie lotnicze; 3 – podróż i rozrywka; 4, 5 – bankowość, finanse; 6 – handel, bankowość; 7 – przemysł naftowy; 8 – telekomunikacja; 9 – do ustaleń według krajowych jednostek normalizacyjnych. 4485 23 – Numer Identyfikacyjny Wydawcy karty, przykładowe numery najpopularniej-szych wydawców to: Amex: 34****, 37****; Discovery: 6011**, 644***, 65****; Master-Card: 51**** - 55****; Visa: 4*****. 39 0394 560 – identyfikator rachunku osobistego, indywidualny dziewięciocyfrowy numer przypisywany do danego rachunku. 1 – cyfra kontrolna. Do walidacji numeru karty stosuje się algorytm Luhana. W uproszczeniu polega on na po-
dwojeniu cyfr będących na parzystych pozycjach w numerze karty. Następnie sprawdzeniu
otrzymanych iloczynów czy są większe od dziewięciu, jeśli tak to od otrzymanych iloczynów
odjąć cyfrę 9. Kolejno sumujemy podwojone, zmienione iloczyny wraz z cyframi będącymi
na pozycjach nieparzystych. Do otrzymanej liczby dodajemy taką liczbę, aby wynik był wie-
lokrotnością liczby 10. Dodawana liczba jest cyfrą kontrolną.
Przykład:
Będziemy generować przykładowy (16cyfrowy) numer karty płatniczej MasterCard popraw-
nie walidujący się.
1. Wybieramy Numer Identyfikacyjny Wydawcy wraz z Numerem Dziedziny Gospodar-
ki. Dla MasterCard będzie to przykładowo 55****. Wybieramy numer 551234 (cyfry
1234 są tu przykładowe).
2. Określamy identyfikator rachunku (9cyfrowa liczba) i dopisujemy go do wcześniej-
szego numeru, przykładowo 551234123456789.
3. Do otrzymanego numeru musimy określić cyfrę kontrolną (x) 551234123456789x.
1. Bit parzystości (ang. Parity Bit) – walidacja informacji przesyłanych za pomocą ma-
gistrali cyfrowych (np. protokół RS232). Jego obecność sprawia, iż przesyłana wia-
domość posiada zawsze parzystą liczbę jedynek. Jest to jeden z najłatwiejszych spo-
sobów walidacji przesyłanych danych. Przed wysłaniem gotowego pakietu danych
wykonuję się na ciągu liczb binarnych alternatywę wykluczającą („albo… albo…”),
jeśli liczba „1” jest nieparzysta bit parzystości przyjmuje wartość „1” w przeciwnym
wypadku wartość „0”
J
a
k
w
N
Jak widać na powyższym rysunku liczba „1” przesyłanych w zakresie danych
(8 bitowa liczba) jest parzysta, a więc bit parzystości przyjmuje wartość L.
2. Cykliczny kod nadmiarowy, CRC (ang. Cyclic Redundancy Check) – system kon-
trolny stosowany przy przesyłaniu lub magazynowaniu danych binarnych. Jego zasto-
sowanie spotyka się przy wielu magistralach, od sieci komputerowych Ethernet przez
magistralę 1-wire4, kończąc na sprawdzaniu poprawności danych zapisanych w sekto-
rze dysku twardego. Kod CRC jest to w skrócie reszta z dzielenia ciągu danych przez
4 1-Wire – protokół komunikacyjny wykorzystywany do przesyłu danych pomiędzy urządzeniami elektronicz-nymi. Nazwa pochodzi od wykorzystywania do przesyłu tylko jednej linii danych (ang. Wire – przewód). W praktyce stosując zasilanie pasożytnicze urządzeń do przesyłu danych oraz zasilania urządzenia wystarczą zaledwie dwa przewody.
Rysunek 13. Przykładowa ramka danych przesyłanych za pomocą protokółu RS232. Litera H oznacza stan wysoki (logiczne "1"), litera L stan niski (logiczne "0"). Źródło: http://maxembedded.files.wordpress.com
14
(n + 1) bitowy dzielnik. Istnieje wiele wersje CRC, różnią się one między sobą wielo-
mianem za pomocą którego dzielimy ciąg danych. Przykładowo dla 3 bitowego kodu
CRC, weźmy dzielnik (3 + 1) czyli 1011. Do serii danych dopisujemy 3 wyzerowane
bity czyli „000”. Następnie ustawiamy dzielnik pod serią danych, jeśli nad najstarszą
pozycją dzielnika mamy „0” przesuwamy dzielnik o tyle miejsc
w prawo, aż napotkamy „1”. Kolejnym krokiem jest wykonanie alternatywy wyklu-
czającej pomiędzy dzielnikiem, a serią danych (z uwzględnieniem wcześniej dopisa-
nych 3 bitów). Następnie otrzymaną serię zapisujemy w nowej linii
i ustawiając pod nią dzielnik analogicznie jak poprzednio i powtarzamy wcześniej opi-
sane czynności, aż do otrzymania liczby danych równych bądź mniejszych od 3.
Przykładowo:
Seria danych: 00110101000111, dzielnik 1011. Seria danych wraz z dopisanymi wyzerowanymi bitami. CRC
00110101000111000
1011
- Przesunięcie dzielnika oraz wykonanie
alternatywy wykluczającej
00011001000111000
1011
- j/w
00001111000111000
1011
- j/w
00000100000111000
1011
- j/w
00000001100111000
1011
- j/w
00000000111111000
1011
- j/w
00000000010011000
1011
- j/w
00000000000101000
1011
- j/w
00000000000000100 100 Otrzymano kod CRC
Powszechnie stosowane kody są znacznie dłuższe (np. kod stosowany w sieci Ethernet jest 32
bitowy).
15
Podsumowanie
Jak widać z powyższych przykładów stosowanie sumy kontrolnej nie zawsze musi być trud-
ne, a potrafi ułatwić pracę rożnych systemów. Przedstawione wyżej rodzaje sum kontrolnych
oraz systemów walidacji danych są tylko niewielkim procentem (bądź jego ułamkiem) sum
stosowanych powszechnie. Występuje wiele innych algorytmów np. MD5 bądź SHA, które są
dużo bardzie skomplikowane. Są to algorytmy kryptograficzne, ich zastosowanie więc nie ma
na celu walidacji danych, ale ich szyfrowanie. Istnieją także inne rozwiązania sum kontrol-
nych, są to np. rozwiązania autorskie stosowane w specyficznych systemach magazynowania
danych lub przy magistralach mających charakter jednostkowy.