web-dev-qa-db-ja.com

チップベースのクレジットカード(スマートカード)の背後にある暗号?

なぜチップは磁気ストライプよりも安全ですか?

上記の質問への回答は、「秘密番号」がチップに埋め込まれ、公開鍵暗号化の使用によって保護されているため、チップベースのカードは複製できないことを説明しています。チップは、実際の秘密情報を明かさずに自身を認証するために、いくつかの暗号化操作も実行します。

安全な金融取引を可能にするこれらの暗号操作は何なのかと思っていました。私はsec.SEを検索し、同様の Question に出くわしましたが、回答はプロトコルの動作を説明していません。彼らは可能な攻撃にもっと焦点を合わせ、「いくつかの暗号数学」以上のものを言っていません。

私は自分自身を明確にしたと思います。

追伸暗号化プロトコルの仕組みとそれがどのようにセキュリティを実現するかについて知りたいのですが、暗号化の基本的な概念を知っています。

10
Shurmajee

正確な暗号化は銀行によって異なります。通信規格( ISO 7816 )は柔軟性があり、特定の暗号アルゴリズムを義務付けていません。実際には、次の2つのモデルがあります。

  1. カードは対称暗号化のみを行います(対称暗号化、 [〜#〜] mac [〜#〜] )。カードには、カード発行者によって署名された静的な識別子(大まかに言えば、カード番号と同様の情報が含まれています)があります(その署名のコピーはカードによって保存され、カードの署名者は決済端末に送信します)。カードチップには、銀行にも知られている秘密の値が含まれています。このシークレットは、トランザクションの詳細で計算されたMACのキーとして使用されます。

  2. カードは デジタル署名 を計算できます。他のエンティティには知られていない秘密鍵が含まれています(特に、発行銀行も秘密鍵を知りません)。対応する公開鍵は銀行によって認定されます。つまり、銀行はその公開鍵とカードIDを含むパッケージに署名しました。その署名はカードに保存され、決済端末に送信されます。

どちらの場合も、PINコードがチップに送信され、正当な所有者が存在することを納得させるため、チップはトランザクションの詳細をMAC /署名する必要があります。2つのモデルの主な違い次のとおりです。

  • 2番目のモデルでは、決済端末は、カードIDと公開鍵で銀行の署名を検証し、次にカードで計算した署名自体を検証することで、オフラインで本物のカードと通信することを確認できます。公開鍵と既知のトランザクションの詳細。最初のモデルでは、決済端末は本物のカードと通信することを確認できません。カードIDに対する銀行署名により、端末はその特定のIDを持つ有効なカードが存在することを確認できますが、実際に端末に挿入されたカードは、予期されるMACではなくランダムなジャンクを吐き出すクローンである可能性があります。

  • 最初のモデルでは、銀行がカードの秘密鍵のコピーを持っているので、偽のトランザクションを計算することにより、理論的にはカードの所有者をフレーミングできます。 2番目のモデルでは、銀行はカードの秘密鍵のコピーを所有していないため、取引は必ず本物であると主張できます。銀行とその顧客との間の訴訟の場合、これは法的見地から問題となる場合があります。これは絶対的なものではありません-ここでは、数学が要素の1つである、弁護士が出没する戦場に入りますが、2番目のモデルは、支払不履行に対する独自の保険システムを通じて銀行のコストを削減する可能性があります。

  • 非対称暗号化を実行できるカードは、対称暗号化のみを実行できるカードよりも高価です。価格差が大幅に縮小されました。 1桁は0.1 $対2 $(建物の価格)です。ただし、プロトコルの変更はカードの有効期限が切れて支払い端末が更新された後にのみ浸透できるため、カード市場には大きなレイテンシがあります(後者は2つのうち最も遅いものです)。

10年前、フランスのすべての支払いカード(「カルトブルー」)は最初のモデルに従いました。これは、通常はオフラインの決済端末が、有効なカードIDのコピーを含むが、MACの代わりにジャンクしか生成しないカードクローンでだまされる可能性があることを意味します。そのため、実際には、端末はオフラインモードを少量(たとえば、60ドル未満)のみ許可し、それでもオンラインモードが必要になります(端末は、モデムまたはイーサネットプラグを含む充電ベースに収納するように要求します)。ランダムに。後年、WiFiと3Gにより、端末はより頻繁に、スムーズにインターネットに接続できるようになりました(レストランのウェイターは、操作の継続中、お客様のテーブルに留まることができます)。

また、2000年頃に、銀行からの署名(カードIDを介した)で320ビットのRSAが使用されているという別の問題がありました。 320ビット係数を因数分解することは計算上簡単です。 Serge Humpich と呼ばれる独学のエンジニアは、係数を因数分解し、偽のカードを作成し(つまり、まったくクローンではないが、オフラインの決済端末では受け入れられる)、自分は天才だと考えていることに気付きました。その後、フランスのバンキングスマートカード標準を管理するグループに「専門知識を売り込む」ことを試みました(実際には、弁護士を通じて連絡を取ったことがあり、顔の特徴を説明できないように盲目の弁護士を選びました、法的ハイジンクが続く必要があります)。そのグループはそれが恐喝だと思い、警察を呼んだ。ハンピッチ氏は、地下鉄のチケット2枚と偽造カードのデモで逮捕された(何十人もの罪のない傍観者が突然、身なりのきいた10名の警察官であることが判明した)。全体の話は失敗の融合でした:2000年の320ビットのRSA係数は確かに深刻な無能の印でした(それが選択された場合でも、1980年代後半には、既知の学術的な暗号解読の結果に関してはすでに小さすぎました) );そして、ハンピッチの行動の途方もなく奇妙な詳細は、彼が彼の「発見」の目新しさにかなりひどく騙されたことを示しました。

18
Tom Leek

デジタル署名を使用します。

カードに保存されている暗証番号は秘密鍵です。トランザクションを実行するために、カードリーダーはトランザクションの概要(日付、時刻、金額、マーチャントIDなど)を生成します。リーダーはこれをカードに送信します。カードはその秘密鍵を使用してトランザクション詳細のデジタル署名を生成し、これをリーダーに送り返します。読者はこの署名を使用して、カードが存在していたことを証明できます。ただし、秘密鍵は決して​​公開されないため、リーダーは他のデジタル署名を生成できません。

正確なプロトコルは非常に複雑で、さまざまなバリエーションがあります(オンライン/オフライン操作など)。これはISO/IEC 7816として標準化されており、異なるメーカーのカードとリーダーが相互に連携できるようになっています。低レベルの詳細に興味がある場合は、この Wikipediaの記事 から始めるのがよいでしょう。

7
paj28