@RN_
@T3s|4_
@eyedeekay
@orignal
@postman
@zzz
%Liorar
%acetone
%mareki2p
%snex
+FreefallHeavens
+Onn4l7h
+Onn4|7h
+altec_lansing
+leopold
+nyaa2pguy
+poriori
+profetikla
+qend-irc2p
+r00tobo
+uop23ip
Arch
Danny
Holmes
Irc2PGuest28384
Irc2PGuest63277
Irc2PGuest71791
Irc2PGuest84270
NiceBoat_
OfficialCIA_
Over1
SilentWave
U1F642
Wikk_0
ahiru
cims
dr|z3d
eyedeekay_
floatyfloatilla
mahlay
makoto
mesh
n2
nilbog
not_bob_afk2
pory
r00tobo[2]
red
sektorchef
thetia
user_
utp
vivid_reader56
dr|z3d
something about X25519, zzz?
dr|z3d
testJbigi:
dr|z3d
[echo] Running jbigi benchmarks...
dr|z3d
[java] Native: libjbigi-linux-zen3_64.so (JBIGI v4, GMP 6.3.0)
dr|z3d
[java]
dr|z3d
[java] X25519 (256-bit):
dr|z3d
[java] modPow (base^exp mod m), 100000 iterations:
dr|z3d
[java] Native: 607.0 ms (0.006 ms/op)
dr|z3d
[java] Java: 567.1 ms (0.006 ms/op)
dr|z3d
[java] Result: native 1.1x slower
dr|z3d
[java]
dr|z3d
[java] modPowCT (constant-time base^exp mod m), 100000 iterations:
dr|z3d
[java] Native: 622.2 ms (0.006 ms/op)
dr|z3d
[java] Java: 493.6 ms (0.005 ms/op)
dr|z3d
[java] Result: native 1.3x slower
dr|z3d
[java]
dr|z3d
[java] modInverse (a^-1 mod m), 100000 iterations:
dr|z3d
[java] Native: 298.3 ms (0.003 ms/op)
dr|z3d
[java] Java: 568.0 ms (0.006 ms/op)
dr|z3d
[java] Result: native 1.9x faster
dr|z3d
[java]
dr|z3d
[java] ElGamal (2048-bit):
dr|z3d
[java] modPow (base^exp mod m), 1000 iterations:
dr|z3d
[java] Native: 1090.2 ms (1.090 ms/op)
dr|z3d
[java] Java: 1090.1 ms (1.090 ms/op)
dr|z3d
[java] Result: native 1.0x slower
dr|z3d
[java]
dr|z3d
[java] modInverse (a^-1 mod m), 1000 iterations:
dr|z3d
[java] Native: 12.1 ms (0.012 ms/op)
dr|z3d
[java] Java: 38.9 ms (0.039 ms/op)
dr|z3d
[java] Result: native 3.2x faster
zzz
interesting results
dr|z3d
testJbigi:
dr|z3d
[echo] Running jbigi benchmarks...
dr|z3d
[java] Native: libjbigi-linux-zen3_64.so (JBIGI v4, GMP 6.3.0)
dr|z3d
[java]
dr|z3d
[java] ------------------------------------------------------------
dr|z3d
[java]
dr|z3d
[java] X25519 (256-bit):
dr|z3d
[java] modPow (base^exp mod m), 100000 iterations:
dr|z3d
[java] Native: 520.4 ms (0.005 ms/op)
dr|z3d
[java] Java: 518.2 ms (0.005 ms/op)
dr|z3d
[java] Result: Native is marginally slower
dr|z3d
[java]
dr|z3d
[java] modPowCT (constant-time base^exp mod m), 100000 iterations:
dr|z3d
[java] Native: 627.7 ms (0.006 ms/op)
dr|z3d
[java] Java: 598.1 ms (0.006 ms/op)
dr|z3d
[java] Result: Native is marginally slower
dr|z3d
[java]
dr|z3d
[java] modInverse (a^-1 mod m), 100000 iterations:
dr|z3d
[java] Native: 299.9 ms (0.003 ms/op)
dr|z3d
[java] Java: 612.6 ms (0.006 ms/op)
dr|z3d
[java] Result: Native is 2.0x faster
dr|z3d
[java]
dr|z3d
[java] ------------------------------------------------------------
dr|z3d
[java]
dr|z3d
[java] ElGamal (2048-bit):
dr|z3d
[java] modPow (base^exp mod m), 5000 iterations:
dr|z3d
[java] Native: 5671.0 ms (1.134 ms/op)
dr|z3d
[java] Java: 5676.0 ms (1.135 ms/op)
dr|z3d
[java] Result: Native is marginally faster
dr|z3d
[java]
dr|z3d
[java] modPowCT (constant-time base^exp mod m), 5000 iterations:
dr|z3d
[java] Native: 7370.0 ms (1.474 ms/op)
dr|z3d
[java] Java: 5646.5 ms (1.129 ms/op)
dr|z3d
[java] Result: Native is 1.3x slower
dr|z3d
[java]
dr|z3d
[java] modInverse (a^-1 mod m), 5000 iterations:
dr|z3d
[java] Native: 64.9 ms (0.013 ms/op)
dr|z3d
[java] Java: 206.3 ms (0.041 ms/op)
dr|z3d
[java] Result: Native is 3.2x faster
zzz
dr|z3d, not buying your 25519 modPow times, should be ~3x faster than ElG, and similar to the crypto.XDHGenerateTime router stat
zzz
you have it as over 200x faster than ElG
dr|z3d
first stab at it, zzz, feel free to review the code and tell me where I went wrong :)
zzz
off on other stuff, sorry. but it's definitely not single-digit microseconds
dr|z3d
main thing is to make this stuff, the jbigi build and testing, easily accessible as ant targets.
dr|z3d
ok, thanks, will investigate further.
dr|z3d
the unit tests -- mockito, scala, junit.. do you use those? are they useful?
zzz
I don't, however the CI probably does at least the junit, ask eyedeekay
zzz
however the CI may be semi-broken atm, making it useless, not sure of the status
dr|z3d
ok. probably not that useful, but I've refactored the tests to run properly as an ant target and download the necessary dependencies if not available, and then generate an html report.
zzz
idk is your guy, however I'd not be in favor of downloading dependencies from ant
orignal
what is he trying to do with modpow?
orignal
I used to have 16 Mb table for this
dr|z3d
dunno if we got any further, but still, new outout for ant testJbigi:
dr|z3d
testJbigi:
dr|z3d
[java]
dr|z3d
[java] • Native: libjbigi-linux-zen3_64.so (JBIGI v4, GMP 6.3.0)
dr|z3d
[java] ------------------------------------------------------------
dr|z3d
[java]
dr|z3d
[java] • ElGamal (ElG) — 2048-bit exp, 1060-bit inverse
dr|z3d
[java]
dr|z3d
[java] modPow (base^exp mod m (2048-bit)), 5000 iterations:
dr|z3d
[java] Native: 5540.7 ms (1.108 ms/op)
dr|z3d
[java] Java: 5535.3 ms (1.107 ms/op)
dr|z3d
[java] Result: Native is marginally slower
dr|z3d
[java]
dr|z3d
[java] modPowCT (constant-time base^exp mod m (2048-bit)), 5000 iterations:
dr|z3d
[java] Native: 7182.5 ms (1.437 ms/op)
dr|z3d
[java] Java: 5495.9 ms (1.099 ms/op)
dr|z3d
[java] Result: Native is 1.3x slower
dr|z3d
[java]
dr|z3d
[java] modInverse (a^-1 mod m (1060-bit)), 5000 iterations:
dr|z3d
[java] Native: 67.5 ms (0.013 ms/op)
dr|z3d
[java] Java: 412.5 ms (0.082 ms/op)
dr|z3d
[java] Result: Native is 6.1x faster
dr|z3d
[java]
dr|z3d
[java] ------------------------------------------------------------
dr|z3d
[java]
dr|z3d
[java] • EdDSA (Ed25519) — curve arithmetic, no BigInteger.modPow
dr|z3d
[java] - jbigi has no effect here (uses radix-2^25.5 limbs)
dr|z3d
[java]
dr|z3d
[java] sign (5000 iterations):
dr|z3d
[java] Result: 204.4 ms (0.041 ms/op)
dr|z3d
[java] verify (5000 iterations):
dr|z3d
[java] Result: 349.3 ms (0.070 ms/op)
dr|z3d
[java] sign + verify: 553.7 ms (0.111 ms/sv)
dr|z3d
[java]
dr|z3d
[java] ------------------------------------------------------------
dr|z3d
[java]
dr|z3d
[java] • ECIES (X25519) — JDK native KeyAgreement (JEP 324)
dr|z3d
[java] - Montgomery ladder, jbigi has no effect
dr|z3d
[java]
dr|z3d
[java] X25519 not available (requires Java 11+): X25519 KeyPairGenerator not available
dr|z3d
[java]
dr|z3d
[java] ------------------------------------------------------------
dr|z3d
probably attempting to compare X25519 Native vs Java is a fool's errand.
zzz
maybe. we use the noise lib, not NBI, for X25519 stuff. We do use NBI for Ed25519 and Elligator2
zzz
so I may have steered you wrong when I mentioned X25519, not Ed25519 or Elligator2
dr|z3d
yeah, probably. were you trying to get rid of me for a few days? :)
zzz
the whole montgomery vs. edwards thing
zzz
dont vanish just because I'm a skeptic, maybe I'm wrong