PingやTracerouteについて

概要

PingやTracerouteはIPネットワークの調査に用いられる。
Ping・・・特定の通信先(目的地。通常サーバー)との導通確認(IPパケットが到着・返却されるか)やネットワーク速度確認に利用される。
Traceroute (コマンドは"tracert")・・・通信相手(目的地)へのポッピング経路(途中のネットワーク機器)の確認に利用される。

ICMP(Internet Control Message Protocol)

PingやTracerouteはICMPと呼ばれるプロトコルを利用する。
ICMPはTCP/IPのインターネット層(OSI参照モデルネットワーク層)のプロトコルであり、IPプロトコルのエラーメッセージや制御メッセージを転送するプロトコル

引用:https://startdash.net/post-1855/

PingやTracerouteはインターネット層のプロトコル(ICMP)を利用するため、通信相手のIPアドレスを指定するがポート番号(TCP層)は指定できない。

その他

  • Pingコマンドはデフォルトでが4回パケット送信されるが、「ping -t 目的地」無制限にPing送信を繰り返す。
  • 送付するPingのサイズを指定することもできる(ping -l サイズ)
  • PingやTracerouteの宛先はIPアドレスだけでなくドメイン名(例 google.com)も可能。
  • Pingコマンドを自身の端末から送付できない場合など、外部から特定の目的値にPingを送るサービスも存在

ハッシュ(関数)とは

概要

ハッシュとは、ハッシュ関数と呼ばれる計算式により元データを特定桁数の値に変換すること。
例えば、文字列や画像データなどのファイルをSHA256と呼ばれるハッシュ関数に入力すると、256bitのハッシュ値が出力される。

ハッシュ関数の特徴

  • 入力データにかかわらず必ず決まった桁数のハッシュ値を出力
  • 入力データが異なれば、ハッシュ値は原則異なる。
    理論上は異なる入力データのハッシュ値が一致してしまう可能性はゼロではない(一致してしまうことを衝突という)。ただし現在主流のSHA256で衝突が発生する確率は「2の128乗分の1」であり、普段利用においては実質ゼロと言ってもよい。
  • ハッシュ値から入力データを導き出すことは非常に困難

ハッシュ関数の種類

  • MD5, SHA1, SHA2, SHA3などが存在するが、MD5SHA1脆弱性が見つかっており、現在主流なのはSHA2 (Secure Hash Algorithm 2)。
  • SHA2の中でもSHA256が現在最もよく使われている。
  • 企業や個人が独自にハッシュ関数を作成することもある。

ハッシュ関数の利用用途

  • デジタル署名
    元データ(例 電子メール)のハッシュ値を暗号して、元データの改ざん検知や差出人の検証を行う。
  • データ破損の有無チェック
    ファイルなどのデータを破損せずにダウンロードできているかをダウンロード元とダウンロード後のハッシュ値を比較することにより行う。
  • サーバー/クライアント間のパスワードをハッシュ値でやりとり
    クライアントからサーバーへログインパスワードを登録・ログインする際にパスワードそのものではなくパスワードのハッシュ値をやりとりすることにより、外部へのパスワード漏洩を防ぐことができる。
  • ハッシュテーブル
    複数のデータを格納する際に、それぞれのデータのハッシュ値をインデックスとしたテーブル

ハッシュ関数の利用方法

WindowsOS搭載PCであれば一般的なハッシュ関数の計算ツールは標準搭載されており、またハッシュ関数サービスを提供するWebサイトも存在。

WindowsOSで利用できるハッシュ関数のツール
引用:https://atmarkit.itmedia.co.jp/ait/articles/0507/30/news017.html

NTP(Network Time Protocol)とは

NTPの概要

NTPサーバーは階層構造

NTPサーバーは階層構造を採用しており、一番上位(ルート)のNTPサーバーは原子時計GPSから標準時刻を取得する。そして、下位のNTPサーバーは上位のNTPサーバーから時刻情報を取得する。
原則、ルートNTPサーバーは一般公開されていないため、スマートフォンやパソコンなどのNTP利用機器は下位層のNTPサーバーを登録・利用する。

NTPサーバーは階層構造を構成。
引用:https://medium-company.com/ntp/#NTP-2

NTPサーバーの利用方法

スマートフォンなどのコンピュータ機器にはNTP設定(例: 自動時刻取得設定)メニューがありNTPサーバーURLを登録できる。
通常デフォルトで特定NTPサーバーが登録されており、利用者が別のNTPサーバーに変更できることもある。

Android端末のNTPサーバー設定

NTPサーバーの登録時には、1つのNTPサーバーを登録するだけでなく、複数NTPサーバーをグループ選択できるNTPプール(NTP pool)を利用できる。1つのNTPサーバーだとアクセス集中時に応答がないリスクがあるため、複数NTPサーバーを切り替えて利用するNTPプールは賢い選択と言える。

