[Bitcoin-development] Standardizing automatic pre-negotiation of transaction terms with BIP70? (Emulating Amazon one-click purchase at all merchants)

2015-02-10 Thread Natanael
BIP70 is a protocol for getting a user's wallet client communicate with a
merchant's server in order to agree on details like where to send the
payment, how much to send, what the shipping address is, sending a receipt
back, and much more using various extensions that adds more functionality.

There could even be advanced functionality for automatically negotiating
terms. One example could be selecting a multisignature arbitrator both
sides trust. Another could be to agree on the speed and type of delivery.
Many more types of decisions could be automatically agreed upon.

But as it is now, it is designed to be initiated at the time of payment. If
you always want next-day delivery from online stores then you won't always
know if that's an option until you've filled the digital basket and gone
through checkout. If you only want to shop with an arbitrator involved same
thing applies.

Everything that BIP70 enables happens at the last step only, as it is right
now.

If there could be a BIP70 HTML tag on web shops that automatically
triggered your wallet as soon as you visit the page, it would be possible
for a browser extension that talks to your wallet to tell you right away if
the web shop you're currently looking at has terms you consider acceptable
or not (note: if your wallet client isn't installed on or linked to that
same machine, a visible Qr code would be an acceptable alternative which
you can scan in advance before you start shopping). This notification can
even be automatically updated as you add and remove things from your cart
and details like shipping options change.

This would massively simplify the shipping experience and make every web
shop feel like Amazon.

Of course this has privacy implications and increases exposure to potential
wallet exploits, but the wallet can ask you if you intend to shop or not at
each site before it even connects and send any information at all in order
to mitigate both of those problems. This way it should be reasonably safe.

Another option would be to automatically connect but limit what data is
sent in order to remain privacy preserving, until the user agrees to send
private information.

