RSSAmplifier

Blog

neuromancer.sk

neuromancer.skRSS feed ↗40 posts

Latest posts

The goals of artifact evaluation

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,…

Real World Crypto 2026

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…

CHES 2025 - ECTester & DOIT

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…

CHES 2024 - pyecsca paper

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…

Summer School on real-world crypto and privacy 2024 - pyecsca tutorial

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.

Jupyter notebooks and multiprocessing - How to spawn and fork(server)

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…

CHES 2023 - pyecsca

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 .

From Vulnerability to Impact - Automatically Analyzing the Security Certifications Landscape

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.

Red Hat Research Day 2022

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.

Real World Crypto 2022 & IEEE SP 2022

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…

hxp ctf 2021

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…

Testing constant-timeness using Valgrind: case of the NSS library

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…

Digital Green Certificates: Security analysis not included

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…

COVID-19 vaccination notifications in Slovakia

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…

The state of tooling for verifying constant-timeness of cryptographic implementations

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…

hxp ctf 2020 - Hyper

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…

Population-wide antigen testing for COVID-19 in Slovakia

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 )…

CHES 2020 - Minerva: The curse of ECDSA nonces

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 .

Analysis of the Covid19 ZostanZdravy app - Contact-tracing

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…

Workshop on Elliptic Curve Cryptography 2019 - Minerva

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 .

SummerSchool on real-world Crypto 2019 - JavaCards

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 .

SantaCrypt 2018 - ECTester

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 .

GSoC 2017 - Final work submission

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,…

GSoC 2017 - Web UI progress

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.…

GSoC 2017 - WebUI integration

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…

GSoC 2017 - Progress

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…

GSoC 2017 - Second evaluation

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…

GSoC 2017 - Post title goes here

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…

GSoC 2017 - The point of no return

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…

GSoC 2017 - Another quick update

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…

GSoC 2017 - Pluggable Workflows

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…

GSoC 2017 - First evaluation

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…

GSoC 2017 - PGP handling progress

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.…

GSoC 2017 - Finally a nice PGP library

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…

GSoC 2017 - About the plugin

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…

GSoC 2017 - About a week in

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…

GSoC 2017 - Integrating with Postorius and Hyperkitty

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…

GSoC 2017 - PGPMailman plugin

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…

GSoC 2017 - Mailman encrypted lists update

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…

Generating EC domain parameters - ecgen

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 .…