Hi Fernando,

A few thoughts,

1) You can send/receive binary SMS if you want. Sending takes additional
works to be done, but is minor. Binary SMS messages will neither trigger
notifications to the user, nor be stored in database. At least for now.
Sounds more silent, doesn't it?

2) You don't really need a "SMS" permission, just build the API in
mozPay and makes requests to SmsService to send the message for you.

3) Do users pay for these slient SMS messages?

4) Take Line, a popular messaging app from Japan, for example. The app
listens incoming SMS for a certain period, waiting for one that matches
some criteria, paste message text to the authentication form, and delete
that SMS when everything is done. Isn't that silent enough for us?

On 03/20/2013 12:30 AM, Fernando Jiménez wrote:
> Hi folks,
>
> I'd like to expose a few ideas about the possible inclusion of a
> "silent SMS" flow within the current payment flow triggered by the
> navigator.mozPay API [1].
>
> *** Why an SMS? ***
>
> In order to charge a user for a purchased digital good via carrier
> billing, the payment provider needs to identify the user as an
> authenticated carrier user. The way the user is identified depends on
> the capabilities of the carrier's network and on the device connection
> status. Some carriers provide a network based authentication mechanism
> where the users can be identified and authenticated by IP. This
> mechanism requires the user's device to have an active data connection
> (i.e. 3G) and it obviously won't work if the user's device is
> connected via WiFi. The network based authentication mechanism
> provides a seamless UX where the user can be "silently" authenticated.
> However, the requirements for this authentication mechanism are
> unfortunately not always met, so we also need to provide fallback
> mechanisms as an alternative to the network based one. One of this
> fallbacks is the SMS MT flow, where the user is asked to enter her
> phone number, so the payment provider can send an SMS with a challenge
> that the user needs to retrieve and send back to the payment provider.
>
> *** Why silent? ***
>
> The above described SMS flow provides a bad UX, where the user might
> even need to leave the actual payment flow to check her SMS inbox
> looking for the challenge to be sent back to the payment provider.
> This flow is the one that it is currently implemented for Firefox OS
> payments in v1 and the one that we might be able to change with the
> introduction of the silent SMS flow.
>
> With the current implementation, the first time a user wants to buy an
> app via the Firefox Marketplace, she needs to go through the following
> steps:
>
> 1) Click on purchase the app
> 2) Enter her email and submit it to login with Firefox Accounts
> 3) Enter her password twice to create the Firefox Account
> 4) Enter a new PIN for the marketplace
> 5) Type the PIN again to confirm its right
> 6) Enter her phone number and mobile operator
> 7) Receive an SMS with a PIN
> 8) Enter the SMS with the PIN
> 9) Authorise the payment
> 10) Confirm the installation
>
> As you can see, the flow is pretty painful. The idea of the silent SMS
> proposal is to get rid of steps 6 to 8.
>
> *** How? ***
>
> There have already been a few discussions about how to implement a
> silent SMS flow [2]. The comment at [3] mentions the possibility of
> having an SMS flow only with SMS MO [4], which would be absolutely
> great, but I can't see how this flow can work in a secure way since it
> is possible to replace the sender of an SMS [5]. So I will explain my
> proposal based on the need of having an SMS MO <-> SMS MT flow.
> However, I am including David Lozano (author of that comment) in CC so
> he can explain that flow in more detail. Hopefully we might only need
> to send an SMS and the flow would be significantly simpler :).
>
> At a high level overview, the silent SMS flow would consist in the
> following steps:
>
> a. The payment provider requests the send of an SMS to a short number
> defined by the carrier. The short number could be stored as a
> preference in the device and might be tied to the payment provider's
> origin.
> b. An SMS containing a randomly generated ID is sent to that short
> number. The ID would be used later to identify the corresponding reply.
> c. Once the carrier receives the SMS, it generates a token an replies
> back to the origin number with a new SMS containing the ID and the
> generated token.
> d. The device receives the SMS and gets back to the payment provider
> flow (via DOMRequest callback) with the generated token.
> e. The payment provider can use the received token to check with the
> carrier the user's identity to continue with the payment process.
>
> The first challenge here is how to achieve step (a) so we let the
> payment provider request the send of an SMS knowing that the payment
> provider flow is web content that has not the possibility of
> requesting WebSMS API permissions.
>
> As some of you already know, the navigator.mozPay API triggers the
> creation of a trusted UI that embeds the content of the payment
> provider flow. The API implementation injects [6] two functions in the
> corresponding payment flow to allow the payment provider to complete
> or cancel the payment process and to return the control to the caller
> application. Basically, the idea for the silent SMS flow is to inject
> an additional function in the payment flow to allow the payment
> provider to request a silent SMS flow to get the user's
> authentication. So the payment provider facing API would have a new
> function like:
>
> DOMRequest doSilentSMS();
>
> This function might probably need a new explicit permission, so we let
> the user choose if she wants to allow or not the payment provider to
> send SMSs on her behalf. Jonas, any thought about this? You already
> expressed some concerns about privacy regarding navigator.mozPay
> before [7].
>
> In order to get the "silence" for this flow we will need to modify the
> current SMS implementation to allow sending (step b) and receiving
> (step d) SMSs without storing them in the mobile messages database.
> Note that depending on the flow required by the carrier (only an SMS
> MT as suggested in [3]) we might only need to modify the sending
> methods. Vicamo, any thoughts about this?
>
> Sorry for the long email. Any feedback would be highly appreciated.
>
> Cheers!
>
> / Fernando
>
> [1] https://wiki.mozilla.org/WebAPI/WebPayment
> [2] https://bugzilla.mozilla.org/show_bug.cgi?id=816564
> [3] https://bugzilla.mozilla.org/show_bug.cgi?id=816564#c4
> [4] http://en.wikipedia.org/wiki/Short_Message_Service#Early_development
> [5] http://en.wikipedia.org/wiki/SMS_spoofing
> [6] https://wiki.mozilla.org/WebAPI/WebPaymentProvider#Completion
> [7]
> https://groups.google.com/forum/#!searchin/mozilla.dev.b2g/pay/mozilla.dev.b2g/YGITHnnjh0M/ciQO9Y_AdGoJ
> <https://groups.google.com/forum/#%21searchin/mozilla.dev.b2g/pay/mozilla.dev.b2g/YGITHnnjh0M/ciQO9Y_AdGoJ>


-- 
Vicamo Yang 楊有勝
Mozilla Taiwan

_______________________________________________
dev-b2g mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-b2g

Reply via email to