This second method would also open up for the merchant to other send
relevant information such as details about various certifications from
third parties, which can include a certification that shows they have been
been audited and approved by by entity X for purpose Y. If your wallet has
that entity whitelisted it will show you that certificate (for example
"Acme Audits have audited and approves of Merchant M's privacy policy and
data protection"). With a list of predefined types of certifications that
the wallet understand and accepts, it could (by choice of the user) require
a certificate to be present to even allow you to make a purchase (lack of
required certifications would result in automatic denial). No certificate =
your wallet never proceed to send private information.

Thoughts?

- Sent from my tablet
--
Dive into the World of Parallel Programming. The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net/___
Bitcoin-development mailing list
Bitcoin-development@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bitcoin-development


Re: [Bitcoin-development] Standardizing automatic pre-negotiation of transaction terms with BIP70? (Emulating Amazon one-click purchase at all merchants)

2015-02-10 Thread MⒶrtin HⒶboⓋštiak
Why would anyone want to do anything about payment before choosing
what he wants to buy and for what price? I've never used Amazon but
isn't filling a form with shipping information enough?

2015-02-10 11:21 GMT+01:00 Natanael :
> BIP70 is a protocol for getting a user's wallet client communicate with a
> merchant's server in order to agree on details like where to send the
> payment, how much to send, what the shipping address is, sending a receipt
> back, and much more using various extensions that adds more functionality.
>
> There could even be advanced functionality for automatically negotiating
> terms. One example could be selecting a multisignature arbitrator both sides
> trust. Another could be to agree on the speed and type of delivery. Many
> more types of decisions could be automatically agreed upon.
>
> But as it is now, it is designed to be initiated at the time of payment. If
> you always want next-day delivery from online stores then you won't always
> know if that's an option until you've filled the digital basket and gone
> through checkout. If you only want to shop with an arbitrator involved same
> thing applies.
>
> Everything that BIP70 enables happens at the last step only, as it is right
> now.
>
> If there could be a BIP70 HTML tag on web shops that automatically triggered
> your wallet as soon as you visit the page, it would be possible for a
> browser extension that talks to your wallet to tell you right away if the
> web shop you're currently looking at has terms you consider acceptable or
> not (note: if your wallet client isn't installed on or linked to that same
> machine, a visible Qr code would be an acceptable alternative which you can
> scan in advance before you start shopping). This notification can even be
> automatically updated as you add and remove things from your cart and
> details like shipping options change.
>
> This would massively simplify the shipping experience and make every web
> shop feel like Amazon.
>
> Of course this has privacy implications and increases exposure to potential
> wallet exploits, but the wallet can ask you if you intend to shop or not at
> each site before it even connects and send any information at all in order
> to mitigate both of those problems. This way it should be reasonably safe.
>
> Another option would be to automatically connect but limit what data is sent
> in order to remain privacy preserving, until the user agrees to send private
> information.
>
> This second method would also open up for the merchant to other send
> relevant information such as details about various certifications from third
> parties, which can include a certification that shows they have been been
> audited and approved by by entity X for purpose Y. If your wallet has that
> entity whitelisted it will show you that certificate (for example "Acme
> Audits have audited and approves of Merchant M's privacy policy and data
> protection"). With a list of predefined types of certifications that the
> wallet understand and accepts, it could (by choice of the user) require a
> certificate to be present to even allow you to make a purchase (lack of
> required certifications would result in automatic denial). No certificate =
> your wallet never proceed to send private information.
>
> Thoughts?
>
> - Sent from my tablet
>
>
> --
> Dive into the World of Parallel Programming. The Go Parallel Website,
> sponsored by Intel and developed in partnership with Slashdot Media, is your
> hub for all things parallel software development, from weekly thought
> leadership blogs to news, videos, case studies, tutorials and more. Take a
> look and join the conversation now. http://goparallel.sourceforge.net/
> ___
> Bitcoin-development mailing list
> Bitcoin-development@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/bitcoin-development
>

--
Dive into the World of Parallel Programming. The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net/
___
Bitcoin-development mailing list
Bitcoin-development@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bitcoin-development


Re: [Bitcoin-development] Standardizing automatic pre-negotiation of transaction terms with BIP70? (Emulating Amazon one-click purchase at all merchants)

2015-02-10 Thread Natanael
Den 10 feb 2015 11:34 skrev "MⒶrtin HⒶboⓋštiak" :
>
> Why would anyone want to do anything about payment before choosing
> what he wants to buy and for what price? I've never used Amazon but
> isn't filling a form with shipping information enough?

That's not what this is about.

BIP70 isn't just payment, it is about communication the terms of the sale.

Let's say you're visiting an international webshop. But they don't ship to
your country. Wouldn't you want to know that before your start filling the
cart? With this, your wallet / browser extension could tell you right away
that you can't shop there. No time wasted!

That's just one requirement of many where you would benefit from being told
right away if it is acceptable for both parties or not.
--
Dive into the World of Parallel Programming. The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net/___
Bitcoin-development mailing list
Bitcoin-development@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bitcoin-development


Re: [Bitcoin-development] Standardizing automatic pre-negotiation of transaction terms with BIP70? (Emulating Amazon one-click purchase at all merchants)

2015-02-10 Thread MⒶrtin HⒶboⓋštiak
I still don't understand. The website can have this information
available. This is exactly what e-bay does - it displays shipping
information to my country before I do anything. What's the problem?

Also with other stuff, website can do it and browser extension can do
it too without messing with Bitcoin.

2015-02-10 11:41 GMT+01:00 Natanael :
> Den 10 feb 2015 11:34 skrev "MⒶrtin HⒶboⓋštiak"
> :
>>
>> Why would anyone want to do anything about payment before choosing
>> what he wants to buy and for what price? I've never used Amazon but
>> isn't filling a form with shipping information enough?
>
> That's not what this is about.
>
> BIP70 isn't just payment, it is about communication the terms of the sale.
>
> Let's say you're visiting an international webshop. But they don't ship to
> your country. Wouldn't you want to know that before your start filling the
> cart? With this, your wallet / browser extension could tell you right away
> that you can't shop there. No time wasted!
>
> That's just one requirement of many where you would benefit from being told
> right away if it is acceptable for both parties or not.

--
Dive into the World of Parallel Programming. The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net/
___
Bitcoin-development mailing list
Bitcoin-development@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bitcoin-development


Re: [Bitcoin-development] Standardizing automatic pre-negotiation of transaction terms with BIP70? (Emulating Amazon one-click purchase at all merchants)

2015-02-10 Thread Oleg Andreev
> Let's say you're visiting an international webshop. But they don't ship to 
> your country. Wouldn't you want to know that before your start filling the 
> cart? With this, your wallet / browser extension could tell you right away 
> that you can't shop there. No time wasted!

Why my wallet has to do anything with me being in some country? The webshop may 
detect my location and tell me if they ship to where I'm currently in. Why 
should I associate more private information (my location) with my wallet than 
strictly necessary? Why should I automatically advertise my shipping address to 
every webshop without my explicit consent?

The wallet must be convenient only as much as it allows for better security and 
privacy, but not trading off security and privacy for some unrelated 
convenience. --
Dive into the World of Parallel Programming. The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net/___
Bitcoin-development mailing list
Bitcoin-development@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bitcoin-development


Re: [Bitcoin-development] Standardizing automatic pre-negotiation of transaction terms with BIP70? (Emulating Amazon one-click purchase at all merchants)

2015-02-10 Thread Eric Voskuil
On 02/10/2015 02:41 AM, Natanael wrote:
> Den 10 feb 2015 11:34 skrev "MⒶrtin HⒶboⓋštiak"
> mailto:martin.habovst...@gmail.com>>:
>>
>> Why would anyone want to do anything about payment before choosing
>> what he wants to buy and for what price? I've never used Amazon but
>> isn't filling a form with shipping information enough?
> 
> That's not what this is about.
> 
> BIP70 isn't just payment, it is about communication the terms of the sale.

Hi Natanael,

BIP70 exists for seller non-repudiation (i.e. a cryptographically signed
receipt for payment) and establishing strong seller identity in a
face-to-face or other non-web scenario (since TLS doesn't help).
Anything else is incidental.

> Let's say you're visiting an international webshop. But they don't ship
> to your country. Wouldn't you want to know that before your start
> filling the cart? With this, your wallet / browser extension could tell
> you right away that you can't shop there. No time wasted!
> 
> That's just one requirement of many where you would benefit from being
> told right away if it is acceptable for both parties or not.

There's quite a bit that can be done with wallets and web sites, but
personally I'd freak out if my wallet prompted me because I visited a
web site.

e



signature.asc
Description: OpenPGP digital signature
--
Dive into the World of Parallel Programming. The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net/___
Bitcoin-development mailing list
Bitcoin-development@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bitcoin-development


Re: [Bitcoin-development] Standardizing automatic pre-negotiation of transaction terms with BIP70? (Emulating Amazon one-click purchase at all merchants)

2015-02-10 Thread Mike Hearn
We can certainly imagine many BIP70 extensions, but for things like
auto-filling shipping addresses, is the wallet the best place to do it? My
browser already knows how to fill out this data in credit card forms, it
would make sense to reuse that for Bitcoin.

It sounds like you want a kind of Star-Trek negotiation agent thing, where
your computer knows how to seek out the best deal because all the metadata
is standardised. Such a thing would be an interesting project, but it's
probably not best done in BIP70 given how it's deployed and used today.
Rather, I'd suggest looking at the various HTML5 data standards which would
allow merchants to advertise things like where they ship to in a machine
readable and crawlable form.
--
Dive into the World of Parallel Programming. The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net/___
Bitcoin-development mailing list
Bitcoin-development@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bitcoin-development


Re: [Bitcoin-development] Standardizing automatic pre-negotiation of transaction terms with BIP70? (Emulating Amazon one-click purchase at all merchants)

2015-02-10 Thread Natanael
Den 10 feb 2015 11:48 skrev "MⒶrtin HⒶboⓋštiak" :
>
> I still don't understand. The website can have this information
> available. This is exactly what e-bay does - it displays shipping
> information to my country before I do anything. What's the problem?
>
> Also with other stuff, website can do it and browser extension can do
> it too without messing with Bitcoin.

1: IP isn't guaranteed to work correctly both because you might be using a
VPN out Tor.

2: Yes, the site can display all options right away, but are you willing to
read all of them too?

3: Detailed information is not necessary, nor does it have to be
unprompted. It doesn't need to tell you more than which country you are in.
It can even prompt you with a popup that has a slider that shows exactly
how much information and of what kind you're about to share (including
none, if that's your choice).

4: It doesn't need to share raw data. Take a look at anonymous credentials:
http://www.zurich.ibm.com/idemix/
https://eprint.iacr.org/2013/622.pdf

5: It can wait for prompting until you add the first item to the cart.
--
Dive into the World of Parallel Programming. The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net/___
Bitcoin-development mailing list
Bitcoin-development@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bitcoin-development


Re: [Bitcoin-development] Standardizing automatic pre-negotiation of transaction terms with BIP70? (Emulating Amazon one-click purchase at all merchants)

2015-02-10 Thread Natanael
Den 10 feb 2015 12:08 skrev "Mike Hearn" :
>
> We can certainly imagine many BIP70 extensions, but for things like
auto-filling shipping addresses, is the wallet the best place to do it? My
browser already knows how to fill out this data in credit card forms, it
would make sense to reuse that for Bitcoin.
>
> It sounds like you want a kind of Star-Trek negotiation agent thing,
where your computer knows how to seek out the best deal because all the
metadata is standardised. Such a thing would be an interesting project, but
it's probably not best done in BIP70 given how it's deployed and used
today. Rather, I'd suggest looking at the various HTML5 data standards
which would allow merchants to advertise things like where they ship to in
a machine readable and crawlable form.

BIP70 doesn't have to be the place, but not needing to make sure the device
in question have that information stored already would be an improvement.
What protocol is used doesn't matter much, I just thought reusing BIP70
would simplify implementation.

HTML5 elements could definitely be supported, through adding a tag in the
HTML form that says "prompt the Bitcoin wallet about the following payment
details".

As one example, your browser could ask your hardware wallet over BLE for
this data. This way you barely have to trust the computer you're using at
all, as everything it does is confirmed on the hardware wallet before
payment (assuming it has a screen, which it should). Linking your hardware
wallet over BLE to new devices which you then use for browsing and shopping
could  be trivial and yet allow secure auto-fill of this kind.
--
Dive into the World of Parallel Programming. The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net/___
Bitcoin-development mailing list
Bitcoin-development@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bitcoin-development


Re: [Bitcoin-development] Standardizing automatic pre-negotiation of transaction terms with BIP70? (Emulating Amazon one-click purchase at all merchants)

2015-02-10 Thread MⒶrtin HⒶboⓋštiak
2015-02-10 12:12 GMT+01:00 Natanael :
> Den 10 feb 2015 11:48 skrev "MⒶrtin HⒶboⓋštiak"
> :
>>
>> I still don't understand. The website can have this information
>> available. This is exactly what e-bay does - it displays shipping
>> information to my country before I do anything. What's the problem?
>>
>> Also with other stuff, website can do it and browser extension can do
>> it too without messing with Bitcoin.
>
> 1: IP isn't guaranteed to work correctly both because you might be using a
> VPN out Tor.

Still possible using web browser extension.
>
> 2: Yes, the site can display all options right away, but are you willing to
> read all of them too?

Why not? And again, browser extension can do it without bitcoin wallet
- no need to connect unrelated things.
>
> 3: Detailed information is not necessary, nor does it have to be unprompted.
> It doesn't need to tell you more than which country you are in. It can even
> prompt you with a popup that has a slider that shows exactly how much
> information and of what kind you're about to share (including none, if
> that's your choice).
>
> 4: It doesn't need to share raw data. Take a look at anonymous credentials:
> http://www.zurich.ibm.com/idemix/
> https://eprint.iacr.org/2013/622.pdf
>
> 5: It can wait for prompting until you add the first item to the cart.

Everything you described is possible without Bitcoin involved - why
would we mix unrelated things?

P.S.: I believe in Unix philosophy. ;)

--
Dive into the World of Parallel Programming. The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net/
___
Bitcoin-development mailing list
Bitcoin-development@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bitcoin-development


Re: [Bitcoin-development] Standardizing automatic pre-negotiation of transaction terms with BIP70? (Emulating Amazon one-click purchase at all merchants)

2015-02-10 Thread MⒶrtin HⒶboⓋštiak
2015-02-10 12:19 GMT+01:00 Natanael :
>
> Den 10 feb 2015 12:08 skrev "Mike Hearn" :
>>
>> We can certainly imagine many BIP70 extensions, but for things like
>> auto-filling shipping addresses, is the wallet the best place to do it? My
>> browser already knows how to fill out this data in credit card forms, it
>> would make sense to reuse that for Bitcoin.
>>
>> It sounds like you want a kind of Star-Trek negotiation agent thing, where
>> your computer knows how to seek out the best deal because all the metadata
>> is standardised. Such a thing would be an interesting project, but it's
>> probably not best done in BIP70 given how it's deployed and used today.
>> Rather, I'd suggest looking at the various HTML5 data standards which would
>> allow merchants to advertise things like where they ship to in a machine
>> readable and crawlable form.
>
> BIP70 doesn't have to be the place, but not needing to make sure the device
> in question have that information stored already would be an improvement.
> What protocol is used doesn't matter much, I just thought reusing BIP70
> would simplify implementation.

In what universe is that simple? Your solution: browser extension +
wallet + comminucation API + all the wallets need to implement it
Our solution: just browser extension.

If you hate writing browser extensions in Javascript, you can say it
directly. ;)

>
> HTML5 elements could definitely be supported, through adding a tag in the
> HTML form that says "prompt the Bitcoin wallet about the following payment
> details".

Just no.

>
> As one example, your browser could ask your hardware wallet over BLE for
> this data. This way you barely have to trust the computer you're using at
> all, as everything it does is confirmed on the hardware wallet before
> payment (assuming it has a screen, which it should). Linking your hardware
> wallet over BLE to new devices which you then use for browsing and shopping
> could  be trivial and yet allow secure auto-fill of this kind.

This looks more interesting but is information about your location
really so secret that you need to hold it in HW wallet? Because if so,
you probably don't want to use untrusted machine anyway. (Or just use
Qubes OS.)

