HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
mit-dci
tangled-curl
Python2017–2018
mit-dci / tangled-curl

tangled-curl

IOTA's hash function curl is broken

5Distinct people
5Mentions
0Explicit recommenders
171GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

IOTA's hash function curl is broken

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:56:07 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by week5 dated mentions

Observed mentions: 2017-09-11 02:38:57 UTC to 2018-01-29 14:01:59 UTC. Weeks start Monday, UTC.

0122017-09-11 00:00:00 UTC to 2017-09-18 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 commentsSep 112017-09-18 00:00:00 UTC to 2017-09-25 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2017-09-25 00:00:00 UTC to 2017-10-02 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2017-10-02 00:00:00 UTC to 2017-10-09 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2017-10-09 00:00:00 UTC to 2017-10-16 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2017-10-16 00:00:00 UTC to 2017-10-23 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2017-10-23 00:00:00 UTC to 2017-10-30 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2017-10-30 00:00:00 UTC to 2017-11-06 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2017-11-06 00:00:00 UTC to 2017-11-13 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2017-11-13 00:00:00 UTC to 2017-11-20 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2017-11-20 00:00:00 UTC to 2017-11-27 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 commentsNov 202017-11-27 00:00:00 UTC to 2017-12-04 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2017-12-04 00:00:00 UTC to 2017-12-11 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2017-12-11 00:00:00 UTC to 2017-12-18 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2017-12-18 00:00:00 UTC to 2017-12-25 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2017-12-25 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-01 00:00:00 UTC to 2018-01-08 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-08 00:00:00 UTC to 2018-01-15 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-15 00:00:00 UTC to 2018-01-22 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-22 00:00:00 UTC to 2018-01-29 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-29 00:00:00 UTC to 2018-02-05 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 commentsJan 29

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
Sep 112017-09-11 00:00:00 UTC2017-09-18 00:00:00 UTC110
Sep 182017-09-18 00:00:00 UTC2017-09-25 00:00:00 UTC000
Sep 252017-09-25 00:00:00 UTC2017-10-02 00:00:00 UTC000
Oct 22017-10-02 00:00:00 UTC2017-10-09 00:00:00 UTC101
Oct 92017-10-09 00:00:00 UTC2017-10-16 00:00:00 UTC000
Oct 162017-10-16 00:00:00 UTC2017-10-23 00:00:00 UTC000
Oct 232017-10-23 00:00:00 UTC2017-10-30 00:00:00 UTC000
Oct 302017-10-30 00:00:00 UTC2017-11-06 00:00:00 UTC000
Nov 62017-11-06 00:00:00 UTC2017-11-13 00:00:00 UTC000
Nov 132017-11-13 00:00:00 UTC2017-11-20 00:00:00 UTC000
Nov 202017-11-20 00:00:00 UTC2017-11-27 00:00:00 UTC000
Nov 272017-11-27 00:00:00 UTC2017-12-04 00:00:00 UTC000
Dec 42017-12-04 00:00:00 UTC2017-12-11 00:00:00 UTC101
Dec 112017-12-11 00:00:00 UTC2017-12-18 00:00:00 UTC000
Dec 182017-12-18 00:00:00 UTC2017-12-25 00:00:00 UTC000
Dec 252017-12-25 00:00:00 UTC2018-01-01 00:00:00 UTC000
Jan 12018-01-01 00:00:00 UTC2018-01-08 00:00:00 UTC000
Jan 82018-01-08 00:00:00 UTC2018-01-15 00:00:00 UTC000
Jan 152018-01-15 00:00:00 UTC2018-01-22 00:00:00 UTC000
Jan 222018-01-22 00:00:00 UTC2018-01-29 00:00:00 UTC000
Jan 292018-01-29 00:00:00 UTC2018-02-05 00:00:00 UTC202

What Hacker News says

