• Nie Znaleziono Wyników

Generacja rejestrów przesuwnych szczególnych postaci przy wykorzystaniu dedykowanej platformy programistycznej.

N/A
N/A
Protected

Academic year: 2021

Share "Generacja rejestrów przesuwnych szczególnych postaci przy wykorzystaniu dedykowanej platformy programistycznej."

Copied!
10
0
0

Pełen tekst

(1)

NR 1-2, 2019

Generacja rejestrów przesuwnych

szczególnych postaci przy wykorzystaniu

dedykowanej platformy programistycznej

Paweł AUGUSTYNOWICZ

Instytut Matematyki i Kryptologii, Wydział Cybernetyki

Wojskowa Akademia Techniczna, ul. Gen. S. Kaliskiego 2, 00-908 Warszawa

pawel.augustynowicz@wat.edu.pl

STRESZCZENIE: W niniejszym artykule zaprezentowano i omówiono przygotowaną przez autora platformę programistyczną, umożliwiającą generację rejestrów przesuwnych z funkcjami sprzężenia zwrotnego szczególnych postaci, o nazwie UFfNG (ang. Unified Framework for Nonlinear Feedback Shift Register Generation). Rdzeniem zaprojektowanej platformy programistycznej jest uniwersalny algorytm sprawdzania okresu rejestrów przesuwnych o liniowych i nieliniowych funkcjach sprzężenia zwrotnego, który został z powodzeniem zaimplementowany do użytkowania w heterogenicznych środowiskach obliczeniowych, zawierających procesory CPU, akceleratory graficzne, bądź układy FPGA. W celu zilustrowania efektywności i uniwersalności prezentowanego rozwiązania zamieszczono przykładowe wyniki wydajności dla przedstawicieli poszczególnych platform.

SŁOWA KLUCZOWE: rejestry przesuwne, sekwencje de Bruijna, generacja ciągów pseudolosowych

1. Wstęp

Problem efektywnej generacji binarnych ciągów pseudolosowych o dobrych własnościach statystycznych jest szeroko rozpowszechnionym zagadnieniem znajdującym wiele zastosowań praktycznych, między innymi: w kryptografii, testowaniu oprogramowania oraz symulacji [8], [10]. W swojej sławnej książce o generacji ciągów pseudolosowych S.W. Golomb zaproponował wykorzystanie w tym celu rejestrów przesuwnych o szczególnych postaciach funkcji sprzężenia zwrotnego, tak aby otrzymać sekwencje bitów o pożądanych własnościach statystycznych bądź strukturalnych [8]. Podejście to znalazło wielu

(2)

zwolenników ze względu na swoją efektywność oraz prostotę i z powodzeniem stosowane jest do dziś. W szczególności projektanci szyfrów strumieniowych chętnie wykorzystują rejestry przesuwne w swoich konstrukcjach [3], [5], [7], jednakże – zarówno ze względów bezpieczeństwa, jak i wydajności – niezbędne jest zadbanie o odpowiedni dobór funkcji sprzężenia zwrotnego. Właśnie problem generacji funkcji sprzężenia zwrotnego o szczególnych postaciach dla rejestrów przesuwnych jest zadaniem realizowanym przez przedstawioną w niniejszym artykule platformę programistyczną UFfNG. Ze względu na fakt, iż poszukiwania takie cechują się bardzo dużą złożonością, platforma programistyczna UFfNG w pełni wspiera obliczenia równoległe, rozproszone, obsługę akceleratorów graficznych oraz zawiera moduł możliwy do uruchomienia na układach FPGA (ang. Field Programmable Logic Array).

2. Wprowadzenie teoretyczne

Definicja 1

Rejestr przesuwny z funkcją sprzężenia zwrotnego

f

rzędu

n

można formalnie zdefiniować jako odwzorowanie przestrzeni wektorowej

F

2n w tą samą przestrzeń wektorową postaci:

0 1 1 1 1 0 1 1

( , ,...,

x x

x

n

)