>
>
> --
> Dive into the World of Parallel Programming. The Go Parallel Website,
> sponsored by Intel and developed in partnership with Slashdot Media, is your
> hub for all things parallel software development, from weekly thought
> leadership blogs to news, videos, case studies, tutorials and more. Take a
> look and join the conversation now. http://goparallel.sourceforge.net/
> ___
> Bitcoin-development mailing list
> Bitcoin-development@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/bitcoin-development
>

--
Dive into the World of Parallel Programming. The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net/
___
Bitcoin-development mailing list
Bitcoin-development@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bitcoin-development


Re: [Bitcoin-development] Standardizing automatic pre-negotiation of transaction terms with BIP70? (Emulating Amazon one-click purchase at all merchants)

2015-02-10 Thread Natanael
> In what universe is that simple? Your solution: browser extension +
> wallet + comminucation API + all the wallets need to implement it
> Our solution: just browser extension.

Browser extension would only be required until browsers add native support
for detecting the tag and prompting a wallet client. This probably won't
happen in the near future, though.

Also, the kind of browser extension you're talking about would be limited
to just one device or require manually configured syncing between your
devices, and would also likely be limited to just a few platforms.

The communication is done between the wallet and merchant the same as
always with BIP70, but with some extra BIP70 extensions for this purpose.
It just starts talking earlier.

