2

MasterCard クレジット カードを使用していますが、CDA 認証を実行するために必要な正確な手順について質問があります。

手順を正しく理解していれば、最初にGENERATE ACコマンドを送信し、その後にEXTERNAL AUTHENTICATE?を送信する必要があります。

私のGENERATE ACコマンドは次のようになります。

80 AE 40 00 42 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 91 01 01 01 01 00 01 02 03 04 12 01 02 01 01 02 03 04 05 06 07 08 00 01 02 12 04 04 04 04 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

そして、カードから得られる応答 (RESPONSE) は次のようになります。

77 29

9F 27 01 80

9F 36 02 00 5C

9F 26 08 AE 7D 66 E4 50 15 D5 A4 (アプリケーション暗号文)

9F 10 12 02 10 A0 00 00 2A 08 00 01 02 00 00 00 00 00 00 00 FF

90 00

次のステップでは、次のコマンドで「EXTERNAL AUTHENTICATE」をトリガーしています。

00 82 00 00 AE 7D 66 E4 50 15 D5 A4 02 10 A0 00 00 2A 08 00

その後の応答は 2 バイト配列[109, 0]、つまり6D. これは、私が何か間違ったことをしているということですか?

アドバイスをいただければ幸いです。

4

5 に答える 5

2

最初の Generate ACコマンドで、バイト P1 = "40" を送信して、TC暗号でトランザクションを完了しようとしました。しかし、カードはARQCクリプトグラムを使用してオンラインにすることを強制することにしました。カード応答タグ 0x9F27 は、タグ 0x9F26 の暗号タイプと ARQC 暗号文の値を指します。

- TLVs:  # EMV, Tag + Length + Value (TLV) series
 - x77:  # EMV, Template, Response Message Format 2
    tag: "77"
    len: "29" #   // 41
  - val:  # Template, Response Message Format 2.
   - x9F27:  # EMV, Cryptogram Information Data (CID)
      tag: "9F27"
      len: "01" #   // 1
      val: "80" # Cryptogram Information Data (CID).
      # 10______ - bits 8-7, ARQC
      # _____000 - bits 3-1 (Reason/Advice/Referral Code), No information given
   - x9F36:  # EMV, Application Transaction Counter (ATC)
      tag: "9F36"
      len: "02" #   // 2
      val: "005C" # Application Transaction Counter (ATC).  // 92
   - x9F26:  # EMV, Cryptogram, Application
      tag: "9F26"
      len: "08" #   // 8
      val: "AE7D66E45015D5A4" # Cryptogram, Application.
   - x9F10:  # EMV, Issuer Application Data (IAD)
      tag: "9F10"
      len: "12" #   // 18
      val: "0210A000002A0800010200000000000000FF" # Issuer Application Data (IAD).

正しい発行者認証データ(タグ 0x91)を使用せずに外部認証を実行しようとしています。実際には、端末は認証ホストからオンラインにする必要があります。テスト環境では、このタグの値を自分で計算できます (アルゴリズムといくつかのカード データ、ARPC計算に必要なキーを知っている場合)。また、前に気づいたように、 Lcバイトと長さを APDU コマンドに入れるのを忘れていました。

オンラインの ARQC 暗号文の検証が不可能な場合 (オフライン対応の端末、リンクの破損など) が考えられます。この場合、端末は2 番目の Generate ACを実行して、TC 暗号文を使用してトランザクションの完了を再度要求し、オフライン トランザクションの完了に固有の認証応答コード(タグ 0x8A) を使用する必要があります。

また、EMV ターミナル カーネルとアプリケーションでサポートできる4 つのCDA モードがあることにも注意してください。

EMVCo サイトで表されている EMV 仕様で定義されているトランザクション フローに従ってください。

于 2016-03-13T14:53:17.110 に答える
1

最初に TC を生成するようにカードに要求しています。カードはリスク管理を行い、ARQC でお客様を返します。ARQC は発行者によって検証される必要があるため、必要なすべてのデータを含む ARQC を発行者に送信します。端末がデータをホストに送信できる場合 { イシュアは ARQC を検証し、ARPC を生成します - タグ 91 (ARC は生成に使用されます - タグ 8A)。ARPC は端末に送り返されます。Terminal is to do now External Authenticate( 91[len][data]81[len][date] ) これにより、9000 または 6300 のいずれかが返されます 9000 の場合は、カードに Second Gen AC で TC を生成するように依頼します
} その他、端末がオンラインにならず、TAC および IAC デフォルトでオフラインが許可されている場合 { 第 2 世代 AC でカードに TC を生成するように要求する } 端末がオンラインにならず、TAC および IAC デフォルトがオフラインでない場合allow offline, { 第 2 世代 AC で AAC を生成するようにカードに依頼します } トランザクションは終了します。

これが明確になることを願っています

于 2016-03-25T15:20:01.060 に答える
0

EMV 規格は、パート 3 でこれをカバーしています: http://emvco.com/specifications.aspx?id=223

ICC が ARQC で応答すると、端末はオンラインになり、認証要求メッセージを発行者に送信しようとします。認証要求メッセージには、オンライン カード認証用の ARQC が含まれています。

そのため、お持ちのカードが「オンライン」のみの取引用に設定されているか、テスト取引額がカードに設定された下限を超えている可能性があります。

カードから返された CVM リスト (タグ 8E は 2 1 レコードにあると思います) を確認してください。 http://www.openscdp.org/scripts/tutorial/emv/cardholderverification.html

これにより、フロア制限と、カードが使用する CVM モードがわかります。

また、いくつかの異なるテスト カードを試してください。コードをテストするときに、複数の異なるカードを試すと便利です。

于 2016-03-19T04:17:24.773 に答える