iKP – A Family of Secure Electronic Payment Protocols

 

Quantities for all iKP

TID      Transaction ID

desc     Goods description, delivery address, credit card name, bank id number, currency

CAN    customer account number – payment key, credit card number

CID     customer psuedo-ID, CID = hash(RC, CAN)

Y/N     yes or no, or authorization code

PIN      customer to enhance security

V         random number generated in 2KP, 3KP for proof that merchant accepted payment

[x]        x is optional

EA()     Public Encryption for A

SA()      Private signing for A

SKA       Signing key for A

PKA       Public Encryption Key for A

 

1KP

 

Composite fields

common           price, IDM, TIDM, date, NM, CID, hash(desc, saltC)

clear                 IDM, TIDM, date, NM, hash(common)

SLIP                price, hash(common), CAN, RC, [PIN]

 

Starting info

C         desc, CAN, PKCA, [PIN]

M         desc, PKCA, CERTA

A         SKA, CERTA

 

Protocol

Initiate:                         C -> M: saltC, CID

Invoice:                        M -> C: IDM, TIDM, date, NM, hash(common)

Payment:                      C -> M: EA(SLIP)

 Auth-Request:             M -> A: clear, hash(desc, saltC), EA(SLIP)

Auth-Response:            A -> M: Y/N, SA(Y/N, hash(common))

Confirm:                       M -> A: Y/N, SA(Y/N, hash(common))

 

2KP

 

Composite fields

common           price, IDM, TIDM, date, NM, CID, hash(desc, saltC), hash(V)

clear                 IDM, TIDM, date, NM, hash(V), hash(common)

SLIP                price, hash(common), CAN, RC

SigM                 SM(hash(common), hash(v))

 

Starting info

C         desc, CAN, PKCA

M         desc, PKCA, CERTA, SKM, CERTM

A         PKA, SKA, CERTA

 

Protocol

Initiate:                         C -> M: saltC, CID

Invoice:                        M -> C: IDM, TIDM, date, NM, hash(V), hash(common), SigM, CERTM

Payment:                      C -> M: EA(SLIP)

 Auth-Request:             M -> A: clear, hash(desc, saltC), EA(SLIP), SigM, CERTM

Auth-Response:            A -> M: Y/N, SA(Y/N, hash(common))

Confirm:                       M -> A: Y/N, V, SA(Y/N, hash(common))

 

3KP

 

Composite fields

Same as 2KP plus

SigC                 SC(EA(SLIP), hash(common))

 

Starting info

C         desc, CAN, PKCA, SKC, CERTC

M & A same as 2KP

 

Protocol

Initiate:                         C -> M: saltC, CID, CERTC

Invoice:                        M -> C: IDM, TIDM, date, NM, hash(V), hash(common), SigM

Payment:                      C -> M: EA(SLIP), SC(EA(SLIP), hash(common))

 Auth-Request:             M -> A: clear, hash(desc, saltC), EA(SLIP), SigM, SigC

Auth-Response:            A -> M: Y/N, SA(Y/N, hash(common))

Confirm:                       M -> A: Y/N, V, SA(Y/N, hash(common))

References

Conference Paper iKP - A Family of Secure Electronic Payment Protocols by Mihir Bellare, Juan A. Garay, Ralf Hauser, Amire Herzberg, Hugo Krawczyk, Michael Steiner, Gene Tsudik, Michael Waidner Proceedings First USENIX Workshop on Electronic Commerce pp. 89-106, New York, NY, July 1995