Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

openssl problem: Validacija MUPCAGradjani preko MUPCARoot

[es] :: Security :: openssl problem: Validacija MUPCAGradjani preko MUPCARoot

[ Pregleda: 2876 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Goran Rakić
Beograd

Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon openssl problem: Validacija MUPCAGradjani preko MUPCARoot28.08.2010. u 18:17 - pre 165 meseci
Preuzeo sam sertifikate sa http://ca.mup.gov.rs/sertifikati.html i konvertovao ih u PEM format skriptom:
#!/bin/bash
hash=`openssl x509 -in $1 -inform DER -noout -hash`
echo "Izvozim $1 kao $hash.0"
openssl x509 -in $1 -inform DER -out $hash.0 -outform PEM


Dobio sam efd6650d.0 (Gradjani) i fc5fe32d.0 (Root). Sada pokušam da validiram ovaj drugi:
$ openssl verify -CApath . efd6650d.0
error 7 at 0 depth lookup:certificate signature failure
16206:error:04077068:rsa routines:RSA_verify:bad signature:rsa_sign.c:255:
16206:error:0D0C5006:asn1 encoding routines:ASN1_item_verify:EVP lib:a_verify.c:173:


Ako izvezem svoj lični sertifikat sa lične karte kao qualified.cer, konvertujem ga u PEM i validiram:
$ openssl verify -CApath . qualified.pem
qualified.pem: /CN=MUPCA Gradjani/O=MUP Republike Srbije/L=Beograd/C=Republika Srbija (RS)
error 7 at 1 depth lookup:certificate signature failure
16258:error:04077068:rsa routines:RSA_verify:bad signature:rsa_sign.c:255:
16258:error:0D0C5006:asn1 encoding routines:ASN1_item_verify:EVP lib:a_verify.c:173:


Dakle on je preko MUPCAGradjani OK (nivo 0), ali openssl kaže da je potpis pogrešan za MUPCAGradjani preko MUPCARoot (nivo 1).

Kada uporedim otisak za MUPCARoot ili MUPCAGradjani, dobijam neke različite vrednosti, zar to ne bi trebalo da bude isto?
$ openssl x509 -noout -inform DER -in MUPCARoot.crt -fingerprint
SHA1 Fingerprint=6B:91:31:15:18:02:BB:98:AF:F0:87:B0:50:57:1C:62:B4:39:5D:AF
$ openssl x509 -noout -in fc5fe32d.0 -fingerprint
SHA1 Fingerprint=3B:41:B1:C7:66:FE:34:C1:17:24:B8:5D:45:42:7B:AC:48:5B:9E:FD

dok na sajtu piše: Hash vrednost SHA1 4f a8 d4 90 4a 9c cc 0b 8d 43 69 53 14 ee 3e 7f b5 a4 72 f2

Pregled pomoću openssl x509 -nameopt multiline,utf8,-esc_msb -noout -text -in $1 daje razumne podatke za sva tri sertifikata nakon konverzije u PEM format, ako to nešto znači.

U Windowsu nakon što sam dodao ova dva sertifikata kroz IE, dvoklikom kada otvorim qualified.cer prikazuje ga kao validan i daje sha1 otisak (tamo je to u polju Thumbprint) za ova dva CA sertifikata baš kao što je i napisano na sajtu.

Zna li neko gde grešim u korišćenju openssl?


PS - Razmišljao sam između ovog, Linux/Unix serveri i servisi, Zaštita i foruma Kriptografija i enkripcija, na kraju zaključio da će ovde najpre neko znati odgovor na pitanje.


http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

Goran Rakić
Beograd

Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: openssl problem: Validacija MUPCAGradjani preko MUPCARoot29.08.2010. u 10:34 - pre 165 meseci
Pitao sam na OpenSSL users listi, evo prvog odgovora:

Citat:

OpenSSL removes the leading zero when creating the corresponding ASN1_INTEGER structure thus leading to the fact that computed DER of this structure and the original one will be different!!

In your case, the certificate you are trying to verify has a DER encoded serial number "00 00 65". So, OpenSSL will create an ASN1_INTEGER with a value of "00 65". And in the course of the certificate signature verification, this structure will be encoded to DER which will lead to a encoded value of "00 65". Thus, the generated DER of the CertInfo will be different from the original one, which explains why the signature verification fails.

In file cryptoasn1a_int.c, at lines 244 and 314, there is an if block that removes any leading zeros. Commenting out these blocks solves the DER encoding mismatch but the verification still fails because the computed digest is different from the recovered one.

I will continue my investigation to find all the culprits.


Izgleda da mi preostaje da koristim NSS, a to verovatno znači pisanje posebnog alata... ;( ;(
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

Goran Rakić
Beograd

Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: openssl problem: Validacija MUPCAGradjani preko MUPCARoot30.08.2010. u 17:23 - pre 165 meseci
Kada sam se susreo sa problemom bio sam siguran da ja nešto tu pogrešno radim. Ostavljao sam mogućnost da sam naišao na neku grešku u openssl (sumnjao da je Ubuntu opet nešto „zakrpio“), ali ni na kraj pameti mi nije bilo da korenski CA sertifikati nisu sasvim saglasni sa RFC 3280, iako vodeće implementacije gutaju taj problem.

Na openssl-users listi nedugo po postavljanju pitanja Mounir Idrassi iz IDRIX-a je objavio privremeno rešenje, ali uz ogradu kako to krši dokumentovani standard. Uz primenjenu zakrpu "openssl verify" kaže "OK" za MUPCAGradjani, kao i za oba javna X.509 sertifikata koje sam uz pomoć skripte FreeSteel izvukao sa lične karte.

Objavio sam izmenjeni openssl paket u Ubuntu PPA: https://launchpad.net/~grakic/+archive/serbian-eid (kompiliranje je u toku)

Zakon o elektronskom potpisu nalaže akreditovanim sertifikacionim telima da izdaju sertifikate u skladu sa RFC 3280 "Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile".

Problem nastaje u serijskom broju korenskih sertifikata, binarno 00 00 00 64 i 00 00 00 65. RFC međutim određuje serijski broj kao INTEGER polje, i to pozitivan ceo broj (4.1.2.2). Na njega se primenjuje ASN.1 BER kodiranje (X.690). Tačka 8.3.2 tu kaže:
Citat:

... the bits of the first octet and bit 8 of the second octet:
a) shall not all be ones; and
b) shall not all be zero.
NOTE – These rules ensure that an integer value is always encoded in the smallest possible number of octets.


Hm, kako onda serijski broj sertifikata počinje sa "00 00 00" i da li je sertifikati "00 64" i "00 00 00 64" imaju „isti“ serijski broj?

Sada kada programi koji poštuju RFC zanemare vodeće nule u serijskom broju i samim tim sračunaju drugi hash sertifikata sertifiakti prestaju da budu validni. Korenski sertifikati sertifikacionog tela Pošte nemaju ovaj problem, korenski sertifikati sertifikacionog tela PKS imaju isti problem.
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

EArthquake

Član broj: 20684
Poruke: 884
*.dynamic.sbb.rs.



+67 Profil

icon Re: openssl problem: Validacija MUPCAGradjani preko MUPCARoot30.08.2010. u 19:26 - pre 165 meseci
heh, problem nije nimalo bezazlen
ko bi rekao...

good find :)
 
Odgovor na temu

[es] :: Security :: openssl problem: Validacija MUPCAGradjani preko MUPCARoot

[ Pregleda: 2876 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.