コンピューター機器は、端末起動時など特定タイミングでNTPサーバーにアクセスして最新の時刻情報を取得・適用する。

通信時間による誤差も最小限

NTPは、NTPサーバーとクライアント(コンピューター機器)の通信時間も考慮されており、通信時間による発生する時刻誤差も最小限(数十ミリ秒以内)に抑える。
通信時間の誤差をおさえるために交差アルゴリズムという仕組みが採用されている。

HTTPS(HTTP over SSL/TLS)の仕組み

しっかりと理解できていないと感じたので、自身の整理のためにHTTPSの仕組みについてまとめました。

概要

  • HTTPSは、暗号化によるセキュリティ強化されたHTTP。
  • ホームページやWebアプリをホストするWebサーバー(以後、Webサーバー)にアクセスする際に、パソコン等の端末上のWebブラウザ(以後、Webブラウザ)とWebサーバー間の通信を暗号化し、第三者による通信内容の盗聴を防ぐ仕組み。
  • 公開鍵暗号方式(目的:共通鍵を安全に送付)と共通鍵暗号方式(目的:通信データの暗号化)を組みあわせて実現する。

HTTPSの仕組み(またはSSL/TSLの仕組みとも言える)

Step 1:WebサーバーからWebブラウザーにサーバー証明書を送付
WebブラウザからWebサーバーへのアクセスを受け、WebサーバーからWebブラウザーにサーバー証明書を送付する。

Step 2:サーバー証明書の信頼性確認
Webブラウザはそのサーバー証明書が信頼できるか確認する。

<証明書の信頼性確認方法>
サーバー証明書は、認証局と呼ばれる機関によりWebサーバー運営組織に発行される。
サーバー証明書には、証明書内データのハッシュ値を発行元認証局秘密鍵で暗号化した「署名」が付加されており、Webサーバーは発行元認証局の公開鍵を用いてその署名を複合し、データのハッシュ値と比較して一致していれば、そのサーバー証明書は確かにその認証局により発行したものであると確認できる。
その認証局がルート認証局でない場合は、ルート認証局にたどり着くまで同様に署名と公開鍵による発行元の検証を行い、サーバー証明書が確かに信頼できる認証局から発行されていることを確認する。

認証局
認証局は、外部機関による厳しい審査を受けたルート認証局を起点としてツリー構造で中間認証局が連なり、信頼のチェーンを構成している。

認証局(CA: Certificate Authorities)の構成
引用:https://hjvqwdq.blogspot.com/2021/03/blog-post_324.html

Webブラウザにはデフォルトで複数のルート認証局の証明書が登録されている。自身でルート認証局や中間認証局の証明書をブラウザーに登録することも可能。

Microsoft Edgeに登録されているルート認証局



Step 3:WebブラウザからWebサーバーに共通暗号鍵を送付
Webブラウザサーバー証明書に添付されているWebサーバー側の公開暗号鍵(以後、Webサーバー公開鍵)を取り出し、Webブラウザ側で生成した共通暗号鍵(以後、Webブラウザ共通鍵)をWebサーバー公開鍵で暗号し、Webサーバーに送付し、WebサーバーはWebサーバー秘密鍵Webブラウザ共通鍵を複合して取り出す。

Step 4:暗号化されたセキュアなHTTP通信を開始
Webブラウザ/Webサーバー間のHTTP通信をWebブラウザ共通鍵により暗号化し、第三者による盗聴を防ぐ。

<ポイント>
共通鍵暗号方式のほうが暗号・複合処理が軽いため、データ通信の暗号には公開鍵暗号方式ではなく共通鍵暗号方式を利用する。共通鍵をそのまま送付すると、共通鍵自体が漏洩するリスクがあるため、公開鍵暗号方式により共通鍵を送付する。

その他

HTTPからHTTPSへの移行トレンド(SSL化トレンド)

5年程前からHTTPからHTTPSへの移行)が進んでおり、例えば2018年にGoogle ChromeWebブラウザ)はHTTPのウェブサイトへのアクセス時に「保護されていません」と警告メッセージを出すようになった。 現在では、多くのウェブサイトがHTTPS対応(SSL化)している。

HTTPSでは悪いサイトを識別できるわけではない

HTTPSは通信の暗号化により盗聴を防いだりや改ざんを検知することができるが、アクセス先のサイトに悪意が無いことを保証することはできない。悪意のあるサイトが認証局からサーバー証明書を入手すればHTTPS対応できるため。 アクセス先が安全であることを確認するには、サーバー証明書の中身を確認し正規のドメインや組織であることを確認する必要がある。

Webブラウザサーバー証明書ドメイン名を確認

NFC(Near Field Communication)について整理