( ,...,

x

x

n

, ( , ,...,

f x x

x

n

)),

(1) gdzie funkcję

f

, posiadającą

n

zmiennych nazywamy funkcją sprzężenia zwrotnego.

O danym rejestrze przesuwnym z funkcją sprzężenia zwrotnego

f

mówimy, że jest liniowy, gdy funkcja

f

jest liniowa oraz że jest nieliniowy, gdy odpowiadająca mu funkcja sprzężenia zwrotnego

f

jest nieliniowa.

Definicja 2

Rozważmy sekwencję wartości binarnych

s

. Sekwencję

s

nazywamy okresową, jeśli dla jakiejś wartości p 0 zachodzi i0:sisi p . Najmniejszą wartość

p

o opisywanej własności definiujemy jako okres sekwencji

s

.

Należy dodać, iż maksymalny okres sekwencji generowanej przez rejestr przesuwny z funkcją sprzężenia zwrotnego rzędu

n

wynosi

2

n. Z punktu widzenia zastosowań, długi okres sekwencji, generowanej przez rejestry przesuwne jest własnością niezwykle ważną.

(3)

Sekwencją de Bruijna rzędu

n

nazywamy sekwencję binarną o okresie

2 ,

n

w której każda krotka -elementowa występuje dokładnie raz. Definicja 4

Zmodyfikowaną sekwencją de Bruijna nazywamy sekwencję otrzymaną z właściwej sekwencji de Bruijna poprzez usunięcie jednego zera z uporządkowanej krotki zawierającej same elementy zerowe.

Zmodyfikowane sekwencje de Bruijna mogą być generowane przez rejestry przesuwne zarówno o liniowej, jak i nieliniowej funkcji sprzężenia zwrotnego. W przypadku rejestrów o liniowej funkcji sprzężenia zwrotnego udowodniono, iż wygeneruje on ciąg będący zmodyfikowaną sekwencją de Bruijna o maksymalnym okresie

2

n

1

wtedy i tylko wtedy, gdy funkcja sprzężenia zwrotnego jest określona przez wielomian pierwotny nad

F

2

[ ]

x

. Jednakże w odniesieniu do rejestrów o nieliniowej funkcji sprzężenia zwrotnego podobne twierdzenia nie zostały skonstruowane, a jedyną metodą poszukiwania funkcji nieliniowych generujących ciągi o podanych właściwościach jest kompleksowe przeszukiwanie kandydujących funkcji sprzężenia zwrotnego. Z jednej strony jest to zadanie niezwykle wymagające obliczeniowo, z drugiej zaś, dla danego rzędu

n

istnieje

B

n

2

2n1n różnych sekwencji de Bruijna, który to fakt został wykazany już w 1894 roku przez francuskiego matematyka Flye Sainte-Marie [4] oraz niezależnie przez G. de Bruijna w 1946 [3].

Kolejnym, interesującym z punktu zastosowań praktycznych oraz teoretycznych rodzajem sekwencji są tak zwane kwadratowe m-sekwencje. Ich właściwości statystyczne oraz strukturalne zostały dokładne opisane po raz pierwszy na początku lat dziewięćdziesiątych i w roku 1994 zaprezentowane na konferencji Fast Software Encryption w Leuven w Belgii [2] i od tamtego czasu są dalej intensywnie badane [1].

Definicja 5

Kwadratową m-sekwencją nazywamy sekwencję bitów wygenerowaną przez rejestr przesuwny o funkcji sprzężenia zwrotnego następującej postaci:

0 1 1 0 1

( , ,...,

n

)

ij i j i j n

f x x

x

a x x

   

(2) Kwadratowe m-sekwencje charakteryzują się bardzo ciekawą postacią generowanej sekwencji, którą można przedstawić w postaci:

0 , 0 1 : k n k i j i k j k i j n s a s s          

. (3)

(4)