It supports graceful degradation just fine, if the browser or wallet don't
support it or the wallet isn't linked to that computer's browser, then
nothing out of the ordinary happens. The browser extension really don't do
anything special, it just relays the details in the HTML tag.

> > As one example, your browser could ask your hardware wallet over BLE for
> > this data. This way you barely have to trust the computer you're using
at
> > all, as everything it does is confirmed on the hardware wallet before
> > payment (assuming it has a screen, which it should). Linking your
hardware
> > wallet over BLE to new devices which you then use for browsing and
shopping
> > could  be trivial and yet allow secure auto-fill of this kind.
>
> This looks more interesting but is information about your location
> really so secret that you need to hold it in HW wallet? Because if so,
> you probably don't want to use untrusted machine anyway. (Or just use
> Qubes OS.)

It isn't necessarily top secret, but why not be protective by default? Your
hardware wallet is already designed to keep secrets. Lets say you're at a
library computer, or at a friend's house, why not let your hardware wallet
deal with all the security?

In this scenario it is likely already functioning as a central point for
all your Bitcoin related purchases anyway, so it might as well be the
device that remembers all your shopping preferences for you. So let's make
it simple to use!
--
Dive into the World of Parallel Programming. The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net/___
Bitcoin-development mailing list
Bitcoin-development@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bitcoin-development


