tl; dr - Proponujesz algorytm rozciągania klucza, który zamienia 128 bitów danych wejściowych na znacznie większy klucz. Nie jest to tak dobre, jak po prostu użycie znacznie większego klucza o tym samym rozmiarze, chociaż nie jest koniecznie tak słaby, jak 128-bitowe dane wejściowe. To powiedziawszy, Twoja mapa bitowa wygląda na bardzo uporządkowaną, co zdecydowanie sugeruje, że jest znacznie słabsza niż losowo generowana mapa bitowa.
Zgodnie z odpowiedzią @ Blender, po prostu używasz 128 bitów do wygenerowania obrazu. Domyślam się, że chcesz, aby sam obraz liczył się jako klucz większy niż 128 bitów, które wstawiłeś do algorytmu, który go wygenerował. I może.
Konkretnie rzecz biorąc, próbujesz stworzyć algorytm rozciągania klucza, który próbuje rozciągnąć 128 bitów danych wejściowych do znacznie większy klucz. Niekoniecznie jest to bezowocne, ale jest kilka rzeczy, o których należy pamiętać:
-
Algorytm rozciągania klucza może być podatny na brutalną siłę wejścia. Na przykład, nawet jeśli ktoś nie mógł wykonać inżynierii wstecznej algorytmu generowania obrazu, mógłby wypróbować wszystkie 2 $ ^ {128} $ możliwe dane wejściowe, aby wygenerować wszystkie możliwe 2 $ ^ {128} $ możliwe obrazy, a następnie spróbować każdego. Aby temu zapobiec, musisz upewnić się, że algorytm generowania obrazu jest zbyt drogi, aby taki atak był możliwy.
-
Twoje zdjęcie nie wygląda na przypadkowe w lokalnym waga. Oznacza to, że każdy, kto patrzy na kilka pikseli, prawdopodobnie odgadnie sąsiednie piksele z lepszymi niż przypadkowe szansami powodzenia. Oznacza to, że algorytm nie jest pseudolosowy, nawet przeciwko napastnikowi, który nie może wykonać inżynierii wstecznej algorytmu generowania obrazu.
-
Twój obraz nie wygląda na przypadkowy skalę globalną. Oznacza to, że wyświetlane kształty mają globalną geometrię, a obrazy marnują piksele na dobrze zachowanym tle. To ponownie znacznie osłabia pseudolosowość, co może sugerować, że może być łatwo całkowicie złamać.
-
Algorytm rozciągania klucza generujący obraz nie ma żadnej realnej korzyści w porównaniu z jakąkolwiek inną reprezentacją tych samych danych. Owszem, rozciągnięty klawisz wygląda ładnie jak obrazek, ale ta uroda odzwierciedla jedynie jego słabość w porównaniu z losowo generowaną bitmapą.
Ta witryna wydaje się generować losowe czarno-białe mapy bitowe o określonych wymiarach. Na przykład, oto mapa bitowa piksela 250 $ \ razy 250 $:
.
Ta mapa bitowa jest (powinna być) losowa, ponieważ atakujący patrzy na dowolną kombinację jego pikseli nie powinno mieć większych niż równe szans na odgadnięcie, jaki może być inny piksel.
Ile entropii?
Niestety ta strona nie ma MathJax włączone, więc trudno jest bezpośrednio odpowiedzieć na pytanie, aby nie wyglądało dziwnie. Tutaj napiszę odpowiedź tak, jakby MathJax był dostępny.
Zestaw losowo wygenerowanych obrazów RGB o danej długości i szerokości zawiera $$ {\ left (n_ \ text {Red} \ , n_ \ text {Green} \, n_ \ text {Blue} \ right)} ^ {n_ \ text {szerokość} \, n_ \ text {wysokość}} \, \ text {Members} \ ,, $$ gdzie:
-
$ n_ \ text {Red} $ to liczba możliwych wartości wymiaru „ czerwony ” piksela;
-
$ n_ \ text {Zielony} $ to liczba możliwych wartości wymiaru „ zielonego ” piksela;
-
$ n_ \ text {Blue} $ to liczba możliwych wartości wymiaru „ niebieski ” piksela;
-
$ n_ \ text {width} $ jest liczbą pikseli na szerokości; a
-
$ n_ \ text {length} $ to liczba pikseli długości.
Wtedy od entropii to $ \ log_2 {\ left (n_ \ text {Members} \ right)}, $ to byłoby $$ \ begin {align} \ left [\ text {entropy} \ right] & ~ = ~ \ log_2 { \ left ({\ left (n_ \ text {czerwony} \, n_ \ text {zielony} \, n_ \ text {niebieski} \ prawo)} ^ {n_ \ text {szerokość} \, n_ \ text {wysokość}} \ right)} \ [5px] & ~ = ~ {n_ \ text {szerokość} \, n_ \ text {wysokość}} \, \ log_2 {\ left (n_ \ text {czerwony} \, n_ \ text {zielony} \, n_ \ text {Blue} \ right)} \,. \ end {align}
$$
W przypadku obrazu czarno-białego:
-
$ n_ \ text {Red} = 2, $ ponieważ są dwa możliwe wartości dla kanału czerwonego;
-
$ n_ \ text {Green} = n_ \ text {Blue} = 1, $ ponieważ zdefiniowane są wartości kanałów zielonego i niebieskiego aby wyrównać kanał czerwony (tak, że wszystkie piksele są czarne lub białe;
więc entropia byłaby $$ \ left [\ text {entropy} \ right] ~ = ~ {n_ \ text {szerokość} \, n_ \ text {wysokość}} \, \ log_2 {\ left (2 \ times 1 \ times 1 \ right)} ~ = ~ {n_ \ text {szerokość} \, n_ \ text {wysokość}} \,. $$