home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1997 December / Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso / drafts / draft_d_h / draft-eastlake-internet-payment-02.txt < prev    next >
Text File  |  1996-08-26  |  53KB  |  1,682 lines

  1.  
  2. INTERNET-DRAFT                                    Donald E. Eastlake 3rd
  3.                                                                CyberCash
  4. Expires: 27 February 1997                                 28 August 1996
  5.  
  6.  
  7.  
  8.                Application Level Internet Payment Syntax
  9.                ----------- ----- -------- ------- ------
  10.  
  11.  
  12.  
  13.  
  14.  
  15. Status of This Document
  16.  
  17.    This draft, file name draft-eastlake-internet-payment-02.txt, is
  18.    intended to be become one or more Proposed Standard RFCs.
  19.    Distribution of this document is unlimited. Comments should be sent
  20.    to the author <dee@cybercash.com> or the ietf-payments mailing list
  21.    <ietf-pay@imc.org>.
  22.  
  23.    This document is an Internet-Draft.  Internet-Drafts are working
  24.    documents of the Internet Engineering Task Force (IETF), its areas,
  25.    and its working groups.  Note that other groups may also distribute
  26.    working documents as Internet-Drafts.
  27.  
  28.    Internet-Drafts are draft documents valid for a maximum of six
  29.    months.  Internet-Drafts may be updated, replaced, or obsoleted by
  30.    other documents at any time.  It is not appropriate to use Internet-
  31.    Drafts as reference material or to cite them other than as a
  32.    ``working draft'' or ``work in progress.''
  33.  
  34.    To learn the current status of any Internet-Draft, please check the
  35.    1id-abstracts.txt listing contained in the Internet-Drafts Shadow
  36.    Directories on ds.internic.net (East USA), ftp.isi.edu (West USA),
  37.    nic.nordu.net (North Europe), ftp.nis.garr.it (South Europe),
  38.    munnari.oz.au (Pacific Rim), or ftp.is.co.za (Africa).
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57. Eastlake                                                        [Page 1]
  58.  
  59.  
  60. INTERNET-DRAFT          Internet Payment Syntax           28 August 1996
  61.  
  62.  
  63. Abstract
  64.  
  65.    The Internet is becoming an increasingly commercial arena in which
  66.    information is being bought and sold and payments are rendered for
  67.    services and data delivered within the Internet and for goods and
  68.    services to be delivered outside of the Internet.  Thus far, the
  69.    protocols and format used for such payments have been ad hoc and
  70.    proprietary.
  71.  
  72.    This draft proposes a uniform application level syntax to support
  73.    commerce in applications level data and services Proposed
  74.    specifications are given for how this syntax fits into and enables
  75.    commerce in the data and services rendered by the World Wide Web,
  76.    FTP, Telnet, SMTP, and DNS protocols.
  77.  
  78.  
  79.  
  80. Acknowledgments
  81.  
  82.    The contributions of the following persons to this draft are
  83.    gratefully acknowledged:
  84.  
  85.       Brian Boesch <boesch@cybercash.com>
  86.       Phillip Hallam-Baker <hallam@w3.org>
  87.       Dave Kristol <dmk@allegra.att.com>
  88.       David S. Raggett <dsg@w3.org>.
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115. Eastlake                                                        [Page 2]
  116.  
  117.  
  118. INTERNET-DRAFT          Internet Payment Syntax           28 August 1996
  119.  
  120. Table of Contents
  121.  
  122.       Status of This Document....................................1
  123.       Abstract...................................................2
  124.       Acknowledgments............................................2
  125.       Table of Contents..........................................3
  126.  
  127.       1. Introductions...........................................4
  128.       1.1 Applications Level Applicability.......................4
  129.       1.2 Overview of this document..............................4
  130.  
  131.       2. Price Tags..............................................6
  132.       2.1 Prices.................................................6
  133.       2.2 Payment System Strings.................................6
  134.       2.3 Price Tags.............................................7
  135.  
  136.       3. Payments, Receipts, and Errors..........................9
  137.       3.1 Payment Strings........................................9
  138.       3.2 Receipt Strings........................................9
  139.       3.3 Message Flow and Payer Private Information............10
  140.       3.4 Refunds...............................................10
  141.       3.5 Errors................................................10
  142.  
  143.       4. Use in the World Wide Web..............................11
  144.       4.1 Web Browser User Interface............................11
  145.       4.2 Anchor Embedded Costs.................................11
  146.       4.3 Page Header Price Tags................................12
  147.       4.4 HTML Form Price Tags..................................13
  148.       4.5 Payments and Receipts Via Miscellaneous Headers.......14
  149.       4.6 Payments and Receipts Via UPP/PEP Headers.............15
  150.       4.7 Web Proxies...........................................16
  151.  
  152.       5. Use in File Transfer Protocol..........................18
  153.  
  154.       6. Use in Telnet..........................................19
  155.  
  156.       7. Use in Simple Message Transfer Protocol................20
  157.  
  158.       8. The Domain Name System.................................22
  159.  
  160.       9. Protocols to Which Payment is not Applicable...........24
  161.       9.1 The ECHO, DISCARD, and CHARGEN Services...............24
  162.       9.2 The Finger Service....................................24
  163.       9.3 The Auth Service......................................25
  164.  
  165.       10. Security Considerations...............................26
  166.  
  167.       References................................................27
  168.       Author's Address..........................................27
  169.       Expiration and File Name..................................27
  170.  
  171.       Appendix A: Simplified BNF................................28
  172.  
  173. Eastlake                                                        [Page 3]
  174.  
  175.  
  176. INTERNET-DRAFT          Internet Payment Syntax           28 August 1996
  177.  
  178.  
  179. 1. Introductions
  180.  
  181.    Commerce in applications level data and services on the Internet
  182.    requires a means to (1) indicate prices and acceptable methods of
  183.    payment, (2) tender payment, and (3) issue a receipt acknowledging
  184.    payment or notification if payment fails.
  185.  
  186.    This document specifies a character string syntax for these three
  187.    items.
  188.  
  189.  
  190.  
  191. 1.1 Applications Level Applicability
  192.  
  193.    Payment facilities could be applied at a number of levels.  This
  194.    specification is concerned only with applications level provision of
  195.    data items and services.  It does not concern itself with network
  196.    level packets or quality of service nor does it concern itself
  197.    directly with transport level connections or quantity or quality of
  198.    service except as these transport level measures impact application
  199.    services.
  200.  
  201.    This proposed syntax is concerned with such matters as payment for
  202.    access to a web page, upload of a file via ftp, initiation of a
  203.    telnet session, or conducting an extensive WAIS search.  These are
  204.    generally user visible and meaningful tasks or data objects.
  205.  
  206.    Within most legal systems, the owners of such data objects and/or the
  207.    owners of the facilities used to present such objects or perform such
  208.    tasks are frequently entitled to require some recompense if they
  209.    choose to require it.  This document does not concern itself with the
  210.    morality of such laws or requirements but merely provides a syntax
  211.    whereby cooperating entities may speak at that level about prices and
  212.    payments.
  213.  
  214.    There is no requirement that the "currencies" used with this syntax
  215.    be the usually recognized national or international currencies.  For
  216.    example, some transactions could be denominated in frequent flyer
  217.    miles or other private unit.
  218.  
  219.  
  220.  
  221. 1.2 Overview of this document
  222.  
  223.    Sections 2 and 3 below define a basic syntactic framework for price
  224.    tags, payments, and receipts.
  225.  
  226.    Sections 4 through 8 specify a standard for inclusion of these items
  227.    in transactions for the World Wide Web (HTTP/HTML), File Transfer
  228.    Protocol (FTP), Telnet, Simple Message Transfer Protocol (SMTP), and
  229.  
  230.  
  231. Eastlake                                                        [Page 4]
  232.  
  233.  
  234. INTERNET-DRAFT          Internet Payment Syntax           28 August 1996
  235.  
  236.  
  237.    the Domain Name System (DNS) protocols.
  238.  
  239.    Section 9 lists some protocols to which application level payment
  240.    systems should not be applied.
  241.  
  242.    Section 10 discusses security considerations.
  243.  
  244.    Appendix A gives a semi-formal BNF-like description of the syntax.
  245.  
  246.  
  247.  
  248.  
  249.  
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282.  
  283.  
  284.  
  285.  
  286.  
  287.  
  288.  
  289. Eastlake                                                        [Page 5]
  290.  
  291.  
  292. INTERNET-DRAFT          Internet Payment Syntax           28 August 1996
  293.  
  294.  
  295. 2. Price Tags
  296.  
  297.    A uniform price tag format is needed to indicate when payment is due,
  298.    how much, and what payment methods are acceptable by the seller.
  299.    Such a price tag must include the specification of one or more
  300.    acceptable payment systems (with a provision for payment system
  301.    specific information) and will commonly include one or more prices.
  302.  
  303.    Sections 2.1 and 2.2 below describe prices and payment system strings
  304.    and Section 2.3 assembles these for complete price tags.
  305.  
  306.  
  307.  
  308. 2.1 Prices
  309.  
  310.    Prices are encoded as character strings consisting of a number
  311.    followed by a currency code.
  312.  
  313.    These currency codes are the three letter ISO 4217 codes, Internet
  314.    Assigned Number Authority (IANA) registered four to eight letter
  315.    currency codes, or any valid domain name containing at least two
  316.    labels.   (ISO 4217 codes normally consist of the two letter country
  317.    code followed by a letter mnemonic for the major unit of currency
  318.    such as gbp for Great Britain Pound or ALL for Albanian Lek.)
  319.    Currency codes are case insensitive. Codes of one, two, or more than
  320.    eight letters or non-initial digits appearing in the place of a
  321.    currency code are reserved for future definition.
  322.  
  323.    The number preceding the currency designation is the quantity of
  324.    major units of that currency.  It may optionally have a decimal point
  325.    and additional decimal fraction digits and may optionally have a "+"
  326.    or "-" immediately followed by an integer scaling exponent.  Any
  327.    number of digits of precision and any size exponent may be provided
  328.    but payment systems may define how many digits and what range they
  329.    make use of.
  330.  
  331.    Some examples:
  332.  
  333.       2.34gbp      2 pounds and 34 pence sterling
  334.       79+0ALL      seventy nine Albanian Leks
  335.       123456-5cad  one dollar 23 and 456 thousandths cents Canadian
  336.       0.125usd     one eighth of a US dollar (a "bit")
  337.  
  338.  
  339.  
  340. 2.2 Payment System Strings
  341.  
  342.    Payment system strings consist of the payment system name, an equal
  343.    sign, and any payment system specific information (such as what
  344.    account within that payment system the payment should be made payable
  345.  
  346.  
  347. Eastlake                                                        [Page 6]
  348.  
  349.  
  350. INTERNET-DRAFT          Internet Payment Syntax           28 August 1996
  351.  
  352.  
  353.    to).
  354.  
  355.    Payment system names are either case insensitive four to twelve
  356.    letter names registered with IANA or a URL [RFC 1738] and are
  357.    terminated by an equal sign.  Codes occurring in the place of payment
  358.    system names consisting of one to three letter or more than twelve
  359.    letters are reserved for future definition.
  360.  
  361.    Payment system specific information must be encoded so that it
  362.    contains no internal spaces or unusual characters as described in
  363.    Appendix A.  It is up to the named payment system to encode and
  364.    decode any information it requires so as to fit within this syntax
  365.    Use of the base64 encoding defined in RFC 1521 is recommended.  The
  366.    payment system specific information, if any, appears immediately
  367.    after the payment system name and equal sign and is terminated by
  368.    white space or the end of the price tag character string.
  369.  
  370.    A registry of payment system names is maintained by IANA.  For
  371.    experimental or private use, any URL may be used.
  372.  
  373.  
  374.  
  375. 2.3 Price Tags
  376.  
  377.    A complete price tag consists of a string of white space separated
  378.    prices and payment system strings.  There must be at least one
  379.    payment system string present.
  380.  
  381.    Normally there will also be at least one price.  However, there are
  382.    circumstances under which the cost of a service in highly
  383.    unpredictable and the seller is, in effect, requesting an arbitrary
  384.    donation or a payment system and account to which they can attempt to
  385.    charge indefinite amounts or payment for a service which will vary
  386.    with the amount of the payment. Where meaningful, it is recommended
  387.    that a price be listed that is a reasonable ceiling such that if
  388.    costs exceed it, the seller which have to present another price tag;
  389.    however, it is permitted to omit the price and list only a payment
  390.    system in a price tag.
  391.  
  392.    Payment systems SHOULD provide a means for a limited amount of
  393.    arbitrary seller information to be included in the payment system
  394.    specific part of a price tag and be returned to the seller within a
  395.    payment message based on that price tag.
  396.  
  397.    A price appearing after a payment system string applies only to that
  398.    system.  Putting a price before the first payment system specific
  399.    information makes that price a default for every payment system
  400.    specified.  The default can be overridden by specifying a different
  401.    amount for that currency after a particular payment system.
  402.  
  403.  
  404.  
  405. Eastlake                                                        [Page 7]
  406.  
  407.  
  408. INTERNET-DRAFT          Internet Payment Syntax           28 August 1996
  409.  
  410.  
  411.    For example:
  412.  
  413.       33.45all foocash=xxxx 22eTb barsys=yyyy 9.999ghC
  414.  
  415.    indicates that payment of twenty-two Ethiopian Birrs via the foocash
  416.    payment system or 9.999 Ghanaian Cedis via the barsys system or 33.45
  417.    Albania Leks via either system is acceptable.
  418.  
  419.    In cases where the cost of the service is not known in advance, the
  420.    price can be an estimate, deposit request, or the like, with any
  421.    overpayment refunded.  Underpayment can be fixed by collecting an
  422.    additional payment from the client.  Where there is limited trust
  423.    between the parties, frequent small payments may be required.
  424.  
  425.  
  426.  
  427.  
  428.  
  429.  
  430.  
  431.  
  432.  
  433.  
  434.  
  435.  
  436.  
  437.  
  438.  
  439.  
  440.  
  441.  
  442.  
  443.  
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463. Eastlake                                                        [Page 8]
  464.  
  465.  
  466. INTERNET-DRAFT          Internet Payment Syntax           28 August 1996
  467.  
  468.  
  469. 3. Payments, Receipts, and Errors
  470.  
  471.    The sections below describe encoding of payments and receipts and the
  472.    inclusion of error messages in the payment or receipt context.
  473.  
  474.    A null payment or receipt string is explicitly permitted in most
  475.    contexts as a way for an entity to indicate merely that it is payment
  476.    syntax aware.
  477.  
  478.    One or more equal sign terminated payment system names in isolation
  479.    are permitted in a payment or receipt context but only as a way to
  480.    indicate that a particular payment system is understood.  Any actual
  481.    payment or receipt must have a non-null payment specific information.
  482.    Only one such full payment system string can occur in a payment or
  483.    receipt.
  484.  
  485.    The content and/or encoding of the payment system specific
  486.    information would normally differ between the price tag, payment, and
  487.    receipt contexts but this is a matter only of concern to the payment
  488.    system.
  489.  
  490.  
  491.  
  492. 3.1 Payment Strings
  493.  
  494.    After encountering a price tag, either initially, during a session,
  495.    or in conjunction with a "payment required" error, an application
  496.    needs some method of tendering payment.  This is done with a payment
  497.    system string with the same syntax as described in Section 2.2 above.
  498.    For example:
  499.  
  500.         foocash=29Uso+Oa/e92micHd4s3
  501.  
  502.    The payment system used in the payment is selected from among those
  503.    in the price tag since those are known to be supported by the seller.
  504.    Payment systems will commonly include in the payment system specific
  505.    information part of payments some sort of serial or transaction
  506.    number so that retransmission of a message containing the string will
  507.    not result in duplicate payment.
  508.  
  509.  
  510.  
  511. 3.2 Receipt Strings
  512.  
  513.    Normally the seller will provide a receipt for the amount of money
  514.    actually collected or a message indicating payment failure or error.
  515.    This will be via a receipt character string which is also in the form
  516.    described in Section 2.2 above.  For example:
  517.  
  518.         barsys=8n7VtC2+uL341/==
  519.  
  520.  
  521. Eastlake                                                        [Page 9]
  522.  
  523.  
  524. INTERNET-DRAFT          Internet Payment Syntax           28 August 1996
  525.  
  526.  
  527.    Payment systems will commonly include, in the payment system specific
  528.    information of a receipt, an indication of how much the receipt is
  529.    for and some type of serial or transaction number so that
  530.    retransmission of a message containing the receipt will not result in
  531.    confusion.
  532.  
  533.  
  534.  
  535. 3.3 Message Flow and Payer Private Information
  536.  
  537.    For some payment systems, the buyer, instead of sending a payment to
  538.    the seller, actually completes payment based on the price tag and
  539.    simply sends to the seller a receipt string, as described above,
  540.    proving that they have paid.
  541.  
  542.    For payment systems where the payment is sent to the seller,
  543.    provision SHOULD be made for a small amount of arbitrary payer
  544.    private information by the buyer to be provided in the payment system
  545.    specific part of the payment message and returned to the buyer by the
  546.    seller in the receipt.
  547.  
  548.  
  549.  
  550. 3.4 Refunds
  551.  
  552.    Depending on payment system details, refunds may not be available or
  553.    they can be implemented in two ways.  It can be a payment message
  554.    from the seller to the buyer, normally leading to a receipt from the
  555.    buyer to the seller.  Or the seller may be able to directly refund to
  556.    the buyer's account or the like and simply send the buyer a receipt.
  557.    In some payment systems, both refund techniques might be available.
  558.    In others, refunding may not be possible.
  559.  
  560.  
  561.  
  562. 3.5 Errors
  563.  
  564.    Errors in formatting or the like that are internal to a payment or
  565.    receipt should generally be handled by being logged and/or reported
  566.    by an error message encoded into a receipt.  Errors within a payment
  567.    system in a price tag may be reported in a payment or receipt.  Great
  568.    care must be taken in designing such within payment system error
  569.    reporting to be sure to avoid any situation that could result in an
  570.    endless loop of receipts.
  571.  
  572.    Errors outside of payment systems, such as receiving a payment via an
  573.    unknown payment system or syntax errors that make it impossible to
  574.    determine a payment system, should be reported via the normal error
  575.    mechanism of the protocol within which the payments are embedded (see
  576.    sections below).
  577.  
  578.  
  579. Eastlake                                                       [Page 10]
  580.  
  581.  
  582. INTERNET-DRAFT          Internet Payment Syntax           28 August 1996
  583.  
  584.  
  585. 4. Use in the World Wide Web
  586.  
  587.    The World Wide Web is a rapidly evolving system for information
  588.    interaction that is being increasingly used for commerce.  It is
  589.    particularly well suited for the inclusion of payment systems,
  590.    especially any designed for efficient handling of small payments
  591.    which might reasonably be incurred on a "per web page" basis or the
  592.    like.
  593.  
  594.    In the Web, a price is indicated by a COST parameter or by a payment
  595.    required error response.  As described below, a COST parameter can
  596.    occur within an anchor, HTML document header, or several places in a
  597.    FORM. Payment and receipts can be included with HTTP requests and
  598.    payments using headers.
  599.  
  600.  
  601.  
  602. 4.1 Web Browser User Interface
  603.  
  604.    [the user interface material could be moved to an appendix]
  605.  
  606.    It is important that small payments be closely integrated into the
  607.    browser user interface.  An expected mode of operation will be one of
  608.    many small payments, so the overhead associated with each must be
  609.    small.  It is unacceptable for the user to necessarily interact with
  610.    a separate screen or window to approve each small payment although a
  611.    user who wishes to do so should have that option.
  612.  
  613.    The user should be able to establish some threshold (default perhaps
  614.    around 0.15usd or equivalent) such that actions incurring that charge
  615.    or less are semi-automatic.  That is, no special approval action is
  616.    required, although color coding or the like should be used to
  617.    distinguish toll links from free links, an optional sound could be
  618.    made when any money is sent, or other clues used to give the user a
  619.    feel for what is going on.
  620.  
  621.    To avoid spending an unexpectedly large amount in small pieces,
  622.    possibly a bank graphic or the like should be displayed to show how
  623.    much cash is still available to the browser before the user will have
  624.    to take action.  The act of refilling the bank would be a more
  625.    heavyweight operation requiring user interaction or, to get a default
  626.    amount, at least user approval.
  627.  
  628.  
  629.  
  630. 4.2 Anchor Embedded Costs
  631.  
  632.    A cost can appear in an anchor.  This is a very strong hint that
  633.    payment of the indicated amount should accompany the GET or other
  634.    operation that occurs when following that link.  Note, however, that
  635.  
  636.  
  637. Eastlake                                                       [Page 11]
  638.  
  639.  
  640. INTERNET-DRAFT          Internet Payment Syntax           28 August 1996
  641.  
  642.  
  643.    it is ultimately up to the server being hit to determine if payment
  644.    is adequate or to follow the course it chooses for different levels
  645.    of payment.
  646.  
  647.    The cost is given by a COST parameter in the anchor.  For example:
  648.  
  649.       <A COST="0.10usd 0.16cad paymentsystem=xxxxxx foocash=yyyyyy"
  650.          HREF="http://mercenary.com/goodies">
  651.       Great stuff for one thin dime! </A>
  652.  
  653.    It is recommended that toll links be shown in a different color or
  654.    type style from toll-free links.  Browsers may wish to go further and
  655.    indicate different cost levels, particularly costs above or below any
  656.    "automatic approval" level the user has. When the user has their
  657.    pointer over the link, the browser may wish to display the payment
  658.    particulars in a similar way to that in which it displays the URL.
  659.    (Such a display could be filtered to the currency and/or payment
  660.    system(s) actually available to the user.)
  661.  
  662.    Notice that the cost, if any, indicated by the anchor text ("Great
  663.    stuff..." above) could be different from the actual "COST=" parameter
  664.    which controls the payment sent with the request.  In turn, the
  665.    "COST=" amount could be different from what the server really wants.
  666.    Or the server may provide different data or services for different
  667.    payment amount.  Such variable payment schemes may be better handled
  668.    with a FORM as described below.
  669.  
  670.  
  671.  
  672. 4.3 Page Header Price Tags
  673.  
  674.    The cost for accessing an HTML page and the default cost for
  675.    accessing any anchors or forms within the page can be included in the
  676.    header.  For example:
  677.  
  678.       <HTML>
  679.       <head><title>Mating Habits of the Red Breasted Geek</title>
  680.  
  681.       <meta http-equiv="www-cost" content="0.05usd xxxsys=on93h5M+pll=">
  682.  
  683.       <cost> 0.75usd 0.99cad xxxsys=A8jne8W2/sw== </cost></head>
  684.  
  685.       <body> ... </body></HTML>
  686.  
  687.    An attempt to get such a document from a payment aware server without
  688.    payment of at least 5 cents via the xxxsys payment system should
  689.    fail.  (See Payment Required Error section below.)  A second attempt
  690.    with payment will be required.  This could be done in a manner
  691.    similar to an access restriction failure followed by a second attempt
  692.    with access authorization information.
  693.  
  694.  
  695. Eastlake                                                       [Page 12]
  696.  
  697.  
  698. INTERNET-DRAFT          Internet Payment Syntax           28 August 1996
  699.  
  700.  
  701.    The <cost>...</cost> item in the head indicates that all anchors and
  702.    forms on the page should be considered to have a price of 75 cents US
  703.    or 99 cents Canadian via the xxxsys payment system unless otherwise
  704.    indicated.
  705.  
  706.  
  707.  
  708. 4.4 HTML Form Price Tags
  709.  
  710.    A cost can be associated with a form and with multiple choice items
  711.    within the form.  For example:
  712.  
  713.    <form COST="xxxsys=A8jne8W2/sw== 0.75usd 0.99cad" ACTION=POST>
  714.  
  715.    Miscellaneous text, etc.
  716.  
  717.    <input type="radio" name="extras" value="omit">plain vanilla
  718.    <input type="radio" name="extras" value="include"
  719.         COST="0.25usd 0.40cad">chocolate fudge
  720.  
  721.    <p>Your quality of service: <select name="quality">
  722.    <option value="bronze"> Low<p>
  723.    <option value="silver" cost="0.10usd 0.17cad"> Medium<p>
  724.    <option value="gold" cost="0.20usd 0.34cad">
  725.    High<p> </select>
  726.    </form>
  727.  
  728.    The COST associated with the form is a base price (which may be
  729.    defaulted from a <cost> item in the document header), to which any
  730.    multiple choice item costs are added.  The form level COST may be
  731.    omitted and COSTs can still appear with multiple choice items.  The
  732.    COST associated with a "select" is a default that applies only if no
  733.    item is selected.  When an item is selected, it overrides the
  734.    selection level cost and become the price component added into the
  735.    total form price for that selection.
  736.  
  737.    The normally required payment system string can be omitted from some
  738.    of the form COST parameters, in which case any prices add to the
  739.    amount for all payment systems, or the COST parameters can contain
  740.    payment system name(s) without payment specific information to cause
  741.    price information to add to the amount for the designated payment
  742.    system(s).  But one or more payment systems and their payment system
  743.    specific parameters must be determinable if any payment is to be
  744.    sent.  The payment system specific information associated with the
  745.    last encountered payment system field used in calculating the payment
  746.    for the form is used for that particular payment system.  If no
  747.    payment system field is encountered, then no payment will be sent
  748.    with the request even though "COST=" parameters are present.
  749.  
  750.    As with anchor costs, it is desirable to indicate the cost of
  751.  
  752.  
  753. Eastlake                                                       [Page 13]
  754.  
  755.  
  756. INTERNET-DRAFT          Internet Payment Syntax           28 August 1996
  757.  
  758.  
  759.    multiple choice items by color coding and the cost of activating the
  760.    form by color coding the submit button.  Note that the submit button
  761.    could change from free to toll or the like as choices are made in the
  762.    form.
  763.  
  764.  
  765.  
  766. 4.5 Payments and Receipts Via Miscellaneous Headers
  767.  
  768.    [This section defines payments and receipts using existing (or
  769.    previously existing if they have been dropped) HTTP header fields and
  770.    one new such field.  As an alternative, section 4.6 defines then
  771.    using PEP.]
  772.  
  773.    Payment can accompany an HTTP request by including a payment line in
  774.    the message header.  This consists of the "ChargeTo:" header label
  775.    followed by a payment system string; however, "ChargeTo:" can appear
  776.    with one or more bare payment system names for the purpose of
  777.    indicating that the browser understands those systems without
  778.    conveying any actual payment.  Examples:
  779.  
  780.       ChargeTo:  xxxcash=A8jne8W2/sw==
  781.  
  782.       ChargeTo:  foocash= barsys=
  783.  
  784.    The first example is in the form of a payment via the xxxcash system.
  785.    The second example is an indication by the sender that it understands
  786.    the foocash and barsys payment systems.
  787.  
  788.    The browser should keep track of such actual payments it has sent and
  789.    re-send the identical payment if the request needs to be retried with
  790.    access authorization information or due to a transient error, rather
  791.    than sending additional funds.
  792.  
  793.    The collection of payment or the specifics of the failure of a
  794.    tendered payment are indicated back to the customer by a receipt line
  795.    in the response header.  This consists of the "receipt:" header label
  796.    followed by a payment system string.  For example:
  797.  
  798.       Receipt: xxxcash=b93njexW2/swq4==
  799.  
  800.    There are cases where a larger payment is collected initially and the
  801.    unused portion refunded or where adjustments are required after a
  802.    purchase.  Because of this, ChargeTo and Receipt headers are both
  803.    allowed in both HTTP requests and responses.
  804.  
  805.    If an HTTP request arrives without sufficient payment (or with none
  806.    at all) and payment is required by the server, the server can simply
  807.    provide a web page with limited or no actual information and possibly
  808.    one or more links with COST parameters embedded in them.
  809.  
  810.  
  811. Eastlake                                                       [Page 14]
  812.  
  813.  
  814. INTERNET-DRAFT          Internet Payment Syntax           28 August 1996
  815.  
  816.  
  817.    Alternatively, a "402 payment required" error can be returned, in
  818.    which case there must be a "www-cost:" response header field
  819.    analogous to the "www-authenticate:" header field for a "401
  820.    unauthorized"" response.  The value of the www-cost field is the same
  821.    as for the COST parameter described above.
  822.  
  823.    This is similar to an access restriction error in that the browser
  824.    can just try again with payment included the way it can try again
  825.    with access information. It may be possible to combine these by
  826.    returning a 402 error with the HTML accompanying the error having a
  827.    link with a COST parameter pointing to the originally sought item.
  828.    This would combine automatic charging for browsers that have 402
  829.    error processing implemented with a convenient way for the user to
  830.    re-request with payment for browsers that understand anchor COST
  831.    parameters but do not automatically handle 402 errors.
  832.  
  833.  
  834.  
  835. 4.6 Payments and Receipts Via UPP/PEP Headers
  836.  
  837.    [This section defines payments and receipts using PEP.  As an
  838.    alternative, section 4.5 defines then using existing HTTP header
  839.    fields and one new such field.]
  840.  
  841.    Payment can accompany an HTTP request by including appropriate
  842.    message headers.  The reader is assumed to be familiar with PEP as
  843.    documented in draft-ietf-http-pep-*.txt.
  844.  
  845.    It is also possible to use the protocol-info header with one or more
  846.    bare payment system names for the purpose of indicating that the
  847.    browser understands those systems without conveying any actual
  848.    payment.  Examples:
  849.  
  850.       protocol:  { http://ietf.org/payment xxxcash=A8jne8W2/sw== }
  851.  
  852.       protocol-info:  { http://ietf.org/payment foocash= barsys= }
  853.  
  854.    The first example is in the form of a payment via the xxxcash system.
  855.    The second example is an indication by the sender that it understands
  856.    the foocash and barsys payment systems.
  857.  
  858.    The browser should keep track of such actual payments it has sent and
  859.    re-send the identical payment if the request needs to be retried with
  860.    access authorization information or due to a transient error, rather
  861.    than sending additional funds.
  862.  
  863.    The collection of payment or the specifics of the failure of a
  864.    tendered payment are indicated back to the customer by a receipt line
  865.    in the response header.  This consists of a "Protocol: {
  866.    http://ietf.org/receipt ...}" header where "..." is a payment system
  867.  
  868.  
  869. Eastlake                                                       [Page 15]
  870.  
  871.  
  872. INTERNET-DRAFT          Internet Payment Syntax           28 August 1996
  873.  
  874.  
  875.    string.  For example:
  876.  
  877.       protocol: { http://ietf.org/receipt xxxcash=b93njexW2/swq4== }
  878.  
  879.    There are cases where a larger payment is collected initially and the
  880.    unused portion refunded or where adjustments are required after a
  881.    purchase.  Because of this, payment and receipt protocol and
  882.    protocol-info headers are both allowed in both HTTP requests and
  883.    responses.
  884.  
  885.    The protocol-query header can be used to ask if a particular payment
  886.    system is implemented at the other end.
  887.  
  888.    If an HTTP request arrives without sufficient payment (or with none
  889.    at all) and payment is required by the server, the server can simply
  890.    provide a web page with limited or no actual information and possibly
  891.    one or more links with COST parameters embedded in them.
  892.    Alternatively, a "402 payment required" error can be returned, in
  893.    which case there must be a "protocol: { http://ietf.org/cost xxx }"
  894.    response header field analogous to the "www-authenticate:" header
  895.    field for a "401 unauthorized"" response.  The xxx field inside the
  896.    protocol:cost header is the same as for the COST parameter described
  897.    above.
  898.  
  899.    This is similar to an access restriction error in that the browser
  900.    can just try again with payment included the way it can try again
  901.    with access information. It may be possible to combine these by
  902.    returning a 402 error with the HTML accompanying the error having a
  903.    link with a COST parameter pointing to the originally sought item.
  904.    This would combine automatic charging for browsers that have 402
  905.    error processing implemented with a convenient way for the user to
  906.    re-request with payment for browsers that understand anchor COST
  907.    parameters but do not automatically handle 402 errors.
  908.  
  909.  
  910.  
  911. 4.7 Web Proxies
  912.  
  913.    [This section needs more work and the scoping provision of PEP
  914.    [draft-ietf-http-pep-00.txt] would almost certainly prove helpful.]
  915.  
  916.    When information that has an owner and price is being cached and
  917.    served to multiple different users by a proxy, the payments should be
  918.    requested by the proxy. The safest thing for the proxy to do is to
  919.    send payment to the entity it retrieved the data from using an HTTP
  920.    request with a payment header and the OPTIONS method.
  921.  
  922.    If the proxy understands the payment system well enough and there are
  923.    no firewall problems, the proxy may be able to collect the payment
  924.    and directly transfer funds to the information owner.
  925.  
  926.  
  927. Eastlake                                                       [Page 16]
  928.  
  929.  
  930. INTERNET-DRAFT          Internet Payment Syntax           28 August 1996
  931.  
  932.  
  933.    It is not expected that proxy payment collection will be perfect.
  934.    There will initially be dumb proxies that don't understand payment
  935.    and there may be proxies that deliberately avoid collecting and
  936.    forwarding payment.  But any large scale avoidance of payment will be
  937.    noticed and corrected.  In any case, if the proxy can cache a copy,
  938.    so could the user, who could then give copies to all his friends.
  939.    The ease of automatically making small payments for information
  940.    through this syntax is hoped to produce a net reduction in free
  941.    copying of information for which the owner wished to impose a charge.
  942.  
  943.  
  944.  
  945.  
  946.  
  947.  
  948.  
  949.  
  950.  
  951.  
  952.  
  953.  
  954.  
  955.  
  956.  
  957.  
  958.  
  959.  
  960.  
  961.  
  962.  
  963.  
  964.  
  965.  
  966.  
  967.  
  968.  
  969.  
  970.  
  971.  
  972.  
  973.  
  974.  
  975.  
  976.  
  977.  
  978.  
  979.  
  980.  
  981.  
  982.  
  983.  
  984.  
  985. Eastlake                                                       [Page 17]
  986.  
  987.  
  988. INTERNET-DRAFT          Internet Payment Syntax           28 August 1996
  989.  
  990.  
  991. 5. Use in File Transfer Protocol
  992.  
  993.    An FTP server may wish to charge for a file transfer (either way) or
  994.    for an FTP session.
  995.  
  996.    It may do so by requesting, via the 332 or 532 reply codes, that an
  997.    ACCT command be sent.  332 is used to indicate that a received
  998.    command is being held in abeyance pending receipt of an ACCT while
  999.    532 indicates that a received command has been abandoned due to lack
  1000.    of payment and an ACCT command needs to be sent before attempting the
  1001.    command again.
  1002.  
  1003.    Price tags are indicated in the 332 or 532 text by a string at the
  1004.    beginning of the form
  1005.  
  1006.       <COST="foocash=xxxxx 0.05usd">
  1007.  
  1008.    in the 332 or 532 text, i.e., a literal "<COST=" followed by a string
  1009.    conforming to the definition herein of a price tag, followed by a
  1010.    ">".  The word "cost" is case insensitive.  Arbitrary additional text
  1011.    may be included after the price tag.
  1012.  
  1013.    A payment can be send by simply including a payment string, as
  1014.    defined in section 3, after the ACCT command.
  1015.  
  1016.    A successful receipt is rendered by returning a 233 reply with a
  1017.    receipt payment system string as the beginning of its text.  A
  1018.    payment failure receipt is rendered by returning a 433 or 533 reply
  1019.    depending on whether the failure is transient or permanent.  In
  1020.    either case, the receipt string can be terminated by white space and
  1021.    additional text human readable text placed after the receipt string
  1022.    in the reply.
  1023.  
  1024.    (See RFC 959.)
  1025.  
  1026.    SUMMARY
  1027.  
  1028.       Price Tags - in existing 332 and 532 replies.
  1029.       Payments - in existing ACCT command.
  1030.       Receipts - in new 233, 433, and 533, replies.
  1031.  
  1032.  
  1033.  
  1034.  
  1035.  
  1036.  
  1037.  
  1038.  
  1039.  
  1040.  
  1041.  
  1042.  
  1043. Eastlake                                                       [Page 18]
  1044.  
  1045.  
  1046. INTERNET-DRAFT          Internet Payment Syntax           28 August 1996
  1047.  
  1048.  
  1049. 6. Use in Telnet
  1050.  
  1051.    A host may wish to charge for or during a Telnet session.  Telnet
  1052.    option code <TBD> is used to initially negotiate agreement of the two
  1053.    parties to speak about payment.  As with other Telnet options, either
  1054.    side can sent IAC WILL xxx, in response to which an IAC DO xxx
  1055.    indicates agreement and an IAC DON'T xxx indicate refusal.  Or a
  1056.    party can send IAC DO xxx to which IAC WILL xxx indicates agreement
  1057.    and an IAC WON'T xxx indicates refusal.
  1058.  
  1059.    After agreement to speak about payment has been reached, Telnet
  1060.    subnegotiation strings can be exchanged, bracketed with IAC SB and
  1061.    IAC SE.  The initial subnegotiation byte indicates the type of
  1062.    payment message following in the rest of the subnegotiation byte
  1063.    string as follows:
  1064.  
  1065.         Byte  Meaning
  1066.         ----  -------
  1067.  
  1068.          00    (reserved)
  1069.          01    Price-tag
  1070.          02    Payment
  1071.          03    Receipt
  1072.          04-FE (available for IANA allocation)
  1073.          FF    (reserved)
  1074.  
  1075.    (See RFCs 854, 855.)
  1076.  
  1077.  
  1078.  
  1079.  
  1080.  
  1081.  
  1082.  
  1083.  
  1084.  
  1085.  
  1086.  
  1087.  
  1088.  
  1089.  
  1090.  
  1091.  
  1092.  
  1093.  
  1094.  
  1095.  
  1096.  
  1097.  
  1098.  
  1099.  
  1100.  
  1101. Eastlake                                                       [Page 19]
  1102.  
  1103.  
  1104. INTERNET-DRAFT          Internet Payment Syntax           28 August 1996
  1105.  
  1106.  
  1107. 7. Use in Simple Message Transfer Protocol
  1108.  
  1109.    A host or user may wish to charge for the receipt of mail. This is
  1110.    accomplished via the new 332 reply code.  This is an interim success
  1111.    code that indicates that further information is required to complete
  1112.    a pending command.  Note that use of 332 after the SMTP RCPT command
  1113.    would be a simple way to implement any particular user requiring
  1114.    payment for mail to be delivered to them and its use after the MAIL
  1115.    command would be a simple way to implement a system requiring payment
  1116.    for mail from all or certain sources (although this information is
  1117.    easy to forge).
  1118.  
  1119.    Payment is indicated by the new ACCT command.  This is followed by a
  1120.    payment string as defined in section 3 above.
  1121.  
  1122.    Charging for mail may cut off a host or user from the normal flow of
  1123.    mail.  It seems unlikely at present that most individuals or mailing
  1124.    lists would be willing to pay to send mail to such an addressee.
  1125.    However, it is easy to envision cases where a service for which it
  1126.    would be reasonable to charge is requested via email.  Or there may
  1127.    be individuals who do want to substantially cut themselves off from
  1128.    most mail or mail from certain senders.  And perhaps mail will evolve
  1129.    so that a small charge for accepting mail is considered normal.
  1130.  
  1131.    SMTP servers that speak ESMTP (see RFC 1651) may optionally give the
  1132.    new EHLO keyword ACCT.  However, ESMTP is designed for servers to
  1133.    list features to be optionally invoked by clients.  It is not really
  1134.    appropriate as a means for servers to indicate features that they
  1135.    will *require* of clients.
  1136.  
  1137.    In any case, it is believed that no negotiation is necessary for an
  1138.    SMTP server to use the new 332 reply code.  RFC 821 is clear that the
  1139.    receipt of any 3xx reply code after a MAIL, RCPT, etc. command is to
  1140.    be considered an error.  This is the appropriate understanding for an
  1141.    SMTP client that does not understand payment when an SMTP server
  1142.    requires payment.
  1143.  
  1144.    The rules and state diagrams in RFC-821 are hereby amended and the
  1145.    state diagram for MAIL, RCPT, SEND, SOML, and SAML is modified to the
  1146.    following:
  1147.  
  1148.  
  1149.  
  1150.  
  1151.  
  1152.  
  1153.  
  1154.  
  1155.  
  1156.  
  1157.  
  1158.  
  1159. Eastlake                                                       [Page 20]
  1160.  
  1161.  
  1162. INTERNET-DRAFT          Internet Payment Syntax           28 August 1996
  1163.  
  1164.  
  1165.                                     1     +---+  1,3
  1166.         FLOW FOR             +----------->| E |<-----+
  1167.         PAYMENT AWARE        |            +---+      |
  1168.         SMTP SERVER          |                       |
  1169.                              |      2     +---+   2  |
  1170.                              +----------->| S |<-----+
  1171.                              |            +---+      |
  1172.                              |                       |
  1173.                              |                       |
  1174.             +---+   cmd    +---+  3   +---+  ACCT  +---+
  1175.             | B |--------->| W |----->|   |------->| W |
  1176.             +---+          +---+      +---+        +---+
  1177.                              |                       |
  1178.                              |     4,5    +---+  4,5 |
  1179.                              +----------->| F |<-----+
  1180.                                           +---+
  1181.  
  1182.    A successful receipt is rendered by returning the new 233 reply with
  1183.    a receipt payment system string as the beginning of its text.  A
  1184.    payment failure receipt is rendered by returning the new 433 or 533
  1185.    replies depending on whether the failure is transient or permanent.
  1186.    In either case, the receipt string can be terminated by white space
  1187.    and additional human readable text placed after the receipt string in
  1188.    the reply.
  1189.  
  1190.    The middle digit 3 in SMTP reply codes is reserved for accounting,
  1191.    corresponding to its existing use in FTP.
  1192.  
  1193.    (See RFCs 821, 1651.)
  1194.  
  1195.    SUMMARY
  1196.  
  1197.       Price Tags - in new 332 reply.
  1198.       Payments - in new ACCT command.
  1199.       Receipts - in new 233, 433, and 533 replies.
  1200.  
  1201.  
  1202.  
  1203.  
  1204.  
  1205.  
  1206.  
  1207.  
  1208.  
  1209.  
  1210.  
  1211.  
  1212.  
  1213.  
  1214.  
  1215.  
  1216.  
  1217. Eastlake                                                       [Page 21]
  1218.  
  1219.  
  1220. INTERNET-DRAFT          Internet Payment Syntax           28 August 1996
  1221.  
  1222.  
  1223. 8. The Domain Name System
  1224.  
  1225.    The Domain Name System (DNS) is currently used for such fundamental
  1226.    purposes as translating domain names (such as ftp.cybercash.com) into
  1227.    IP addresses or specifying SMTP mail backup and routing servers.  For
  1228.    such uses DNS data is public and charges SHOULD NOT be imposed for
  1229.    DNS queries.
  1230.  
  1231.    However, new uses of DNS, including dynamic update (draft-ietf-
  1232.    dnsind-dynDNS-*.txt), and particularly burdensome operations such as
  1233.    zone transfers of a large zone to other than a secondary, may warrant
  1234.    charges.
  1235.  
  1236.    Payment information is all communicated via the PAY RR.  The type for
  1237.    the PAY RR is <TBD> and its structure is as follows:
  1238.  
  1239.                                           1  1  1  1  1  1
  1240.             0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
  1241.           +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1242.           |        subtype        |                       /
  1243.           +--+--+--+--+--+--+--+--+                       /
  1244.           /                             data              /
  1245.           /                                               /
  1246.           +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  1247.  
  1248.    The subtype indicates what the data is as follows:
  1249.         0 - reserved.
  1250.  
  1251.         1 - price tag.
  1252.  
  1253.         2 - payment string.
  1254.  
  1255.         3 - receipt string.
  1256.  
  1257.         4-254 - available for IANA allocation.
  1258.  
  1259.         255 - reserved.
  1260.  
  1261.    PAY RRs occur in a zone and master file only under the zone name as a
  1262.    price tag indicating the fee for a zone transfer to anyone other than
  1263.    a zone secondary server.
  1264.  
  1265.    Payment can be tendered with any request by including an appropriate
  1266.    PAY RR in the additional information section.  WARNING: do not do
  1267.    this unless you are sure the server you are communicating with
  1268.    understands payments.  Most current servers will *ignore* any request
  1269.    with a non-empty additional information section.  As with other
  1270.    applications level payment contexts, a "price tag" consisting of just
  1271.    payment systems names is a way of advertising that the sending
  1272.    understands payment and accepts those systems.
  1273.  
  1274.  
  1275. Eastlake                                                       [Page 22]
  1276.  
  1277.  
  1278. INTERNET-DRAFT          Internet Payment Syntax           28 August 1996
  1279.  
  1280.  
  1281.    A receipt or price tag can be rendered by including an appropriate
  1282.    PAY RR in the additional information section of a reply.  Error code
  1283.    <tbd> indicates payment is required and MUST be accompanied by a
  1284.    price tag PAY RR.
  1285.  
  1286.    (See RFCs 1034, 1035, draft-ietf-dnsind-dynDNS-*.txt)
  1287.  
  1288.  
  1289.  
  1290.  
  1291.  
  1292.  
  1293.  
  1294.  
  1295.  
  1296.  
  1297.  
  1298.  
  1299.  
  1300.  
  1301.  
  1302.  
  1303.  
  1304.  
  1305.  
  1306.  
  1307.  
  1308.  
  1309.  
  1310.  
  1311.  
  1312.  
  1313.  
  1314.  
  1315.  
  1316.  
  1317.  
  1318.  
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324.  
  1325.  
  1326.  
  1327.  
  1328.  
  1329.  
  1330.  
  1331.  
  1332.  
  1333. Eastlake                                                       [Page 23]
  1334.  
  1335.  
  1336. INTERNET-DRAFT          Internet Payment Syntax           28 August 1996
  1337.  
  1338.  
  1339. 9. Protocols to Which Payment is not Applicable
  1340.  
  1341.    Some protocols are inappropriate for the addition of payment
  1342.    mechanisms.  Either they are sufficiently basic to the operation of
  1343.    the network or provide sufficiently light-weight access to public
  1344.    information or are so simple there is no obvious way to add
  1345.    extensions.  Some of these protocols, listed below, SHOULD NOT make
  1346.    use of this syntax or impose prices or payments.  This does not imply
  1347.    that there are not many more protocols for which it would be
  1348.    inappropriate to define payment extensions.
  1349.  
  1350.  
  1351.  
  1352. 9.1 The ECHO, DISCARD, and CHARGEN Services
  1353.  
  1354.    These are light weight services intended for network maintenance.
  1355.    ECHO echoes the packet sent to it (see RFC 862), DISCARD throws away
  1356.    packets sent to it but maintains the connection (see RFC 863), and
  1357.    CHARGEN generates an infinite number of random characters and sends
  1358.    them until the calling party disconnects (see RFC 864).
  1359.  
  1360.    Hosts are free to decide which, if any, of these three services they
  1361.    wish to provide (although ECHO is Recommended), but SHOULD NOT impose
  1362.    any charges for them.  In any case, there really aren't any protocol
  1363.    hooks in these services on which to attach payment.
  1364.  
  1365.  
  1366.  
  1367. 9.2 The Finger Service
  1368.  
  1369.    Finger is an optional information service intended to permit remote
  1370.    users to learn a limited amount of information about a user or users
  1371.    on an Internet host.  Information such as the time they last logged
  1372.    in or contents of their ".plan" file.  There are serious security
  1373.    considerations involved in allowing finger access to a host and hosts
  1374.    are free to decide how much such access, if any, they will provide.
  1375.  
  1376.    In some cases, finger servers have been set up to act as information
  1377.    retrieval or reporting mechanisms, but this was not the designed
  1378.    purpose of finger and, in most cases, there are better mechanisms to
  1379.    provide such access.
  1380.  
  1381.    If finger access is provided because a site wishes to be open,
  1382.    charges SHOULD NOT be imposed.  In any case, the information returned
  1383.    by finger is free form text making it difficult to flag a payment
  1384.    requirement.
  1385.  
  1386.    (See RFC 1288.)
  1387.  
  1388.  
  1389.  
  1390.  
  1391. Eastlake                                                       [Page 24]
  1392.  
  1393.  
  1394. INTERNET-DRAFT          Internet Payment Syntax           28 August 1996
  1395.  
  1396.  
  1397. 9.3 The Auth Service
  1398.  
  1399.    This service, when implemented, allows a remote host to determine the
  1400.    user associated with a TCP connection.  It is intended as a security
  1401.    and auditing tool although it is weak in the face of anyone with
  1402.    direct access to the TCP or IP level who is attempting to mislead it.
  1403.    Implementation is optional.
  1404.  
  1405.    Those who chose to provide this service are doing so to cooperate in
  1406.    such security or auditing at some sacrifice in the privacy of their
  1407.    users.  Charging for this service makes little sense in this context.
  1408.  
  1409.    (See RFC 931.)
  1410.  
  1411.  
  1412.  
  1413.  
  1414.  
  1415.  
  1416.  
  1417.  
  1418.  
  1419.  
  1420.  
  1421.  
  1422.  
  1423.  
  1424.  
  1425.  
  1426.  
  1427.  
  1428.  
  1429.  
  1430.  
  1431.  
  1432.  
  1433.  
  1434.  
  1435.  
  1436.  
  1437.  
  1438.  
  1439.  
  1440.  
  1441.  
  1442.  
  1443.  
  1444.  
  1445.  
  1446.  
  1447.  
  1448.  
  1449. Eastlake                                                       [Page 25]
  1450.  
  1451.  
  1452. INTERNET-DRAFT          Internet Payment Syntax           28 August 1996
  1453.  
  1454.  
  1455. 10. Security Considerations
  1456.  
  1457.    Getting authorization to construct payments may, depending on the
  1458.    payment system, require the user to enter a passphrase. For example,
  1459.    a passphrase might be required at the beginning of their session to
  1460.    unlock a private key. Thus the user could be vulnerable to Trojan
  1461.    horse web browsers, ftp clients,  telnet clients, etc., as they are
  1462.    to many other types of Trojan horse applications.  Use of "secure"
  1463.    application distribution with signed executables, checksums, virus
  1464.    detection, etc., should be encouraged.
  1465.  
  1466.    An adversary may be able to observe or modify traffic to and from an
  1467.    application.  Payment systems should be designed so that such
  1468.    observation results in minimal loss of privacy and such observation
  1469.    or modification can not result in hijacking a payment.  Note that an
  1470.    adversary that has complete control over application communications
  1471.    can pretend to be a merchant just as it could by controlling an end
  1472.    node.  However, such impersonation from an end node may be easier to
  1473.    trace and control than impersonation at an unknown point along the
  1474.    communications path.  Message (MOSS) and connection (IPSEC) security
  1475.    protocols are available to help protect the communications path.
  1476.  
  1477.    On receipt of an advance payment, a server is capable of charging the
  1478.    user regardless of whether the server actually provides the data or
  1479.    services being charged for. A server could even send back an error
  1480.    message but keep and use the payment.  Some means of automatically
  1481.    logging payments that result in a software or human detectable
  1482.    failure to deliver should be implemented so these can be examined for
  1483.    patterns or cross checked with payment system statements of account.
  1484.  
  1485.    A merchant can withhold and fail to send back to the user a receipt.
  1486.    For some purposes, applications should assume any payment sent will
  1487.    be collected regardless of whether they get a receipt back.
  1488.  
  1489.    Servers should accept the identical data request from the same net
  1490.    entity for a reasonable amount of time even if the payment being
  1491.    presented is a duplicate. Transient errors may have prevented use of
  1492.    the data previously downloaded for that request.  With payment
  1493.    systems, a monetary cost can sometimes be associated with downloaded
  1494.    data.  Caching algorithms may wish to take this into account and
  1495.    cache costly data in preference to free data.
  1496.  
  1497.    A bad client application could generate payments exceeding the funds
  1498.    or authorization available to it.  Servers should verify payments
  1499.    promptly and be cautious of extending services or goods unless they
  1500.    can confirm that payment is good.  Applications and payment systems
  1501.    should be designed to limit the amount of funds a rogue application
  1502.    could transfer.
  1503.  
  1504.  
  1505.  
  1506.  
  1507. Eastlake                                                       [Page 26]
  1508.  
  1509.  
  1510. INTERNET-DRAFT          Internet Payment Syntax           28 August 1996
  1511.  
  1512.  
  1513. References
  1514.  
  1515.    [ISO 4217] - Codes for the representation of currencies and funds
  1516.  
  1517.    [RFC 821] - J. Postel, "Simple Mail Transfer Protocol", 08/01/1982.
  1518.  
  1519.    [RFC 854] - J. Postel, J. Reynolds, "Telnet option specifications",
  1520.    05/01/1983.
  1521.  
  1522.    [RFC 855] - J. Postel, J. Reynolds, "Telnet Protocol specification",
  1523.    05/01/1983.
  1524.  
  1525.    [RFC 959] - J. Postel, J. Reynolds, "File Transfer Protocol",
  1526.    10/01/1985.
  1527.  
  1528.  
  1529.  
  1530.  
  1531. Author's Address
  1532.  
  1533.    Donald E. Eastlake, 3rd
  1534.    CyberCash, Inc.
  1535.    318 Acton Street
  1536.    Carlisle, MA 01741 USA
  1537.  
  1538.    Telephone:   +1 508 287 4877
  1539.                 +1 508 371 7148 (fax)
  1540.                 +1 703-620-4200 (main office, Reston, Virginia, USA)
  1541.    email:       dee@cybercash.com
  1542.  
  1543.  
  1544.  
  1545. Expiration and File Name
  1546.  
  1547.    This draft expires 27 February 1997.
  1548.  
  1549.    Its file name is draft-eastlake-internet-payment-02.txt.
  1550.  
  1551.  
  1552.  
  1553.  
  1554.  
  1555.  
  1556.  
  1557.  
  1558.  
  1559.  
  1560.  
  1561.  
  1562.  
  1563.  
  1564.  
  1565. Eastlake                                                       [Page 27]
  1566.  
  1567.  
  1568. INTERNET-DRAFT          Internet Payment Syntax           28 August 1996
  1569.  
  1570.  
  1571. Appendix A: Simplified BNF
  1572.  
  1573.    This is a BNF-like description of the Payment Protocol syntax syntax,
  1574.    using the conventions of RFC822, except that "|" is used to designate
  1575.    alternatives, and brackets [] are used around optional or repeated
  1576.    elements. Briefly, literals are quoted with "", optional elements are
  1577.    enclosed in [brackets], and elements may be preceded with <n>* to
  1578.    designate n or more repetitions of the following element or <n>*<m>
  1579.    to indicate n or more but not more than m repetitions; n defaults to
  1580.    0.
  1581.  
  1582.    ;prices
  1583.  
  1584.    isocurrency       = alpha alpha alpha
  1585.    ietfcurrency      = 4*8alpha
  1586.    privatecurrency   = 2*127[ dns-label "." ]
  1587.    currency          = isocurrency | ietfcurrency | privatecurrency
  1588.    digits            = 1*digit
  1589.    decimal           = "." | ","
  1590.    number            = digits | digits decimal *digit
  1591.    exponent          = "+" digits | "-" digits
  1592.  
  1593.    cost              = number currency | number exponent currency
  1594.  
  1595.  
  1596.    ;payment system strings
  1597.  
  1598.    ianapaysys     = 4*12alpha
  1599.    privatepaysys  = url
  1600.    paysysname     = ianapaysys | url
  1601.  
  1602.    paysys         = paysysname "=" *uchar
  1603.  
  1604.  
  1605.    ;price tag
  1606.  
  1607.    pricetag = *sp paysys *[ 1*sp cost | 1*sp paysys ] *sp |
  1608.               *sp *[ cost 1*sp | paysys 1*sp ] paysys *sp
  1609.  
  1610.  
  1611.    ;miscellaneous definitions
  1612.  
  1613.    lowalpha       = "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" |
  1614.                     "i" | "j" | "k" | "l" | "m" | "n" | "o" | "p" |
  1615.                     "q" | "r" | "s" | "t" | "u" | "v" | "w" | "x" |
  1616.                     "y" | "z"
  1617.    hialpha        = "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" |
  1618.                     "I" | "J" | "K" | "L" | "M" | "N" | "O" | "P" |
  1619.                     "Q" | "R" | "S" | "T" | "U" | "V" | "W" | "X" |
  1620.                     "Y" | "Z"
  1621.  
  1622.  
  1623. Eastlake                                                       [Page 28]
  1624.  
  1625.  
  1626. INTERNET-DRAFT          Internet Payment Syntax           28 August 1996
  1627.  
  1628.  
  1629.    alpha          = lowalpha | hialpha
  1630.    digit          = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" |
  1631.                     "8" | "9"
  1632.    other          = "$" | "-" | "_" | "." | "+" | "/" | "=" | "@"
  1633.    hex            = digit | "A" | "B" | "C" | "D" | "E" | "F" |
  1634.                     "a" | "b" | "c" | "d" | "e" | "f"
  1635.    escape         = "%" hex hex
  1636.    sp             = " "
  1637.    uchar          = alpha | digit | other | extra | escape
  1638.  
  1639.  
  1640.  
  1641.  
  1642.  
  1643.  
  1644.  
  1645.  
  1646.  
  1647.  
  1648.  
  1649.  
  1650.  
  1651.  
  1652.  
  1653.  
  1654.  
  1655.  
  1656.  
  1657.  
  1658.  
  1659.  
  1660.  
  1661.  
  1662.  
  1663.  
  1664.  
  1665.  
  1666.  
  1667.  
  1668.  
  1669.  
  1670.  
  1671.  
  1672.  
  1673.  
  1674.  
  1675.  
  1676.  
  1677.  
  1678.  
  1679.  
  1680.  
  1681. Eastlake                                                       [Page 29]
  1682.