#7746: Blum-Goldwasser probabilistic encryption
----------------------------+-----------------------------------------------
   Reporter:  mvngu         |       Owner:  mvngu                               
     
       Type:  enhancement   |      Status:  needs_work                          
     
   Priority:  major         |   Milestone:  sage-4.3.1                          
     
  Component:  cryptography  |    Keywords:  Blum-Goldwasser, probabilistic 
encryption
Work_issues:                |      Author:  Minh Van Nguyen                     
     
   Upstream:  N/A           |    Reviewer:                                      
     
     Merged:                |  
----------------------------+-----------------------------------------------
Changes (by mvngu):

  * status:  needs_review => needs_work


Comment:

 Replying to [comment:2 wdj]:
 > It seems to violate the "defensive programming" (or "assume all people
 are stupid") principle that if the is some very bad input which can be
 entered, then you should assume that it *will* be entered at some point.

 It looks to me that there needs to be a function called, say,
 "has_blum_prime(lbound, ubound)" in the module `sage/crypto/util.py`. This
 function checks to see if there is a Blum prime within the specified lower
 and upper bounds. One could then use `has_blum_prime()` to first check for
 the presence of a Blum prime within a specified interval, prior to
 actually computing a random Blum prime.
 [[BR]][[BR]]


 > Can someone point to a page in the Developers' manual of something where
 html generation is explained? I don't see the changes in

 After you have applied the patch and rebuilt your branch, you could use
 the following command to rebuild the HTML version of the reference manual:
 {{{
 ./sage -docbuild reference html
 }}}
 [[BR]]


 > Is SageObject the best superclass for this?

 No, not really. Ideally, the best parent class for the class
 `BlumGoldwasser` is `sage.crypto.cryptosystem.PublicKeyCryptosystem`. I'll
 see what I can do to make `sage.crypto.cryptosystem.PublicKeyCryptosystem`
 the parent class of `BlumGoldwasser`.
 [[BR]][[BR]]


 > Is the best place for blum_blum_shub in util or in a stream cipher
 module?

 I think the best place for the function `blum_blum_shub()` is in a module
 for pseudorandom number generators. The module that comes to mind is
 `sage/misc/prandom.py`. But all functions in that module are exported to
 the global name space, so those functions are available upon starting
 Sage, without having to explicitly import them. Adding more functions to
 the global name space is not a good idea. One wants to minimize Sage's
 loading time, but also to have a default set of common useful functions.
 Adding `blum_blum_shub()` to `sage/misc/prandom.py` and polluting the
 global name space is not my intention. The Blum-Blum-Shub pseudorandom bit
 generator is not as commonly used as, say, `random()` and `randint()`. For
 now, `blum_blum_shub()` fits OK in `sage/crypto/util.py`. Functions in
 that module are not exported by default, which is why you see lots of
 import statements throughout examples in that module.

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/7746#comment:3>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

--

You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sage-trac?hl=en.


Reply via email to