Re: [Bitcoin-development] Proposal for P2P Wireless (Bluetooth LE) transfer of Payment URI

2015-02-10 Thread Eric Voskuil
Martin,

I like your idea for the commit protocol in that it resolves the
vandalous address substitution attack. However, I don't see a way to
prevent privacy loss without adverse impact to the scenario.

Anyone could perform the handshake and thereby obtain the payment
request. Therefore to prevent inadvertent disclosure the customer must
visually confirm the "phrase" and then verbally tell the merchant to
proceed by sending the payment request.

One might argue that it's sufficient to preserve the integrity of the
transaction while suffering the privacy loss, especially given that a
hijacked handshake should never result in a completed transaction -
unless of course the hijacker pays.

But imagine someone purchasing their meds. HIPAA requires the checkout
queue to form behind a yellow line. That speaks directly to this question.

e

On 02/06/2015 01:07 AM, MⒶrtin HⒶboⓋštiak wrote:
> 2015-02-06 2:29 GMT+01:00 Eric Voskuil :
>> On 02/05/2015 04:36 PM, Martin Habovštiak wrote:
>>> I believe, we are still talking about transactions of physical
>>> people in physical world. So yes, it's proximity based - people
>>> tell the words by mouth. :)
>>
>> Notice from my original comment:
>>
>> A MITM can substitute the key. If you don't have verifiable
>> identity associated with the public key (PKI/WoT), you need
>> a shared secret (such as a secret phrase).
>>
>> I said this could only be accomplished using a shared secret or a
>> trusted public key. Exchanging a value that is derived from a pair of
>> public keys is a distinction without a difference. The problem remains
>> that the parties must have a secure/out-of-band channel for
>> communicating this value.
>>
>> The fact that they are face-to-face establishes this channel, but that
>> brings us back to the original problem, as it requires manual
>> verification - as in visual/audible scanning of the two values for
>> comparison. At that point the visual comparison of the address, or some
>> value derived from it, is simpler.
> 
> I have never been against manual verification. What I'm trying to say
> is let's just make manual verification easier and more secure.
> Comparison of address is simpler for the coder but also simpler to
> attack. It has these problems:
> - Addresses broadcasted in plaintext (privacy issue)
> - Amounts broadcasted in plaintext (privacy issue)
> - Address is long - takes lot of time to verify (user experience issue)
> - Address prefix can be brute-forced, if too short or used to make
> "black hole" address if longer (vandalism issue)
> 
> Commit protocol can be used for both the encryption and the
> authentication while user experience is not bad and everything is
> still secure.
> 
>>
>>> In case of RedPhone, you read those words verbally over not-yet-
>>> verified channel relying on difficulty of spoofing your voice. Also
>>> the app remembers the public keys, so you don't need to verify
>>> second time.
>>
>> This is reasonable, but wouldn't help in the case of an ad-hoc
>> connection between parties who don't know each other well.
>>
>>> I suggest you to try RedPhone (called Signal on iPhone) yourself.
>>> It's free/open source, Internet-based and end-to-end encrypted. You
>>> may find it useful some day. Also I'm willing to help you with
>>> trying it after I wake up. (~8 hours: Send me private e-mail if
>>> you want to.)
>>
>> I appreciate the offer. I really don't trust *any* smartphone as a
>> platform for secure communication/data. But encrypting on the wire does
>> of course shrink the attack surface and increase the attacker's cost.
>>
>> e
>>
>>> Dňa 6. februára 2015 1:22:23 CET používateľ Eric Voskuil
>>  napísal:
>>
 On 02/05/2015 04:04 PM, MⒶrtin HⒶboⓋštiak wrote:
