On Friday, August 5, 2016 at 12:32:58 PM UTC+1, Martin Albrecht wrote:
>
> Hi Sage developers, 
>
> *tl;dr* Fplll 5.0 is about to hit the streets. It’s a major improvement 
>  over Fplll 4.* which we currently ship with Sage. To update we need to 
>  change the user interface of the function `IntegerMatrix.BKZ`. I 
>  suggest to drop Sage’s own interface to Fplll in favour of the official 
>  Fpylll interface, which I propose to make a standard package. 
>
> [X ] Yes 
> [ ] No 
> [ ] Maybe 
>
> # Details # 
>
> We are getting ready to release Fplll 5.0.0. Here are some highlights 
> from the changelog 
> https://raw.githubusercontent.com/fplll/fplll/master/NEWS 
>
> - fplll switched to more open development model on GitHub 
>   with a bigger development community 
>
> - public implementation of all techniques collectively known as BKZ 2.0. 
>   BKZ in block size 80 is a reasonably easy computation now. 
>
> - build system overhaul, automated tests, test coverage increase 
>
> - Self-Dual BKZ and Slide reduction 
>
> - faster, recursive enumeration implementation 
>
> - Gaussian lattice sieving 
>
> - optional support for doubledouble and quaddouble 
>
>   https://github.com/fplll/fplll 
>
> If you care only about LLL then this release won’t change much for you, 
> because Sage doesn’t ship libqd. But if you care about stronger lattice 
> reduction this release makes a huge difference. 
>
> # Sage Interface # 
>
> (a) Sage’s public interface is through the functions `IntegerMatrix.LLL` 
> and 
> `IntegerMatrix.BKZ` and a few functions on the integer lattice class. 
>
> (b) These call some in `libs.fplll` 
>
> The the interface for calling BKZ has changed and does not match Sage’s 
> interface (a). We could write a translation layer, but I’d prefer to 
> simply change it. Users will want to use the new interface. 
>
> I also suggest to replace (b) completely with 
>
>   https://github.com/fplll/fpylll 
>
> It’s a Cython interface to fplll + additional Python code which started 
> as a fork of Sage’s Cython interface. It’s much more flexible and 
> powerful than what Sage has to offer. For example, it (easily) allows to 
> implement BKZ and LLL variants in pure Python. Strong lattice reduction 
> is a major area of research for cryptographers at the moment and this 
> library aims to make experimentation for this easy. 
>
> It is mainly written and maintained by me. Lattice-based cryptography 
> will be research area for the foreseeable future and this code is a key 
> component of this research for me, so I plan to maintain and improve it 
> over the next few years. I do commit to maintaining it in Sage, too. 
>
> The code has tests which are run on every check in. 
>
> Yes, No, Maybe? 
>
> Cheers, 
> Martin 
>
> PS: Here is some random benchmark: 
>
> $ ./latticegen q 100 50 30 b > ~/test_lattice.txt 
>
> new fplll 
>
> $ time ./fplll -a bkz -s ../strategies/default.json -bkzautoabort -v -b 60 
> ~/test_lattice.txt > /dev/null 
> Entering BKZ: 
> block size:  60, flags: 0x0021, max_loops:   0, max_time: 0.0, autoAbort: 
> (1.0000,  5), 
>
> End of BKZ loop    0, time =    12.832s, r_0 = 1.80e10, slope = -0.056809, 
> log2(nodes) = 28.142067 
> End of BKZ loop    1, time =    25.072s, r_0 = 1.07e10, slope = -0.050003, 
> log2(nodes) = 29.120454 
> End of BKZ loop    2, time =    36.836s, r_0 = 1.00e10, slope = -0.048468, 
> log2(nodes) = 29.623702 
> End of BKZ loop    3, time =    48.944s, r_0 = 9.42e9, slope = -0.048443, 
> log2(nodes) = 29.991966 
> End of BKZ loop    4, time =    58.176s, r_0 = 9.42e9, slope = -0.048230, 
> log2(nodes) = 30.207781 
> End of BKZ loop    5, time =    67.904s, r_0 = 9.42e9, slope = -0.048134, 
> log2(nodes) = 30.414377 
> End of BKZ loop    6, time =    78.040s, r_0 = 9.42e9, slope = -0.048500, 
> log2(nodes) = 30.611421 
> End of BKZ loop    7, time =    87.780s, r_0 = 9.42e9, slope = -0.048197, 
> log2(nodes) = 30.784449 
> End of BKZ loop    8, time =    96.468s, r_0 = 9.42e9, slope = -0.047948, 
> log2(nodes) = 30.910345 
> End of BKZ loop    9, time =   117.404s, r_0 = 9.42e9, slope = -0.048360, 
> log2(nodes) = 31.053923 
> End of BKZ loop   10, time =   143.812s, r_0 = 9.42e9, slope = -0.048163, 
> log2(nodes) = 31.180644 
> End of BKZ loop   11, time =   164.652s, r_0 = 9.42e9, slope = -0.047898, 
> log2(nodes) = 31.286769 
> End of BKZ loop   12, time =   203.492s, r_0 = 9.20e9, slope = -0.048275, 
> log2(nodes) = 31.392854 
> End of BKZ loop   13, time =   236.376s, r_0 = 9.20e9, slope = -0.047879, 
> log2(nodes) = 31.501613 
> End of BKZ loop   14, time =   284.636s, r_0 = 9.20e9, slope = -0.048120, 
> log2(nodes) = 31.608491 
> End of BKZ loop   15, time =   310.472s, r_0 = 9.20e9, slope = -0.047999, 
> log2(nodes) = 31.696863 
> End of BKZ loop   16, time =   328.624s, r_0 = 9.20e9, slope = -0.048367, 
> log2(nodes) = 31.795334 
> End of BKZ loop   17, time =   340.940s, r_0 = 9.20e9, slope = -0.048103, 
> log2(nodes) = 31.876720 
> End of BKZ loop   18, time =   350.668s, r_0 = 9.20e9, slope = -0.048362, 
> log2(nodes) = 31.940467 
> End of BKZ: success 
>
> fplll 4.* in Sage: 
>
> $ time fplll -a bkz -bkzautoabort -v -b 60 -bkzmaxloops 1 
> ~/test_lattice.txt 
>
> -> killed after 80 minutes without finishing the first tour. 
>
> -- 
>
> _pgp: https://keybase.io/martinralbrecht 
> _www: https://martinralbrecht.wordpress.com 
> _jab: martinr...@jabber.ccc.de <javascript:> 
> _otr: 47F43D1A 5D68C36F 468BAEBA 640E8856 D7951CCF 
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at https://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.

Reply via email to