NFCが思っていた以上にややこしいので、可能な限り整理してみました。

NFCの概要

NFCRFIDの一種。
RFIDは、ID情報などのデータが書き込まれたタグやカードを無線技術により非接触でコンピュータ(改札などの専用機やスマートフォンなど)に読み取らせる技術。
RFIDには、使用する無線周波数帯(135kHz以下から数GHz)や方式(電磁誘導、放射電磁界)の異なる様々な技術の総称。
NFCは、RFIDの一種であり13.56MHz帯で電磁誘導方式を作用する特定技術。


NFCには3つのモードがある。


NFCの規格

NFCの通信規格

『ISO/IEC 18092 (NFC IP-1)』と『ISO/IEC 21481 (NFC IP-2)』の2種類存在

  • ISO/IEC 18092 (NFC IP-1)
    早期に普及したスマートカードであるISO/IEC14443 Type A(MIFARE)やFelicaをサポート。
  • ISO/IEC 21481 (NFC IP-2)
    ISO/IEC 14443 (Type B) とISO/IEC 15693にも対応

NFC(非接触型)スマートカードの規格

交通カードや免許証などなどNFCの利用が最も一般的な非接触スマートカードは、標準規格ISO/IEC 14443にてType AとType Bが規定されている。

  • Type-A
    日本ではあまりなじみがないが、たばこ自販機で利用されるスマートカードTASPO)やICテレフォンカードで採用されているMIFAREが代表技術。NXP Semiconductors(旧フィリップス)が中心となり開発
  • Type-B
    運転免許証やマイナンバーカードで利用。
  • Type-F
    FelicaはISO/IEC14443には属さないが通称Type-Fと呼ばれる。交通カードやEdyNanacoWAONなどで利用されている。Sonyが中心となり開発

NFCフォーラムでのNFCタグ規格
また、NFCフォーラムの規格としては、Type 1, 2, 3, 4, 5が存在。

  • Type 1: ISO/IEC14443Aに準拠。
  • Type 2: ISO/IEC14443Aに準拠。最も一般的に利用されており、安価。代表的なNFCタグはMIFARE UltralightやNXP Ntag2xxシリーズ。
  • Type 3: Felica対応タグ。
  • Type 4: ISO/IEC14443A/Bに準拠。高メモリ。代表的なNFCタグはDESFireファミリ(NXP MLFARE DESFire等)。
  • Type 5: ISO/IEC15693に準拠。近年新しく追加された。

NFCの通信規格と非接触スマートカード規格の整理

NFCの規格は通信規格と非接触スマートカードの規格の関係が非常にわかりづらいが、個人的には以下の図が理解しやすい。

引用:https://pinardsflorist.com/iso-21481-10/


NFCデータフォーマット

NFCはデータ構造をNDEF(NFC Data Exchange Format)で標準規定している。
NDEFでは、プレーンテキスト、URIJPEG、Emailなどの情報を保存、交換することができる。


接触スマートカードについて考える

NFCのReader/Writerモードでは非接触スマートカードなどのNFCタグをReader/Writerであるコンピューター(改札などの専用機やスマートフォンなど)で読み書きする。
代表的な非接触スマートカード(非接触ICカードとも呼ばれる)は、Suicaなどの交通カードやマイナンバーカード、免許証、非接触決済対応のクレジットカードなどがある。

そもそもスマートカードとは

スマートカードには接触型と非接触型があり、双方ともID情報などのデータを保管するICチップが埋め込まれている。

スマートカード内保管データのコンピューターとのやりとりは、接触型ではカード上の物理的な端子を通して電気信号で行われ、非接触型は近距離無線通信(NFC)で行われる。
EMVコンタクトレスという規格に対応した非接触決済対応のクレジットカードは、Type A/B両対応。

アプリ層通信プロトコル

スマートカードNFCで通信するが、アプリ層プロトコルはAPDUを利用。非接触スマートカードも同様にAPDUでデータのやり取りや制御を行う。

接触型/非接触スマートカードプロトコルスタック

下位層は接触/非接触プロトコルが異なり、アプリ層は双方ともにAPDUを採用。

https://insinuator.net/2018/02/extracting-data-from-an-emv-chip-and-pin-card-with-nfc-technology/


NFCの規格全体像

NFC規格をフルスタックを見ると、全体を俯瞰して理解しやすい。
一言で言うと、下位層は上記の通信プロトコルを、アプリ層ではAPDUを利用し、データフォーマットはNDEF。

引用:SpeakerDeck.com


余談:IDなどのデータをコンピューターに読み取らせる方法という切り口で考えると・・・

データをコンピューターに読ませる方法としては、非接触スマートカード以外に、接触スマートカード、バーコード/QRコード、磁気ストライプがある。

決済利用の例は以下。