Bitcoin Forum
May 05, 2024, 10:54:25 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: « 1 2 [3]  All
  Print  
Author Topic: brainwallets da password  (Read 3682 times)
gbianchi
Legendary
*
Online Online

Activity: 3094
Merit: 2648



View Profile
October 29, 2016, 12:24:59 PM
 #41



Pollards Rho Algorithm: This algorithm due to Pollard is a randomized version of the baby step giantstep algorithm It has roughly the same expected running time (radq(n/2) steps) as the baby-step giant-step algorithm, but is superior in that it requires a negligible amount of storage
[/quote]

Il pollard roh funziona su un altro principio, un percorso sui quadrati fino alla chiusura di un "circolo" quadratico
(di qui il nome roh che indica appunto questa convergenza circolare che graficamente assomiglia alla lettera greca roh)
e per questo non necessita la memorizzazione. Ma sfrutta una proprieta' delle forme quadratiche modulari.


GUIDA PER NUOVI UTENTI https://bitcointalk.org/index.php?topic=1241459.0
DO NOT HOLD YOUR BTC ON THIRD PARTY EXCHANGES – BE YOUR OWN BANK https://bitcointalk.org/index.php?topic=945881.0
BITCOIN... WHAT IS IT ? https://bitcointalk.org/index.php?topic=2107660.0
1714949665
Hero Member
*
Offline Offline

Posts: 1714949665

View Profile Personal Message (Offline)

Ignore
1714949665
Reply with quote  #2

1714949665
Report to moderator
1714949665
Hero Member
*
Offline Offline

Posts: 1714949665

View Profile Personal Message (Offline)

Ignore
1714949665
Reply with quote  #2

1714949665
Report to moderator
The block chain is the main innovation of Bitcoin. It is the first distributed timestamping system.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
arulbero
Legendary
*
Offline Offline

Activity: 1915
Merit: 2074


View Profile
October 29, 2016, 12:29:24 PM
Last edit: October 29, 2016, 08:47:48 PM by arulbero
 #42


Il pollard roh funziona su un altro principio, un percorso sui quadrati fino alla chiusura di un "circolo" quadratico
(di qui il nome roh che indica appunto questa convergenza circolare che graficamente assomiglia alla lettera greca roh)
e per questo non necessita la memorizzazione. Ma sfrutta una proprieta' delle forme quadratiche modulari.


Hai ragione, Baby Giants - Pollard - Pollard Roh ... quante distinzioni!

E dire che avevo linkato anche il file http://www.mat.uniroma2.it/~geo2/pollardro.pdf con la spiegazione  Roll Eyes

EDIT: @gbianchi sei sicuro che i moduli quadratici non si usino solo nella fattorizzazione dei numeri primi ma non nel problema del logaritmo discreto?

Io ho guardato qui a pag.7

https://www.google.it/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwiLt--qg4DQAhUJcRQKHfaHDToQFgghMAA&url=http%3A%2F%2Fciteseerx.ist.psu.edu%2Fviewdoc%2Fdownload%3Bjsessionid%3D8EF3BF1FB7E6DA875FF3D8F4904BC0AD%3Fdoi%3D10.1.1.114.5683%26rep%3Drep1%26type%3Dpdf&usg=AFQjCNHbmP8spzOswu9cJWbePXZZmMBspA

e viene descritto il metodo così come lo ho spiegato io, senza quadrati... Anche in questo caso si forma la rho greca.
gbianchi
Legendary
*
Online Online

Activity: 3094
Merit: 2648



View Profile
October 29, 2016, 12:55:32 PM
 #43


Il pollard roh funziona su un altro principio, un percorso sui quadrati fino alla chiusura di un "circolo" quadratico
(di qui il nome roh che indica appunto questa convergenza circolare che graficamente assomiglia alla lettera greca roh)
e per questo non necessita la memorizzazione. Ma sfrutta una proprieta' delle forme quadratiche modulari.


Hai ragione, Baby Giants - Pollard - Pollard Roh ... quante distinzioni!

E dire che avevo linkato anche il file http://www.mat.uniroma2.it/~geo2/pollardro.pdf con la spiegazione  Roll Eyes

