チェックサム

出典: フリー百科事典『ウィキペディア(Wikipedia)』

出典: フリー百科事典『ウィキペディア(Wikipedia)』

チェックサム: checksum)とは、ワード列の各ワードの総和を利用した誤り検出符号の一種である。他の誤り検出符号と比べて信頼性は低いものの、単純計算[注釈 1]で99.6%以上の検出率があるうえにアルゴリズムが簡単であることから、簡易な誤り検出に用いられる。 日本産業規格では検査合計[1][2][3]とも訳されるが、この訳が用いられていることはほとんどない。

名称・用語[編集]

「チェックサム」という名称は、チェックサムの符号値そのものを指すこともある。

また、誤り検出その他データの検証のための符号として広く使われてきた経緯から、俗に誤り検出符号自体の代名詞としても用いられる場合がある。例えばCRCの符号値やMD5のハッシュ値を、それぞれ「CRCチェックサム」「MD5チェックサム」と呼ぶことがある。これらは算術が異なりsumでもないため、「チェックサム」と呼ぶことは語義的には正確ではないものの、「(チェックサムよりも)信頼性の高い[注釈 2]誤り検出符号」程度の意味で使われる。

算術[編集]

算出方法は非常に簡単で、もっとも単純なものはワード列の各ワードの総和(sum)の下位1ワードをそのまま符号値とするもの(つまり剰余)であり、1ワードを何ビットとするかは実装によって異なる。

例えば、8ビットの16ワードのワード列「00 01 01 02 03 05 0A 0E 12 00 C0 59 3A A5 04 0D」の総和は23Fであり、下位1ワード(剰余)は3Fであるので、そのチェックサムは「3F」となる。

総和のどのビット群を符号値とするか、符号値をどのように扱うかなどで、派生した種類がある。

ネットワークを利用してのデータ送信時、IPパケットにデータを分割した際のIPヘッダの検査における利用例を以下に示す。

  1. IPヘッダのチェックサムフィールドにゼロをセット
  2. IPヘッダを16ビット単位で加算
  3. 総和の下位16ビットの補数をIPヘッダのチェックサムフィールドにセット
  4. 送信
  5. 受信したらIPヘッダを16ビット単位で加算
  6. 総和がゼロなら正常

チェックサムフィールドには「チェックサムフィールド以外で計算したチェックサムの補数」がセットされているので、両者を足し合わせると0になるはずであり、そうなれば正しい。

信頼性[編集]

加算は順序によらないため、各ワードが内容を保持したまま列の順序のみ変化した場合には同じ値を示す。また、それ以外の誤りに対しても、符号値が同じになる確率は決して低くなく、誤り検出の方式としての信頼性は高くない。

また、チェックサムをはじめとする誤り検出符号ハッシュ関数と異なり、暗号化や改ざん防止技術の用途は考慮されていない。そのため、偶発的な誤りに対する耐性を高めるだけであり、意図的な改竄(チェックサムは同じで異なる内容にする)に対する耐性はない。特にチェックサムは単純な加算であることから、同じ符号値になる異なる内容を探すことがいかにも容易である。例えば、前述のワード列(→#算術)の前半後半を入れ替えた列「12 00 C0 59 3A A5 04 0D 00 01 01 02 03 05 0A 0E」も、チェックサムは同じ3Fである。

意図的な改竄の例[編集]

元のワード列を前述の「00 01 01 02 03 05 0A 0E 12 00 C0 59 3A A5 04 0D」とする。

これとまったく別のワード列「70 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00」のチェックサムは72であるが、最後のバイトを「00」から「CD」にすれば元のワード列と同じチェックサム「78」となる。こうして、意図的にチェックサムの整合性を取ることができた。もしもある一連のワード列処理機構が受け取ったワード列の正当性をチェックサムでのみ保証していた場合、この機構はこのワード列を元のワード列として(誤)認識してしまうことになる。

脚注[編集]

注釈[編集]

  1. ^ 1オクテットのチェックサムの場合28 − 1/280.996094、2オクテットなら216 − 1/2160.999985
  2. ^ もっとも、現在の暗号解読技術の前ではCRCやMD5はもはやちょっと高級なチェックサム程度の信頼性しかないという意見もある[要出典]

出典[編集]

  1. ^ JIS X 9204:2004「高精細カラーディジタル標準画像 (XYZ/SCID)」3節「定義」1項
  2. ^ JIS X 0008:1997「情報処理用語—セキュリティ」(旧)用語番号08.03.05
  3. ^ JIS TR X 0055:2002「インターネット利用者のための用語」(公布期間外)用語番号2.18

関連項目[編集]