ソフトウェアやモデルなど大容量ファイルによく併記されているSHA256ハッシュというものの役割を、チェクサムという実例を交えつつ簡単に解説していきます。
また、7zipでハッシュ値を求めファイル整合性を確かめる方法も解説しています。
この記事を読むと、hugging face🤗等のファイル配布場所になぜhash値が書いてあるのかが理解できます。
1,SHA256ハッシュとはどういうものか
ハッシュ値とは
ハッシュ値とは、ある文字列やファイルに対して特定のアルゴリズム(算出方法・ハッシュ関数)を用いて出力された値のことです。
ハッシュ関数には、算出対象のファイルの大きさに関わらず、常にハッシュ関数ごとに決まった桁数の文字列を出力するという特徴があります。
ハッシュ値を算出することをハッシュ化と言い、ハッシュ関数の違いにより様々な種類のハッシュ化を行えます。
そしてSHA256もハッシュ関数の1つです。
SHA-256
SHA-256は、「SHA」(Secure Hash Algorithm(セキュア・ハッシュ・アルゴリズム))というシリーズのハッシュ関数のバージョン2に属する関数です。
SHAシリーズハッシュ関数のうち、バージョン2のことを「SHA-2」と書きます。
SHA-2には以下の通り6種類あり、その中でもSHA256は最もメジャーなハッシュ関数です。
- SHA-224
- SHA-256
- SHA-384
- SHA-512
- SHA-512/224
- SHA-512/256
そして、SHA-256ハッシュ関数は、どんなファイルに対しても長さ64文字(16進表記)のハッシュ値を算出します。
2,ハッシュ値が役立つ具体的な場面・例
ハッシュ値をファイルに併記する理由
ハッシュ関数は、ファイルが少しでも変化すると全く違うハッシュ値を算出します。
そして前述の通り、ハッシュ関数はどんなファイルに対しても一定の長さの文字列を出力するため、比較的少ない文字列を見るだけでファイルが改ざんされたりしていないかを確かめることができるというわけです。
この時ファイルに併記されたハッシュ値のことをチェックサムと言うことがあります。
用途の具体例
大容量のファイルなどは特に、まれにダウンロード中にファイルの一部が欠落してしまうことがあるためよくハッシュ値が併記されています。
例えばこの5GBくらいの画像生成AIのモデルファイルのように。
他にも、ファイルに僅かな欠損があってもいけない&偽のファイルが配布されやすいOSなどソフトウェアにも併記されています。
例えばこれはUbuntu 22.04というOSのdailybuildされたファイルのチェックサムです。
自分でハッシュ値を求めてファイルの整合性を確かめる方法
ファイルの圧縮・展開ソフト「7zip」はハッシュ値の計算も可能です。
7zipをインストールしたら、チェックサム(ファイルのSHA-256ハッシュ値)を算出したいファイルを右クリックしてください。
そして、「7-Zip」→「CRC SHA」→「SHA-256」とクリックしていきます。
数秒の計算が終わると、結果が表示されました。
自分で算出したハッシュ値は
SHA256: dcd690123cfc64383981a31d955694f6acf2072a80537fdb612c8e58ec87a8ac
でした。
そしてファイル配布場所のハッシュ値は以下の通りで、一致していますね。
SHA256: dcd690123cfc64383981a31d955694f6acf2072a80537fdb612c8e58ec87a8ac
https://huggingface.co/stabilityai/stable-diffusion-2-1/blob/main/v2-1_768-ema-pruned.safetensors
つまり正常にダウンロードできたというわけです。
まとめ SHA-256などのハッシュ値がファイルに併記される理由とは
まとめると以下の通りです。
まずハッシュ関数について
- ハッシュ関数とはファイルの大きさに関わらず特定の文字数を出力する関数
- SHAは数あるハッシュ関数の1つ
- SHAにも複数のバージョンがあり、SHA-2シリーズが主流
- SHA-2のうち、特に普及しているのがSHA256
- SHA256は常に64文字の文字列を出力
ハッシュ値を併記(チェックサム)する意味
- ファイルが少しでも変わるとハッシュ値も変わる
- ファイルの整合性を確かめるハッシュ値をチェックサムという
- 改ざんされやすいファイル(OS)や、ダウンロード時に欠落しやすい大容量ファイルによくチェックサムを使う
- 7zipを使い、自分でダウンロードしたファイルのチェックサムを求めることができる
チェックサムを求めて安心してファイルをダウンロードしましょう!!