This blog post explores how a Certificate Authority (CA) could maliciously issue a certificate with a valid signature but an impossibly distant expiration date, far beyond the CA's own validity period. This "fake future" certificate wouldn't trigger typical browser warnings because the signature checks out. However, by comparing the certificate's notAfter
date with Signed Certificate Timestamps (SCTs) from publicly auditable logs, inconsistencies can be detected. These SCTs provide proof of inclusion in a log at a specific time, effectively acting as a timestamp for when the certificate was issued. If the SCT is newer than the CA's validity period but the certificate claims an older issuance date within that validity period, it indicates potential foul play. The post further demonstrates how this discrepancy can be checked programmatically using open-source tools.
Thread-local storage (TLS) in C++ can introduce significant performance overhead, even when unused. The author benchmarks various TLS access methods, demonstrating that even seemingly simple zero-initialized thread-local variables incur a cost, especially on Windows. This overhead stems from the runtime needing to manage per-thread data structures, including lazy initialization and destruction. While the performance impact might be negligible in many applications, it can become noticeable in highly concurrent, performance-sensitive scenarios, particularly with a large number of threads. The author explores techniques to mitigate this overhead, such as using compile-time initialization or avoiding TLS altogether if practical. By understanding the costs associated with TLS, developers can make informed decisions about its usage and optimize their multithreaded C++ applications for better performance.
The Hacker News comments discuss the surprising performance cost of thread-local storage (TLS) in C++, particularly its impact on seemingly unrelated code. Several commenters highlight the overhead introduced by the TLS lookups, even when the TLS variables aren't directly used in a particular code path. The most compelling comments delve into the underlying reasons for this, citing issues like increased register pressure due to the extra variables needing to be tracked, and the difficulty compilers have in optimizing around TLS access. Some point out that the benchmark's reliance on rdtsc
for timing might be flawed, while others offer alternative benchmarking strategies. The performance impact is acknowledged to be architecture-dependent, with some suggesting mitigations like using compile-time initialization or alternative threading models if TLS performance is critical. A few commenters also mention similar performance issues they've encountered with TLS in other languages, suggesting it's not a C++-specific problem.
Summary of Comments ( 43 )
https://news.ycombinator.com/item?id=43285671
Hacker News users discuss the practicality and implications of the blog post's method for detecting malicious Sub-CAs. Several commenters point out the difficulty of implementing this at scale due to the computational cost and potential performance impact of checking every certificate against a large CRL set. Others express concerns about the feasibility of maintaining an up-to-date list of suspect CAs, given their dynamic nature. Some question the overall effectiveness, arguing that sophisticated attackers could circumvent such checks. A few users suggest alternative approaches like using DNSSEC and DANE, or relying on operating system trust stores. The overall sentiment leans toward acknowledging the validity of the author's points while remaining skeptical of the proposed solution's real-world applicability.
The Hacker News post "How to distrust a CA without any certificate errors" sparked a discussion with several insightful comments. Many commenters engaged with the core concept of the blog post, which explored how a Certificate Authority (CA) could potentially manipulate certificates without triggering typical browser warnings.
One commenter highlighted the difficulty in detecting this type of manipulation, emphasizing that the trust model inherently relies on the CA. They pointed out the unlikelihood of a user independently verifying the certificate chain, especially given the complexity involved. This reinforced the article's point about the potential vulnerability.
Another commenter discussed the "certificate pinning" technique, which involves hardcoding expected certificate information into an application. While effective against the specific attack described in the article, they acknowledged that it's not a widespread solution and introduces its own set of management challenges, such as the need to update pinned certificates regularly.
The conversation also touched upon the broader issues of trust and security in the digital landscape. One commenter expressed a general lack of trust in CAs, citing past incidents of compromised CAs and questionable practices. This sentiment resonated with other users who echoed concerns about the centralized nature of the CA system.
Some commenters suggested alternative approaches to enhance security. One idea involved using DNSSEC combined with DANE (DNS-based Authentication of Named Entities), allowing domain owners to specify which CAs are authorized to issue certificates for their domain. Another suggestion was to explore decentralized identity solutions, moving away from the reliance on centralized CAs altogether.
Several comments also delved into the technical details of the attack described in the article, with users discussing specific aspects of certificate validation and the potential implications for different browsers and operating systems. There was some debate about the practicality of the attack and the likelihood of it being exploited in the wild, with some arguing that the complexity involved would make it a less attractive option for attackers.
Overall, the comments section reflected a general understanding of the potential vulnerabilities associated with the current CA system and a desire for more robust and transparent security solutions. While no single solution emerged as a clear winner, the discussion provided valuable insights into the challenges and potential future directions of certificate management and online trust.