ntru icon indicating copy to clipboard operation
ntru copied to clipboard

Error while generating keys

Open erwincatt opened this issue 4 years ago • 1 comments

$ ./ntru.py -v gen 706 289 129 mykey.priv mykey.pu
b
NTRU(N=706,p=289,q=129) initiated                 
g: Poly(x**692 - x**691 - x**649 - x**630 - x**612
 - x**584 - x**565 - x**554 + x**548 - x**502 + x*
*495 + x**485 + x**468 + x**453 + x**392 + x**307 
- x**298 - x**265 + x**227 - x**209 + x**198 + x**
111, x, domain='ZZ')                              
g coeffs: Counter({1: 11, -1: 11})                
f: Poly(-x**705 - x**704 + x**703 + x**702 + x**70
0 + x**697 - x**696 - x**695 + x**694 - x**692 + x
**690 - x**689 + x**688 + x**687 - x**686 + x**685
 + x**683 + x**680 - x**678 + x**677 - x**676 + x*
*671 - x**670 + x**669 - x**667 - x**664 + x**663 
+ x**662 + x**661 - x**660 + x**659 - x**658 + x**
657 - x**656 + x**655 + x**654 - x**652 + x**651 -
 x**650 - x**649 - x**646 + x**645 - x**644 + x**6
43 + x**642 - x**639 + x**637 - x**634 + x**633 + 
x**632 - x**631 + x**629 - x**628 + x**627 - x**62
6 - x**625 - x**624 + x**623 - x**622 - x**621 + x
**620 - x**618 - x**617 + x**614 + x**612 - x**609
 - x**608 - x**607 + x**606 + x**605 - x**604 - x*
*603 + x**601 - x**600 + x**599 + x**598 - x**593 
- x**591 - x**590 - x**589 - x**588 - x**587 - x**
586 + x**585 + x**581 + x**580 + x**579 + x**578 -
 x**576 - x**575 + x**574 - x**573 - x**572 - x**5
71 - x**569 + x**567 + x**563 + x**562 + x**561 + 
x**559 + x**555 + x**554 - x**553 + x**552 + x**55
1 + x**548 - x**547 + x**546 + x**544 - x**543 + x
**541 - x**540 + x**538 - x**537 - x**535 + x**534
 + x**532 - x**531 + x**529 + x**528 - x**527 - x*
*526 + x**525 - x**524 - x**523 - x**522 - x**521 
- x**520 + x**518 + x**517 - x**515 + x**514 - x**
513 - x**511 + x**510 - x**509 - x**507 - x**506 +
 x**504 + x**500 + x**498 + x**497 + x**495 - x**4
94 + x**491 - x**490 - x**489 + x**488 - x**486 - 
x**485 + x**484 - x**483 + x**482 - x**481 + x**48
0 + x**478 - x**474 + x**473 - x**472 + x**471 + x
**470 + x**469 - x**468 + x**467 + x**466 + x**465
 + x**464 + x**463 - x**462 + x**460 - x**459 - x*
*458 + x**457 - x**456 - x**453 + x**452 + x**451 
+ x**450 + x**448 + x**447 - x**446 + x**445 + x**
444 + x**443 - x**442 + x**440 - x**439 - x**438 +
 x**433 + x**432 - x**431 - x**430 + x**427 - x**4
26 - x**424 + x**421 - x**420 + x**419 + x**417 - 
x**415 - x**414 + x**413 - x**412 + x**410 + x**40
9 - x**408 - x**407 - x**406 + x**404 - x**402 + x
**401 - x**398 + x**397 - x**396 + x**395 - x**393
 + x**392 + x**390 + x**389 + x**387 + x**386 - x*
*385 + x**384 - x**383 + x**381 - x**380 + x**378 
+ x**377 - x**375 + x**374 - x**370 + x**369 + x**
367 + x**366 - x**364 - x**362 - x**361 + x**360 -
 x**359 + x**357 + x**356 + x**355 - x**353 + x**3
50 + x**349 + x**348 - x**347 + x**344 - x**342 + 
x**340 + x**339 + x**338 + x**337 - x**336 + x**33
5 + x**334 + x**333 + x**332 - x**331 + x**328 - x
**327 - x**324 - x**323 - x**322 - x**321 + x**320
 - x**319 + x**315 + x**313 + x**312 - x**311 + x*
*310 - x**309 + x**305 + x**304 + x**302 - x**301 
- x**300 + x**297 + x**296 + x**295 + x**294 - x**
292 + x**290 - x**289 - x**287 + x**286 - x**285 +
 x**282 + x**281 - x**280 + x**279 - x**278 + x**2
76 + x**275 - x**273 + x**271 + x**270 + x**269 + 
x**267 - x**266 - x**264 - x**263 + x**261 - x**25
6 - x**255 - x**254 + x**253 + x**252 + x**251 - x
**250 - x**247 - x**245 + x**243 + x**242 - x**240
 + x**239 - x**238 - x**234 + x**233 - x**232 + x*
*230 - x**229 - x**225 - x**224 - x**223 - x**222 
+ x**221 + x**219 + x**217 - x**215 - x**214 - x**
213 - x**212 + x**209 - x**208 + x**206 + x**203 +
 x**201 - x**200 - x**199 + x**198 - x**197 + x**1
96 - x**195 - x**194 + x**193 - x**192 - x**191 + 
x**190 - x**188 + x**187 - x**186 - x**185 + x**18
4 - x**182 - x**180 - x**179 - x**178 - x**177 - x
**174 - x**173 - x**172 - x**169 - x**168 + x**166
 + x**165 + x**163 + x**160 - x**155 - x**154 + x*
*153 - x**152 - x**150 + x**149 - x**147 - x**146 
- x**145 + x**144 - x**143 + x**141 + x**140 + x**
139 - x**138 + x**137 - x**135 + x**134 - x**133 -
 x**132 - x**131 + x**129 + x**128 - x**126 - x**1
25 + x**122 + x**118 + x**117 + x**116 - x**115 - 
x**114 + x**113 - x**112 + x**110 - x**108 + x**10
7 + x**105 + x**102 - x**101 - x**100 - x**99 - x*
*98 - x**97 - x**92 + x**90 + x**89 - x**88 - x**8
6 + x**85 + x**82 - x**81 + x**80 - x**79 + x**77 
- x**76 - x**75 - x**73 + x**69 - x**65 + x**64 - 
x**62 - x**61 + x**60 - x**59 - x**55 + x**54 - x*
*53 + x**51 - x**50 - x**49 + x**47 - x**46 + x**4
4 - x**43 + x**42 + x**41 - x**40 - x**39 - x**37 
+ x**34 - x**33 - x**31 - x**30 - x**27 - x**25 - 
x**23 + x**22 + x**20 + x**19 - x**17 + x**14 - x*
*13 + x**12 - x**11 - x**10 + x**9 + x**6 + x**3 -
 x**2 + 1, x, domain='ZZ')
