Migrate paperless-ngx from PostgreSQL to sqlite

#insert reasons (e.g. simpler backup)

My reason is that I consider switching from a docker install with PostgreSQL to https://github.com/alexbelgium/hassio-addons/blob/master/paperless_ngx because the new (2.0+) versions of paperless (docker) removed the support for arm-32.

Inspired by https://github.com/jonaswinkler/paperless-ng/issues/1550#issuecomment-1015784199

Also sqlite is not slow: https://litestream.io/blog/why-i-built-litestream/

1. Export the database
(Data is exported into your „export“ folder)

usr/src/paperless/src#:
python3 manage.py dumpdata --exclude=contenttypes --exclude=auth.Permission > /usr/src/paperless/export/data.json

2. Stop the app, Remove the database from your docker compose file and start the app again.

3. Import the data

usr/src/paperless/src#:
python3 manage.py loaddata --exclude=contenttypes --exclude=auth.Permission /usr/src/paperless/export/data.json

Die neue DKB App, PushTAN und die Haftung

Hintergrund: Ich besitze einen Master in der Informatik, bin interessiert an IT Sicherheit und schreibe diesen Post für Pishing Opfer denen die DKB eine grob fahrlässige Verletzung der Pflichten vorwirft.

Übersicht der TAN Verfahren vom BSI

PushTAN/AppTAN: App auf dem Smartphone

Das PushTan Verfahren firmiert bei den verschiedenen Banken unter verschiedenen Namen. Zur Nutzung dieses Verfahrens sind ein Smartphone oder Tablet und die entsprechende pushTAN-App notwendig. Nach Anmeldung des Verfahrens bei der Bank erhalten Kunden den Zugangscode für die App. Nach Eingabe der Transaktionsdaten, im Browser oder der Banking-App, werden die eingegebenen Daten zur Kontrolle noch einmal in der pushTAN-App angezeigt. Nachdem der Kunde diese bestätigt, wird die TAN generiert. Diese muss dann im Browser oder der BankingApp eingegeben werden. Manche Apps übernehmen diese auch automatisch. Die Sicherheit des TAN-Verfahrens kann erhöht werden, wenn zwei unterschiedliche Geräte für Banking und TAN-Generierung eingesetzt werden. Auch hier sollte immer die aktuellste Version der App installiert sein.

eTAN/ChipTAN: TAN-Generator mit girocard

Beim ChipTAN-Verfahren kommen zwei voneinander unabhängige Geräte zum Einsatz. Erst einmal wird aus den Transaktionsdaten ein graphischer Code erstellt, der dann mit dem ChipTAN-Generator ausgelesen werden muss. Dieser Generator wird vorher mit der entsprechenden Bankkarte aktiviert und erstellt aus der Grafik eine Transaktionsnummer. Da der Generator selbst nicht mit dem Internet verbunden ist, kann er aus der Ferne nicht angegriffen werden. Sollten die generierten TANs Unbefugten in die Hände fallen, können damit jedoch keine anderen Transaktionen ausgeführt werden, weil sie dynamisch an die jeweilige Überweisung gebunden sind.

PhotoTAN/QR-TAN: Grafik am PC, dazu ein Lesegerät oder eine Smartphone App

Bei diesem TAN-Verfahren kommen zwei voneinander getrennte Geräte zum Einsatz. Nach Eingabe der Transaktionsdaten erscheint auf dem Bildschirm eine Grafik, die mit der entsprechenden App für die photoTAN ausgelesen wird. Der in der Grafik enthaltende Code wird in eine TAN gewandelt, mit der die Transaktion frei gegeben wird. Die grafische Datenverschlüsselung bietet Hackern keine große Angriffsfläche. Zusätzlich wird die App mit einem Passwort gesichert. Eine Sicherheitslücke könnte das Smartphone des Kunden sein, wenn es nicht regelmäßig mit den Aktualisierungen der Apps versorgt wird.

[…]

Jedoch bleibt der Einsatz eines externen TAN-Generator am sichersten, da dieser vom Internet getrennt ist und ausschließlich für das Onlinebanking benutzt wird

https://www.bsi.bund.de/DE/Themen/Verbraucherinnen-und-Verbraucher/Informationen-und-Empfehlungen/Online-Banking-Online-Shopping-und-mobil-bezahlen/Online-Banking/smsTAN/sms-tan_node.html

Das neue Banking der DKB sieht nur noch die Smartphone App als TAN Verfahren vor.

