Объявление

Свернуть
Пока нет объявлений.

Corona QR програмирование сертификата не проходящего проверку

Свернуть
X
 
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения

  • Zahlesel
    Участник ответил
    другой декодировщик показывает сигнатуру, но не в нужном формате этот и её не показывает
    http://certificate.fyicenter.com/195...er.html#Result

    зато кей айди вычитывает
    Код:
    authorityKeyIdentifier:
    keyid:71:10:32:AE:74:71:7B:54:8E:F1:D6:AB:62:54:AE:FC:3E:C0:BB:16
    q2®tq{TŽñÖ«bT®ü>À» не похоже на b'v\x14\xb3<:\xf8\x1bc'
    или dhSzPDr4G2M=
    формат не HEX

    ВЫВОД
    в общем остается только ждать, что антикоронщики выкладут в сеть приваткий и им потом генерировать паспорта до мая 2023

    Прокомментировать:


  • Zahlesel
    Участник ответил
    https://8gwifi.org/PemParserFunctions.jsp
    CRT
    раскодировав сертификат
    Subject DN
    ST=Berlin, SERIALNUMBER=CSM026164168, OID.2.5.4.97=DTE-3023531445, STREET=Nordufer 20, OID.2.5.4.17=13353, L=Berlin, CN=Robert Koch-Institut, OU=Elektronischer Impfnachweis, O=Robert Koch-Institut, C=DE
    видим инфу о нем
    этаже инфа выложена на странице
    https://dgcg.covidbevis.se/tp/

    сертификат используется для валидации тк несет в себе х,у и онже паблик кий
    http://certificate.fyicenter.com/195...er.html#Result

    в приваткие есть еще и позиция Д
    1.2.840.10045.3.1.7
    Public key (x):
    2fc796f7f989523457d06ebe740d8cf431eab80c79434ef01c 5759d2f3395b39
    Public key (y):
    1b38c35e6b65f68a2acb67e46685102e0cc67a48dec68f9b91 acea3cf7eeca14
    Private key (d):
    80978650ca024777eeadcb12d6268e80ae688be77bdfc5cd5d 010a51f65f9d80

    Прокомментировать:


  • Zahlesel
    Участник ответил
    интересный конечно парзер онлайн



    закинул приватный ключ норвежца

    https://8gwifi.org/ecsignverify.jsp


    Код:
    -----BEGIN EC PRIVATE KEY-----
    MHcCAQEEIICXhlDKAkd37q3LEtYmjoCuaIvne9/FzV0BClH2X52AoAoGCCqGSM49
    AwEHoUQDQgAEL8eW9/mJUjRX0G6+dA2M9DHquAx5Q07wHFdZ0vM5WzkbOMNea2X2
    iirLZ+RmhRAuDMZ6SN7Gj5uRrOo89+7KFA==
    -----END EC PRIVATE KEY-----
    и получил Public Key
    Код:
    -----BEGIN PUBLIC KEY-----
    MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEj5vmeQB6NRCKOcML6c g2XJp8CNjs+9O9
    JBZxubYx03aUMDNn8mEedex2kY5qtm3ie/bHrsrMtbI3QQnkX1nNAA==
    -----END PUBLIC KEY-----
    такого в немецкой базе нет, значит нет KEY ID значит просто левак какойто, не оригинал

    в енмецкой базе все паблик ключи начинаются в 90% на MFkwEwY и пара MIIB

    Прокомментировать:


  • Zahlesel
    Участник ответил
    эта инфа проверки ключей с голланского сервера
    Код:
    {"kid":"dhSzPDr4G2M=","publicKey":"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsLa/zRhSxxsmrPE/RwPNKXGblvI4JrdqfPNYpuPn3TpkExb/vod11MuW7BismmErZcJC+oWuItW1UH+wcXHJcQ=="},
    https://8gwifi.org/jwkconvertfunctions.jsp

    Нажмите на изображение для увеличения.   Название:	Bildschirmfoto 2021-08-20 um 00.37.59.png  Просмотров:	0  Размер:	133.1 Кб  ID:	5748

    для получения паблик ключа хватает координат.паблик кий сходится


    остается вопрос. для каких нужд требуется сертификат или сертификат и подпись?

    thumbprints (x5t and x5t#S256)
    вырешивается из сертификата это всё для JWK
    "x5c" (X.509 Certificate Chain)

    Does x 509 certificate contain private key?
    No matter its intended application(s), each X. 509 certificate includes a public key, digital signature, and information about both the identity associated with the certificate and its issuing certificate authority (CA): ... The private key is kept secure, and the public key is included in the certificate.

    Прокомментировать:


  • Zahlesel
    Участник ответил
    ах да, на той странице еще огромный джейсон с кей_ид


    "x5t#S256" JSON Web Signature Profile

    Код:
    {
    "kty" : "EC",
    "x5t#S256" : "dhSzPDr4G2ONgZYpJtfqI5rADFSfd---DA8BZR7VAZQ",
    "use" : "sig",
    "crv" : "P-256",
    "kid" : "dhSzPDr4G2M=",
    "x5c" : [ "MIIHUTCCBQmgAwIBAgIQaGDRZfTGbC39OIGT8bGzTDA9Bgkqh kiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQE BCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVM BMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVN UIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0N jAeFw0yMTA1MDcxNDEzMzFaFw0yMzA1MTExNDEzMzFaMIHrMQs wCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zd Gl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWN od2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxD zANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgN VBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzN TMxNDQ1MRUwEwYDVQQFEwxDU00wMjYxNjQxNjgxDzANBgNVBAg TBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLC2v 80YUscbJqzxP0cDzSlxm5byOCa3anzzWKbj5906ZBMW/76HddTLluwYrJphK2XCQvqFriLVtVB/sHFxyXGjggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1q tiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMG BgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7j A3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIw MTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cD ovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0Ff Mi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZW N0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDIt MiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydG lmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpT QCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVz dC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0 NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IZpbGRhcDov L2RpcmVjdG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwQ0 ElMjAyLTIlMjAyMDE5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9j ZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0hjJodHRwOi8vY3JsLm QtdHJ1c3QubmV0L2NybC9kLXRydXN0X2NhXzItMl8yMDE5LmNy bIY7aHR0cDovL2Nkbi5kLXRydXN0LWNsb3VkY3JsLm5ldC9jcm wvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmwwHQYDVR0OBBYEFOD+ kCm/8vMqv2+fE52qq6SyHE5iMA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6E aMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEAQ QNbHHkUH2QW8zZWFzaUTJy+OwzoXYxyFt+sAOcYoeEv9057PPy JNDqZSbJV0Mt1jFHaukPrhFjlmnFd5BLGmljCL82d2hQWWzPKE 1yYe/dim1pU3CVlbhWq49VL9pPeSXRfBeMue3EyeKpGjX68i84XAUcl BeuHRt6OGIlRpX+8LMj3d7FPtU5YXOTixkIzQf/D+LeIC9kTkKChBEP30t+MXb2qc/XSPHYxr4Ommq68PY+63YpMxLFCTXgiPnpu4SVGI92EZyfiGOGf PHRWMYwhsYmvei4N28CFMTT3a0dRx5qPFXdAhNqZMI/bUd2m2BlyNE5kUeQAWi6LH+cmnbWP37S6CgDInh4wg68CO4XRt N7GmdHQ3msQ/v1hg3A4yCbA+iOf+E0ktuVcFdz5qTNQE906+gf9A3aUB+Iwzo6 l+Raweiw7J4H5nrzBRV2VbXO1JzKke79h3S1F4DDBfJrG8nojt GsXWlaKl3LAIr0jmqn3cRz4VJ6wa2W5/9TNXInqjlbCcqaTC8p9pApicfwYqI02ROeaL/ubAp+5Ytbms2Xbc07JUZuEN1bMeHT87DWOSr1aB+f15KxpDCjU IlkrFlzkDyvnCabSQGrSH+Zhgs4JwOL33X6n+MtRZ1BOFwW//PP03obm86XUQtO5Ml48mhiH1ngbkHolP8BLnC0=" ],
    "x" : "sLa_zRhSxxsmrPE_RwPNKXGblvI4JrdqfPNYpuPn3To",
    "y" : "ZBMW_76HddTLluwYrJphK2XCQvqFriLVtVB_sHFxyXE"
    }
    dsc-list.json covpass sdk
    Код:
    {
    "certificateType": "DSC",
    "country": "DE",
    "kid": "dhSzPDr4G2M=",
    "rawData": "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",
    "signature": "MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0BBwEAAKCAMIIFTjCCBDagAwIBAgIQeQJYn+2D5dqB2rpatIzUezANBgkqhkiG9w0BAQsFADBQMQswCQYDVQQGEwJERTEVMBMGA1UECgwMRC1UcnVzdCBHbWJIMSowKAYDVQQDDCFELVRSVVNUIExpbWl0ZWQgQmFzaWMgQ0EgMS0yIDIwMTkwHhcNMjEwNTIzMTk1ODI3WhcNMjExMTIyMjA1ODI3WjCBizELMAkGA1UEBhMCREUxFDASBgNVBAoTC3ViaXJjaCBHbWJIMSEwHwYDVQQDExh1cGxvYWQuZGUuZHNjLnViaXJjaC5jb20xDjAMBgNVBAcTBUtvZWxuMRUwEwYDVQQFEwxDU00wMjYyOTQyNjUxHDAaBgNVBAgTE05vcmRyaGVpbi1XZXN0ZmFsZW4wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS7vWbF4ktHYoVMgQGN5PpIDUxvyTJ5NJ3m4wmceQzgwmSIuX2y/0N1H/tcBhFEbzKhTZs3p6bSilCB4fD230fRo4ICsTCCAq0wEwYDVR0lBAwwCgYIKwYBBQUHAwIwHwYDVR0jBBgwFoAU0A0+3Aiv40EIZuDc8vqZai3fGLkwggEvBggrBgEFBQcBAQSCASEwggEdMEUGCCsGAQUFBzABhjlodHRwOi8vZC10cnVzdC1saW1pdGVkLWJhc2ljLWNhLTEtMi0yMDE5Lm9jc3AuZC10cnVzdC5uZXQwUAYIKwYBBQUHMAKGRGh0dHA6Ly93d3cuZC10cnVzdC5uZXQvY2dpLWJpbi9ELVRSVVNUX0xpbWl0ZWRfQmFzaWNfQ0FfMS0yXzIwMTkuY3J0MIGBBggrBgEFBQcwAoZ1bGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwTGltaXRlZCUyMEJhc2ljJTIwQ0ElMjAxLTIlMjAyMDE5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jQUNlcnRpZmljYXRlP2Jhc2U/MBgGA1UdIAQRMA8wDQYLKwYBBAGlNAKDdAEwgdMGA1UdHwSByzCByDCBxaCBwqCBv4ZAaHR0cDovL2NybC5kLXRydXN0Lm5ldC9jcmwvZC10cnVzdF9saW1pdGVkX2Jhc2ljX2NhXzEtMl8yMDE5LmNybIZ7bGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwTGltaXRlZCUyMEJhc2ljJTIwQ0ElMjAxLTIlMjAyMDE5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0MB0GA1UdDgQWBBR3URlrkdxR+aUZUhApAz5uZmJTAzAOBgNVHQ8BAf8EBAMCBLAwIwYDVR0RBBwwGoIYdXBsb2FkLmRlLmRzYy51YmlyY2guY29tMA0GCSqGSIb3DQEBCwUAA4IBAQAizlIQ5L37J6KF4Is7foLR6UeYBA/ibUXB333T7mCIJZ/VnZ+AUNz5BqCKTnIWEN+LyAxbKtAeuX45nDv4OuwT9f0IO4ZvK4aFexZk3/Ur33uzlSPC8t84kLe3kFQG+i2IE/3guYJsm+YRQrOKcfAr/0wONbbrSH+sOOUPYAGuAAok1WGhJDs90QEswWS9LYAKhYdmeBAyFblOIgEcyvxj4MEBTEbqj7LEZlg5Fsh5ne0twwgRGKZIs3gQCto0Togzh6CMI6B63kz1YFDNyorUaln20DiyTv2UI1y6cKqAaStS19tGej0BRwVCL6ShzS3qp3Q+4wf53bJbzw8um6ybAAAxggG2MIIBsgIBATBkMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgTGltaXRlZCBCYXNpYyBDQSAxLTIgMjAxOQIQeQJYn+2D5dqB2rpatIzUezALBglghkgBZQMEAgGggeQwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMjEwNTMxMTQzMDQ4WjAvBgkqhkiG9w0BCQQxIgQgdhSzPDr4G2ONgZYpJtfqI5rADFSfd+++DA8BZR7VAZQweQYJKoZIhvcNAQkPMWwwajALBglghkgBZQMEASowCwYJYIZIAWUDBAEWMAsGCWCGSAFlAwQBAjAKBggqhkiG9w0DBzAOBggqhkiG9w0DAgICAIAwDQYIKoZIhvcNAwICAUAwBwYFKw4DAgcwDQYIKoZIhvcNAwICASgwCgYIKoZIzj0EAwIERzBFAiBDvR8lVMAOZlpn1UsuGKqFOCM+C/Hc6csNkE5W9HVGLQIhAKnWIc4T0XPMH5zdiXYKO5AY6cnvCSYaMiSmvouXdW4zAAAAAAAA",
    "thumbprint": "7614b33c3af81b638d81962926d7ea239ac00c549f77efbe0c0f01651ed50194",
    "timestamp": "2021-05-31T16:30:45+02:00"}

    Прокомментировать:


  • Zahlesel
    Участник ответил
    появилась идее, что если поискать в инете KID KEYID, которые есть в мной найденых кодах
    может так найдется какойнить код в сети с приват ключиком... ну шанс один на 10000, но есть
    матис
    b'^EVf\xa5\x1exW'
    XkVWZqUeeFc=
    bernd Brandenburgtest
    b'v\x14\xb3<:\xf8\x1bc'
    dhSzPDr4G2M=
    dursun BE
    b'8:\x9a\x1b\xc9\xa7n\xba'
    ODqaG8mnbro=
    kristina
    b'^EVf\xa5\x1exW'
    XkVWZqUeeFc=

    Нажмите на изображение для увеличения.   Название:	Bildschirmfoto 2021-08-19 um 23.16.31.png  Просмотров:	0  Размер:	158.5 Кб  ID:	5744

    вот я качал сертификаты, там еще пароль был нужен а тут вот бери без проблем
    SE Digital Covid Certificate Trust Point

    https://dgcg.covidbevis.se/tp/

    Trust List Signer Certificate
    Код:
    -----BEGIN CERTIFICATE-----
    MIIB6jCCAY+gAwIBAgIUZVUDZ9xmLgGkjoqXhMizIaqko4AwCg YIKoZIzj0EAwIw
    TTELMAkGA1UEBhMCU0UxHzAdBgNVBAoMFlN3ZWRpc2ggZUhlYW x0aCBBZ2VuY3kx
    HTAbBgNVBAMMFERDQyBOYXRpb25hbCBCYWNrZW5kMB4XDTIxMD YxMTE0NDA0N1oX
    DTIzMDYxMTE0NDA0N1owTTELMAkGA1UEBhMCU0UxHzAdBgNVBA oMFlN3ZWRpc2gg
    ZUhlYWx0aCBBZ2VuY3kxHTAbBgNVBAMMFERDQyBOYXRpb25hbC BCYWNrZW5kMFkw
    EwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEbQS1Rt6niozeBzaB8y pNqson5psIc8+G
    eeGGgDKajD3xFNqzTXJELwLX8dMihl1jy5LMNmzN89jDTq3Vz5 uPeaNNMEswDAYD
    VR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwKwYDVR0RBCQwIoEgcmVnaX N0cmF0
    b3JAZWhhbHNvbXluZGlnaGV0ZW4uc2UwCgYIKoZIzj0EAwIDSQ AwRgIhAL02Iy2x
    if3oTSivwKg+fZDwquoTgTMJnCUJzyltYExjAiEAsT3U7icfdH 3FtrZ/NZ2LlC5r
    sSSXWtDUTXhmclnJFnU=
    -----END CERTIFICATE-----
    что делать с этим сертификатом?

    также там на сайте видно у каких стран сколько сертификатов. у немцев прям море

    вбил в поиске
    NTRLV-40003011203 латвийский серийник попал сюда

    https://ec.europa.eu/cefdigital/DSS/...B3598B6706BBAA
    потом сюда и там куча какихто сертификатов
    https://trustlist.gov.lv/tsl/latvian-tsl.xml

    Прокомментировать:


  • Zahlesel
    Участник ответил
    https://inza.wordpress.com/2021/05/3...n-authorities/
    • OID 1.3.6.1.4.1.1847.2021.1.1 — valid for test
    • OID 1.3.6.1.4.1.1847.2021.1.2 — valid for vaccinations
    • OID 1.3.6.1.4.1.1847.2021.1.3 — valid for recovery
    как я до сих пор понял данным нельзя улетать на сервер, храниться темболее. значит сервер должен слать ключ и КИД, а кодирование уже долно происходить локально в софте или в вебприложении

    самая простая валидация это просто найти KEY_ID в листе провереных сертификатов
    Note that Verifiers do not need to calculate the kid based on the DSC certificate and can

    directly match the key identifier in issued health certificate with the kid on the trusted list.
    https://ec.europa.eu/health/sites/de...ates_v1_en.pdf

    как я понимаю валидация будет проходит посредством локального листа с паблик ключами, иначе изза проблем с инетом или сервером сервис проверки QR будет слишком проблематичен

    интересно, что при генерировании приватного ключа здесь генерируется длинный KID
    https://8gwifi.org/jwsgen.jsp
    к нему же генерируется и паблик кий
    получается, что это высер о котором я читал, мол каждый раз генерируется новый ключ
    не думаю, что к одному приват ключу можно генерировать много паблик или наоборот.
    только если они имели ввиду куер былбы разный тк время в секундах и нельзя один куэр два раза сгенерировать в одну секудну

    непонятно, почему голландец удалил KID и потом вообще весь код со своей страницы
    но не спрятал сам ключ. ведь можно было подсунуть любой ключ. или он ступил и показал рабочий? не думаю

    Нажмите на изображение для увеличения. 

Название:	Bildschirmfoto 2021-08-19 um 09.00.18.png 
Просмотров:	3899 
Размер:	454.1 Кб 
ID:	5742
    https://ec.europa.eu/health/sites/de...ates_v4_en.pdf

    исходим из того, что документ подписывается на сервере, но данные там не храняться
    наверное не написали мол идет посыл личных данных, ато будет по жопе атата. а тут типо исключение из правил изза холеры 21го века

    Прокомментировать:


  • Zahlesel
    Участник ответил
    короче X и Y работают только для проверки ключа
    для подписи же нужен приват кий
    Код:
    cose_key2 = EC2Key(crv='P_256', d=priv, optional_params={'ALG': 'ES256'})
    msg.key = cose_key2
    эквивалент
    Код:
    cose_key = {
    KpKty: KtyEC2,
    KpAlg: Es256, # ecdsa-with-SHA256
    EC2KpCurve: P256, # Ought to be pk.curve - but the two libs clash
    EC2KpD: priv,
    }
    msg.key = CoseKey.from_dict(cose_key)

    подпись появляется у объекта после закодирования
    out = msg.encode()
    тут будет её видно
    message = CoseMessage.decode(out)
    print(message.signature)

    поискать на просторах инета в кодах программ приватный ключик с кид_ид?
    keyid = bytes('01234567', 'utf-8') # first 8 hex values of SHA256 fingerprint of signing certificate, not relevant for test

    пока на этой стадии
    https://raidforums.com/Thread-TRADIN...950#pid4200950

    тут куча линков на баблик ключи и разные сертификаты

    https://raw.githubusercontent.com/pa.../verify_ehc.py

    Код:
    def get_root_cert(source: str) -> x509.Certificate:
    envvar = f'{source.replace("-", "_")}_ROOT_CERT'
    value = os.getenv(envvar)
    if value is None:
    return ROOT_CERT_DOWNLOADERS[source]()
    
    if value.startswith('-----BEGIN CERTIFICATE-----'):
    return load_pem_x509_certificate(value.encode())
    elif value.startswith('-----BEGIN PUBLIC KEY-----'):
    pubkey = load_pem_public_key(value.encode())[URL="https://raidforums.com/Thread-TRADING-make-EU-green-pass?pid=4200950#pid4200950"][/URL]
    также видим 3 способа валидасии файлом. рут сертификат, сертификат и паблик кий

    валидируются на данный момент лиш два алгоритма
    Код:
    if alg == 'ES256':
    # EC
    x_bytes = b64decode(pub['x']) # type: ignore
    y_bytes = b64decode(pub['y']) # type: ignore
    x = int.from_bytes(x_bytes, byteorder="big", signed=False)
    y = int.from_bytes(y_bytes, byteorder="big", signed=False)
    crv: str = pub['crv'] # type: ignore
    curve = NIST_CURVES[crv]()
    ec_pubkey = EllipticCurvePublicNumbers(x, y, curve).public_key()
    cert = HackCertificate(ec_pubkey, extensions=extensions)
    
    elif alg == 'RS256':
    # RSA
    e_bytes = b64decode(pub['e']) # type: ignore
    n_bytes = b64decode(pub['n']) # type: ignore
    e = int.from_bytes(e_bytes, byteorder="big", signed=False)
    n = int.from_bytes(n_bytes, byteorder="big", signed=False)
    rsa_pubkey = RSAPublicNumbers(e, n).public_key()
    cert = HackCertificate(rsa_pubkey, extensions=extensions)

    Прокомментировать:


  • Zahlesel
    Участник ответил
    итак имея рабочий код выше и прогоня по нему матиаса получаем
    Код:
    covpass-sdk admin$ python3 verify_my_certificate.py
    
    {1: 'DE', 4: 1655542731, 6: 1624006731, -260: {1: {'v': [{'ci': 'URN:UVCI:01DE/A22011741/44I7RC30ESZ54KX83G1KCG#L', 'co': 'DE', 'dn': 2, 'dt': '2021-06-08', 'is': 'Robert Koch-Institut', 'ma': 'ORG-100030215', 'mp': 'EU/1/20/1528', 'sd': 2, 'tg': '840539006', 'vp': '1119349007'}], 'dob': '1954-05-06', 'nam': {'fn': 'Stolt', 'gn': 'Matthias Walter', 'fnt': 'STOLT', 'gnt': 'MATTHIAS<WALTER'}, 'ver': '1.0.0'}}}
    
    ------------------------------------------- kid -------------------------------------------------------
    
    XkVWZqUeeFc=
    
    --------------------------------------------------------------------------------------------------
    
    ------------------------------------------- public_key -------------------------------------------------------
    
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEh934IiMCsXp977 pDeG7Wi11S+uGGoem6nSNbtCILcST4+/FqGlLOBJvIZPSh3hTHx2V7V+3Lzqi6R2dahOno/g==
    
    --------------------------------------------------------------------------------------------------
    
    ------------------------------------------- X -------------------------------------------------------
    
    b'\x87\xdd\xf8"#\x02\xb1z}\xef\xbaCxn\xd6\x8b]R\xfa\xe1\x86\xa1\xe9\xba\x9d#[\xb4"\x0bq$'
    
    --------------------------------------------------------------------------------------------------
    
    ------------------------------------------- Y -------------------------------------------------------
    
    b'\xf8\xfb\xf1j\x1aR\xce\x04\x9b\xc8d\xf4\xa1\xde\ x14\xc7\xc7e{W\xed\xcb\xce\xa8\xbaGgZ\x84\xe9\xe8\ xfe'
    
    --------------------------------------------------------------------------------------------------
    
    True
    теперь нужно смотреть, каким макаром можно зашифровать с этим KID

    ключ совершенно другой в отличие от работы с скриптом КУЭР
    Код:
    ------------------------------------------- msg.key -------------------------------------------------------
    
    <COSE_Key(EC2Key): {'EC2KpD': "b'\\x80\\x97\\x86P\\xca' ... (32 B)", 'EC2KpY': "b'\\x1b8\\xc3^k' ... (32 B)", 'EC2KpX': "b'/\\xc7\\x96\\xf7\\xf9' ... (32 B)", 'EC2KpCurve': 'P256', 'KpKty': 'KtyEC2', 'KpAlg': 'Es256'}>
    
    --------------------------------------------------------------------------------------------------
    
    ------------------------------------------- cose_key2 -------------------------------------------------------
    
    <COSE_Key(EC2Key): {'EC2KpY': "b'\\xf8\\xfb\\xf1j\\x1a' ... (32 B)", 'EC2KpX': 'b\'\\x87\\xdd\\xf8"#\' ... (32 B)', 'EC2KpCurve': 'P256', 'KpKty': 'KtyEC2', 'KpAlg': 'Es256'}>
    
    --------------------------------------------------------------------------------------------------
    CoseKey.from_dict(cose_key2) с таким ключем не работает
    in compute_signature
    ValueError: invalid literal for int() with base 16: b''

    в рабочем варианте один хрен подпись не генерируется, можно только KID вписать
    у меня KID к существующему приват ключу нет


    Код:
    <COSE_Sign1: [{'Algorithm': 'Es256', 'KID': b'S2V5NVJF'}, {}, b'\xa4\x01bXX' ... (263 B), b'' ... (0 B)]>

    вот так должен выглядить рабочий

    Код:
    <COSE_Sign1: [{'Algorithm': 'Es256'}, {'KID': b'^EVf\xa5\x1exW'}, b'\xa4\x01bDE' ... (280 B), b'\x95,<\x90\x0b' ... (64 B)]>
    в конце подпись

    XkVWZqUeeFc= КИД у матиаса сверху был такой, это значит еще здесь заковыкочка с кодировкой

    b'^EVf\xa5\x1exW' в косе
    потом идет base64.b64encode( для поиска в листе ключей

    Прокомментировать:


  • Zahlesel
    Участник ответил
    https://harrisonsand.com/posts/covid-certificates/
    запилил код, сделав его рабочим смог убедится. что первый код с рабочим сертификатом годный
    второй же джон доу сгенерированый на сайте не проходит сертификацию
    ключик ищется в джейсоне
    Код:
    import json
    import base64
    from cryptography.hazmat.primitives.serialization import load_der_public_key
    import base45
    import zlib
    import cbor2
    from cose.messages import CoseMessage
    from cose.headers import Algorithm, KID
    from cose.keys import EC2Key, CoseKey
    
    
    #ORIGINAL FULL VACTINATED
    data = 'HC1:6BFOXN*TS0BI$ZDFRH%YJLABRKAIPH7699FH3XHP+56R5 UC9I05O/CAH9BVIP*D/GPWBILC9GGBYPLR-S E10EQ928GEQW2DVJ5UL8W2BV:88J4TM8TOE.N8NI2$4AF44CNC 4DRI45IN2Y01%PCSN8R3D5%C2%K:XFMFG.A5:S9395*CBVZ0K1 HI 0CNNZ 2ZJJ.V47NV/HLWU4L8S1JPTQNXHF+X47Y45W4MKN4NN3F85QNCY0O%0$88:0L PHN6D7LLK*2HG%89UV-0LZ 2S-O:S9UZ4+FJE 4Y3LL/II 0OC9JU0D0HT0HB2PR78+FFZI9$JAQJKLJLX2M*C5J4L*%NH$RS C95HFZIO MV5W49NTYPV9FH2V4KIJ.+O2NS4A7/HL KP8EFWKLHD4K%7TNP8EFYPVP/HI8402K7JO7NSK%7E1MWKP/HLIJL8JF8JF172ZOABUDHCE.FN/6A0ET.SE%R5Q4RAUMR+EF4GWR7UCS482DLVF$UQA10GH2L14ZP CZB*1A7GT4TA5 UULQUGLEN3FQMW6ULCW:1SWKSA20AV0%4'
    
    data = 'HC1:NCFOXN.TSMAHN-H5YPXHQ7IRQ+Q*+R:JEQP4EXV25P*8H-%2$P4/0OAVDMFH6+0X6BMF6.UCOMIN6R%E5BD7CSO:CO+E4S8S8S0PPS VS1MM8BT7.Y7LV3DVBSO8: B G8Q/R1-JMZJ*8HX2T2%K:XF0GH.A5:S9395*CBVZ0K1H$$0CNN./GZJJ6Y2F2GQDF*ECUC7L85MB4O-OLG1/HL+X4XFDNLPBY4F82MKN4NN3F8PON+I3EYH$ON SI5K1*TB3:U-1V4AGGRJ5CB8X2+36D-I/2DBAJDAJCNB-43 X4VV2 73-E3GG3V20-7TZD5CC9T0HD0HCPNJZII7JSTNB95926+V4JW63X7U-O8:7T/5+Y5ST4U0PZW6-Z78T4 YPHUOJINQ+MN/Q19QE8QNQO%262NQLFK$UVN2O9BNH7R-C7+V2/$VNSF2CI%VR1:M:DA%EBAWNZXN/DF*FN.IT1TQ%OF7R9P7SEV7N/O2UFMPSA4LA*Q-R2*7D3$SR004H6$2'
    
    b45_data = data[4:]
    zlib_data = base45.b45decode(b45_data)
    cose = zlib.decompress(zlib_data)
    decoded_cose = CoseMessage.decode(cose)
    payload = cbor2.loads(decoded_cose.payload)
    
    print(payload)
    
    def get_publickey(kid):
    # Load certificates from file
    with open('certs.json', 'rb') as file:
    certs = json.load(file)
    
    # Iterate through all the certs, and process if the correct kid is found
    for c in certs:
    if c['kid'] == base64.b64encode(kid).decode('utf-8'):
    public_key = c['publicKey']
    return public_key
    
    # Using the decoded_cose object from the code above
    algorithm = decoded_cose.get_attr(Algorithm).fullname
    kid = decoded_cose.get_attr(KID)
    
    public_key_b64 = get_publickey(kid)
    der_public_key = base64.b64decode(public_key_b64)
    
    public_key = load_der_public_key(der_public_key)
    x = public_key.public_numbers().x.to_bytes(32, "big")
    y = public_key.public_numbers().y.to_bytes(32, "big")
    
    cose_key = EC2Key(crv='P_256', x=x, y=y, optional_params={'ALG': 'ES256'})
    decoded_cose.key = cose_key
    print(decoded_cose.verify_signature())

    Прокомментировать:


  • Zahlesel
    Участник ответил
    /CovPass_v1.28.7_apkpure.com/assets/covpass-sdk/dsc-list.json

    здесь есть два сертигфиката
    Код:
    {"certificates":[{"certificateType": "DSC", "country": "DE", "kid": "L7XIA2gi2ps=", "rawData": "MIIHUTCCBQmgAwIBAgIQUl/....
    .....
    I3jIOuyvySylMuE=", "signature": "bm8gc2lnbmF0dXJlIHNvIGZhcg==", "thumbprint": "2FB5C8036822DA9B57C5A8727F2396B441E36CC94B378223FD710CF948F967B6", "timestamp": "2021-05-18T10:36:56+02:00"}
    подставив его в python_cwt_sample_eudcc_01.py cwt.decode не прокатило

    тамже лежит один сертификат backend-ca.pem
    и один паблик кий dsc-list-signing-key.pem

    Прокомментировать:


  • Zahlesel
    Участник ответил
    КИД бывают из 8 знаков S2V5MlJF
    , бывают кодированые Ll3NP03zOxY= занимают 12 символов
    ощущение, что у нас в первом случае паблик кий

    {"kid":"S2V5NVJF","publicKey":"MFkwEwYHKoZIzj0C AQY IKoZIzj0DAQcDQgAEOFOUp1+SLuaM3NnV+OMZKZOoPg76T7D+v qRCasD0BrRZmlUH2gD+aVlpKvp+u7h8ywTR7T6Z6/iI2Qe6F5begg=="},

    а во втором сертификат, просто выдается и то и то в одном запросе

    либо различная кодировка

    {"kid":"JYwTuBN7gzg=","publicKey" :"MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAl l7v mpn6RCmx6ZA0vYNO3cOHlXO255SuFp3H3rYbV7IEcZjFD8z4r+ Uh8BCBNsqIBINkwcCRyp2HIupQbtT4txk1C88gcnr3UZmTOhCb QRCB8ePiV9QiAva3RE3v7ZVMlJM6dZt6uWjG41gOb4Znzw/ITt9X+h6Ljigc9fD41urF16iLGjMmbVZwnnu17GIpLZQ4kAJob Vf45QmKn3A1eYG/imrubrpVzjVnoklllyydJItTq3CMDhIkseITL1xid7C/1Qom1jDhGG2f3/yufbKoH32uSQ47XyA2lKDVHSi0YLl42YD/tQ66X7m1JkPaE21RaC+RIJpxp128XADZWe1xTEPPm9usIjCyrv LOL6Gjcfbm78Qx1Slb8D1sUEufKjXAoZ3Qbhs6GC6i3jCy8Q/Ef
    pMtsqd7vfMHs9ZkWV4C6YNmQ1/eSrPHUclxzSAsVNcFEq/iKuRWmmb5Y3Xdrb3hm5YWO+RMDYakbmPlvjUJjxoJAzPHu4tG0 QG9e+TFAgMBAAE="}]

    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQc ужевстречался как пабликкий

    а MIIBvTCCAWOgAwIBAgIKAXk8i88OleLsuTAKBggqhkjO был сертификате с CWT проверкой
    # A DSC(Document Signing Certificate) issued by a CSCA (Certificate Signing Certificate Authority)
    если поставить вместо него в скрипт python_cwt_sample_eudcc_01.py значение с сервака, то сертификат не обнаруживается

    МХа же как приваткий в скрипте с куэр из кия и кийайди

    Прокомментировать:


  • Zahlesel
    Участник ответил
    public_key = load_pem_hcert_dsc(dsc)
    decoded = cwt.decode(eudcc, keys=[public_key])
    так проверяется сертификат с COSE

    "COSE": "d2844da20448d919375fc1e7b6b20126
    "CERTIFICATE": "MIIBvTCCAWOgAwIBAgIKAXk8i8

    https://github.com/eu-digital-green-...ode/raw/1.json


    -----BEGIN EC PRIVATE KEY----- итак с приватключем мы работаем в скрипте который делает QR с картинкой

    -----BEGIN PUBLIC KEY-----
    need the public key for the KeyID calculation
    -----BEGIN CERTIFICATE-----

    странный код с сервера тянется паблик и KID
    тутже в коде написано, что паблик нужен для просчета KID
    privat ключ и КИД нужны для подписи. зачем нужен сертификат? для проверки подлиности?
    Код:
    # Note - we only need the public key for the KeyID calculation - we're not actually using it.
    #
    with open(args.certfile, "rb") as file:
    pem = file.read()
    cert = x509.load_pem_x509_certificate(pem)
    fingerprint = cert.fingerprint(hashes.SHA256())
    keyid = fingerprint[0:8]
    
    if args.set_keyid:
    keyid = b64decode(args.set_keyid)
    
    # Read in the private key that we use to actually sign this
    #
    with open(args.keyfile, "rb") as file:
    pem = file.read()
    keyfile = load_pem_private_key(pem, password=None)
    priv = keyfile.private_numbers().private_value.to_bytes(3 2, byteorder="big")
    
    # Prepare a message to sign; specifying algorithm and keyid
    # that we (will) use
    #
    msg = Sign1Message(phdr={Algorithm: Es256, KID: keyid}, payload=payload)
    
    # Create the signing key - use ecdsa-with-SHA256
    # and NIST P256 / secp256r1
    #
    cose_key = {
    KpKty: KtyEC2,
    KpAlg: Es256, # ecdsa-with-SHA256
    EC2KpCurve: P256, # Ought to be pk.curve - but the two libs clash
    EC2KpD: priv,
    }
    
    # Encode the message (which includes signing)
    #
    msg.key = CoseKey.from_dict(cose_key)
    out = msg.encode()
    [URL="https://github.com/eu-digital-green-certificates/dgc-testdata/blob/main/AT/2DCode/raw/1.json"][/URL]



    Прокомментировать:


  • Zahlesel
    Участник ответил
    Код:
    with open("key_aus_qrgenerator.crt", "rb") as file:
    pem = file.read()
    cert = x509.load_pem_x509_certificate(pem)
    pub = cert.public_key().public_numbers()
    key_x = pub.x.to_bytes(32, byteorder="big")
    key_y = pub.y.to_bytes(32, byteorder="big")
    
    fingerprint = cert.fingerprint(hashes.SHA256())
    keyid = fingerprint[0:8].hex()
    итак из сертификата можно получить keyid

    из негоже можно получить KEY
    Код:
    cose.key = CoseKey.from_dict({KpKty: KtyEC2, EC2KpCurve: P256, KpAlg: Es256, EC2KpX: self.key_x, EC2KpY: self.key_y})
    теперь не могу понять нах паблик кий?

    Код:
    keyfile = load_pem_private_key(pem, password=None)
    priv = keyfile.private_numbers().private_value.to_bytes(3 2, byteorder="big")
    
    cose_key = {
    KpKty: KtyEC2,
    KpAlg: Es256, # ecdsa-with-SHA256
    EC2KpCurve: P256, # Ought to be pk.curve - but the two libs clash
    EC2KpD: priv,
    }
    типо из сертификата можно получить ключ через EC2KpX
    а из паблик ключа через EC2KpD ужоснах

    EC 256 Key
    \cose,signature

    (b';\xa3\xd3vBkj\xbb\xd59`P\xf9.\xd1\xc7\xcd{\x84\ xc1\xdb\xd8\xb6\xbb'
    b'\x90O\xcd\x1c\xdd\xed\xb0\x8d*EAt\xd1\xae>u\xe8\ xdd\xdc{E\x92\xcc\xb8d\xecI]'
    b'.G \xdc\xf7\xf4\x94O,\xe1\xc6\xea')
    RSA 2048 Key
    \cose,signature

    (b' w1D7D\x89\x03\xea\xec\xf9\xda\xbf.\\\xba\xbf2\x9b\ x9c\x8d\x1f\xf6\x96'
    b"\xd9'6\x8c'\xf6\xc7e\xb5t5\xd9\xe2`\x91\x9c\x c1\ xe5\x9f\xedr\x90\xd2\xea"
    b'\xbc\xd3\x9e\r5\x90\x02\xf6\xfa\xf9{\xde\xaa\x1d #<\xa8\n\xf9\xd6uK\xd9\xdd'
    b'\xd6\x95\x17\xb0\xb0s\xc0G)\r\xa5\x10\xc5\xa2/f\xe4\x08\xddiP&\x99<'
    b'~\xe2\x11Uo\x7f8L\xb9\xb3+\x1b\xf5\x05N\r\xebuW\ x17\xa8\xd4i\x1fq\x06\x877'
    b'+Z\x91\x1c5]\x99a]J>KS\t\x8c\x92\xee\xda,\xad\x08\xbb\xa5\xe2j4\x18 \ x1c'
    b"k\xf5\xe7\xa8H\x19\x0c\xa8_9=5\xa8\xd0&+\x85\ x95 \xf7f\xf5\x9c'\xa2"
    b'>\xc0\x7f\xb93\xa5\x16\xccc\x06\x15[)\x97\xf4a\xfe\x88\xef^_\xab\xba\x1c'
    b';\xa3OZ\xd5z9&2K\xc9\x97\xcf\t\xc7Z\xd1Q\xd8\x12 \x00"\xf0\xb8Xn\xa0\xfb'
    b'\x02,\xb4\x8d\xddy\x99\xab\xde\xfc\x9a\x0c\x0c\x b3~\xaa\xd8:u3G\xee\xa5\x13'
    b'\x1a\x1a\xea\xd1')
    RSA 3072 Key
    \cose,signature

    (b"I\x86\xdfGxq\xce\x04\x0et '~i;9\xe7\x17\x14\xea\xc7r\xbfa\xcd\xd2\xc9\xd7"
    b'\x97\xdaQ\xaa\x07\x970w5\x12\xeb\xcd\x96\x7f\xce[\xfd\x95D\x04'
    b'\xd1\xb9\xb7\xfa\xc9 A\n\xdaq\xe7\xc0^\xb5N6U\x02\x9c7TT\xb6P#.\x1df'
    b'\x9c68\xben\xbe\x89\x8cA-gY\xd8\x8e\xf0\x98z\x02:\xfa\xa3J\xf8\xe2'
    b'\xd2\xbf\x0b\xe2\x88\xe6\x869\x1f\xf2M\xecr\xb2\ x1e\xc8z;\xa4\x9d'
    b'!\x90\xed\x91\x92\xddm\x8d\xa27<(w\x8e\x8c\x8c\x c1\xcdt \x08\xdb#\x93'
    b'\x8f\x0c\xfc4\x97Q1\xa5\xaf\xf5\xb3/\x0b\x05Gi!\xa8>\x81(\xb9\xf2\x19'
    b'j\xab\xa8\xabF\x1f\xf9\xb0\x9ckY"C\xd3\x13P\xed\ xcd\x89\xa3\x0b\x8b\xa0\xea'
    b'\xf6\xe1\x06:\x9e5X\xf3S\x8e\x83\xd5\xee\x10\x97 \x8c\xed\xce\xbc\xb8'
    b'\x803\xff\x93\x0b\xb8_\x9a\x82X\x90^\xff\x8c-\x85\x17"\x1c\x99F\x9a\xf0\x94'
    b'\x0f\xdf\xd8\xf5\x1a[\x1c\x12\x9e\xb6\xe6\xc6r\x07\xd1\xccJ\xa8\x1c\xcb '
    b'\x12\x94\x0f\xe9\x9f)\xe6@\xcf\xb5\xd3C\xde\xae! \xc7\xf4\x90\x07\xd0'
    b'\xf8\xe6a\x9c\x15w\xb0\xf3\xe2\xb1\xc55\x0f\xa0\ xf4<\xd3{\x922\xe0\x00\xb8!'
    b'\xbbQw\x04Y\xc4@\xdc*\t\x13FF\xad5\xd49:\xf4^Z\x bcB\x0f\xdc\xf6l\xc5'
    b':\x15\xd4,\xdc\xff\xb4\xcb\xf4]r\x89\xa1\xc9\x82/\xed\xd0O\x98\xf68&\xf4'
    b'K\x8a\xd1\xf9\xea|L|L\x15h|\t\xdfb\x10q\x02\xd2W \xde\xff\xc3\x9a'
    b'\xac\xa6\xdb\x19UI\xa9\xed')

    Unprotected COSE (KID in unprotected header)
    \cose,signature

    (b']NB)\xaenU\r\x88\x947>#Y\x03\x8c\xbb\x8b\x86\x82(\x c4i\xd4`\x1b\xe4\x8c'
    b'V\x91\xd8\xcc\xd8C\x16e\xb5\xde@\xd8cr\xff%\xec\ xcf,\xb4\xfe=\x1b\xb2ku\xbcb'
    b'\x1f\x8d\xee\xe1 \x804\xf6')

    декодер декодирует любое шифрование в 4ре строчки и без каких либо доп. ключей

    Прокомментировать:


  • Zahlesel
    Участник ответил
    https://dgc.a-sit.at/ehn/testsuite

    на этой странице не понимап деяток кодировок и почему они используют столько много шагов

    JSON
    CBOR (Hex)
    CWT (Hex) ??? это зачем? ответ ниже
    COSE (Hex)


    Код:
    payload = cbor2.dumps(json_payload)
    
    CBOR FORMAT:
    
    b'\xa4\x01bXX\x04\x1ab\n\x0e\xc0\x06\x1aa\x1c\xc0\ xc09\x01\x03\xa1\x01\xa4av\x81\xaabcix100XX/00000/1234567890/THISISATESTCERTIFICATEXXX#SbcobXXbdn\x02bdtj2021-05-01bisx\x1bNon Valid Test CertificateXbmamORG-100030215bmplEU/1/20/1528bsd\x02btgi840539006bvpj1119349007cdobj1911-11-11cnam\xa4bfncDoebgndJohncfntcDOEcgntdJOHNcvere1.0 .0'
    както не походит на хекс сверху

    питон декодирует полученый куер с невалидным ключём, почему не материться?
    не проверятся подпись?
    а подпись должна валидироваться любым публичным ключём?

    Verifying EU Digital COVID-19 Certificate with Python CWT
    https://medium.com/@dajiaji/verifyin...t-fd3d5de27eed

    The EC Private Key is necessary to generate a pass. However, it is not required for the verification process (only the Public Key is required). This seems to make any method using reverse engineering for Covid Pass applications on smartphones useless.

    So, the only way to acquire an EC Private Key would be through hacking a machine used by a Certificate Signing Certificate Authority (CSCA) to generate passes.
    смысл- без ключа с сервера дело табак


    куча кода

    eu-digital-green-certificates
    https://github.com/eu-digital-green-certificates

    Прокомментировать:

Обработка...
X