f coeffs: Counter({1: 235, -1: 234})
Traceback (most recent call last):
  File "./ntru.py", line 147, in <module>
    generate(int(args['N']), int(args['P']), int(a
rgs['Q']), args['PRIV_KEY_FILE'], args['PUB_KEY_FI
LE'])
  File "./ntru.py", line 43, in generate
    ntru.generate_random_keys()
  File "/data/data/com.termux/files/home/projects/
python/ntru/ntru/ntrucipher.py", line 42, in gener
ate_random_keys
    self.generate_public_key(f_poly, g_poly)
  File "/data/data/com.termux/files/home/projects/
python/ntru/ntru/ntrucipher.py", line 54, in gener
ate_public_key
    self.f_p_poly = invert_poly(self.f_poly, self.
R_poly, self.p)
  File "/data/data/com.termux/files/home/projects/
python/ntru/ntru/mathutils.py", line 41, in invert
_poly
    raise Exception("Cannot invert polynomial in Z
_{}".format(p))
Exception: Cannot invert polynomial in Z_289

erwincatt avatar May 23 '20 14:05 erwincatt

Hello, You can try to modify the invert_poly method to handle your case. The current code is not prepared to invert polynomials in Z_{p^2} where p is other than 2.

jkrauze avatar May 24 '20 11:05 jkrauze