Dies ist problematisch, da die App prinzipbedingt weniger sicher ist als ein getrenntes Gerät (ChipTAN).

  1. Weder App noch Nutzer können sicherstellen, dass auf dem Smartphone keine Schadsoftware läuft. Es findet zwar eine Überprüfung auf „root“ statt, was aber allenfalls ein Indikator einer Infektion ist – und sich einfach austricksen lässt.
  2. Die Nutzung eines alten Smartphones nur zum Banking ist unsicher, da alte Smartphones kaum mit Sicherheitsupdas versorgt werden.
  3. Das Smartphone braucht zwingend einen Zugang zum Internet, was ein potentielles Infektionsrisiko darstellt.
  4. Die App ist gleichzeitig der einfache Zugang zum Finanzstatus.

Die allermeisten Nutzer werden also ihr alltags Smartphone zum Banking benutzen.

Die Banken sind sich dieses Risikos bewusst und geben Tipps das installieren von Schadsoftware zu verhindern. Siehe: https://www.vrbank-hg.de/onlinefiliale/sicherheit/phishing-warnungen/phishing-android-app.html

Nur ganz verhindern lässt sich das nicht, es bleibt immer ein Restrisiko – vor allem unter dem Aspekt, dass gerade Nutzer günstiger Smartphones oft spärlich mit Updates versorgt werden: https://de.statista.com/statistik/daten/studie/180113/umfrage/anteil-der-verschiedenen-android-versionen-auf-geraeten-mit-android-os/

Die DKB hat sich nun entschlossen alle Nutzer auf ihre neue App umzustellen und im gleichen Zug auch das deutlich sicherere ChipTAN ausgehebelt, denn selbst mit den ChipTAN spezifischen Anmeldedaten (an der aktuellen Website) wird das nur noch die App als TAN Verfahren benutzt.

Damit ist meiner Einschätzung nach technisch keine starke Kundenauthentifizierung mehr gegeben und es dürfte unmöglich sein dem Kunden eine grobe Fahrlässigkeit nachzuweisen. Und damit ist die DKB voll in der Haftung. Siehe https://www.stader.legal/missbrauch-im-onlinebanking.html

Aussagen der DKB

meine Anfrage

Laut der FAQ ist chipTAN im neuen Banking nicht mehr vorgesehen, sondern alles benutzt nur noch Push-Tan.

TAN2go und chipTAN benötigst du nur für die Funktionen, bei denen du ins bisherige Banking geleitet wirst.

https://www.dkb.de/fragen-antworten/welche-tan-verfahren-bietet-die-dkb-an

Dieses Verfahren ist inherent weniger sicher und wurde von mir explizit nicht freigegeben.
Nur noch das alte Banking zu nutzen ist auch keine Lösung, da ein potentieller Angreifer ja einfach das neue Banking nutzen kann.

Wie kann ich weiter chip-TAN (echte 2 factor) benutzen?

Die Antwort der DKB liest sich wie eine vorbereitete Pressemitteilung, ich muss also Vermuten, dass sie sich des Risikos voll bewusst sind.

Meine etwas zynische Zusammenfassung der Antwort: Bequemlichkeit ist uns wichtiger als Sicherheit. Hier die Antwort im Wortlaut.

Das neue Banking ist mit der neuen App verknüpft und kann nur

gemeinsam genutzt werden.

Als Direktbank legen wir Wert auf bequeme und sichere Bankgeschäfte.

Unsere Lösungen sind optimal auf mobile Endgeräte abgestimmt.. Die

Mehrzahl unserer Kund*innen schätzt und erwartet bequeme, sichere

Technologien für ihre Bankgeschäfte. Diesem Wunsch fühlen wir uns

verpflichtet und entwickeln auch künftig Lösungen, die mit mobilen

Endgeräten sehr gut vereinbar sind.

Wir bitten Sie daher zu berücksichtigen, dass Smartphones und Tablets

als auch digitale Authentifizierungsverfahren, Vertragsabschlüsse sowie

Vermögensverwaltung künftig unsere und damit Ihre Begleiter im Banking

sein werden.

Als chipTAN-Nutzer*in können Sie bis auf Weiteres das bisherige Banking

wie gewohnt nutzen.

Update: Laut FAQ wird an einer hardware Lösung gearbeitet, wie sie aussieht, wann sie kommt – und warum man nicht einfach weiter ChipTAN unterstützt erschließt sich mir nicht.

Update 2: Die Gerichte scheinen PushTAN auch für unsicher zu halten https://www.golem.de/news/onlinebanking-gericht-haelt-push-tan-verfahren-fuer-unsicher-2310-178689.html.

Resolve display flicker on the InfinityBook Pro 14 Gen6 by tuxedo

