チェックサム
出典: フリー百科事典『ウィキペディア(Wikipedia)』
チェックサム (Check Sum)とは簡易な誤り検出に用いられるアルゴリズムである。
算出方法は非常に単純で、バイト列を頭から順に加算し、総計の下位1バイトを抽出するだけである。バイト列「00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F」の総和は「78」であるので、そのチェックサムは「78」となる。
前述の通り単純な加算であるため、バイト列が入れ替わろうが何が起きようが合計値の下位1バイトが同じであれば同じ値を返すため、誤り検出の方式としての信頼性は高くない。例えば、前述のバイト列とは全く別のバイト列、「70 00 02 00 00 00 06 00 00 00 00 00 00 00 00 00」のチェックサムは 「78」であり、前述のバイト列と等しい値となってしまう。
ネットワークを利用してのデータ送信時、IPパケットにデータを分割した際、IPヘッダの検査に利用される。
- IPヘッダを16ビット単位で計算
- その補数をチェックサムへセット
- 送信
- IPヘッダを16ビット単位で計算
なお、チェックサムが誤り検出符号その他データの検証のための符号として広く使われてきた経緯から、CRCの符号値やMD5などのハッシュ値なども広義の「チェックサム」に含めて、「CRCチェックサム」「MD5チェックサム」と言う事も良くある。これらはsumではなく、またチェックサムなどの誤り検出符号は、ハッシュ関数と違い、暗号化や改ざん防止技術の用途は考慮されていない事が多いため、「チェックサム」と呼ぶことは厳密には誤りである。もっとも、現在の暗号解読技術の前では、CRCやMD5はもはやちょっと高級なチェックサム程度の信頼性しかない、という意見もある。