You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@milagro.apache.org by cm...@apache.org on 2019/09/17 11:14:43 UTC
[incubator-milagro-dta] branch crypto-benchmarks created (now
edb3abc)
This is an automated email from the ASF dual-hosted git repository.
cmorris pushed a change to branch crypto-benchmarks
in repository https://gitbox.apache.org/repos/asf/incubator-milagro-dta.git.
at edb3abc Add Crypto Benchmark test
This branch includes the following new commits:
new edb3abc Add Crypto Benchmark test
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
[incubator-milagro-dta] 01/01: Add Crypto Benchmark test
Posted by cm...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
cmorris pushed a commit to branch crypto-benchmarks
in repository https://gitbox.apache.org/repos/asf/incubator-milagro-dta.git
commit edb3abc2d55dd50424e27e8de5134abdb0ab28b8
Author: Christopher Morris <ch...@morris.net>
AuthorDate: Tue Sep 17 12:14:16 2019 +0100
Add Crypto Benchmark test
---
libs/crypto/bench_test.go | 124 ++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 124 insertions(+)
diff --git a/libs/crypto/bench_test.go b/libs/crypto/bench_test.go
new file mode 100644
index 0000000..d4372d1
--- /dev/null
+++ b/libs/crypto/bench_test.go
@@ -0,0 +1,124 @@
+package crypto
+
+import (
+ "encoding/hex"
+ "log"
+ "testing"
+ "time"
+)
+
+//Results on I9 laptop
+// BLSKeys took 1.367643ms
+// AESCBCEncrypt took 1.831µs
+// EncapsulateEncrypt took 163.514139ms
+// DecapsulateDecrypt took 165.586105ms
+// AESCBCDecrypt took 1.791µs
+// BLSSign took 652.917µs
+// BLSVerify took 3.441072ms
+
+//Test_Bench1 Some simple benchmarks to show speeds of the different crypto functions
+func Test_Bench1(t *testing.T) {
+ start := time.Now()
+ elapsed := time.Since(start)
+
+ var SIKEpk []byte
+ var SIKEsk []byte
+ var BLSsk []byte
+ var BLSpk []byte
+ var C2 []byte
+ var C1 []byte
+ var EK []byte
+ var P3 []byte
+ var S []byte
+
+ SEEDHex := "0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f30"
+ SEED, _ := hex.DecodeString(SEEDHex)
+ // AES-256 Key
+ KHex := "af5f8452d644d131c35164fee8c8300fb29725b03b00eaef411c823293c469d8"
+
+ // AES IVs
+ IV1Hex := "de4724534df5f50160a28cf3b3caec80"
+ IV2Hex := "a08576336500e79b2593dc4c10b0f36c"
+
+ // Messsage to encrypt and sign. Note it is zero padded.
+ PHex := "48656c6c6f20426f622120546869732069732061206d6573736167652066726f6d20416c696365000000000000000000"
+
+ // Generate SIKE keys
+
+ start = time.Now()
+ for i := 0; i < 100; i++ {
+ _, SIKEpk, SIKEsk = SIKEKeys(SEED)
+ }
+ elapsed = time.Since(start)
+ log.Printf("SIKEKeys took %s", elapsed/100)
+
+ // Generate BLS keys
+
+ start = time.Now()
+ for i := 0; i < 1000; i++ {
+ _, BLSpk, BLSsk = BLSKeys(SEED, nil)
+ }
+ elapsed = time.Since(start)
+ log.Printf("BLSKeys took %s", elapsed/1000)
+
+ // Encrypt message
+ K, _ := hex.DecodeString(KHex)
+ IV1, _ := hex.DecodeString(IV1Hex)
+ P1, _ := hex.DecodeString(PHex)
+
+ start = time.Now()
+ for i := 0; i < 1000; i++ {
+ C1 = AESCBCEncrypt(K, IV1, P1)
+ }
+ elapsed = time.Since(start)
+ log.Printf("AESCBCEncrypt took %s", elapsed/1000)
+
+ // Encrypt AES Key, K, and returned encapsulated key used for
+ // encryption
+ IV2, _ := hex.DecodeString(IV2Hex)
+ P2 := K
+
+ start = time.Now()
+ for i := 0; i < 100; i++ {
+ _, C2, EK = EncapsulateEncrypt(P2, IV2, SIKEpk)
+ }
+ elapsed = time.Since(start)
+ log.Printf("EncapsulateEncrypt took %s", elapsed/100)
+
+ // Decapsulate the AES Key and use it to decrypt the ciphertext.
+ // P2 and P3 should be the same. This value is the AES-256 key
+ // used to encrypt the plaintext P1
+
+ start = time.Now()
+ for i := 0; i < 100; i++ {
+ _, P3 = DecapsulateDecrypt(C2, IV2, SIKEsk, EK)
+ }
+ elapsed = time.Since(start)
+ log.Printf("DecapsulateDecrypt took %s", elapsed/100)
+
+ K2 := P3
+
+ start = time.Now()
+ for i := 0; i < 1000; i++ {
+ _ = AESCBCDecrypt(K2, IV1, C1)
+ }
+ elapsed = time.Since(start)
+ log.Printf("AESCBCDecrypt took %s", elapsed/1000)
+
+ // BLS Sign a message
+ start = time.Now()
+ for i := 0; i < 1000; i++ {
+ _, S = BLSSign(P1, BLSsk)
+ }
+ elapsed = time.Since(start)
+ log.Printf("BLSSign took %s", elapsed/1000)
+
+ // BLS Verify signature
+ start = time.Now()
+ for i := 0; i < 1000; i++ {
+ _ = BLSVerify(P1, BLSpk, S)
+ }
+ elapsed = time.Since(start)
+ log.Printf("BLSVerify took %s", elapsed/1000)
+
+}