The guide by tuxedo tells you how to disable `PSR` which stands for panel-self-refresh.

But psr is a very useful feature to conserve.

Thanks to the reddit user 909876b4-cf8c I went down the rabbit hole to figure out what tuxedos custom solution actually does. They force psr version 1. link

I'm booting with i915.enable_psr=0

And after calling $ echo 0x3 > /sys/kernel/debug/dri/0/i915_edp_psr_debug

my display is still working fine and psr is enabled

cat /sys/kernel/debug/dri/0/i915_edp_psr_status 
Sink support: yes [0x03]
PSR mode: PSR1 enabled
Source PSR ctl: enabled [0x81f00ee6]
Source PSR status: IDLE [0x04010000]
Busy frontbuffer bits: 0x00000000

Optional: For a flicker free experience follow the guide in https://bennis-blog.de/2021/11/19/pop_os-nvidia-on-the-infinitybook-pro-14-gen6/ to add the kernel parameter `i915.enable_psr=0`

The actual fix

Create a systemd unit file to enable psr version 1.

$sudo nano /etc/systemd/system/infinitybook_psr_fix.service

# ---
[Service]
Type=oneshot
ExecStart=bash -c 'echo 0x3 > /sys/kernel/debug/dri/0/i915_edp_psr_debug'
[Install]
WantedBy=graphical.target
# If graphical.target doesn't work for you
# WantedBy=multi-user.target
# ---

$sudo systemctl daemon-reload
$sudo systemctl enable infinitybook_psr_fix.service
$sudo systemctl start infinitybook_psr_fix.service

# Confirm that it worked by calling 
sudo cat /sys/kernel/debug/dri/0/i915_edp_psr_status 

This fix might resolve the screen flickering for all HDPI displays on Alder Lake (12th gen Intel)

Nachhall von Gestern

Rücksendung der Schlüssel des Hauses meiner Kindheit mit folgendem Text:

Dieser Schlüssel war für mich das Symbol auf ein mögliches Zusammenfinden.

Unser letztes Gespräch hat leider gezeigt, dass es dazu nicht kommen kann.

Dina trägt nicht die Schuld an unserer Entfremdung, sondern deine Stimmungsschwankungen, Vorwürfe und Machtspiele.

Bitte hole dir die Hilfe, die du so dringend brauchst z.B. https://www.bmfsfj.de/bmfsfj/service/publikationen/psychologische-beratung-hilft–96026

Ich wünsche dir von Herzen ein erfülltes Leben.

Dein Sohn Benjamin
(2022-01-08)


Neues aus dem Irrenhaus

Situation:
Mein kleiner Bruder (>18J) ist inzwischen zurück aus dem Krankenhaus, eine heftige Infektion hat er weiterhin und nimmt Antibiotika.

Jetzt ist mein Erzeuger der Meinung: Das Problem ist der unregelmäßige Schlafrhythmus und setzt einen Timer auf das Wlan um so einen gesunden Rhythmus zu erzwingen.

(Meine Auffassung des ganzen ist, dass heftige Schmerzen und Antibiotika den unregelmäßigen Schlafrhythmus bedingen)

Aus Gründen habe ich meinem Erzeuger deshalb eine Nachricht geschickt, dass er sich psychologische Hilfe suchen soll und aufhören seine Probleme auf meinen kleinen Bruder zu projizieren. [lange Geschichte: er hat die Trennung von seiner Ex-Frau nie verarbeitet und gibt ihr / seinen Kindern die Schuld (Wortbeispiel: Wir hätten gegen ihn intregiert und hätten ihm bewusst psychischen Schaden zugefügt, aber er liebt uns noch …)]