5 sources
1. The vulnrability existed in their active codebase and network - only AFTER the research team contacted IOTA with the working exploit did they shut the entire (centralized) network down to patch the code. “In 2017, leaving your crypto algorithm vulnerable to differential cryptanalysis is a rookie mistake. It says that no one of any calibre analyzed their system, and that the odds that their fix makes the system secure is low,” Bruce Schneier, renowned security technologist, about IOTA when we shared our attack. We discovered a vulnerability in IOTA after reviewing their code on GitHub in July. We disclosed what we found to the IOTA team on July 14th, and have been in contact with them since then as we discovered new issues and exploits. IOTA issued a patch that addresses the vulnerabilities we f
Read the rest
ound on August 7th. IOTA no longer has the vulnerabilities we found, they have been fixed. To learn more about the details of our attack, you can view the full disclosure and review our attack examples. https://github.com/mit-dci/tangled-curl/blob/master/vuln-iot... https://github.com/mit-dci/tangled-curl 2. If every other cryptocurrency software team can impliment seed generation in their wallet software, why does IOTA refuse to? 3. Please read this comment from the CEO of IOTA, David Sønstebø on why he doesn't care if you lose money using IOTA: https://reddit.com/r/CryptoCurrency/comments/7gwl38/hello_gu...
In Why I find IOTA alarming
I've looked a bit into IOTA over the past weeks because I was trying to understand how it actually works. I still do not fully understand how the Tangle structure actually functions as a process and/or how it solves scalability issues. If someone smarter than me could enlighten me on this, i would be very thankful. As far as I understand, one main difference between IOTA and classic blockchains is that there are no explicit mining nodes in the system who confirm all the transactions. Instead, if you issue a new transaction, you have to confirm (sign) 2 prior transactions first and do a little round of Proof-of-Work. These 2 prior transactions are called "tips" and are selected by a random walk. I'm not sure who exactly selects the tips (can you select the same ones over and over?) and if the correct tip selection is somehow enforced. Ther
Read the rest
e was a controversy about the homebrew "Curl-P" hash function (P supposedly means Prototype according to the author Come-From-Beyond, previously involved with NXT). After a bumpy responsible disclosure process, MIT researchers Neha Narula et al published these findings: https://github.com/mit-dci/tangled-curl/blob/master/vuln-iot... and an accompanying Medium post. IOTA Foundation dismissed the vulnerability as non-practical, but switched part of their crypto to Keccak instead: https://blog.iota.org/curl-disclosure-beyond-the-headline-18... So in the IOTA codebase, there is now "curl" (not to be confused with the HTTP library), which is based on the proprietary crypto, and "kerl", which is based on Keccak. Curl is still used for the PoW while I think kerl is now used for other signing. Here is a C implementation that is interesting to browse: https://github.com/iotaledger/ccurl/tree/master/src/lib A bit of an odd aspect of IOTA is the legacy of a ternary number system that is used in the crypto functions. That's why you have to convert your payloads to and from a base-27 encoding scheme ("trytes", alphabet [9A-Z]), which felt strange for me when I wrote some proof-of-concept code trying to use the IOTA libraries. Instead of switching to more established encoding schemes, the IOTA team defends this choice by pointing to future mystery hardware accelerators ("Jinn" etc.) that are supposed to use this ternary system for more memory-efficient calculation. A purported long-haul strategy that is sometimes mentioned is the distribution of such custom processors by IOTA in the future targeting embedded hardware. As an FPGA/Hardware developer myself, I'm extremely skeptical about all of this voodoo and do not understand why so many people seem not to mind it, especially the industry partners like Microsoft and Fujitsu. It would certainly help if the IOTA foundation would disclose more details about these mystery machines. In summary I find the general approach of IOTA interesting and worthwhile, but there are some strange aspects in the software (not to mention all that coordinator business and the full-system-snapshots that lose all message data once in a while) that I wish would be thoroughly addressed by employing more KISS principle and less NIH.
In IOTA Surges Past Ripple
IOTA is amateur hour. The author implemented their own hashing algo, "curl", which is used all over the place in IOTA, until recently including signing transactions. Researchers were able to produce distinct transactions with colliding signatures [1]. Depending on whether you believe the author, either they did it intentionally for the implied purpose of attacking competing forks (as they claim), or unintentionally because they're incompetent. Neither situation sounds good to me. IOTA also relies on a closed-source "coordinator" for consensus. They call it "training wheels". Who knows if their "tangle" will actually work in production. Crazy to me that people are pumping so much money into it w/o any due diligence. [1] https://github.com/mit-dci/tangled-curl/blob/master/vuln-iot...
In No Bitcoin-based protocol can handle more than 20M users per month

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.