• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Dodawanie time() do publicznego klucza PHP

Object Storage Arubacloud
0 głosów
208 wizyt
pytanie zadane 18 kwietnia 2019 w PHP przez MrxCI Dyskutant (8,260 p.)
Witam, mój klucz publiczny składa się z 50 losowych znaków dla użytkownika, nawet dla kluczy do resetowania/ weryfikacji hasla, szansa na kolizje jest ekstrymalnie mała, ale jednak istnieje.

 

Czy dodanie do tego time() co zmniejszy znacznie szanse na kolizje jest dobrym pomyslem?

Jak zareagują użytkownicy, osoby znające się na php gdy w wygenerowanym tokenie zobaczą surową funkcję time() doklejoną?

hashowanie nie wchodzi w grę przy time, ponieważ ma ograniczoną liczbę znaków i szansa na kolizje znów jest większa.
komentarz 19 kwietnia 2019 przez Comandeer Guru (600,810 p.)

hashowanie nie wchodzi w grę przy time, ponieważ ma ograniczoną liczbę znaków i szansa na kolizje znów jest większa.

Jaka jest szansa, że np. w SHA-512 dojdzie do kolizji? Wydaje mi się, że problem jest mocno hipotetyczny. 

2 odpowiedzi

+3 głosów
odpowiedź 18 kwietnia 2019 przez Ehlert Ekspert (212,670 p.)
wybrane 19 kwietnia 2019 przez MrxCI
 
Najlepsza

https://github.com/ramsey/uuid to powinno załatwić sprawę.

–1 głos
odpowiedź 18 kwietnia 2019 przez dawidek08 Początkujący (290 p.)
Moim zdaniem dobry pomysł aby na przykład wygenerowany losowo klucz pomnożyć przez coś zależne od czasu. Jak chcesz mieć pewność że klucz się nie powtórzy to zapętl to i zatrzymaj pętlę gdy klucz nie będzie figurował w bazie danych.
komentarz 18 kwietnia 2019 przez dawidek08 Początkujący (290 p.)
Możesz zamienić czas na jednego inta i losowe liczby z niego wyrwać i te liczby sklejone dadzą mnożnik.
komentarz 18 kwietnia 2019 przez MrxCI Dyskutant (8,260 p.)
Mnożenie zwiększy długość ciągu, a sam czas jest bardzo unikatowy i niepowtarzalny (nie cofa się, to dobrze). szukanie czy nie istnieje obecny w bazie to dodatkowe obciążenie, szczególnie w dużych bazach, preferuje żeby generowało unikatowy za pierwszym razem.

 

Rozchodzi mi się głównie o to, czy doklejenie surowego time() (ujawnienie użytkowniki, bo to on posiada klucz na email, kiedy w unix time zostalo utworzone jego konto) jest dobrym pomyslem i nie będzie nikt o to robić problemów jak zobaczy na konczu tokenu swoją czas utworzenia konta w unix, ani czy to nie wpłynie na poziom bezpieczeństwa aplikacji
komentarz 18 kwietnia 2019 przez dawidek08 Początkujący (290 p.)
Doklejenie może zmniejszyć bezpieczeństwo. Gdy haker zna datę to będzie mu łatwiej złamać klucz. Upuść wodze wyobraźni i wymyśl jakiś algorytm przetwarzający czas np. ten wynik z mojego poprzedniego pomysłu to klucz z niego utwórz z 50 znaków z których pierwszy ma indeks jakiejś cyfry z czasu.
komentarz 18 kwietnia 2019 przez MrxCI Dyskutant (8,260 p.)

Ale tworzenie ciągu losowego na podstawie czasu to prawie to samo co hashowanie, wciąż istnieje możliwość wystąpienia kolizji.

Jaki klucz będzie łatwiej złamać jeśli kluczem są losowe bity?


$privateKey = bin2hex(random_bytes(25));

Myślę że w tym przypadku czas utworzenia go (bez mikro czasu, z dokładnością do sekundy) nie ma żadnego znaczenia mającego jakikolwiek wpływ.

komentarz 18 kwietnia 2019 przez dawidek08 Początkujący (290 p.)
Ten ciąg będzie przecież zawsze inny, odpowiednio skracany, mnożony. Zrób sobie tablicę np. z literami i losuj litery na podstawie czasu.
komentarz 18 kwietnia 2019 przez dawidek08 Początkujący (290 p.)
Masz do dyspozycji potężny PHP oraz swój umysł. Wymyśl algorytm który nigdy nie wygeneruje tego samego.

Podobne pytania

0 głosów
0 odpowiedzi 161 wizyt
pytanie zadane 21 stycznia 2019 w PHP przez niezalogowany
0 głosów
1 odpowiedź 1,522 wizyt
pytanie zadane 14 grudnia 2019 w C i C++ przez Szymczak_7 Obywatel (1,860 p.)
0 głosów
1 odpowiedź 216 wizyt
pytanie zadane 31 sierpnia 2019 w C i C++ przez niezalogowany

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...