Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Wykrywanie i usuwanie podpisów elektronicznych #1520

Open
dzemeuksis opened this issue Mar 11, 2024 · 3 comments
Open

Wykrywanie i usuwanie podpisów elektronicznych #1520

dzemeuksis opened this issue Mar 11, 2024 · 3 comments

Comments

@dzemeuksis
Copy link
Contributor

@PiotrIw , poukrywaliśmy oryginały załączników przed widokiem publicznym, zostawiając tylko zOCRowaną treść i dzięki temu można było podjąć decyzję o odsłonięciu monitoringów.

Jednak docelowo pewnie najlepiej byłoby wykrywać i usuwać podpisy elektroniczne z plików.

Zostawiam tu materiały od @ad-m , które mogą być pomocne przy analizie i realizacji tego pomysłu:

Istnieją trzy standardy podpisu elektronicznego uznawane w UE, z czego na dwóch musimy się skupić (https://pergam.in/blog/podpis-kwalifikowany-xades-pades-cades/ ):

  1. PaDES – dla plików PDF; usunięcie wymaga edycji pliku PDF
  2. XaDES
  • otoczony - dla plików XML; podpis zawarty w pliku XML wraz z oryginalnymi danymi; usunięcie wymaga ekstrakcji oryginalnego pliku z pliku XML
  • otaczający – dla dowolnych formatów plików; podpisany plik ma format XML i zawiera w sobie oryginalny plik bez podpisu; usunięcie podpisu wymag tylko wypakowania oryginalnego podpisu
  • zewnętrzny – dla dowolnych formatów plików; podpis jest w osobnym pliku do oryginalnego i zawiera tylko sumę kontrolną oryginalnego pliku; usunięcie podpisu wymaga tylko nie udostępniania pliku podpisu do pobrania

Operacje edycji XML (usunięcie podpisu z XaDES otoczony; wypakowanie z XaDES otaczający) są prostymi zmianami do przeprowadzenia przez każdego programistę.

W przypadku PDF to zrozumienie tego formatu jest mniej popularne, ale też myślę, że nie jest to coś strasznego. Na początek warto mieć świadomość, że PDF jest formatem tekstowym.

Tu jest przykład pliku PDF z komentarzami dla minimalnego dokumentu "Hello world": https://brendanzagaeski.appspot.com/0004.html

Tu jest zwięzłe wprowadzenie w założenia formatu: https://medium.com/aia-sg-techblog/basic-structure-of-portable-document-format-pdf-79db682579c9

Tu trochę bardziej praktycznie: https://blog.idrsolutions.com/?s=%22Make+your+own+PDF+file%22

Tu jest narzędzie, które może być pomocne w QA, że podpis został usunięty: https://pdfcrowd.com/inspect-pdf/

W zakresie implementacji to są biblioteki, które umożliwiają parsowanie PDF w Pythonie, więc zapewne tylko odszukać obiek typu "Sig" i go usunąć / zastąpić V stałą przed ponownym zapisem.

image
https://opensource.adobe.com/dc-acrobat-sdk-docs/pdfstandards/PDF32000_2008.pdf

Jeżeli dalsze informacje są potrzebne – służę uprzejmie. Mogę nawet napisać jakąś generyczną funkcję do tego, jeżeli trzeba.

To oczywiśćie nie gwarantuje ochrony danych, które zawarte są w dokumentach jako tekst lub grafika (nieskuteczna lub brak anonimizacji), a mówię tylko o danych, które są w podpisie elektronicznym.

@ad-m-ss
Copy link

ad-m-ss commented Mar 11, 2024

@PiotrIw daj znać na którym odcinku potrzebujesz pomocy :)

@dzemeuksis
Copy link
Contributor Author

dzemeuksis commented Mar 18, 2024

Uzupełniając o ekspertyzy prawne:

Brak przeszkód w usuwaniu podpisów. Nie powinniśmy ingerować w samą treść informacji, ale usunięcie podpisu nie stanowi problemu - mamy zresztą ku temu uzasadnienie. Nie powinniśmy natomiast podpisywać dokumentów swoimi podpisami (to nie nasze oświadczenie wiedzy/woli).

Ale tak, dobrze by było oznaczyć jakoś takie pliki, żeby było wiadomo, że został z niego usunięty podpis.

@PiotrIw
Copy link
Member

PiotrIw commented Mar 18, 2024

@ad-m-ss Adam, super by było jakbyś dopisał taka funkcję. Wg mnie najlepiej ją wywoływać w "feder/virus_scan/tasks.py" przed wykonaniem skanowania.
@dzemeuksis - oznaczenie można dodać jako info po wywołaniu skanowania AV np: "Usunięto podpis i przeskanowano AV"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants