----- "Jeffrey Walton" <noloa...@gmail.com> wrote: > Hi Doug, > > > I am trying to figure out where the padding bits > > are applied? > > ... > > The two private keys are described in a different > > number of bytes. Since the 2nd generated private > > key is shown in 20 bytes i.e. 160 bits, is it assumed > > that the MS 3 bits are 0? > > The public key, also known as the public element, is a point Q(x, y) > on the curve of order R. R is the order of the subgroup generator G, > where G is a point called the Base Point. The private key, also known > as the private exponent, x, is an integer such that Q = xG. Q = xG is > similar to RSA's e*d mod n === 1. It's the trap door function - easy > to compute one way, hard to compute the other way. > > All this means is that x, Q_x, and Q_y don't have to be 163 bits. > We'd > expect them to be slightly less (since this is a finite field), but > not too much less since there is a relationship between R, the points > on the curve (U), and the cofactor (S). The relationship is U = R * > S, > and the cofactor (S) is kept small so that subgroup order (R) is > large.
So I can understand why the byte descriptions of the keys differ in length. In your response you indicate that the public key description consists of two 163 bit numbers representing a point on the curve (Q_x, Q_y). Given a display like: pub: 04:01:9c:db:21:d7:49:17:cd:c4:93:56:13:e4:07: c2:af:1b:43:70:a3:b9:03:f1:26:f8:7b:1d:02:69: 21:39:cf:d5:28:ee:3b:44:3c:c5:64:7c:aa How can you tell where the delineation between Q_x and Q_y is? Is Q_y always described in 163 bits and Q_x is appended to that? Is there ever any padding inserted onto the numbers output by the -text option? What is the magic decoder ring to the display provided by the -text option? > > A fellow named Marcel Martin wrote a really nice Curve and Parameter > generator. According to Marcel, the program correctly counts points > on > the curve (which can be tricky business). For Marcel's Elliptic Curve > Builder (ECB), see http://www.ellipsa.eu/. For a small Curve and > Domain Parameter writeup, see > http://www.cryptopp.com/wiki/Elliptic_Curve_Builder. > > Jeff > > On Tue, Oct 20, 2009 at 3:36 PM, Doug Bailey <dbai...@digium.com> > wrote: > > I have been trying to generate keys for a ECDSA system that uses a > sect163k1 key > > pair. > > > > In generating some of the key sets, I notice that the printed length > of the keys > > differ when using the -text command option. Since openssl is > displaying a 163 > > bits in a byte-wise display, I am trying to figure out where the > padding bits are > > applied? > > > > For example: > > > > ~$ sudo openssl ecparam -genkey -name sect163k1 -out testkey1.pem > > ~$ sudo openssl ec -text -in testkey1.pem > > read EC key > > Private-Key: (163 bit) > > priv: > > 00:c4:5c:43:a9:17:57:89:ff:e8:fe:f9:d6:b0:d4: > > 52:fc:d4:6b:71:98 > > pub: > > 04:01:9c:db:21:d7:49:17:cd:c4:93:56:13:e4:07: > > c2:af:1b:43:70:a3:b9:03:f1:26:f8:7b:1d:02:69: > > 21:39:cf:d5:28:ee:3b:44:3c:c5:64:7c:aa > > ASN1 OID: sect163k1 > > writing EC key > > -----BEGIN EC PRIVATE KEY----- > > MFICAQEEFMRcQ6kXV4n/6P751rDUUvzUa3GYoAcGBSuBBAABoS4DLAAEAZzbIddJ > > F83Ek1YT5AfCrxtDcKO5A/Em+HsdAmkhOc/VKO47RDzFZHyq > > -----END EC PRIVATE KEY----- > > > > ~$ sudo openssl ecparam -genkey -name sect163k1 -out testkey2.pem > > ~$ sudo openssl ec -text -in testkey2.pem > > read EC key > > Private-Key: (163 bit) > > priv: > > 65:06:db:ea:88:38:0d:50:37:9e:3a:92:77:15:ca: > > 3c:76:d0:00:12 > > pub: > > 04:07:7d:dd:c1:89:12:75:42:d6:9e:06:79:24:e1: > > 8b:4a:49:df:57:ac:e2:04:95:a1:2f:b9:dc:a7:8c: > > 5f:c3:18:a5:a7:9c:fc:9d:be:7f:e6:d7:4e > > ASN1 OID: sect163k1 > > writing EC key > > -----BEGIN EC PRIVATE KEY----- > > MFICAQEEFGUG2+qIOA1QN546kncVyjx20AASoAcGBSuBBAABoS4DLAAEB33dwYkS > > dULWngZ5JOGLSknfV6ziBJWhL7ncp4xfwxilp5z8nb5/5tdO > > -----END EC PRIVATE KEY----- > > > > The two private keys are described in a different number of bytes. > > > > Since the 2nd generated private key is shown in 20 bytes i.e. 160 > bits, is it > > assumed that the MS 3 bits are 0? > > > > How is the public key partitioned? Where are the padding bits added > in this > > display? > > > > Thanks > > Doug Bailey > > > ______________________________________________________________________ > OpenSSL Project > http://www.openssl.org > User Support Mailing List > openssl-users@openssl.org > Automated List Manager majord...@openssl.org ______________________________________________________________________ OpenSSL Project http://www.openssl.org User Support Mailing List openssl-users@openssl.org Automated List Manager majord...@openssl.org