EDIT: @gbianchi sei sicuro che i moduli quadratici non si usino solo nella fattorizzazione dei numeri primi ma non nel problema del logaritmo discreto?

Io ho guardato qui a pag.7

https://www.google.it/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwiLt--qg4DQAhUJcRQKHfaHDToQFgghMAA&url=http%3A%2F%2Fciteseerx.ist.psu.edu%2Fviewdoc%2Fdownload%3Bjsessionid%3D8EF3BF1FB7E6DA875FF3D8F4904BC0AD%3Fdoi%3D10.1.1.114.5683%26rep%3Drep1%26type%3Dpdf&usg=AFQjCNHbmP8spzOswu9cJWbePXZZmMBspA

e viene descritto il metodo così come lo ho spiegato io, senza quadrati... Anche in questo caso si forma la pho greca.


Dunque se ricordo bene nei logaritmi discreti si usa un "adattamento" dell'algoritmo che individua un gruppo ciclico
relativo ad una certa base modulare.... non e' uguale all'algoritmo usato per la fattorizzazione, ma il nocciolo
e' sempre l'individuazione di un gruppo ciclico, cosa che permette di evitare la memorizzazione degli elementi gia' setacciati...


GUIDA PER NUOVI UTENTI https://bitcointalk.org/index.php?topic=1241459.0
DO NOT HOLD YOUR BTC ON THIRD PARTY EXCHANGES – BE YOUR OWN BANK https://bitcointalk.org/index.php?topic=945881.0
BITCOIN... WHAT IS IT ? https://bitcointalk.org/index.php?topic=2107660.0
picchio
Legendary
*
Offline Offline

Activity: 2506
Merit: 1120



View Profile
October 29, 2016, 03:40:26 PM
 #44