> That's exactly what I though when seeing the RedPhone code, but after
> I studied the commit protocol I realized it's actually secure and
> convenient way to do it. You should do that too. :)
>>>
 I was analyzing the model as you described it to me. A formal analysis
 of the security model of a particular implementation, based on
 inference
>>> >from source code, is a bit beyond what I signed up for. But I'm
 perfectly willing to comment on your description of the model if you
 are
 willing to indulge me.
>>>
> Shortly, how it works:
> The initiator of the connection sends commit message containing the
> hash of his temporary public ECDH part, second party sends back their
> public ECDH part and then initiator sends his public ECDH part in
> open. All three messages are hashed together and the first two bytes
> are used to select two words from a shared dictionary which are
> displayed on the screen of both the initiator and the second party.
>>>
> The parties communicate those two words and verify they match.
>>>
 How do they compare words if they haven't yet established a secure
 channel?
>>>
> If an attacker wants to do MITM, he has a chance of choosing right

Re: [Bitcoin-development] Proposal for P2P Wireless (Bluetooth LE) transfer of Payment URI

2015-02-10 Thread MⒶrtin HⒶboⓋštiak
I'm not sure if I was clear enough. Handshake should be used to
establish authenticated AND encrypted communication using ECDH (or
just DH, but I think it's easier to use ECDH, since required functions
are already used in Bitcoin protocol), like RedPhone does. BTW
knowledge of verification string is useless to the attacker.

