【しーあーるしー】
CRC(巡回冗長検査) とは?
最終更新:
💡 検査値を比べて、データの誤りを探す
データの誤り検出に使われるチェックサム方式。多項式の除算を利用して短い検査値を生成し、通信やストレージでデータの破損を検知する。
📌 このページのポイント
CRCって何をするものなの?
データから短い検査値を計算して、一緒に送ったり保存したりする仕組みだよ。受け取る側や読む側が同じ規則で再計算し、付いていた値と比べて誤りを調べるんだ。
普通のチェックサムとは違うの?
多項式の計算って難しそう…
値が一致すれば、壊れていないってこと?
正確には「この検査では誤りを検出しなかった」だよ。違うデータが同じCRC値になることもあるし、CRCだけでは元のデータを復元できない。不一致のデータを捨てるか再送するかは、それを使う通信やアプリ側の仕組みなんだ。
どんなところで使われてるの?
PNGやgzipなどで使われるよ。偶然の破損を見つける用途だけれど、攻撃者がデータとCRCの両方を変えられれば値を合わせられる。改ざんへの対策には、共有の秘密の鍵を使って検証するHMACなどの認証が必要になる。ハッシュ値を添えるだけでも、両方を書き換えられるなら十分ではないんだ。
まとめ:ざっくりこれだけ覚えればOK!
「CRC」って出てきたら「検査値を比較して、偶然のデータ破損を見つける仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「Cyclic Redundancy Check」 = 巡回冗長検査
💬 Cyclicは巡回、Redundancyは冗長性、Checkは検査の意味。巡回符号に基づき、検査用の情報を加えてデータの誤りを調べる仕組みだよ。