GNUnet Messenger API: March 2026
Hello again,
this month I’ve contributed a bit across all kinds of services from GNUnet. It started with minor adjustments to the Messenger service inside GNUnet, fixing an issue in the encryption of SECRET messages. Before that it would use an encrypt-and-mac paradigm that might lead to an attacker breaking the encryption. This has been changed to use the encrypt-then-mac paradigm which is more typical for authenticated encryption. I should note that these changes break compatibility to previous version of the service and it only improves the security attributes of the forward secrecy which is using the SECRET messages.
There have also been adjustments to ensure compatibility with changes in the crypto module of GNUnet which introduced syntax changes. Adding to this I’ve started debugging GNUnet services from CORE, DHT, CADET to REGEX and more. I’ve noted that some services were using a completely different peer identity key than underlying communicators which handle the communication on the TRANSPORT layer. So I’ve looked into how they would utilize the rather new PILS service that aims to signal peer identity changes when interfaces notify changes in connectivity. Multiple services were not using PILS correctly or at all. However the communicators did and therefore a mismatch in derivation of peer identity keys appeared.
So I went through all services that used the peer identity key in any way within GNUnet and implemented changes to form consistency in regards to using the PILS service. That way the mismatches could be resolved and I could debug functionality further.
It required a lot more internal changes for those adjustments because the PILS service introduced that any other service would call a function to sign or decrypt anything using the private key from the peer identity asynchronously. However those function calls have been synchronous until the PILS service got realized. So a lot of memory had to be moved from stack to heap alone to make this work and I would think in the future there will be more optimizations and major rewrites necessary to deal with all of this more efficiently.
Besides those changes I’ve also implemented a new cli tool for the REGEX service inside GNUnet because it came in handy to debug its functionality outside of libgnunetchat. Also I tried to fix or reduce a bunch of errors filling up the logs during all my practical testing. So a lot of this work ended up in the latest release of GNUnet as well.
In addition to this release of GNUnet there have been a new release of libgnunetchat, messenger-cli and messenger-gtk which are compatible with another. So the latest version of those applications finally ship the necessary changes to manage account secrets for encryption of group and epoch keys.
So while that has been done, I’ve continued to make a few minor adjustments to the GTK4 port of the Messenger application front-end. Hopefully I can finish my work on this over the upcoming months for a next release. There are still things I plan for the Messenger service in GNUnet too. But that seems to take a little longer.
Kind regards,
Jacki