Пређи на главни садржај

О пројекту

LibreSCRS је настао као подухват реверзног инжењеринга са циљем да ослободи српске државне смарт картице од затвореног софтвера везаног искључиво за Windows. Кроз анализу протокола и развој уз помоћ вештачке интелигенције, изградили смо алате отвореног кода који данас подржавају било коју смарт картицу — од националних личних карата до саобраћајних дозвола и eMRTD е-пасоша.


Временска линија #

  1. Средина 2025 — Почетак пројекта: LibreCelik, графички читач за српску личну карту и саобраћајну дозволу
  2. Почетак 2026 — LibreMiddleware издвојен као самостална Qt-free библиотека (без Qt зависности)
  3. Почетак 2026 — PKCS#11 модул објављен; OpenSC драјвер за српску личну карту интегрисан upstream (PR #3595, merged)
  4. Почетак 2026 — Плагин архитектура: и middleware и GUI постају агностични у односу на тип картице
  5. 2026 — eMRTD, PKCS#15 и PIV подршка: е-пасоши, било која PKI картица базирана на PKCS#15, PIV смарт картице. PKCS#11 модул генерализован да подржи све типове картица. Универзални toolkit.
  6. Мај 2026Издање 4.0.0: C++23 језгро, нативно PAdES / XAdES / JAdES / CAdES / ASiC-E потписивање, RFC 5280 валидација ланца поверења, eIDAS qcStatements усклађеност, аутоматско распоређивање визуелног потписа.

Прича #

Није постојала нативна Linux апликација која може да чита све типове српских државних смарт картица. Постојећи пројекти отвореног кода — JFreesteel (Java) и Bas Celik (Go) — доказали су да је могуће читати податке грађана са еИД картица без пропријетарног софтвера, али су се фокусирали на демографске податке. Нико се није бавио криптографским делом: CardEdge PKI аплетом који управља сертификатима, дигиталним потписима и PIN-ом. LibreSCRS је кренуо да покрије обоје — читање података и пуну PKI подршку — за све типове српских картица, на Linux-у, macOS-у и Windows-у.

За српске електронске личне карте не постоји јавна документација протокола. Приступ је био директан: пратити шта пропријетарни Windows софтвер ради преко PC/SC-а, снимити APDU секвенце и из тога реконструисати протокол. Саобраћајне дозволе прате EU Directive 2003/127/EC стандард, тако да је њихова структура била јасно дефинисана од почетка. Здравствене картице имају свој распоред. ПКС картице Привредне коморе за квалификовани електронски потпис користе CardEdge за криптографске операције, али уопште немају демографске податке. Сваки тип картице значио је тестирање на стварном хардверу док протокол не буде разјашњен.

Како је код растао, постало је јасно да логика комуникације са картицом мора да стоји самостално. LibreMiddleware је издвојен као чиста савремена C++ библиотека — без Qt-а, без GUI зависности — само протоколи смарт картица, TLV парсирање и чист API. Ово је омогућило изградњу PKCS#11 модула који дозвољава било којој апликацији (Firefox, Chrome, OpenSSL CLI) да користи било коју LM-подржану смарт картицу (српска лична карта, ПКС, PIV, генерички PKCS#15) за аутентификацију и дигитално потписивање без графичког интерфејса.

Следећи корак била је плагин архитектура. Уместо хардкодиране подршке за одређене картице, и middleware и GUI постали су прошириви. CardPluginRegistry открива руковаоце картицама у рунтајму преко dlopen; CardWidgetPluginRegistry учитава GUI плагине преко QPluginLoader. Додавање новог типа картице своди се на убацивање дељене библиотеке — без рекомпајлирања.

Најскорије је додата подршка за eMRTD е-пасоше и PKCS#15 генеричке картице. eMRTD је захтевао имплементацију BAC и PACE размене кључева из ICAO 9303 спецификације — Diffie-Hellman над елиптичким кривама, функције извођења кључева и Secure Messaging са сесијским кључевима. PKCS#15 додаје могућност откривања и коришћења сертификата и кључева на било којој компатибилној картици.


Развој уз помоћ вештачке интелигенције #

Овај пројекат је грађен уз вештачку интелигенцију као развојног партнера — од анализе hex дампова непознатих APDU одговора до генерисања TLV парсера и валидације имплементације PACE криптографије. Свака линија кода је верификована на стварном хардверу.


Пројекти #

ПројекатОписЛиценца
LibreCelikQt6 десктоп GUI читач смарт картицаGPL-3.0
LibreMiddlewareC++23 middleware библиотеке за смарт картицеLGPL-2.1

Сродни пројекти #

LibreSCRS није први пројекат отвореног кода који ослобађа српске смарт картице. Стојимо на раменима оних који су дошли пре нас:

  • JFreesteel — пионирска библиотека за српске еИД картице отвореног кода, аутор Горан Ракић (Java, 2015). JFreesteel је доказао да је могуће читати српске еИД картице без пропријетарног софтвера и инспирисао друге да крену истим путем.
  • Bas Celik — активно одржаван десктоп читач за српске еИД, саобраћајне и здравствене картице у Go-у, аутор Никола Убавић. Одлична алтернатива ако преферирате алат заснован на Go-у.

Доприноси #

Погледајте страницу Допринесите за информације о пријави грешака, слању pull request-ова и додавању подршке за нове типове картица.


Подршка пројекту #

LibreSCRS се развија и одржава у слободно време. Ако су вам ови алати корисни, размислите о подршци пројекту.

Донирајте преко Open Source Collective