W ramach prac nad kwadratowymi m-sekwencjami ustalono sposób algorytmicznej generacji takich ciągów. Ustalono między innymi, że możliwe jest skonstruowanie funkcji boolowskich, które generują pożądaną postać sekwencji poprzez wprowadzenie nieliniowych zaburzeń do funkcji liniowych. Rozważmy funkcję boolowską następującej postaci:

0 1 1 0 1 1

( , ,..., n ) ( , ,..., n ) i i j

f x x xg x x xxx x (4)

dla której ij,1i j, n1 i

g x x

( , ,...,

0 1

x

n1

)

jest funkcją liniową, która generuje sekwencję o pełnym okresie. Oczywistym wnioskiem jest, iż

g x x

( , ,...,

0 1

x

n1

)

musi być określona przez wielomian pierwotny nad

F

2

[ ]

x

.

Dla danego stopnia istnieje

(2

1)

n

n

wielomianów pierwotnych, a zatem

i różnych ciągów przez nie generowanych (określanych często jako ciągi liniowe).

3. Platforma programistyczna UFfNG

Podstawowym zadaniem platform programistycznej UFfNG jest umożliwienie jej użytkownikom efektywnej generacji rejestrów przesuwnych o zarówno liniowych, jak i nieliniowych funkcjach sprzężenia zwrotnego i maksymalnym okresie. Najważniejszym z założeń, które spełnia platforma programistyczna UFfNG jest fakt, iż za wyłącznie jej pomocą można uruchomić obliczenia równolegle na wielu procesorach CPU (ang. Central Processing Unit), dzięki wykorzystaniu interfejsu MPI (ang. Message Passing Interface) lub na akceleratorach graficznych wspierających technologię OpenCL (ang. Open Computing Platform) bądź CUDA (ang. Compute Unified Device Architecture). Jedynie uruchomienie kodu VHDL (ang. Very High Speed Integrated Circuits Hardware Description Language) wymaga dodatkowych kroków związanych z kompilacją i wgraniem oprogramowania na odpowiedni układ FPGA, co jest standardowym trybem postępowania w przypadku tego typu układów.

3.1. Kluczowe funkcjonalności i interfejs

Platforma programistyczna UFfNG udostępnia swoim użytkownikom następujące funkcjonalności:

 sprawdzenie okresu rejestru przesuwnego o dowolnie wybranej funkcji sprzężenia zwrotnego;

(5)

zastosowanie w rejestrach przesuwnych pozwala na generacje ciągów o maksymalnym okresie;

 generacje funkcji sprzężenia zwrotnego o zadanej liczbie jednomianów, z założeniem, że funkcje będzie można generować w porządku leksykograficznym lub odwrotnym porządku leksykograficznym;

 generację funkcji sprzężenia zwrotnego generujących kwadratowe m-sekwencje o maksymalnym okresie;

 sprawdzenie, czy rejestr o zadanej funkcji sprzężenia zwrotnego generuje m-sekwencję kwadratową.

3.2. Algorytm sprawdzania funkcji sprzężenia zwrotnego

Rdzeniem prezentowanej platformy programistycznej UFfNG jest uniwersalny algorytm sprawdzania okresu rejestrów przesuwnych z liniową bądź nieliniową funkcją sprzężenia zwrotnego. Realizuje on sprawdzenie pełności okresu zadanej funkcji poprzez enumerację kolejnych stanów i weryfikację ich niepowtarzalności. Przy jego konstrukcji skorzystano z faktu, iż aby wykazać maksymalność okresu danego rejestru przesuwnego, wystarczające jest wykazanie, iż jego stan początkowy zostanie wygenerowany dokładnie po

2

n

1

krokach.

Na potrzeby dokładnego przedstawienia i przeanalizowania algorytmu testowania funkcji sprzężenia zwrotnego przyjmijmy następujące oznaczenia danych:

 LFSR – bitowa reprezentacja liniowej części funkcji sprzężenia zwrotnego;  NLFSR – bitowa reprezentacja jednomianu nieliniowego;

 N – rząd testowanego rejestru przesuwnego;

//DANE: LFSR; NLFSR; N;

//ALGORYTM

