Skip to main content

A Python library for calculating Tate bilinear pairing on the super-singular elliptic curve E: y² = x³ - x + 1 over GF(3^m)

Project description

Introduction

This package is a Python library for calculating the Tate bilinear pairing, especially on the super-singular elliptic curve $E:y^2=x^3-x+1$ in affine coordinates over the Galois Field $\text{GF}(3^m)$. The largest order of $G_1$ supported is 911 bits.

It also provides functions for:

  • Point addition on the elliptic curve group
  • Scalar multiplication ($k \cdot P$).

The Tate pairing implementation follows the paper by Beuchat et al. [3], while the elliptic curve group operations follow Kerins et al. [2].

This package is in Pure Python., working with Python 2.7 and 3.2+.

Performance: One Tate bilinear pairing takes approximately 3.26 seconds on an Intel Core2 L7500 (1.60 GHz) when $|G_1| = 151$ bits.


What is Tate bilinear pairing?

The Tate bilinear pairing is a map that takes two points on an elliptic curve and outputs a nonzero element in the extension field $\text{GF}(3^{6m})$.

The most efficient method for computing it in characteristic three is the $\eta_T$ pairing, introduced by Barreto et al.

For more information, see references [1], [2], [3], and [4].


Usage

1. Tate Bilinear Pairing

from tate_bilinear_pairing import eta

# Initialize for 151-bit order of G1
eta.init(151)

import random
a = random.randint(0, 1000)
b = random.randint(0, 1000)

from tate_bilinear_pairing import ecc
g = ecc.gen()

inf1, x1, y1 = ecc.scalar_mult(a, g)
inf2, x2, y2 = ecc.scalar_mult(b, g)

# Compute Tate pairing
t = eta.pairing(x1, y1, x2, y2)

2. Point Addition

# p1 = [inf1, x1, y1]
# p2 = [inf2, x2, y2]
p3 = ecc.add(p1, p2)

3. Scalar Multiplication

k = random.randint(0, 1000)
p3 = ecc.scalar_mult(k, p1)

References

[1] I. Duursma, H.S. Lee. Tate pairing implementation for hyper-elliptic curves $y^2=x^p-x+d$. Advances in Cryptology - Proc. ASIACRYPT ’03, pp. 111-123, 2003.

[2] T. Kerins, W.P. Marnane, E.M. Popovici, and P.S.L.M. Barreto. Efficient hardware for the Tate pairing calculation in characteristic three. Cryptographic Hardware and Embedded Systems - Proc. CHES ’05, pp. 412-426, 2005.

[3] J. Beuchat, N. Brisebarre, J. Detrey, E. Okamoto, M. Shirase, and T. Takagi. Algorithms and Arithmetic Operators for Computing the $\eta_T$ Pairing in Characteristic Three. IEEE Transactions on Computers, Special Section on Special-Purpose Hardware for Cryptography and Cryptanalysis, vol. 57 no. 11 pp. 1454-1468, 2008.

[4] P.S.L.M. Barreto, S.D. Galbraith, C. O hEigeartaigh, and M. Scott, Efficient Pairing Computation on Supersingular Abelian Varieties. Designs, Codes and Cryptography, vol. 42, no. 3, pp. 239-271, Mar. 2007.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tate_bilinear_pairing-1.0.tar.gz (26.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tate_bilinear_pairing-1.0-py3-none-any.whl (25.0 kB view details)

Uploaded Python 3

File details

Details for the file tate_bilinear_pairing-1.0.tar.gz.

File metadata

  • Download URL: tate_bilinear_pairing-1.0.tar.gz
  • Upload date:
  • Size: 26.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for tate_bilinear_pairing-1.0.tar.gz
Algorithm Hash digest
SHA256 745d8ff1e64f8b23ecfc79eab281a14e5bf0bc36c06d4cc493bf8b24f61f9b80
MD5 e9d61306cd6dfe964861f160bb60e062
BLAKE2b-256 144de5ae7940f157f61fc1d982e8a4e21e1806a61b335747723060da6ced0d63

See more details on using hashes here.

File details

Details for the file tate_bilinear_pairing-1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for tate_bilinear_pairing-1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 56d2ddb0113c12f30d7e1d3d7d7c6f63c4dcd96b2df397bb5d4179634b932deb
MD5 787c78430387b217ffb9efe976794326
BLAKE2b-256 30c7dfe058a0e822c43ef953d1515cb9775c9a3683ff22874814fb5e393053b4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page