@alcinnz@floss.social
@alcinnz@floss.social avatar

alcinnz

@alcinnz@floss.social

A browser developer posting mostly about how free software projects work, and occasionally about climate change.

Though I do enjoy german board games given an opponent.

Pronouns: he/him

This profile is from a federated server and may be incomplete. Browse more on the original instance.

alcinnz, to random
@alcinnz@floss.social avatar

Some data available in our hypothetical hardware-Internet Communicator is very sensitive with privacy concerns far outweighing any desire to reprogram its use. So how'd I keep a close eye on who uses this raw data?

This would necessarily involve a close eye on any password managers, & unnecessarily any instant messengers.

I'm talking about data like the framebuffer, open windows, password vault, status LEDs/buzzer output, notifications (UX reasons), fingerprint scanner, etc.

1/4?

alcinnz,
@alcinnz@floss.social avatar

On the clientside we can have the Filesystem & Linker components validate those signatures, by comparing the file's hash (computed by our Arithmetic Core) against the assymetrically-decrypted (by our FPMA) signature.

To ensure noone has nullified this check we'd need to validate these components (first things to boot past the firmware!) we'd to check that they're signed too. If we ensure not even we (the vendor) can overwrite the firmware undermining its security guarantees, no more to do!
3/4

alcinnz,
@alcinnz@floss.social avatar

Except... I'm a bit queasy about limiting the control others have over their devices, so how does this differ from Microsoft's, Apple's, or Nintendo's "Secure Boot"?

1st off I'd minimize how much I'd rely on these defences, minimize the constraints it puts upon you to a level most everyone should be comfortable with. Instead I'm mainly relying on hardware/firmware-level sandboxing!

2nd if you configure authenticated boot I'd let you use those creds to loosen (or tighten) these checks.

4/4.5!

alcinnz,
@alcinnz@floss.social avatar

The authenticators used to bypass our Secure Boot would have to be ones we (the vendor) approve of, if this check is to be meaningful at all. But it'd let you overwrite all the other software on your device!

With asymmetric cryptography these credentials don't even need to live on the device itself, which could be useful for work machines. Though I'd want to use our control over the authenticators to inform their employees that this is a work machine!

5/5 Fin!

alcinnz,
@alcinnz@floss.social avatar

To indicate that we approve of a certain component accessing sensitive I/O & data we'd cryptographically sign (encrypt a hash of the program) it before offering it for download. Ideally (especially as our userbase grows) we'd do this on a machine disconnected from the internet running a bare-bones OS, since any viruses here could infect all our users!

This would make the process for publishing updates to certain components a bit more cumbersome, but that should be rarely needed.

2/4?

alcinnz, to random
@alcinnz@floss.social avatar

Resuming my study of Elf Utils' commands...

After initializing internationalization & parsing commandline flags elflint iterates over each arg transiently & carefully opening each given file, branching upon its subtype. Whilst aggregating errors.

For proper ELF files it retrieves the E header, outputs the filename, initializes LibEBL, validates the ELF headers, validates its P headers, validates its Sheaders, validates exception handlers if present are non-NULL, & cleans up.

1/5?

alcinnz,
@alcinnz@floss.social avatar

Throughout elflint outputs any validation errors.

For ELF archives it instead finalizes a prefix/suffix for error lines, iterates over each file in this archive, & recurses into each of those.


After initializing internationalization & parsing commandline flags findtextrel iterates over remaining commandline flags (handling a singular arg specially) aggregating error codes.

For each it opens the ELF file, gets its header validating its dynamic, & iterates over sections.

2/5?

alcinnz,
@alcinnz@floss.social avatar

For each section findtextrel retrieves the header & branches over whether its dynamic. If it is it iterates over each entry there-in to flag whether we've found a TEXTREL one. If its a symtable it saves the index of the last one.

Afterwhich it errors out having not found a textrel. Or it allocates a segments array (initially 10 slots) & iterates over the P headers for each actually-existing P headers of type PT_LOAD & not flagged PF_W it appends to the array.

3/5?

alcinnz,
@alcinnz@floss.social avatar

If we've gathered any segments we initialize the DWARF iterator, possibly opens a debug info file, & iterates over the sections a final time. For each findtextrel double checks we actually have section data, & iterates over its entries (handled according to REL/RELA subtype) to exhaustively check against expected values.

Regardless we clean up.

3.5/3.5 Fin for today!

alcinnz, to random
@alcinnz@floss.social avatar

I've now finished my metathread on hypothetical developer tools for self-hosted maintenance of my hypothetical hardware-Internet Communicator! And with it I believe I've described practically all the software & hardware comprising an inclusive decolonial browser & operating system! Following existing web (no JS), internet, Unicode, Xiph, USB, AutoMerge, etc standards.

Its not simple, but I think the hypothetical hardware made it much simpler!

1/2

alcinnz, (edited )
@alcinnz@floss.social avatar

So my question: Once I've published these threads, what do I tackle next? Whether I choose to extend this hardware/OS to new usecases or design new hardware?

I've heard interest in expanding my XMPP discussion beyond the basics.

I haven't said much about authentication & multi-user devices.

Mapping could be a useful feature!

So far I've leaned towards serving audiences in my design, I'd love to explore creative tools more!

Anything else? Specifics?

Please vote, please please discuss!

annika, to random
@annika@xoxo.zone avatar

💩 "We are approaching the use of AI in Firefox -- which many, many of you have been asking about -- in the same way. We’re focused on giving you AI features that solve tangible problems, respect your privacy, and give you real choice." https://connect.mozilla.org/t5/discussions/here-s-what-we-re-working-on-in-firefox/td-p/57694

alcinnz,
@alcinnz@floss.social avatar