Das Ergebnis dieser Nachricht war ein Anruf/Rant (ich kam wenig zu Wort) nach dem Motto:

  • Was fällt mir ein ihn so zu beleidigen
  • Ich hätte ihn damals (Rausschmiss meinerseits an Weihnachten. Siehe: Weihnachten und Weihnachten die 2te – oder der tollste Tag im Jahr) bewusst provoziert und außerdem hatte ich ja einen Schlüssel und hätte jederzeit wieder kommen können
    Er hat außerdem ein Beweisphoto vom Auto damals, er kann/will es mir aber nicht zuschicken, sondern wechselt lieber das Thema
  • Ob ich mich ohne Ekel im Spiegel anschauen kann
  • Hat meine Fähigkeit zur Selbstreflektion angezweifelt (siehe die Liste der Vorwürfe)
  • Mein kleiner Bruder (chronische Krankheit) hängt den ganzen Tag nur in seinem Zimmer herum, ist aber gleichzeitig eine enorme Belastung
  • Er liebt uns
  • Das Zimmer meines Bruders ist total zugemüllt (es steht voll, aber definitiv keine Müllhalde)
  • Er hat sich den Arsch für uns aufgerissen
  • Er hat mir Fahrrad fahren beigebracht
  • Er verdient gut
  • Er braucht keine psychologische Hilfe (braucht er IMHO seitdem ich ~14 Jahre alt war)
  • Ich wüsste ja bald wie es einem Vater so geht
  • Diverse Dinge über meine Mutter
  • Wir hätten als Kinder Psychoterror gegen ihn betrieben. Beispiele die genannt wurden: Haare im Waschbecken, Mülleimer nie geleert
  • Ich wäre ja fertig mit seinem Teil der Familie, da ich den Nachnamen meiner Frau angenommen habe
    (ich will eigentlich nur den selben Namen wie meine Kinder und da die Beziehung mit meinem Erzeuger nicht so toll ist hing ich eben auch nicht so sehr am Namen – er war auch zur Hochzeit eingeladen, genau wie die Oma)
  • ….
  • Er setzt meinen Bruder morgen in den Zug: Jetzt bin ich dran mit kümmern.
    Daran, dass eine Entfernung von >300km zu den Ärzten keine gute Idee, hat er nicht gedacht. Unabhängig der Wohnsituation (Wohnung vs. Haus)

Danach gab es noch ein Gespräch mit seiner Frau D. Sie begann damit meinen Erzeuger als Vater des Jahres zu preisen, der nur das Beste für meinen Bruder im Sinn hat. Eines ihrer Beispiele war der viele Stress, e.g. der neue 450€ Job den er nur aus Liebe zu seinem Sohn, damit er ihm ein Taschengeld zahlen kann, angefangen hat. Auf meine Rückfrage ob das auch so kommuniziert wurde, war die Antwort „Nein, aber sie interpretiert das so“.
Sie konnte mir dann aber zustimmen, dass es nicht zielführend ist meinen Bruder in den Zug zu setzen ist.
Auf den Rant von weiter oben angesprochen hieß es: Ich müsse ja verstehen, dass er das Opfer ist und persönlich sehr getroffen. (ich bin die Person die er vor die Tür gesetzt hat)

Fazit:
Das Gespräch war ein Fehler / zumindest nicht zielführend. Keines der Themen aus meiner Jugend wurde von ihm verarbeitet, die Verdrängung ist immer noch heftig.
Die Situation meines Bruders wurde auch nicht besser.
–> Kontakt des Erzeugers gelöscht und Nummer gesperrt

F*ck Querdenker, Impfskeptiker, usw.

Mein kleiner Bruder liegt im Krankenhaus, bekommt intravenös Antibiotika und mein Erzeuger empfiehlt ihm MMS (Verbraucherzentrale) gegen die Bakterien – for fucks sake.

Nachtrag: In einem späteren Gespräch wurde wohl noch davon abgeraten den Ärzten zu vertrauen und er solle sich selbst um seine Gesundheit kümmern. Nicht nur ist das eine wohldokumentierte Strategie der Spinner, untergräbt Jahrhunderte der Forschung und Medizin, sondern es gibt auch noch dem Kranken Schuld daran, dass es ihm nicht besser geht. – Ich finde das einfach nur pervers.
Noch besser: Eine Ablehnung dieser Schwurbel-Einstellung wurde mit „dir geht es wohl noch nicht schlecht genug“ kommentiert.

Pop!_OS (nvidia) on the InfinityBook Pro 14 Gen6 by tuxedo

Summary of what I did.

Added the kernel parameter i915.enable_psr=0 using sudo kernelstub -a i915.enable_psr=0 to resolve the screen flicker issue. Even better: https://bennis-blog.de/2022/05/14/resolve-display-flicker-on-the-infinitybook-pro-14-gen6-by-tuxedo/

Installed:

  • tuxedo-control-center
  • tuxedo-keyboard
  • tuxedo-touchpad-switch (touchpad-led support – also add to startup applications)
  • tuxedo-pinfix-tgl-dkms (not sure if required)

For power tuning, I installed tlp and mostly adjusted

/etc/tlp.conf L0319: RUNTIME_PM_DRIVER_BLACKLIST="" so that runtime_pm is enabled for the nvidia card (it sometimes turned on [maybe after sleep]).

As the touchpad sometimes stops to work (mostly on login), I created a simple script that fixes the issue.

 #!/bin/bash
sudo rmmod i2c_hid_acpi
sudo modprobe i2c_hid_acpi

