RPOW - Reusable Proofs of Work
mitd writes "Hal Finney is inviting folks to test drive his new hashcash-based server rpow.net.
" The RPOW system provides for proof of work (POW) tokens to be reused. A POW token is something that takes a relatively long time to compute but which can be checked quickly."
Hal's security model paper is well worth the read and his proof of concept code is available for download.
"
Can someone explain the concept behind this in a little uhh easier terms. I read parts on the website, but I think I need a bit of background before I can really understand what is going on. Thanks
A hashcach POW token?
What does this server "serve" exactly?
I'm not sure submitters know quite what "article summary" means.
I don't need no instructions to know how to rock!!!!
story just went up and the site is slow, so it won't take long before it's not there anymore :|
There is some excellent info on Hal here , here and here.
Unpretentious Sydney reviews by unqualified Sydney reviewers
Hal's security model paper is well worth the read and his proof of concept code is available for download.
"I'm sorry Dave, but I can't let you download that..."
I hope he doesn't use MD5 Hashes.
Whoa...
I need some ubergeek translation on this one. Is this a complicated, better method for verifying against known published source code?
Davak
Okaaay... So it's a server that's *meant* to serve computationally expensive 'tokens'. And you post it on ./ . Niiice.
How about Proofs Of Not Working? Got plenty of those.
I don't get it. I understand the concept of what you would use one of these 'POW' tokens for (although the name is clearly ridiculous... acronym clash should be avoided whenever possible) -- e.g. to bypass a junk e-mail filter. But why would you want to be able to reuse them?
Google Cache after slashdotting... http://www.google.ca/search?q=cache:YHGDB5MH4e0J:r pow.net/+&hl=en
Boxing Equipment Reviews
Given the inaccessibility of the site:
RPOW/rMIA (break out the black flags w/web server silhouette)...
Reusable Proofs of Work
by Hal Finney
(hal at finney dot org)
What Is This? Theory Security Try It Out! FAQs Download
The RPOW system provides for proof of work (POW) tokens to be reused. A POW token is something that takes a relatively long time to compute but which can be checked quickly. RPOW uses hashcash, which are values whose SHA-1 hashes have many high bits of zeros.
Normally POW tokens can't be reused because that would allow them to be double-spent. But RPOW allows for a limited form of reuse: sequential reuse. This lets a POW token be used once, then exchanged for a new one, which can again be used once, then once more exchanged, etc. This approach makes POW tokens more practical for many purposes and allows the effective cost of a POW token to be raised while still allowing systems to use them effectively.
Security
This is useful functionality, but the unique feature of the RPOW system is its approach to security. RPOW is the first public implementation of a server designed to allow users throughout the world to verify its correctness and integrity in real time.
Based on principles similar to those proposed for so-called "Trusted Computing", RPOW allows third parties to dynamically and remotely verify what program is running on the RPOW server. The RPOW server is implemented on a high-quality secure processor, the IBM 4758 PCI Cryptographic Coprocessor, which has been validated to the highest level of security publicly available, FIPS-140 level 4. The 4758 is a self-contained single-board computer which has its own device key, generated on-board, which never leaves the card. That key can issue cryptographically signed attestations which describe the software configuration running on the card, including the SHA-1 hash of the application program.
The source code to the RPOW server is available from the download page. Using publicly available tools, anyone can build from this source code a memory image identical to that running on the RPOW server. If the SHA-1 hash of this file matches that being reported by the 4758 device key, the user can conclude that the supplied source code is what is actually running on the 4758. By inspecting the source code he can then make sure there are no "back doors" or loopholes that would allow the owner/operator or designer of the system to defeat its security, for example by creating RPOW tokens without doing the required work.
Allowing clients to dynamically validate the security of a server turns the concept of Trusted Computing on its head. Rather than a threat to individual privacy, the technology becomes a boon to privacy and an empowering force for end users on the net.
Applications
Security researcher Nick Szabo has coined the term bit gold for information objects which are provably costly to create. He suggests that these could even serve as the foundation for a sort of payment system, playing the role in the informational world of gold in the physical world. RPOW would facilitate the use of POW tokens as a form of bit gold by allowing the tokens to be passed and exchanged from person to person.
POW tokens have been proposed as a form of pseudo-payment in several applications. One example is email. An email message containing a POW token would be relatively costly to send in terms of computing power. A POW token could then be a sign that the message was not spam.
Using RPOW tokens for email would have advantages, as people could then reuse tokens from incoming email in outgoing email. Spammers will have no such advantages since almost all of their email is outgoing. Reuse allows the cost of the POW token to be much higher since most people won't have to generate them, making the system more effective as an anti spam measure.
Transparent Servers
The RPOW system is just the first of what are planned as a series of systems which use this approach, which I call Transparent Servers. Such systems publish their source code for review and inspection, and use Trus
FAQ and "What is this?" links also included...
But seriously, the server went down after two replies, but not before I managed to get this:
[Read this instead adding a load to a battered server]
and this
-- "I'm not a religious man, but if you're up there, save me Superman..."
This is the most useless website for a simple explaination of what this is for, or even what it is! Even the faq page doesn't make much sense.
Looks like his server has been tested slashdot style though!
Is it a boat?
HERE.
NOTE: Only the source code is mirrored, site is way too slow to mirror the rest!
Bored? Why not join a decent mess
Doesn't this really defeat the purpose of computationally expensive tokens? Couldn't a hacker break into the cache and steal a large number of pre-calculated POW tokens which would otherwise be impossible?
informative.
Hal's security model was excellent. Dave had to resort to direct hardware access to defeat it.
It's not clear to me that there is an obvious and immediate equivalent for RPOWs in existence. I'd be interested in hearing what people think this would be good for. It generally seems useful for making sure people do x amount of work before they are allowed to perform a task, but what can that be used for?
---------------------
Freedom or Evil: Freevil.net
G. W. Bush says, "You decide!"
An interesting scheme...
One potential problem I see with such an anti-spam measure is that I keep hearing about spam runs being done from many regular users' computers by means of a spamming worm infrection. Such a worm could also be adapted to generate the POW tokens... or even steal them from the users' incoming email and re-use them under this scheme! That'll be just great, having your computer not only hijacked to send out spam, but loaded down with the heavy burden of generating POW tokens.
If construction was anything like programming, an incorrectly fitted lock would bring down the entire building...
"Hal Finney is inviting folks to test drive his new hashcash-based server rpow.net. " /.
Sure, if by "test drive" you mean
How do we know it's actually signing the running image? For all we know it's just an ordinary computer programmed to claim it's a 4758.
I thought it was about providing my boss reusable proofs that i'm working while I'm in fact reading slashdot ;)
That would be waaaaay more usefull than this stupid error 500 thing...
One of the reasons it's very ambiguous, is that it has multiple applications. The major ones are authentication of things like emails, where you would have to calculate the token for each user, or in the distant future, a form of digital currency that would actually reside on a hard drive as opposed to a server on a bank somewhere.
I'm not having any trouble connecting, but I still can't figure out WTF a POW is. The site only explains how it is turned into an RPOW.
And although the process of exchanging "toke'ns" was highly "cryptographic", ultimately not a lot of work got done...
Anyway, I got confused there for a minute, but I am better now. This might help others:
From http://www.hashcash.org/
Rock on!What a crock of a system. Let's see:
a) to be useful for anything involving third parties where you don't already have a trust relationship, this would need to be common/easy enough to get that other people already have software to support these things. That's not going to happen any time soon - it's a big enough change you may as well come up with an already secure email infrastructure [insert boilerplate "why your solution to spam is stupid" here].
b) 8 tokens per second? Puhleaze. I get that many emails through just one small server with 5 domains on it.
c) as the subject says. Zombies. In a world where thousands of low TC0 machines are sitting around running malware, it's piss-easy for the blackhat spammers to collect their 8 tokens/second by running POWer@home on their zombie farm.
BZZZZt. Strike three and you're out. Nice idea, but not practical.
I'm not sure how well this technique would work in the real world when you have a huge range of systems trying to connect to you. If you set the number of bits in the token so a fast Pentium 4 based system will take two seconds to compute it how many hours would it take a 386, palm-pilot, or Internet enabled phone? Conversely, if you set the number of bits low so that slow systems can compute them in reasonable time then someone with a much faster computer will not be slowed by any noticeable rate and the system becomes useless. If this system is taken up surely it will do more to discriminate against people without state-of-the-art hardware. Surfing is annoying enough on a very slow machine without having to wait for 30 minutes to compute the RPOW before the site will let you connct.
Input error. Replace user and press any key to continue.
It uses SHA-1, which has just been broken for 36 out of 80 cycles by a new technique, which is drawing into question how long it will be cryptographically viable.
Why have the server send a challenge to sign at all? Surely the MUA (mail client) could just add an x-header-expensive-hash-of-this-mail
to *every* mail that goes out, which would be wildly different for each mail beacuse the email address would change.
Same concept, but would work with current mail clients/servers and could tell the server/mail client at the other end that the server really wants you to get this..
Anyone know why this wouldn't work?
Official GOD FAQ.
Like he would print me out a fake check stub that I can use to get a low interest rate loan or something...heh.
An official cryptome mirror carries the story cryptome doesn`t have ads to pay the bandwith bill. Few want their ads there apparantly and it would mess with the "cryptome keeps no logs" policy. Dont take this policy to seriously though, Neil young mentioned the increase in NYPD and fbi visits in the run up to the republican convention and how hard it is to find a host that allows for wiping of logs.
please be gentle with this valuable site...
The first proof of work application I learned about was in anonymous remailers. To avoid spammers using sending their messages though remailers some remailers require a proof of work token. So to send an e-mail you have to run a program that slurps some CPU power. It then genarates a token you include in your mail. The remailer can quickly verify you spend some CPU power (thus time) on your message and relay the mail. That way spamming would require insane amounts of CPU (or time).
Since its based on working your computers resources perhaps other names could possibly be "RPOW by Jake"? Or "RPOW's of steel"?
Seriously, what happens next year when its not computationally expensive to compute the tokens? Ew, or what if you are a clever spammer with a degree in electrical engineering and the time to make your own token generating card to sell to all the other spammers on ebay for a small fortune (or you could prove it works by spamming them with advertisements...)?
Well, its always good to have another device to keep honest folks honest I guess.
Apparently, RPOWs are a way of throttling down incoming requests by forcing them to solve a time-consuming puzzle. You would want to do this to mitigate DOS attacks.
Here's the question for those who know more, i.e., anyone who knows anything about this. Won't this necessarily and dramatically increase request time? It should impose no (significant) additional load on the server, but won't this mean that requests take x*response time to begin?
If your bitterest enemies are people who hack the heads off civilians, then I would say you're doing something right.
Money. Difficult to make, easy to verify.
Goods. Like a car.
Trust. Extremely difficult to make, easy to verify.
GPL Deconstructed
so when will a black market pop up for cracked ones ;)
Business Voyeur
using a private crapto key
craptographic hash or fingerprint
and will protect their privacy, even without cryptographic blinding
What exactly is craptology there buddy.
Now, if this concept of having the sender do something is changed into having the sender do useful (Folding at home or another distributed computing project), it would be a nice twist.
Bert
All this means is that, as well as the net connection being slow, the processor will be running overtime calculating the checksums. The spammers will send as many emails as ever.
SPF has to be one of the easiest measures we can take to reduce spam. Spamassassin is about to hit 3.0 RC1 and many more of us will be able to easily associate scores with SPF records. As soon as mail has to originate from the correct domain we get better spam checking and a paper trail for the authorities to follow. If you don't have SPF records for your domain, head on over here or here and set them up.
would spam be feasible on an email-like system that uses RPOW tokens? Making the spammer give up computation time for each email sent seems like the perfect solution.
Instead, require that someone complete a seti@home, folding@home, distributed encryption cracking, or similar work unit before they can send you an email. That way at least the CPU power is going somewhere worthy instead of just being a waste of electricity.
"You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
... can't the spammer just keep copies of old RPOW tokens and reuse them himself later? How is this prevented?
Mathematics is not a crime.
If this was implemented how would it affect mailing lists? I personally subscribe to a couple, one of which generates 100-200+ emails a day sometimes.
So you are saying that even though we may /. this site, it has the potential to /. back?
Think about it!
And then they armed me with moderator points and the world mourned.
... how much does a IBM 4758 cost?
IE is this something that small orginizations can do or do you have to be able to print your own money?
All generalizations are false, including this one. Mark Twain
If a spammer 1 time gave a real email address to thousands of marketing sites,
and published that same address in order to get UCE from other spammers...
couldn't the spammer build up 1000s of tokens with no computational effort?
The computer is just an innocent tool being used by the spammer. It would be more fair to make the user do the computations. This would also solve the problem caused by computers of different speeds.
That's one thing about RPOW and hashcash that strikes me just a little off. All of this 'work' that we're paying with is just useless busy-work. It's worthless calculation, they're just measuring our willingness to waste our computer's time in order to send them an email.
How about if:
They team up with SETI@home, folding@home, and the like. When you turn in a work unit, they have a secure arrangement with some sort of postage stamp server, and you get sent the stamp. This only makes sense with a central stamp server, because I'm trying to make the stamps 'cheap' to make, and use the compute effort for something useful.
My suggestion is flawed, probably fatally, especially compared to basic server-less hashcash. I'm just motivated by a wish for that compute time to do something useful.
The living have better things to do than to continue hating the dead.
Just wondering.
Julia Cameron
Oich ù agus hiùraibh éile
So, as I understand it, a POW is a computationally expensive thing to create, but quick to verify. One application of this is in email. Lets say someone wanted to send me a message, I'll send them some data, and they'll create a POW right then based on that data (so they can't have a bunch of POWs stored up that they keep reusing). When I get it, I quickly verify that it's real and based on the data I gave. If it is, the email gets accepted.
This helps with spam because a spammer needs to send out a lot of mail very quickly. Even a POW that takes 2 seconds to create, which isn't so bad if you're sending a lone email, would slow down a spammer to a trickle.
Alright. Now, an RPOW is one that's reusable sequentially, or once at a time. They say it'll help with the spam thing because while it won't help spammers, it'll make it easier for regular email users. I don't get this.
In the previous example, someone would want to send me an email, I'd ask for an RPOW, they'd spend some time and produce one, I'd get the email, but now, if I wanted to reply, I could just use that RPOW, and then he could use it again, but not to send multiple copies to a whole bunch of people.
So, once a chain gets started, it's easy to keep up, but starting multiple chains is tough? Why does this matter? Is it really a big deal to wait 2 seconds, or even 10 to send an email if you're sending even 1 every 10 minutes?
Do I have this right? Maybe I'm missunderstand, or missapplying this.
If I recieve a token from someone else, can I copy it and attach it to multiple messages? If so, what's to stop spammers from calculating one token and attaching it to a large number of messages?
This post written under Gentoo-linux with an SCO IP license.
From the article: ... Please keep in mind that if there are problems I may need to reload the server code, which will invalidate any RPOW tokens which people have previously created.
... but just until the server is taken out.
The RPOW server is running on a high-security processor card, the IBM 4758 Secure Cryptographic Coprocessor, validated to FIPS-140 level 4.
So, in other words, it passes out little tokens that are worth something
Ok, so its running FIPS-certified code on FIPS-certified hardware. Still, how sure can you be that it will keep running 24/365 for years on end? If that private key is needed for proof of authenticity, and that key never leaves the board, that makes it, among other things, one heckuva terrorist target.
From the article:
The RPOW system is just the first of what are planned as a series of systems which use this approach, which I call Transparent Servers. Such systems publish their source code for review and inspection, and use Trusted Computing-like features to prove that they are running the program generated by that code. This will provide an unprecedented level of transparency and visibility into the workings of network servers.
My reasoning is this: Assume an exploit is discovered in the "Trusted Computing-like features," whereby anyone could query the version of the software that system is running. Next, assume an exploit is discovered in the source (the same source version the system happens to be running a compiled version of). It would be heaven for the computing misfits! No longer would there be the need to run countless probes looking for exploitable software--just ask the software what version it is.
Even security through obscurity is better than this and that says a lot.
He who has no
What's stopping spammers setting up a whole bunch of their own RPOW servers? They use these and zombied machines get their tokens from RPOW servers in Vanuatu or wherever. What's been solved?
Did he inhale?
Google Cache after slashdotting... http://www.google.ca/search?q=cache:YHGDB5MH4e0J:r pow.net/+&hl=en
Shouldn't that be Google Cache after POWing?. Hey, couldn't resist after seing the acronym POW (Piece of Work) on the website once too often.
Come to think of it, this could turn into a new saying. "You're a real POW aren't you?"
It would be nice if there was a limit to the amount of emails someone could send every minute. Hopefully this would greatly reduce mass spamming. Most people take longer then 1 minute to write an e-mail, and they probably don't write emails once every minute either, so legitimate users shouldn't be affected. I don't think 2 seconds is long enough for a "complex" calculation of the "hashcash token". They should find a way to make it take atleast 1 minute.. No real user sends mail every 2 seconds.
"Software is like sex... it's better when it's free"
I believe it's like this: a system of "tokens" that are computationally hard to create, so if your machine can re-use a token it's received from someone else, it saves a lot of time.
The server system restricts "reuse" of tokens in a way that prevents simple copy/duplication. That's all the underlying crypto stuff. An analogy is, you receive token "N" from some email, and save it for later. TO send email, you need a token -- grab one saved from before. Crypto code at a central server (ERRT!) performs (verifyable) magic to make that used token "N" into new, unused token "N+1".
You *can* print credible paper money, but it's really hard. Most people find better ways. That's the idea behind it.
ERRT: but doesn't this mean that the "issuing" server needs to be involved in every re-use transaction, foiling one of the beauties of SMTP mail: utter decentralization?
As I see it, what's to stop you from taking a POW, cashing it in for an RPOW, then repeating the process over and over for a bit... over the length of your entire spam-to list, then using them?
Sure, they're in the "seen" database, but the point of the (R)POW is to be intrinsically verifiable, without having to consult a database.
Unless the server is going to take its time in getting you a replacement RPOW, I don't see how this is actually useful vs. spam. I mean, if it's relatively quick to issue a new RPOW, then wouldn't the time involved in accumulating the spam list be greater overall?
Finally, how many bits should an authorized email cost?
[ approaching AI ]
"trivially solved by whitelists?" What utter nonsense. Hashcash/RPOW is snake-oil. Why not just put a 2 second sleep in your server SMTP loop? Doh! It's really that stupid. There are many other objections. Don't waste your time.
serve as the foundation for a sort of payment system
Please receive this piece of "bit gold" for the last chunk you shared with me.
Feel free to use it to "buy" some other chunks you might be interested in...
Mailing List
If you slow down the rate that it's possible to send spam by 1000, then you get a thousandfold decrease in spam.
This assumes that spammers send the absolute maximum capacity they're capable of, and that they're incapable of adapting, by owning more machines, or pushing those machines harder.
Besides, designing an anti-spam system around the time taken to compute stuff is daft. Computer hardware will be more than twice as fast before it's even implemented widely. It's like those old DOS games that run too fast on a modern machine: nothing more than poor design.
The problem is processors and memory is clustering and becoming faster, so the relevance of a POW is relative. 2 seconds on a P4 3.0 with hyperthreading is like 30 seconds on a p4 1.7.
And clustered linux or multiprocessor servers with tons of 600Mhz DDR will 2 seconds be 2 seconds?
Probably not, it will probably be a 1/4 of a second, so we start coding more complex algorithms, and we outdate our old server software instantly because it now takes our Win2k or Cobalt mail or print server a half hour to send 1 email.
Hello.. is thing on? Not a bright idea.
GPF from algorythmic function here I come.
"Mommy my email wont send. Oh your algorithm is failing Timmy.. but dont worry.. you can try again tommorow."
Economic forced boost? Or system wide nightmare?
This could be enforced by the ISP. In fact, it could be standardized throughout, built into SMTPvX or whatever. IF there is an RFC on it, for example, and people start making servers for it, clients will be written, eventally SMTP as we know it could be phased out entirely. Of course, this means that it couldn't be fixed over night.
A two second sleep would kill an ISP. It would do a lot of harm to a spammer, but it would have virtually no effect on legitimate clients. As such, it's best to enforce it on the client end so that it harms only people sending large volumes of mail. Spammers get virtually nothing per message which means they have to have massive lists to make it worth the effort.
If spammers can compute fast enough to make a given level ineffective, then up the requirement by 4 or 5 digits, making the processing take 16-32 times as long.
[ approaching AI ]
Without changing/breaking the SMTP email standard, my mailserver program scores incoming messages for 'spamminess' and delays processing of the message appropriately. If the spammer disconnects before the delay expires, their message(s) are *NOT* processed!
This applies to all messages process by my mailserver. All 'non-spammy' messages will have little or no delay and will be process immediately.
The 'delay factor' is user settable and the default suggested value will result in an approximately one minute delay for an incomming email message with 'maximum spammage' (any longer and Outlook will 'complain').
Bryan Taylor
iamcf13@hotpop.com
SpamByte code: 7
(see http://www.cf13.com/game-over-spammers.htm )
http://www.cf13.com/press-release.htm
All email containing unwanted content will be summarily deleted or reported as spam.