1. state := 0x1;

2. for i=1,…,(2^N)-1:

2.1. b_LFSR := (popcount(state and LFSR)) mod 2;

2.2. b_NLFSR := (popcount(state and NLFSR))/popcount(NLFSR);

2.3. bit := b_LFSR xor b_NLFSR;

2.4. state := (state<<1) xor bit;

2.5. if state==1 then:

(6)

2.6. end if;

3. end for;

4. if state==1 then:

4.1. return true;

5. else

5.1. return false;

6. end if;

Algorytm 1. Pseudokod algorytmu testowania okresu sekwencji generowanej przez rejestr przesuwny o zadanej funkcji sprzężenia zwrotnego

Dla uzupełnienia przyjętych w pseudokodzie algorytmu 1 oznaczeń należy dodać, iż popcount oznacza operację zwracającą liczbę jedynek w danym słowie, mod operację dzielenia z resztą przez liczbę, a zastosowane w punkcie 3.2 dzielenie wykonujemy całkowitoliczbowo, zaokrąglając otrzymany wynik w dół.

3.2.1. Implementacja algorytmu na procesory CPU

Efektywna implementacja algorytmu sprawdzenia okresu rejestru przesuwnego z funkcją sprzężenia zwrotnego zakładała zarówno jego pełne zrównoleglenie na poziomie wątków procesora, jak i wykorzystanie instrukcji wektorowych architektury SIMD (ang. Single Instruction Multiple Data). Dzięki wykorzystaniu instrukcji wektorowych architektury SIMD oferowanych przez najnowsze procesory, proste operacje, takie jak xor, przesunięcia bitowe lub zliczanie liczby jedynek w słowie mogą być wykonywane na nawet 512 bitach jednocześnie zamiast standardowych 32 bądź 64. Przykładowo, na procesorze Intel Core i7-6700, dzięki zastosowaniu tego podejścia każdy z 8 wątków może przetwarzać do 256 bitów równolegle. Wydaje się, iż wzrost wydajności oferowany przez instrukcje wektorowe w pełni uzasadnia ich użyteczność. W przypadku, gdy dany procesor nie obsługuje instrukcji wektorowych, algorytm wykonuje się bez ich wsparcia.

Drugim z usprawnień zastosowanych w algorytmie jest możliwość wymuszenia przez kompilator zastosowania instrukcji asemblerowej popcntq do zliczania liczby jedynek w danym słowie. Efektywność tego rozwiązania jest zdecydowanie większa niż zastosowanie nawet najlepszych rozwiązań algorytmicznych wyznaczania wagi Hamminga.

(7)

Computing Language) [10]. Jednakże powszechnie wspierany aktualnie przez akceleratory graficzne standard w wersji 1.1 nie umożliwia wykorzystania instrukcji popcnt do zliczania liczby jedynek w wektorze. Należy nadmienić, iż możliwość ta będzie dostępna w najnowszej wersji platformy programistycznej OpenCL w wersji 2.0 [11] oraz w rozwiązaniu firmy NVIDIA, obsługiwanym jedynie przez karty tej firmy, to jest CUDA (ang. Compute Unified Device Architecture). W związku z powyższym zdecydowano się wykonać dwie rozdzielne implementacje, jedną w standardzie OpenCL, a drugą w języku CUDA C, których wykorzystanie jest uzależnione od dostępnego akceleratora graficznego. Podejście takie pozwala na pełne wykorzystanie mocy obliczeniowych dostępnych środowisk obliczeniowych. Kolejne usprawnienie, dostępne tylko w implementacji CUDA, to asynchroniczne dosyłanie danych na kartę bez konieczności wstrzymywania obliczeń. Dzięki niemu karta praktycznie w żadnym momencie obliczeń nie czeka na przesłanie nowych danych od jednostki procesorowej, co skutkuje eliminacją opóźnień związanych z interfejsem komunikacyjnym.

3.2.3. Implementacja algorytmu na układy FPGA

