I have participated in artifact evaluation committees since 2021. I have done 5 years of CHES , one year of EUROCRYPT , and 2 NDSS years. Over these years, I have seen good artifacts, even great ones, and a fair share of “just OK” ones. There have been no truly terrible ones, though some required a bit of polish. The approach to artifact evaluation at the different venues also differs,…
Last week, I had the pleasure of presenting at Real World Crypto 2026 in Taipei, Taiwan. It was a great RWC in a great place. In this postm I summarize my talk, experience, and takeaways. Plus, at the end, you will find photos of Taipei from my hike to 9-5 peak. The talk # I presented our work on security by obscurity in secure hardware (see the slides ). Compared to cryptographic theory, which…
Recently, I presented our work on Let’s DOIT: Using Intel’s Extended HW/SW Contract for Secure Compilation of Crypto Code at CHES 2025 in the hot and humid Kuala Lumpur, Malaysia. The slides are available. My colleague Vojta also presented exciting joint work, episode 2 of our reverse-engineering trilogy: ECTester: Reverse-engineering side-channel countermeasures of ECC implementations . The…
I recently attended CHES 2024 and presented a paper on pyecsca: Reverse engineering black-box elliptic curve cryptography via side-channel analysis . Check it out on our site . The slides are available. While out in Halifax, we decided to enjoy Nova Scotia and went on a road trip. Some tips: Peggy’s cove: Kind of cool to cycle through, but not that amazing on its own. Expect lots of…
Recently we (me & Lukasz Chmielewski ) gave a tutorial on pyecsca: Reverse-Engineering ECC implementations Using Side-Channel Analysis at the Summer School on real-world crypto and privacy 2024. You can find the tutorial on GitHub.
Today I came up with a clever solution for a dumb problem. When using multiprocessing or concurrent.futures in a Jupyter notebook one is generally limited to the fork start method. This is because the spawn and the forkserver methods require that the target function is defined in an importable module. If you are working with Jupyter notebooks the target function very likely resides in the notebook…
I recently attended CHES 2023 and presented a work-in-progress poster on pyecsca: Reverse-engineering elliptic curve cryptography implementations via side-channel analysis . Check it out below and also on GitHub .
I recently presented an updated version of the RedHat Research Day talk on analyzing the security certifications landscape. It has more cool results, and also memes . The slides are available.
I recently presented joint work with Petr Švenda, Adam Janovský, Jiří Michalík and Stanislav Boboň on analyzing the security certifications landscape at Red Hat Research Day 2022 . The slides are available. The web frontend to our open-source tool is over at seccerts.org . Thanks to Red Hat Research for the opportunity as well as Red Hat employees that are cooperating in this research.
I recently presented the paper “They’re not that hard to mitigate”: What Cryptographic Library Developers Think About Timing Attacks on Real World Crypto 2022 and IEEE Security & Privacy 2022. If you want to get more info on the paper including a pre-print and additional material, check out its page . The RWC slides are available as well as the IEEE S&P slides . Furthermore, the level of interest…
This year, we at the Crocs-Side-Scripting CTF team took part in the hxp CTF 2021 . It was another challenging CTF with hard challenges. This post contains our solutions to the four challenges we solved ( Log 4 sanity check # , gipfel # , kipferl # and infinity # as well as a note on the solution to zipfel # . We came in at a respectable 34th place, which was an improvement from last years…
Cryptographic code needs to be constant-time to not leak secrets via timing. Being constant-time is usually defined as: No branching on secret-dependent values. No memory access based on secret-dependent values. No secret-dependent values given to some variable time functions. There are a few ways of testing or verifying that code is constant-time, for example using the tools I described in a…
Every EU member state is rushing to implement Digital Green Certificates until the end of June, yet no one is stopping to look at their security. Digital Green Certificates are a European solution to the problem of free movement in the times of the COVID pandemic. The idea is that while traveling to some other country in the EU, you won’t have to mess about with the random paper confirmation…
Language (SK) Ak hľadáte stránku na odber notifikácii o COVID-19 očkovaní na Slovensku, nájdete ju na covid.neuromancer.sk . Stránka poskytuje notifikácie na Váš email o voľných miestach na očkovanie proti ochoreniu COVID-19 a tiež o momente otvorenia očkovacieho formuláru pre nové skupiny obyvateľov. Stránka používa informácie od NCZI avšak nie je s NCZI alebo Ministerstvom Zdravotníctva…
This post explores the current state of tools for verification of constant-time properties in cryptographic implementations, both static and dynamic. These tools are mostly unused in the development of open-source cryptographic libraries and remain only as results of academic work. I know of only four open-source cryptographic library that utilize these tools in an automated manner, similar to how…
This year I took part in the hxp ctf with a bunch of friends from and around the CRoCS lab. Our team Crocs-Side-Scripting finished at the 58th place. As this was our first CTF and my first real CTF, I quite like the outcome and enjoyed the experience. This post outlines our solution to the crypto hyper challenge, which focuses on Hyperelliptic curves. The challenge # The challenge constructs a…
Language (SK) Slovensko plánuje celoplošné antigénové testovanie na COVID-19 a z pohľadu na tlačovky to vyzerá, že to robí nie práve informovane. Tento príspevok obsahuje interaktívny nástroj na odhadovanie a výpočet chybovosti týchto testov na populácii. Na výpočet toho, koľko pozitívnych prípadov test zachytí ( true positive ) či koľko negatívnych ľudí prehlási za pozitívnych ( false positive )…
I recently presented our work on the Minerva group of vulnerabilities on the Cryptographic Hardware and Embedded Security conference. Our joint work with Vladimir Sedlacek, Petr Svenda and Marek Sys received the CHES 2020 Best Paper Award . The slides for the short conference talk can be found here .
Language (SK) Tento post analyzuje Slovenskú contact-tracing aplikáciu Covid19 ZostanZdravy , konkrétne jej bezpečnosť a udržiavanie súkromia. Aplikácia je vyvjíjaná dobrovoľníkmi zo spoločnosti Sygic , avšak oficiálne beží pod kontrolou NCZI , Národného Centra Zdravotníckých Informácii, prevádzkovateľom aj spracávcom osobných údajov je ÚVZ , Ústav Verejného Zdravotníctva ( podmienky ochrany…
I gave a short talk during the rump session at the 23rd Workshop on Elliptic Curve Cryptography highlighting some interesting aspects of the Minerva attack . The slides can be found here .
I gave a lightning talk during the student session of the 2019 SummerSchool on real-world Crypto and Privacy in Šibenik, Croatia, focusing on the research into JavaCard and smart-card security that is performed at CRoCS , the slides can be found here .
Recently, I presented work on the ECTester tool for testing black-box elliptic curve cryptography implementations during SantaCrypt 2018 in Prague, Czech republic. The presentation can be found here .
As the GSoC 2017 final evaluation period just ended, my final work product is finally submitted. This post is a summary of my final work product. Mailman-pgp # repository@gitlab docs@rtd Plugin for Mailman Core. Enables creating a PGP mailing list, which has a list key, can receive and serve messages encrypted, can sign and receive signed messages from subscribers. Creates the key email command,…
django-pgpmailman progress # Successfully created the mail list views. Inspired heavily by Postorius, to get the same look, both in templates and views. There is a list index view, which lists only PGP enabled lists, and their key fingerprints. This also allows one to download the list key as it’s linked from the list key fingerprint. The list name link leads to a list settings/info view.…
This post is about my current plans on how to implement the web ui part of PGP enabled Mailman. It strives to integrate into the Mailman Suite and use its features to the maximum possible degree. General idea: Refactor general stuff to django-mailman3, to allow apps to hook up together in Mailman Suite easily, and then use that to hook up django-pgpmailman. Features # Show PGP enabled public…
This week was tough but productive. Temperatures spiking to 34°C in my hometown have a really bad effect on my daily productivity. Setup instance with PGP plugin # Finally got a complete mailman instance setup and running with J08nY/mailman/plugin + J08nY/mailman-pgp/master and J08nY/Postorius/plugin + J08nY/mailmanclient/plugin + mailman/HyperKitty/master + mailman/django-mailman3/master . The…
The second evaluation period came quite fast after the first one, nonetheless the project advanced much further so quick recap of its current state is in order. Since first evaluation # SMTPS + STARTTLS # MR 286 Finally with working tests after upstream fixes in aiosmtpd. Pluggable components (plugins) # MR 288 Rebased after the Click CLI processing branch was merged and got it to work nicely in…
Signature hash tracking # It would be relatively easy to replay a signed message to a mailing list by a user as no kind of challenge-response is done on posting. While signature replay checking is usually done on the end users point against his keyring and messages he has so far received and their context, I think it is kind of expected of PGP enabled Mailman to also do this as it relays the…
This week is around the halfway of GSoC 2017 project timeline, hence the title. Key management # As I set out to do, I have now implemented most of the after subscription key management. The key change command. The pre subscription key management is done via a custom dynamically loaded subscription policy/workflow. This is possible with my pluggable-workflows branch/MR which introduces dynamically…
Just a quick update about the state of the project before I disappear from civilization for this weekend. Pluggable workflows # MR @ gitlab I have now finally got the pluggable workflows branch to test succesfully! With workflows being loaded dynamically, with workflow steps being saved completely, full backward compatibility, also database migrations and REST backward compatibility. That branch…
As I note in one of my previous GSoC project updates, the PGP-enabled mailing lists require two new features from Mailman Core, both related to workflows. The first is to be able to inject steps into a subscription workflow to request the users pubkey before moderation checks. The second it to be able to require confirmation on all commands (to prevent replay attacks), although this could be…
The first evaluation period is here, I have already sent in my evaluation so I thought I would recap the state of the project. During the first two weeks or so, I mostly focused on features in Mailman Core that would be necessary for making a plugin like this work, my MRs introduce an easy to use/configure plugin infrastructure. Where plugins can provide components and even custom REST routes in…
This week things moved along with the mailman-pgp plugin. As I finally had a good PGP library to work with as well as some basic plugin API patches outstanding to Mailman Core. So with that I implemented large parts of the mailman_pgp.pgp package, including tests, as well as a basic signature checking rule. Also, as the package now contains tests, I added a gitlab CI config and started running it.…
Since my last post, I’ve been looking for a suitable PGP python library as I realized my original candidate python-pgp just wouldn’t work: Its not actively maintained. Its tests/docs etc.. are lacking. Its security is questionable. I’ve since found and tried using python-gnupg , gnupg , python-gpgmime and finally PGPy . Considered # python-gnupg # repo@bitbucket pypi A library…
As last time I described outstanding PRs to Mailman Core and other Mailman’s components, this time I am going to describe the plugin I am building on top of those components to enable PGP encrypted mailing lists. In fact there are two plugins to present, with the first one being a general and quick plugin example that showcases how the new plugin API might be used and also provides some nice…
This week has been quite productive. I started laying the groundwork for the encrypted lists plugin by making changes from core_changes to different components of both Mailman Core, Mailman-Client and Postorius. I will describe the MRs and ideas behind them here. Mailman Core # Move pipelines to their own package and instantiate dynamically # mailman!287 This MR makes Pipelines in Mailman Core…
Since a plugin-like out-of-tree approach is required for implementing encrypted lists into Mailman, a straight forward integration into Postorius and HyperKitty (as first proposed) by making them “aware” of the encrypted lists plugin is not possible. Thus a new approach for providing their functionality and conforming to the project requirements is necessary. I see three possible…
Structure # pgpmailman - A Core plugin. styles - Both styles generate a list keypair based on plugin settings on list creation as well as set other attributes for an encrypted mailing list. Such as the custom encrypted chain. EncryptedDefaultStyle EncryptedAnnounceStyle pgp rules EncryptionRule - Decrypts message and enforces per-list encryption requirements. SignatureRule - Checks message…
Plugin API enhancements in Core # To cleanly implement encrypted mailing lists as a plugin to Mailman Core I propose several general changes to the plugin api, to allow for cleaner integration of plugins, more flexibility and easier plugin deployment. First I present the current state of pluggability in Mailman core and then the proposed changes. Current state # Relevant mailman-developers thread…
ecgen is a tool for generating Elliptic curve domain parameters. While working on generating some interesting EC domain parameters for ECTester I found out there aren’t really any good tools for doing so. Cryptographic libraries don’t offer generating custom curves, they just offer preset ones or let you set custom ones. The only tools I found were ECB , LiDIA/GEC , MIRACL and cm .…