Maybe: set deep sleep: (I didn’t do that because the Nvidia card wakes up after standby)

sudo kernelstub -a "mem_sleep_default=deep"



Accelerated video playback. https://wiki.archlinux.org/title/Hardware_video_acceleration

I failed to get va-api working with firefox (seems to be a known bug), but chrome is working fine following the arch wiki or https://www.linuxuprising.com/2021/01/how-to-enable-hardware-accelerated.html

For some reason `vdpau-va-driver_0.7.4-7_amd64.deb` is missing from the ubuntu repos. You can simply install it from here (debian). It enables va-api with nvidia.

[not required after 22.04] I also installed https://pipewire-debian.github.io/pipewire-debian/ with wireplumber.

WARNING: OPAL boot currently doesn’t work, as the SSD is power cycled on reboot.

Further notes:

gnome-shell extensions:

https://extensions.gnome.org/extension/3628/arcmenu/
https://extensions.gnome.org/extension/904/disconnect-wifi/
https://extensions.gnome.org/extension/1319/gsconnect/
https://extensions.gnome.org/extension/307/dash-to-dock/
https://extensions.gnome.org/extension/1401/bluetooth-quick-connect/
https://extensions.gnome.org/extension/779/clipboard-indicator/
https://extensions.gnome.org/extension/36/lock-keys/
https://extensions.gnome.org/extension/906/sound-output-device-chooser/
https://extensions.gnome.org/extension/1287/unite/
https://extensions.gnome.org/extension/1485/workspace-matrix/
https://extensions.gnome.org/extension/1276/night-light-slider/

disabled:
Cosmic Dock
Pop COSMIC
Pop Shell

Patched Nautilus for better search: https://www.linuxuprising.com/2020/06/how-to-install-nautilus-with-type-ahead.html
simply: https://launchpad.net/~lubomir-brindza/+archive/ubuntu/nautilus-typeahead

How to setup zero overhead full disk encryption with S3 sleep support

Background

Modern (NVMe) SSDs encrypt all data by default. Also called self-encrypting drive (SED). They just don’t require a password to access the data. Instead of adding an additional layer of encryption e.g. using LUKS (additional power usage), I opted to use the capabilities of the device to secure access to the stored data.

Disclaimer:
I use this setup for my installation of Pop! OS 21.04 – This guide is mostly for my own memory.

More information:

I use a fork of sedutil as that supports newer systems and for S3 sleep support
https://github.com/ChubbyAnt/sedutil, https://github.com/ratcashdev/sedutil/tree/badicsalex-s3-sleep-support
WARNING:
This fork of sedutil is not compatible with the original one, as it uses a different hashing algorithm

Very high level overview of the boot process

Cold boot:
The self encrypting device (SED) presents a (strangely) named read only ShadowMBR.
Those 128MB of memory contain the pre-boot authentication image (PBA) with tools to unlock the drive and after that chain-boot (or restart) to boot your real system. It is currently based on syslinux, but can hopefully be replaced by systemd-boot sometime in the future https://github.com/systemd/systemd/issues/16089.

S3 sleep:
Switching into S3 sleep shuts down the drive, locking it.
A systemd service is setup to store the unlock key in the kernel and unlock the drive on resume.

Preparations

Backup all your data!

Download the rescue image from https://github.com/ChubbyAnt/sedutil/releases/tag/1.15-5ad84d8

(For S3 sleep support) Checkout and build sedutil-cli from https://github.com/ratcashdev/sedutil/tree/badicsalex-s3-sleep-support, or use my self-compiled version

Setup full disk encryption

Follow: https://github.com/ChubbyAnt/sedutil#encrypting-your-drive

EFI Setup

Create and rearrange the following boot entries (I did this from within my EFI settings)

  1. The EFI boot file in the ShadowMBR
  2. Your normal EFI boot entry

Setup S3 Sleep Support

Based on https://github.com/ladar/sedutil/issues/4

Install sedutil-cli with S3 sleep support (see preparations).

Get your hashed password

sedutil-cli --printPasswordHash <password> /dev/nvme?

Create the systemd service file /etc/systemd/system/seds3sleep.service

(adjust the password hash and /dev/nvme0n1)

NOTE: The additional n1 is no error

[Service]
Type=oneshot
ExecStart=/opt/sedutil-1.15.1-87/sedutil-cli -n -x --prepareForS3Sleep 0 <Admin1 password hash> /dev/nvme0n1

[Install]
WantedBy=multi-user.target
Enable this service. # systemctl enable seds3sleep.service && systemctl start seds3sleep.service