...
-->                 (a-A) = (B-b)x              mod n (dove n è l'ordine della curva)
                         x = (a-A)(B-b)^-1      mod n
...

Come calcola (B-b)^-1 ?

Waves mi piaceva ora non più.
arulbero
Legendary
*
Offline Offline

Activity: 1915
Merit: 2074


View Profile
October 29, 2016, 04:08:45 PM
Last edit: October 29, 2016, 05:02:08 PM by arulbero
 #45

...
-->                 (a-A) = (B-b)x              mod n (dove n è l'ordine della curva)
                         x = (a-A)(B-b)^-1      mod n
...

Come calcola (B-b)^-1 ?

Per trovare l'inverso di un numero mod n si può usare l'algoritmo di Euclide che si usa di solito per trovare il MCD tra 2 numeri (se poi dal punto di vista dell'implementazione nel calcolatore ci sono dei modi più efficienti non lo so).

Ad esempio:   n = 31  
Qual è l'inverso di 7 modulo 31?

Il problema può essere riscritto così:   7 * s = 1  mod 31  

Ora 7 e 31 sono coprimi, e si può quindi dimostrare che esistono s e t tali che 7s + 31t = 1 (mod 31)

Se riesco a trovare i 2 numeri "s" e "t"  tali che 7s + 31t = 1 (mod 31), allora ho finito, infatti in tal caso

7s = 1 (mod 31) e  s è l'inverso di 7.


L'algoritmo euclideo  (https://en.wikipedia.org/wiki/Extended_Euclidean_algorithm) permette, dati due numeri
 a e b, di trovare il loro MCD mediante una combinazione lineare:

a*s + b*t = MCD(a,b)  (e nel nostro caso MCD(a,b) = 1 poichè sicuramente ogni numero è coprimo con n che è primo!)

Questo è lo pseudocodice:

Quote
function inverse(a, n)
    t := 0;     newt := 1;    
    r := n;     newr := a;    
    while newr ≠ 0
        quotient := r div newr
        (t, newt) := (newt, t - quotient * newt)
        (r, newr) := (newr, r - quotient * newr)
    if r > 1 then return "a is not invertible"
    if t < 0 then t := t + n
    return t
 
      
arulbero
Legendary
*
Offline Offline

Activity: 1915
Merit: 2074


View Profile
October 29, 2016, 04:24:12 PM
Last edit: November 11, 2016, 07:27:48 PM by arulbero
 #46

Dunque se ricordo bene nei logaritmi discreti si usa un "adattamento" dell'algoritmo che individua un gruppo ciclico
relativo ad una certa base modulare.... non e' uguale all'algoritmo usato per la fattorizzazione, ma il nocciolo
e' sempre l'individuazione di un gruppo ciclico, cosa che permette di evitare la memorizzazione degli elementi gia' setacciati...

Allora, riguardando bene:
nella scelta dei parametri a' e b' necessari per passare da un elemento

                                   Y = aP + bQ  al successivo elemento Y'= a'P + b'Q

si usa effettivamente una specie di quadrato (ogni elemento Y viene raddoppiato in Y+Y=2Y , almeno se si trova in una certa parte dello spazio, il che equivale ad elevare alla seconda). La scelta dei parametri (a',b')  è ovviamente deterministica ma soprattutto dipende solo dai valori (a,b) dell'elemento precedente.

Quindi si simula solo la classica passeggiata casuale nello spazio di tutti gli elementi della curva.  

Si può quindi non tenere traccia di tutti gli elementi Y=aP+bQ generati poichè si sa che a un certo punto si deve entrare in un "sottogruppo" ciclico della curva ellittica (la parte chiusa della lettera rho, anche se non è propriamente un sottogruppo nel senso matematico del termine; non appena si genera una collisione gli elementi per forza iniziano a ripetersi a causa del modo univoco con cui viene generato un elemento a partire dal precedente).
L'entrata nel ciclo (o la sua "chiusura", se si immagina visivamente la lettera rho greca) è causata quindi da una prima collisione (vedi paradosso dei compleanni, che avviene in media dopo rad(n) passi), prima collisione però (e qui c'è il punto importante) che non è necessario che sia rilevata (quindi non c'è necessità di memorizzare enormi montagne di dati!). A partire da quella prima collisione si genera quindi (a causa del metodo deterministico) sempre la stessa sequenza di elementi (che formano appunto un ciclo); da notare che il ciclo è una sottosequenza del percorso effettuato per arrivare alla prima collisione, quindi il ciclo stesso non è costituito da più di rad(n) punti.

Per rilevare una qualsiasi ripetizione tra due elementi (percorrendo il ciclo si deve tornare ogni volta sugli stessi elementi, non serve individuare il primo elemento che si ripete, quello che ha chiuso il ciclo!) è sufficiente usare un buffer con pochissimi dati in memoria; i dati vengono aggiornati di tanto in tanto mediante un algoritmo che non impatta in maniera sostanziale sul lavoro computazionale complessivo fino a che non si realizza una collisione anche all'interno del buffer di memoria (collisione che deve arrivare per forza quando si è dentro un ciclo, si registra così una collisione utilizzabile dal punto di vista pratico per ricavare la chiave privata).

L'algoritmo di rilevazione della collisione all'interno del buffer nel caso migliore trova la collisione appena si è entrati nel ciclo, nel caso peggiore impiega un numero di iterazioni ulteriori pari alla lunghezza del ciclo stesso

L'algoritmo è il seguente (tratto da https://maths-people.anu.edu.au/~brent/pd/rpb231.pdf):

Quote
2.1.3 Floyd’s Cycle-finding Algorithm
In order to minimise the storage requirement, a collision-detection algorithm can be applied with a
small penalty in the running time. Collision-detection algorithms do not exploit the group structure and are
generic. In Pollard’s paper, Floyd’s algorithm is applied. It compares each pair of Yi and Y2i for i > 1.
Floyd’s algorithm is based on the following fact.

Theorem 2.3 (Knuth (1997)). For a periodic se-quence Y0, Y1, Y2 · · ·, there exists an i > 0 such that
Yi = Y2i  and the smallest such i lies in the range µ <= i <= µ + λ.

Floyd’s algorithm uses only a small constant amount of storage. The best running-time requires µ
iterations and the worst takes µ + λ iterations.
Pages: « 1 2 [3]  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!