見出し画像

ハッシュ値を照合してご安全に

この記事はBlender Advent Calendar 2023 の2日目の記事です。Blenderの技術的話題はありませんけどね。

最近、Blender 4.0 がリリースされて「最新バージョンのBlenderやってみよう」という方も多くいると思います。

Blenderのダウンロードからはじまるチュートリアルもありますしね。

ただ、直近「BlenderがDDoS攻撃受けてダウンした」とかそういう話を聞いたりして、ミラーからバイナリをダウンロードしたりする羽目になったという方もいて、そんな時に「あれ、このバイナリって正しいの?」ってことになると思いま…そういうことにしてください。

まあ、ダウンロードが途中で終わったとか、よくわかんないけど改竄されたバイナリをダウンロードしたんじゃないか不安とかそういう場合も…役に立つかもしれませんね。

DDoSの話はこちら。

Index of …

「過去のバージョンを含むBlenderのバイナリをダウンロードできるページ、Blender 4.0 のページを見ると各OSの".md5"とか”.sha256"とかいうインストーラーとかアーカイブファイルの拡張子ではないものを見つけることが出来ると思います。

例えば blender-4.0.1.md5 だと以下のような感じ。

9860fa32abdf60a19e7f9234fbffd858  blender-4.0.1-linux-x64.tar.xz
c6653d255d58af58090233d892267fd9  blender-4.0.1-macos-arm64.dmg
7759414351606c0b6cb7d83728139634  blender-4.0.1-macos-x64.dmg
e16882cc168359b6e1903f597c6bf098  blender-4.0.1-windows-x64.msi
ddff15427ac3d7c62c279eedfb7bf882  blender-4.0.1-windows-x64.msix
192fe7198671ad32079d1b51bb930127  blender-4.0.1-windows-x64.zip

blender-4.0.1.sha256 だと以下。

1b22016388997b373970819e0d0c352a1f769c46df919db95c037985af073882  blender-4.0.1-linux-x64.tar.xz
5123a248a13459dbf0fa6762a4a4079d437467537e44b2a17db6c94fc071af95  blender-4.0.1-macos-arm64.dmg
d3c42202656aa1aae686063d66f7f8315a5be772ca19034673da0863ca59d671  blender-4.0.1-macos-x64.dmg
766720d77757e54b0795a77163a07c80cd4ab1520f4fb8964f6220997c8f1bba  blender-4.0.1-windows-x64.msi
ec68a577eebd152a2f7ce19d03cc2eadae08633e926caf96d48c05ac05a38845  blender-4.0.1-windows-x64.msix
6845ceeafd957328729099450b27eb8188843a6f5eace723a4bea11964f6d7bc  blender-4.0.1-windows-x64.zip

何れにしても、<何らかの文字列> + < ファイル名 >のペアになっていることに気がつくことでしょう。左側の文字列がハッシュ値で、「対象のファイルを決まった計算方法で文字列にする」、といったものです。

<ハッシュ値>  <ファイル名>

例えば対象のファイルと、そのファイルをもとに出力された .md5 .sha256 ファイルがアップロードされたWebページがあるとします。対象のファイルを自分のパソコンにダウンロードし、プログラムを使って対象のファイルからハッシュ値を計算します。その値とサイト上にある.md5 .sha256 ファイル内のハッシュ値と一致するかを確認すれば良いです。

.md5 とか .sha256 とかいった拡張子は「ハッシュ生成の計算方法」を(暗に)表していて、同じ計算方法を使うことで「ファイルの内容が同じであれば同じ値を結果として出力」することができます。

ハッシュ値を照合する例: 7-zip

例えば7-zip をインストールしている環境だったら、エクスプローラーのファイルアイコンを右クリックして CRC SHA > SHA-256 を選んで表示される文字列と *.sha256ファイル中の対象ファイルの行にあるハッシュ値を比較して同じであれば対象のファイルは「正しい」ということになります。

他にも .md5 .sha256ファイルを使用して直接判定結果を表示する方法もあります。各自頑張ってググってみてください。

だけど余計なソフトは入れたくないな(Windows 使っている人)

まあそんなことを抜かす痴れ者(おっと失礼)の方もいらっしゃるかもしれないですね、そんな状況にどう対応しましょうか、ってことで…。

アレですアレ、 linux でいうところの md5sum とか sha256sum のコマンドを(Windows上の)Powershellで、っていう。割とこじつけなヤツ。

エクスプローラーのアドレスバーに直接"powershell"とか入力してpowershellコンソール開いといてください。

まあ素直にやるとこう。使用ハッシュアルゴリズムのデフォルトはsha256。

get-filehash *

カレントフォルダ上にあるファイルのハッシュ値取って"<ハッシュ値>  <ファイル名>"の、"sha256sum -c"で自動的にチェックできるフォーマットのリストをファイル出力する、ってとこまでやろうとしたら長くなっちゃいましたテヘペロ、な感じ。この状態のファイル名のエンコーディングは ASCII 固定で出力指定してるんですけどね。

get-childitem * | ?{ ! $_.PSIsContainer }|?{$_.name -notmatch "sha256sum"}| %{$r=get-filehash $_ -algorithm sha256; $r.hash.tolower()+"  "+($r.path | split-path -leaf)+"`n"}| out-file -encoding ascii -nonewline checksum.sha256sum

ことのついでに生成した .sha256sum ファイルを照合する… "sha256sum -c <ファイル名>"みたいなやつ作んないといけないですね。

こうかな?

get-content checksum.sha256sum | %{ $p=$_ -split "  ";$r="OK";if(test-path $p[1]){$h=get-filehash $p[1];if($h.hash -ne $p[0]){$r="NG"}}else{$r="NG"}; $p[1]+": "+$r}

なお、macOS でも Powershellインストールされているのであれば上の呪文ちゃんと動きますね。

まとめ

まとめます。

  • 過去のバージョンを含むBlenderをダウンロードできるページがある

  • ダウンロードしたものが正しいかどうかを確認したい需要がある

  • ハッシュ値を計算するプログラムの結果が同じであれば「正しいファイル」

  • 照合する時ハッシュ値を計算する「アルゴリズム」を同じにする

  • 正しいファイルをダウンロードしてご安全に

Blender Advent Calendar 2023の2日目の記事です。

Facebook「Blenderユーザー助け合い所

Blenderを使っていく際に起こる問題やわからないことを一緒に解決していこうというFacebookのグループ、Blenderユーザー助け合い所 っていうのがあります。気が向いたらご参加どうぞ(一応1000人は超えてます)。


お読みいただきありがとうございます。サポートいただいた分はおやつのグレードアップに使おうかと思います。スキ、SNSにシェアもよろしくお願いします!