Implementacja algorytmu na układ FPGA zakłada na chwilę obecną obsługę wyłącznie układów firmy Intel Altera ze względu na wykorzystanie do obsługi interfejsów komunikacyjnych mikroprocesora Nios II [10]. Dla układów FPGA istnieją bardziej dostosowane do ich specyfiki algorytmy testowania okresu funkcji sprzężenia zwrotnego, jednakże wymagają one przekompilowania układu każdorazowo, gdy następuje zmiana struktury funkcji sprzężenia zwrotnego. Algorytm 1 omija ten problem i nie wymaga rekompilacji na żadnym z etapów swojego działania, co znacznie ułatwia korzystanie z niego osobom niezaznajomionym z językami opisu sprzętu i układami FPGA.

Skorzystanie z mikroprocesora Nios II było niezbędne do osiągnięcia ukrycia procesu komunikacji z jednostką procesorową CPU. W wykonanej dla układów FPGA implementacji, mikroprocesor odbiera dane od interfejsu zewnętrznego i przechowuje je w swoim buforze, czekając na zakończenie aktualnych obliczeń przez układ. W momencie ich zakończenia, natychmiastowo dosyła odpowiednią porcję danych, eliminując problem opóźnień związanych z interfejsem komunikacyjnym.

(8)

4. Uzyskane rezultaty

W tabeli 1 zamieszczono czasy testowania 100 MB potencjalnych funkcji sprzężenia zwrotnego dla różnych długości rejestru przesuwnego dla wybranych przedstawicieli procesorów CPU, akceleratorów graficznych oraz układów FPGA i różnych rzędów testowanych rejestrów przesuwnych.

Tab. 1. Oczekiwany czas testowania paczki 100 MB potencjalnych funkcji sprzężenia zwrotnego dla rejestrów przesuwnych

n Intel Core i7-6700 [s] NVDIA GeForce 980GTX [s] Intel Altera Cyclone V DE0-CV [s] 23 24 25 26 27 28 29 30 114 245 445 857 1626 3136 6056 11687 40 134 203 405 838 2179 3812 - 48 101 206 410 823 1763 6127 -

Przy wykorzystaniu omawianej platformy obliczeniowej wykonywane są między innymi poszukiwania funkcji sprzężenia zwrotnego o szczególnych postaciach, generujących m-sekwencje. Przykładowe funkcje o omawianych właściwościach o stopniu równym 30 to:

1.

x

0

x

1

x

4

x

6

x

8

x

12

x

14

x

16

x

23

x

28

x x

9 22

2.

x

0

x

2

x

3

x

11

x

16

x

21

x

23

x

24

x

28

x

29

x x

25 29

3.

x

0

x

2

x

7

x

14

x

16

x

18

x

22

x

24

x

26

x

29

x x

8 21

Szczegółowe wyniki przedstawiono w pracy [1].

5. Podsumowanie i dalsze prace

Podsumowując, w artykule zaprezentowano główne funkcjonalności oraz możliwości platformy programistycznej UFfNG. W szczególności omówiono algorytm testowania okresu rejestru przesuwnego ze sprzężeniem zwrotnym oraz jego implementacje na różne platformy obliczeniowe.

(9)

dalszych prac nad platformą programistyczną i jej wykorzystaniem planuje się wykonanie następujących przedsięwzięć:

 wsparcie platformy programistycznej OpenCL w wersji 2.0;

 implementacja algorytmu testowania okresu rejestru przesuwnego dla układów FPGA firmy Xilinx;

 przepisanie najbardziej newralgicznych miejsc kodu procesorowego w języku niskopoziomowym;

 dalsze prowadzenie badań nad m-sekwencjami kwadratowymi i wygenerowanie wszystkich funkcji zwrotnych generujących m-sekwencje kwadratowe do stopnia 32.

Literatura

[1] AUGUSTYNOWICZ P.,KANCIAK K.,SZMIDT J., Performance evaluation of NLFSRs

enumeration on heterogenous environments. preprint 2018.