@annika Hmmmm, if they're dedicated to solving tangible problems I wouldn't complain...

But as long as the focus is on the tool not the problem, I can't trust such statements!

alcinnz, to random
@alcinnz@floss.social avatar

3 Layers of UI Interaction - Drew Powers:
https://pow.rs/blog/3-layers-of-ui-interaction/

Boosted by Robin Rendle "The Cascade":
https://csscade.com/three-layers-of-ui-interaction/

lanodan, to random
@lanodan@queer.hacktivis.me avatar

tfw I'm really felling the 3rd one…
The 3 stages of Tech Literacy.jpg

alcinnz,
@alcinnz@floss.social avatar

@lanodan Stage 4: Here's how I'd build my own hardware for my own OS!

I'm aware I'm not the only one...

alcinnz,
@alcinnz@floss.social avatar

@lanodan I don't think anyone has yet managed to turn Stage 4 into practice...

alcinnz, to random
@alcinnz@floss.social avatar

Yesterday I discussed how I'd build a codeforge for & upon our string-centric hardware (as well as clientside feedreader, crash reporter, & fallback crash reporter) comprising of a repo viewer & issue tracker. What else would we want to include in it?

We'd want to let you down the AutoMerge documents to fork them & attach them to issues to request they be merged. We may add a minor integration between the 2 components to merge with a click of a button, but that might not be worth it.

1/5?

alcinnz,
@alcinnz@floss.social avatar

If our project gets big enough a may define a variant of the AutoMerge format which supports Git-style branches, & if it gets even bigger we may store everything on the server behind-the-scenes (wouldn't be presented this way) inside a giant singular repo. All to cut down on storing duplicate data!

We may offer mailing lists (already discussed as they're part of the earliest email standards), possibly with a web UI (rendered via logging) presented it as a forum. As well as an XMPP chatroom.
2/5

alcinnz,
@alcinnz@floss.social avatar

We could offer to host static websites out of an AutoMerge document, with format autoconversion as requested by the clients. Maybe we'd offer a full static-site generator, since we'd have already (trivially) implemented a templating language for the sake of these other webservices!

As well as offering some compute (for any testrunners, profilers, & fuzzers) upon every uploaded AutoMerge document, heavily firmware/hardware sandboxed to avoid abuse & exploits.

3/6?

alcinnz,
@alcinnz@floss.social avatar

Only providing these scripts the read-only repo & any of its dependencies as input, with only a couple bytes as output (the code can be rerun locally where desired) should prevent it from exploiting vulnerabilities or being used for however next we'll monetise computation! These would be run both before & after merging any changes, implemented as part of the repo viewer.

Finally we'd want to build a catalog of all these subprojects!

4/6?

alcinnz,
@alcinnz@floss.social avatar

This catalog would list all repos, issue tracker(s), mailing lists, chatrooms, websites, etc for each subproject. Though I wouldn't want to mandate that subprojects use our services. The repos may be processed to extract the permissions each component requires.

This catalogue would be useful for performing analysis over the entire project!

We can index the input formats each program supports, so our devices can download it & offer to install software for new file formats it encounters.

5/6?

alcinnz,
@alcinnz@floss.social avatar

That index would operate upon a (more) curated subset(s) of the catalogue, probably organized into "tools" & "viewers".

Another analysis pass can keep an eye on who's using particularly sensitive privileges, storing exceptions we've made & their justifications.

5.5/5.5 Fin for today! Tomorrow: Tighten the security a bit more...

alcinnz, to random
@alcinnz@floss.social avatar

Continuing my study of Elf Utils' commands...

After parsing commandline flags (I see internationalization but not its initialization) validating (in some cases, single) args remain elfcompress parses each remaining arg aggregating error codes, before tidying up!

For each it opens the given ELF file validating its kind & fstat(), retrieves the E, S, & P headers, considers calculating a last-offset based on that, & iterates over the ELF sections.

1/5?

alcinnz,
@alcinnz@floss.social avatar

For each section it retrieves an index & header & name, compares name against expected pattern followed if successful by section type outputting a status message, if the name matches but types don't it also tweaks names as appropriate, validates there aren't duplicately-named symboltables, & considers updating some indices with what it found.

After a bit more validation & adjustments it restarts the ELF file copying over the E Eheader then P header, & iterates over sections again!

2/5?

alcinnz,
@alcinnz@floss.social avatar

For each section (round 2) it retrieves various properties upon successfully retrieving the section whilst applying any requested compression, creates a new section in the output ELF file, & copies the various data over to it with minor tweaks (and more compression!).

It finishes by possibly finalizing various global names possibly adding compression, retrieves the updated E header, retrieves S header string index, possibly iterates over those names, updates layout info & tidies up!

3/5?

alcinnz,
@alcinnz@floss.social avatar

For each section name elfcompress retrieves the index & S header, possibly computes some layout info, writes the S header, & checks if we're at the desired entry. If we have it retrieves various layout info & possibly adds compression!

There's a handful of helper wrapper functions dealing with additional details of how ELF files are laid out.

3.5/3.5! Fin for today! I don't want to get started on another command at this point...

  • All
  • Subscribed
  • Moderated
  • Favorites
  • JUstTest
  • kavyap
  • DreamBathrooms
  • thenastyranch
  • ngwrru68w68
  • tacticalgear
  • magazineikmin
  • Youngstown
  • khanakhh
  • rosin
  • slotface
  • InstantRegret
  • everett
  • mdbf
  • Leos
  • cisconetworking
  • cubers
  • modclub
  • GTA5RPClips
  • ethstaker
  • osvaldo12
  • Durango
  • provamag3
  • normalnudes
  • tester
  • anitta
  • megavids
  • lostlight
  • All magazines