Yes, the customer must verify it verbally and the merchant shouldn't
send the transaction before verification. Other possibility is that in
case of differing verification strings new address is generated, so
attacker doesn't know the address. But in this case, amount is leaked
and there is quite high probability it can be found in the Blockchain.
Anyway, I don't believe the transaction can be made securely without
such interaction except with white-listing public keys, so I see no
reason why interaction should be problematic.

We don't have such strict regulations but I agree that security is
important. Currently I think that verbal verification and manual
confirmation is the best way to achieve high security and reasonable
user-friendliness.

2015-02-10 17:55 GMT+01:00 Eric Voskuil :
> Martin,
>
> I like your idea for the commit protocol in that it resolves the
> vandalous address substitution attack. However, I don't see a way to
> prevent privacy loss without adverse impact to the scenario.
>
> Anyone could perform the handshake and thereby obtain the payment
> request. Therefore to prevent inadvertent disclosure the customer must
> visually confirm the "phrase" and then verbally tell the merchant to
> proceed by sending the payment request.
>
> One might argue that it's sufficient to preserve the integrity of the
> transaction while suffering the privacy loss, especially given that a
> hijacked handshake should never result in a completed transaction -
> unless of course the hijacker pays.
>
> But imagine someone purchasing their meds. HIPAA requires the checkout
> queue to form behind a yellow line. That speaks directly to this question.
>
> e
>
> On 02/06/2015 01:07 AM, MⒶrtin HⒶboⓋštiak wrote:
>> 2015-02-06 2:29 GMT+01:00 Eric Voskuil :
>>> On 02/05/2015 04:36 PM, Martin Habovštiak wrote:
 I believe, we are still talking about transactions of physical
 people in physical world. So yes, it's proximity based - people
 tell the words by mouth. :)
>>>
>>> Notice from my original comment:
>>>
>>> A MITM can substitute the key. If you don't have verifiable
>>> identity associated with the public key (PKI/WoT), you need
>>> a shared secret (such as a secret phrase).
>>>
>>> I said this could only be accomplished using a shared secret or a
>>> trusted public key. Exchanging a value that is derived from a pair of
>>> public keys is a distinction without a difference. The problem remains
>>> that the parties must have a secure/out-of-band channel for
>>> communicating this value.
>>>
>>> The fact that they are face-to-face establishes this channel, but that
>>> brings us back to the original problem, as it requires manual
>>> verification - as in visual/audible scanning of the two values for
>>> comparison. At that point the visual comparison of the address, or some
>>> value derived from it, is simpler.
>>
>> I have never been against manual verification. What I'm trying to say
>> is let's just make manual verification easier and more secure.
>> Comparison of address is simpler for the coder but also simpler to
>> attack. It has these problems:
>> - Addresses broadcasted in plaintext (privacy issue)
>> - Amounts broadcasted in plaintext (privacy issue)
>> - Address is long - takes lot of time to verify (user experience issue)
>> - Address prefix can be brute-forced, if too short or used to make
>> "black hole" address if longer (vandalism issue)
>>
>> Commit protocol can be used for both the encryption and the
>> authentication while user experience is not bad and everything is
>> still secure.
>>
>>>
 In case of RedPhone, you read those words verbally over not-yet-
 verified channel relying on difficulty of spoofing your voice. Also
 the app remembers the public keys, so you don't need to verify
 second time.
>>>
>>> This is reasonable, but wouldn't help in the case of an ad-hoc
>>> connection between parties who don't know each other well.
>>>
 I suggest you to try RedPhone (called Signal on iPhone) yourself.
 It's free/open source, Internet-based and end-to-end encrypted. You
 may find it useful some day. Also I'm willing to help you with
 trying it after I wake up. (~8 hours: Send me private e-mail if
 you want to.)
>>>
>>> I appreciate the offer. I really don't trust *any* smartphone as a
>>> platform for secure communication/data. But encrypting on the wire does
>>> of course shrink the attack surface and increase the attacker's cost.
>>>
>>> e
>>>
 Dňa 6. februára 2015 1:22:23 CET používateľ Eric Voskuil
>>>  napísal:
>>>
> On 02/05/2015 04:04 PM, MⒶrtin HⒶboⓋštiak wrote:
>> That's exactly what I though when s

Re: [Bitcoin-development] Proposal for P2P Wireless (Bluetooth LE) transfer of Payment URI

