Ich mag Pfosten.

I like posts.

  • 0 Posts
  • 8 Comments
Joined 1 year ago
cake
Cake day: July 8th, 2023

help-circle
  • There is no downside to nested encryption, except of course the performance overhead. But this only really makes sense if each layer has an independent key and each layer uses an algorithm from a different family. Improper key reuse weakens the scheme.

    For symmetric cryptography like AES the benefit is dubious. It is far more likely that the content is decrypted because the key was acquired independently than that AES would be broken.

    However, there absolutely is a benefit for asymmetric crypto and key agreement schemes. This is how current Post-Quantum Cryptography schemes work, because:

    • commonly used algorithm families like RSA and Elliptic-Cuve will be broken as soon as a sufficiently large quantum computer exist
    • proposed PQC algorithms are comparatively immature, and some of them will be broken in the near future

    Nesting one algorithm from each family gives us the best of both worlds, at a performance overhead: conventional asymmetric cryptography give us temporary security in the near future, and the second PQC layer gives us a chance at long-term security.


  • The text does technically give the reason on the first page:

    It is not a regular language and hence cannot be parsed by regular expressions.

    Here, “regular language” is a technical term, and the statement is correct.

    The text goes on to discuss Perl regexes, which I think are able to parse at least all languages in LL(*). I’m fairly sure that is sufficient to recognize XML, but am not quite certain about HTML5. The WHATWG standard doesn’t define HTML5 syntax with a grammar, but with a stateful parsing procedure which defies normal placement in the Chomsky hierarchy.

    This, of course, is the real reason: even if such a regex is technically possible with some regex engines, creating it is extremely exhausting and each time you look into the spec to understand an edge case you suffer 1D6 SAN damage.


  • I found an academic article (Vogel et al 2019) that analyses this phrase. Key points:

    • when the German legislator uses geschäftsmäßig, this demonstrates a clear difference in intention from gewerbsmäßig or gewohnheitsmäßig

    • the article quotes Franz von Liszt 1881, and this definition seems to be accepted to this day:

      Die Gewerbsmäßigkeit charakteriſiert ſich einerſeits durch die auf öftere Wiederholung gerichtete Abſicht, andrerſeits durch die Abſicht des Thäters, ſich durch dieſe Wiederholung eine, wenn auch nicht regelmäßig oder dauernd fließende Einnahmsquelle zu verſchaffen […].

      Die Geſchäftsmäßigkeit teilt mit der Gewerbsmäßigkeit die auf regelmäßige Wiederholung gerichtete Abſicht, dagegen fehlt die Abſicht, ſich eine ſtändige Einnahmsquelle zu eröffnen. Ob die einzelnen Handlungen honoriert werden oder nicht, iſt gleichgültig.

    • the term geschäftsmäßig is significant for §5 TMG, but has also reached wider attention in the discussion around the decriminalization of assisted suicide.

    So the key defining aspect is the auf regelmäßige Wiederholung gerichtete Absicht, the intention directed towards regular repetition.

    This meaning in legalese German is divorced from everyday language.


    § 5 TMG has the interesting construction of “geschäftsmäßige, in der Regel gegen Entgelt angebotene Telemedien”. So the TMG does not seem to care whether you have a profit motive, only that other people might provide this kind of service for a profit motive. If other people would provide instances of Discord bots in order to get donations, that might already bring you in scope.

    This is not legal advice, but it seems like your options are to either avoid running an instance of the bot, only running it in a private context without access from a wider public, or sucking it up and providing the necessary documentation.

    And no, it is probably not possible to use a PO box because you don’t live or work at that address. The general expectation seems to be for the address in an imprint to be ladungsfähig, so that you can be served there. This random lawyer’s website writes:

    Unter der Anschrift in diesem Zusammenhang ist die Postleitzahl, der Ort, die Straße und die Hausnummer zu verstehen, nicht ausreichend ist die Angabe eines Postfachs.


  • That’s not the correct criterion. There are multiple German laws that require imprint-style disclosures.

    Some of them are indeed specific to commercial activities.

    But the Impressumspflicht typically means §5 TMG which requires an Impressum for

    geschäftsmäßige, in der Regel gegen Entgelt angebotene Telemedien

    Rough English translation:

    Telemedia offered in a business-like manner, typically for remuneration

    Critically, “geschäftsmäßig” does not mean “commercial” or “profit-oriented”. In particular, nonprofit organizations also act geschäftsmäßig.

    IANAL, but it doesn’t sound like your service wouldn’t be geschäftsmäßig.

    All of this is irrelevant anyway because you very likely have to publish a privacy notice per Art 13 or Art 14 GDPR. This must include the identity and contact details of the data controller (i.e., you). The German data protection authorities expect that the identity includes your real name and a ladungsfähige Anschrift (address where you can be served), so pretty much exactly what would be included in an Impressum anyway.


  • It would be unwise for a bank to publish its exact fraud detection and risk management policies, otherwise they could be easily circumvented. A lot of these policies will be embodied in their internal backend services.

    Someone will now inevitably mention “security by obscurity”. But Kerckhoff’s Principle is specifically about cryptosystems which should derive their security solely from the strength of the keys. That way, confidentiality is still ensured even when details about the cryptosystem become known to adversaries.

    But non-cryptographic aspects of security benefit from asymmetric knowledge, from grey areas, from increasing risk for adversaries.


  • You actually get a say in how that money is spent, whereas if you donate to developers directly then they decide …

    You get to be involved in a “steering committee” of sorts for that project,

    The project itself always decides, unless you fork the project and do your own thing. You can wave a carrot in front of them (if you do X then you get $Y), but the relevant factor is going to be the size of the carrot $Y, not directly the “collective bargaining” via that platform. How would your platform facilitate finding a stronger negotiation position?

    this membership organization is incorporated as a non-profit, whereas the software project you’re supporting may not be

    It sounds like you may have discovered the “fiscal sponsor” concept. There are a couple of nonprofits already offering such services, such as the Software Freedom Conservancy or OpenCollective. The foundations like Linux Foundation, Apache Foundation, or Eclipse Foundation also come to mind.

    However, for all of these the project decides to join a host. Foundations can’t just annex projects.



  • C++ does have the problem that references are not objects, which introduces many subtle issues. For example, you cannot use a type like std::vector<int&>, so that templated code will often have to invoke std::remove_reference<T> and so on. Rust opts for a more consistent data model, but then introduces auto-deref (and the Deref trait) to get about the same usability C++ has with references and operator->. Note that C++ will implicitly chain operator-> calls until a plain pointer is reached, whereas Rust will stop dereferencing once a type with a matching method/field is found. Having deep knowledge of both languages, I’m not convinced that C++ features “straightforward consistency” here…