[2] CHAN A.,GAMES J.,RUSHANAN J., On the quadratic m-sequences. Proceedings of Fast Software Encrypton. LNCS, Vol. 809, 1994, pp. 166-173.

[3] DE BRUIJN N.G., A combinatorial problem. Indag. Math., 8, 1946, pp. 461-467. [4] DĄBROWSKI P.,ŁABUZEK G.,RACHWALIK T.,SZMIDT J., Searching for Nonlinear

Feedback Shift Registers with Parallel Computing. Information Processing Letters,

Vol. 114, No. 5, May, 2014, pp. 268-272.

[5] DE CANNIÈRE C.,PRENEEL B., Trivium specifications. eSTREAM, ECRYPT Stream Cipher Project, 2006.

[6] FLYE SAINT-MARIE C., Solution to question nr. 48. L’intermèdiaire des Mathématiciens 1, 1894, pp. 107-110.

[7] GAMMEL B.,GÖTTFERT R.,KNIFFLER O., Achterbahnd-128/80. ECRYPT Stream Cipher Project Report, 2006.

[8] GOLOMB S.W., Shift Register Sequences. Holden-Day, Inc., San Francisco, 1967. [9] HELL M.,JOHANSSON T., MEIER W., Grain – A Stream Cipher for Constrained

Environments. International Journal of Wireless and Mobile Computing, Vol. 2,

No. 1, 2007, pp. 86-93.

[10] RIVAT J.,SÁRKÖZY A., On Pseudorandom Sequences and Their Application. In: General Theory on Information Transfer and Combinatorics, LNCS, Vol. 4123, Springer, 2006, pp. 343-361.

(10)

Źródła elektroniczne

[11] https://www.khronos.org/opencl/

[12] https://www.altera.com/products/processors/overview.html

Unified Framework for NLFSR Generation

ABSTRACT: This article describes crucial functionalities of a Unified Framework for Nonlinear Feedback Shift Register Generation (UFfNG). The core of UFfNG framework is a unified algorithm for Nonlinear Feedback Shift Registers (NLFSR) enumeration which can be effectively implemented in heterogeneous environments including CPUs, GPUs and FPGAs. For the sake of completeness, implementation and efficiency results for each platform are discussed and presented.

KEYWORDS: Nonlinear Feedback Shift Registers, deBruijn sequences, pseudo-random numer generation

Cytaty

Powiązane dokumenty

Dostępna również z wbudowanym zamkiem cylindrycznym (ref. BB) Dostępna również do systemów drzwi składanych CF i otwieranych na zewnątrz

W umowach zawieranych przez Ministerstwo Zdrowia z podmiotami wyłonionymi w postępowaniu konkursowym na realizację programów zdrowotnych, których przedmiotem jest zakup

Jest tylko jedno zastrzeżenie: – Większościowym lub wyłącznym udziałowcem spółki musi pozostać organ założycielski, czyli władze samorządowe – mówi Ewa Kopacz....

Przyjmując zatem, że gromadzenie danych osobowych sprawców przestępstw, mimo zatarcia ska- zania, jest możliwe przez Policję w bazie Krajowego Systemu Informacyjnego Policji,

Celem konkursu było wyłonienie i wyróżnienie – na podstawie odpo- wiednich kryteriów – najlepszych zespołów pracowników prowadzą- cych rejestr lekarzy i lekarzy

4.1}, że każdy s-bito- wy ciąg zasadniczy jest realizowalny na co najwyżej n = s - 1 przerzutni- kach, Wobec tego ciąg kodowy zrealizowany przez licznik

 Opracowanie koncepcji PESEL - tworzenie systemu w oparciu o podstawowe i powszechne ewidencje osobowe (ewidencja stanu cywilnego, dowodów osobistych, dane adresowe, zmiana imion i

Ustawienie trybu pracy drzwi automatycznych z kluczem, wskaźnikiem błędów LED, stopień ochrony IP40, wkładka bębenkowa z otwieraniem jednym kluczem, 2× klucz / pasuje do