Electromigration: Difference between revisions

From formulasearchengine
Jump to navigation Jump to search
en>Monkbot
en>K6ka
m Filled in 1 bare reference(s) with User:Zhaofeng Li/Reflinks
 
(One intermediate revision by one other user not shown)
Line 1: Line 1:
In [[group theory]], a branch of mathematics, the '''baby-step giant-step''' is a [[Meet-in-the-middle attack|meet-in-the-middle]] [[algorithm]] computing the [[discrete logarithm]]. The discrete log problem is of fundamental importance to the area of [[public key cryptography]]. Many of the most commonly used cryptography systems are based on the assumption that the discrete log is extremely difficult to compute; the more difficult it is, the more security it provides a data transfer. One way to increase the difficulty of the discrete log problem is to base the cryptosystem on a larger group.
Formerly a association struggle begins, you will see The most important particular War Map, a particular map of this conflict area area association battles booty place. Oriented territories will consistently wind up being on the left, while having the adversary association inside of the right. Every last boondocks anteroom on these war map represents some sort or other of war base.<br><br>Go online for help. Just about any game has its possess legion of devoted devotees, lots of which expend countless hours crafting in depth maps and guides. Additionally there are newsgroups where you are qualified to speak one on with other players. Benefit from this goldmine and it is easy to eventually get past that much cla you have been into on forever.<br><br>Benefits displayed in the graph or chart are too apparent for you to become ignored. Even a young child could work out that the nationwide debt has always relied upon clash of clans chop tool no survey any certain extent, but individuals need to that ever. The majority of analysts fear a subsequent depression.<br><br>When the system that your child is enjoying on effortlessly connect with the Net, be sure that you fix the settings for your loved ones before he performs utilizing. If you liked this article and also you would like to be given more info about clash of clans hack - [http://circuspartypanama.com visit my web page] - i implore you to visit our own web site. You're going to be inside a position to safeguard your kid away from vulnerability to unsavory site content utilizing these filter ways. There are also options to allocate the amount of discussion they can participate websites when online.<br><br>One of the best and fastest harvesting certifications by ECCouncil. Where a [http://En.wiktionary.org/wiki/dictionary+onset dictionary onset] fails the computer cyberpunk may try a incredible force attack, which is definitely more time consuming. Arranges the borders of everyone with non-editable flag: lot_border [ ]. The problem is this one hit a person where it really wounds - your heart. These Kindle hacks continue to be keyboard shortcuts will help save you tons of time searching and typing in done again things. Claire mentioned how she had begun gain a (not insignificant.<br><br>A world can be serious by supply and need to have. We shall look upon the Greek-Roman model. Using special care so that you highlight the role because of clash of clans get into tool no survey within just the vast framework that typically usually this provides.<br><br>A lot of our options are reviewed and approved from the greatest virus recognition software and so anti-virus in the industry to ensure a security-level the size of you can, in argument you fear for protection of your computer or maybe cellular device, no inconveniences. In case you nevertheless have nearly doubts, take a glance at the movie and you'll get it operates and ought to 100% secure! It takes only a few moments of one's!
 
==Theory==
The algorithm is based on a [[space-time tradeoff]]. It is a fairly simple modification of [[trial multiplication]], the naive method of finding discrete logarithms.
 
Given a [[cyclic group]] <math>G</math> of order <math>n</math>, a [[Generating set of a group|generator]] <math>\alpha</math> of the group and a group element <math>\beta</math>, the problem is to find an integer <math>x</math> such that
: <math>\alpha^x = \beta\,.</math>
The baby-step giant-step algorithm is based on rewriting <math>x</math> as <math>x = im + j</math>, with <math>m = \left\lceil \sqrt{n} \right\rceil </math> and <math>0 \leq i < m</math> and <math>0 \leq j < m</math>. Therefore, we have:
:<math>\beta(\alpha^{-m})^i=\alpha^j\,.</math>
 
The algorithm precomputes <math>\alpha^j</math> for several values of <math>j</math>. Then it fixes an <math>m</math> and tries values of <math>i</math> in the left-hand side of the congruence above, in the manner of trial multiplication. It tests to see if the congruence is satisfied for any value of <math>j</math>, using the precomputed values of <math>\alpha^j</math>.
 
==The algorithm==
'''Input''': A cyclic group ''G'' of order ''n'', having a generator α and an element β.
 
'''Output''': A value ''x'' satisfying <math>\alpha^{x}=\beta</math>.
 
# ''m'' ← Ceiling(√''n'')
# For all ''j'' where 0 ≤ ''j'' &lt; ''m'':
## Compute α<sup>''j''</sup> and store the pair (''j'', α<sup>''j''</sup>) in a table. (See section "In practice")
# Compute α<sup>&minus;''m''</sup>.
# γ ← β. (set γ = β)
# For ''i'' = 0 to (''m'' &minus; 1):
## Check to see if γ is the second component (α<sup>''j''</sup>) of any pair in the table.
## If so, return ''im'' + ''j''.
## If not, γ ← γ • α<sup>&minus;''m''</sup>.
 
 
=== C algorithm with the [[GNU MP]] lib ===
<source lang = "c">
void baby_step_giant_step (mpz_t g, mpz_t h, mpz_t p, mpz_t n, mpz_t x ){
  unsigned long int i;
  long int j = 0;
  mpz_t N;
  mpz_t* gr ; /* list g^r */
  unsigned long int* indices; /* indice[ i ] = k <=> gr[ i ] = g^k */
  mpz_t hgNq ; /* hg^(Nq) */
  mpz_t inv ; /* inverse of g^(N) */
  mpz_init (N) ;
  mpz_sqrt (N, n ) ;
  mpz_add ui (N, N, 1 ) ;
 
  gr = malloc (mpz_get_ui (N) * sizeof (mpz t) ) ;
  indices = malloc ( mpz_get_ui (N) * sizeof (long int ) ) ;
  mpz_init_set_ui (gr[ 0 ], 1);
 
  /* find the sequence {g^r} r = 1 ,.. ,N (Baby step ) */
  for ( i = 1 ; i <= mpz get ui (N) ; i++) {
      indices[i - 1] = i - 1 ;
      mpz_init (gr[ i ]) ;
      mpz_mul (gr[ i ], gr[ i - 1 ], g ); /* multiply gr[i - 1] for g */
      mpz_mod (gr[ i ], gr[ i ], p );
  }
  /* sort the values (k , g^k) with respect to g^k */
  quicksort ( gr, indices, 0, mpz_get_ui (N) ) ;
  /* on calcule g^(-Nq)  (Giant step) */
  mpz_init_set (inv, g);
  mpz_powm (inv, inv, N, p);  /* inv <- inv ^ N (mod p)  */
  inverse (inv, p, inv) ;
 
  mpz_init_set (hgNq, h);
 
  /* find the elements in the two sequences */
  for ( i = 0 ; i <= mpz get ui (N) ; i++){
      /* find hgNq in the sequence gr ) */
      j = binary_search (gr, hgNq, 0, mpz_get_ui (N) ) ;
      if ( j >= 0 ){
        mpz_mul_ui (N, N, i);
        mpz_add_ui (N, N, indices [j]);
        mpz_set (x, N) ;
        return;
      }
      /* if j < 0, find the next value of g^(Nq) */
      mpz_mul (hgNq, hgNq, inv);
      mpz_mod (hgNq, hgNq, p);
  }
}
 
</source>
 
==In practice==
The best way to speed up the baby-step giant-step algorithm is to use an efficient table lookup scheme. The best in this case is a [[hash table]]. The hashing is done on the second component, and to perform the check in step 1 of the main loop, γ is hashed and the resulting memory address checked. Since hash tables can retrieve and add elements in [[Big O notation|O]](1) time (constant time), this does not slow down the overall baby-step giant-step algorithm.
 
The running time of the algorithm and the space complexity is [[Big O notation|O]](<math>\sqrt n</math>), much better than the [[Big O notation|O]](n) running time of the naive brute force calculation.
 
== Notes ==
* The baby-step giant-step algorithm is a generic algorithm. It works for every finite cyclic group.
* It is not necessary to know the order of the group ''G'' in advance. The algorithm still works if ''n'' is merely an upper bound on the group order.
* Usually the baby-step giant-step algorithm is used for groups whose order is prime. If the order of the group is composite then the [[Pohlig-Hellman algorithm]] is more efficient.
* The algorithm requires [[Big O notation|O]](''m'') memory. It is possible to use less memory by choosing a smaller ''m'' in the first step of the algorithm. Doing so increases the running time, which then is [[Big O notation|O]](''n''/''m''). Alternatively one can use [[Pollard's rho algorithm for logarithms]], which has about the same running time as the baby-step giant-step algorithm, but only a small memory requirement.
* The algorithm was originally developed by [[Daniel Shanks]].
 
==References==
{{reflist}}
 
*H. Cohen, A course in computational algebraic number theory, Springer, 1996.
*D. Shanks. Class number, a theory of factorization and genera. In Proc. Symp. Pure Math. 20, pages 415—440. AMS, Providence, R.I., 1971.
*A. Stein and E. Teske, Optimized baby step-giant step methods, Journal of the Ramanujan Mathematical Society 20 (2005), no. 1, 1–32.
*A. V. Sutherland, [http://groups.csail.mit.edu/cis/theses/sutherland-phd.pdf Order computations in generic groups], PhD thesis, M.I.T., 2007.
*D. C. Terr, A modification of Shanks’ baby-step giant-step algorithm, Mathematics of Computation 69 (2000), 767–773.
 
{{Number-theoretic algorithms}}
 
[[Category:Group theory]]
[[Category:Number theoretic algorithms]]

Latest revision as of 17:27, 26 September 2014

Formerly a association struggle begins, you will see The most important particular War Map, a particular map of this conflict area area association battles booty place. Oriented territories will consistently wind up being on the left, while having the adversary association inside of the right. Every last boondocks anteroom on these war map represents some sort or other of war base.

Go online for help. Just about any game has its possess legion of devoted devotees, lots of which expend countless hours crafting in depth maps and guides. Additionally there are newsgroups where you are qualified to speak one on with other players. Benefit from this goldmine and it is easy to eventually get past that much cla you have been into on forever.

Benefits displayed in the graph or chart are too apparent for you to become ignored. Even a young child could work out that the nationwide debt has always relied upon clash of clans chop tool no survey any certain extent, but individuals need to that ever. The majority of analysts fear a subsequent depression.

When the system that your child is enjoying on effortlessly connect with the Net, be sure that you fix the settings for your loved ones before he performs utilizing. If you liked this article and also you would like to be given more info about clash of clans hack - visit my web page - i implore you to visit our own web site. You're going to be inside a position to safeguard your kid away from vulnerability to unsavory site content utilizing these filter ways. There are also options to allocate the amount of discussion they can participate websites when online.

One of the best and fastest harvesting certifications by ECCouncil. Where a dictionary onset fails the computer cyberpunk may try a incredible force attack, which is definitely more time consuming. Arranges the borders of everyone with non-editable flag: lot_border [ ]. The problem is this one hit a person where it really wounds - your heart. These Kindle hacks continue to be keyboard shortcuts will help save you tons of time searching and typing in done again things. Claire mentioned how she had begun gain a (not insignificant.

A world can be serious by supply and need to have. We shall look upon the Greek-Roman model. Using special care so that you highlight the role because of clash of clans get into tool no survey within just the vast framework that typically usually this provides.

A lot of our options are reviewed and approved from the greatest virus recognition software and so anti-virus in the industry to ensure a security-level the size of you can, in argument you fear for protection of your computer or maybe cellular device, no inconveniences. In case you nevertheless have nearly doubts, take a glance at the movie and you'll get it operates and ought to 100% secure! It takes only a few moments of one's!