2015-02-10 Thread Eric Voskuil
On 02/10/2015 09:16 AM, MⒶrtin HⒶboⓋštiak wrote:
> I'm not sure if I was clear enough. Handshake should be used to
> establish authenticated AND encrypted communication using ECDH (or
> just DH, but I think it's easier to use ECDH, since required functions
> are already used in Bitcoin protocol), like RedPhone does. BTW
> knowledge of verification string is useless to the attacker.

Yes, I think this was clear from your description.

> Yes, the customer must verify it verbally and the merchant shouldn't
> send the transaction before verification. Other possibility is that in
> case of differing verification strings new address is generated, so
> attacker doesn't know the address. But in this case, amount is leaked
> and there is quite high probability it can be found in the Blockchain.

Yes, for each handshake the payment request would need to contain a
different address, mitigating some of the privacy loss.

> Anyway, I don't believe the transaction can be made securely without
> such interaction except with white-listing public keys, so I see no
> reason why interaction should be problematic.

It can be done securely and privately by transfer of a shared secret
through a private channel.

> We don't have such strict regulations but I agree that security is
> important. Currently I think that verbal verification and manual
> confirmation is the best way to achieve high security and reasonable
> user-friendliness.

I think for a broadcast model (e.g. Bluetooth only) that is the only
want to ensure integrity and privacy. A narrow cast can use proximity to
establish trust.

> 2015-02-10 17:55 GMT+01:00 Eric Voskuil :
>> Martin,
>>
>> I like your idea for the commit protocol in that it resolves the
>> vandalous address substitution attack. However, I don't see a way to
>> prevent privacy loss without adverse impact to the scenario.
>>
>> Anyone could perform the handshake and thereby obtain the payment
>> request. Therefore to prevent inadvertent disclosure the customer must
>> visually confirm the "phrase" and then verbally tell the merchant to
>> proceed by sending the payment request.
>>
>> One might argue that it's sufficient to preserve the integrity of the
>> transaction while suffering the privacy loss, especially given that a
>> hijacked handshake should never result in a completed transaction -
>> unless of course the hijacker pays.
>>
>> But imagine someone purchasing their meds. HIPAA requires the checkout
>> queue to form behind a yellow line. That speaks directly to this question.
>>
>> e
>>
>> On 02/06/2015 01:07 AM, MⒶrtin HⒶboⓋštiak wrote:
>>> 2015-02-06 2:29 GMT+01:00 Eric Voskuil :
 On 02/05/2015 04:36 PM, Martin Habovštiak wrote:
> I believe, we are still talking about transactions of physical
> people in physical world. So yes, it's proximity based - people
> tell the words by mouth. :)

 Notice from my original comment:

 A MITM can substitute the key. If you don't have verifiable
 identity associated with the public key (PKI/WoT), you need
 a shared secret (such as a secret phrase).

 I said this could only be accomplished using a shared secret or a
 trusted public key. Exchanging a value that is derived from a pair of
 public keys is a distinction without a difference. The problem remains
 that the parties must have a secure/out-of-band channel for
 communicating this value.

 The fact that they are face-to-face establishes this channel, but that
 brings us back to the original problem, as it requires manual
 verification - as in visual/audible scanning of the two values for
 comparison. At that point the visual comparison of the address, or some
 value derived from it, is simpler.
>>>
>>> I have never been against manual verification. What I'm trying to say
>>> is let's just make manual verification easier and more secure.
>>> Comparison of address is simpler for the coder but also simpler to
>>> attack. It has these problems:
>>> - Addresses broadcasted in plaintext (privacy issue)
>>> - Amounts broadcasted in plaintext (privacy issue)
>>> - Address is long - takes lot of time to verify (user experience issue)
>>> - Address prefix can be brute-forced, if too short or used to make
>>> "black hole" address if longer (vandalism issue)
>>>
>>> Commit protocol can be used for both the encryption and the
>>> authentication while user experience is not bad and everything is
>>> still secure.
>>>

> In case of RedPhone, you read those words verbally over not-yet-
> verified channel relying on difficulty of spoofing your voice. Also
> the app remembers the public keys, so you don't need to verify
> second time.

 This is reasonable, but wouldn't help in the case of an ad-hoc
 connection between parties who don't know each other well.

> I suggest you to try RedPhone (called Signal on iPhone) yourself.
> It's free/open source, Internet-based and end-to-