M1 カード(水カード、食事カード、飲料カード、入退室カードなど)の破解と複製についての考察 —— 理論知識編#
声明:カードの破解は科学研究のためのみであり、データ暗号化のアップグレードの必要性を探求します。
この記事は技術研究、学習交流のためのものであり、違法な目的には使用しないでください。そうしないと、結果は自己責任となります!!!
前言
最近、マイコンやハードウェアに関する知識(専門外、純粋な個人的趣味)を研究していました。偶然、ネットユーザーが学校の水カードの破解に関する投稿をしているのを見かけました。それで、学校の一体型カードのセキュリティを研究(破解)し、プロセスを記録しようと思いました。
注:本文は 6 つの章に分かれており、この記事は [理論知識編] です。今後も継続的に更新します。
長文のため、重要な部分は [太字で示しています]。
- 概要
まず、カードを破解する前に、現在市場で一般的なカードに関する知識、つまり IC カードと ID カードについて理解する必要があります。
1)IC カード(Integrated Circuit Card)、またはスマートカード(Smart Card)、マイクロチップカードとも呼ばれます。一般的な IC カードには、二代目の身分証明書、携帯電話の SIM カード、キャンパスの一体型カードなどがあります。非接触型 IC カードと接触型 IC カードに分かれます。本文中の M1 カードは非接触型 IC カードです。
M1 カード
2)ID カード(Integrated Circuit Card)、つまり身分識別カードです。ID カードはデータを書き込むことができず、固定の ID 番号のみを持ち、秘密機能はありません。
まとめ:ID カードは読み取り専用で、カード番号のみを記録し、暗号化できないため安全性が低いです。IC カードは読み書きが可能で、暗号化もでき、IC カードのデータの読み取り、書き込みなどの操作には相応のパスワード認証が必要で、カード内の各ブロックには異なるパスワード保護があります(後述で詳しく説明します)。
- IC カードの分類
準備作業として、まずカードのタイプを確認する必要があります。これはカードが破解できるかどうかに関係します。
ここでは、スマートフォンのアプリを使用してカードデータを確認するのが最も便利で、前提としてスマートフォンが NFC 機能をサポートしている必要があります。または、PN532 や ACR122u リーダー(後述の破解に使用するデバイス)を直接使用することもできます。もちろん、単純な方法として —— カードの外観を観察して判断することもできます(方法は自分でインターネットで検索してください、詳しくは述べませんが、必ずしも正確ではありません)。
SAK を通じてカードのタイプを判断できます。以下の図を参照してください:
赤い四角内が SAK 情報です
(Mifare Classic Tool ソフトウェアを使用して確認、文末にダウンロードリンクを提供します)
その中で:
SAK:08 は M1 カードまたは S50 カード —— 通常は破解可能
SAK:18 は S70K カード —— 通常は破解可能
SAK:20 は CPU カード —— 破解不可
SAK:28 は CPU 模擬カード ——M1 カードの構造を模倣し、極少数が解読可能
本文で言及されている M1 カードは、正式名称 NXP Mifare1 シリーズカードで、非接触型 IC カードに属し、通常は一体型カード、バスなどのシステムで使用されます。一般的にはカード型とキーホルダー型があります。以下の図を参照してください:
左がカード型、右がキーホルダー型
M1 カードの容量は通常 1KB です(ここでの単位はバイトであり、ビットではなく、ビットに換算すると 8Kb になります)。ストレージスペースは比較的小さいですが、M1 カードの構造は依然として複雑です。
- セクターとブロック
M1 カードは合計 16 のセクター(0〜15 セクター)を持ち、各セクターには 4 つのブロック(0〜3)があり、各ブロックは 16 バイトの内容を保存できます。つまり、16(セクター)*4(各セクターに 4 つのブロック)*16(各ブロックは 16 バイト)=1024 バイト = 8192 ビット;
以下の図を参照してください:
ある空白の M1 カードの第 4、5 セクター
その中で第 0、1、2 のブロックはデータを保存するために使用され、第 3 のブロックはキーを保存するために使用されます。上の図のように、ブロックの番号は赤いフォントで示されています。キーはキー A とキー B に分かれ、キー A と B の間に制御ビットがあります。
[制御ビットはそのブロックのアクセス権を決定します。読者は関連資料を自分で調べてください。本文では詳しく述べません]
例えば、セクター 5 のブロック 3:ここで「FF078069」は制御ビットで、左右のキー A と B は同じで、「000000000000」(この例で使用している M1 カードは空白カードで、データやキーはありません)。
通常、特定のセクターのブロック 3 を知っていれば、そのセクターの制御権(データの読み書きなど)を把握できます。同時に、M1 カードの各セクターには異なるキーを設定できます。
また、各 M1 カードにはユニークなシリアル番号(UID)があり、0 セクターの 0 ブロックに保存されています。その中で、最初の 4 バイトがカードの UID で、第 5 バイトがチェックビット、残りはメーカーデータであり、そのブロックは変更できません(変更可能なカードもありますが、後述します)。
したがって、M1 カードのデータを読み取り、変更するには、まず各セクターのキーを取得する必要があります。カードが暗号化されていない限り、具体的な方法は後述で詳しく説明します。
このように、M1 カードのキーを破解できるかどうかが、カード全体を破解するための重要な要素です。