• 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

Aruba Cloud - Virtual Private Server VPS
0 głosów
307 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 (606,550 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 (214,940 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 188 wizyt
pytanie zadane 21 stycznia 2019 w PHP przez niezalogowany
0 głosów
1 odpowiedź 2,052 wizyt
pytanie zadane 14 grudnia 2019 w C i C++ przez Szymczak_7 Obywatel (1,860 p.)
0 głosów
1 odpowiedź 472 wizyt
pytanie zadane 31 sierpnia 2019 w C i C++ przez niezalogowany

93,327 zapytań

142,325 odpowiedzi

322,396 komentarzy

62,657 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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...