叡智の三猿

三猿×情報セキュリティ×はてな で発信します。

芭蕉と曾良のハッシュ関数

芭蕉曾良

江戸時代、諸国を巡りつつ俳句を詠んでいた松尾芭蕉が現代にタイムスリップしたら、自らの句を電子メールで弟子たちに披露したことでしょう。特に一番弟子とされ「奥の細道」にも同行した河合曾良にはたくさんのメールをしていたと思います。

f:id:slowtrain2013:20200512161002p:plain
芭蕉曾良
そこで芭蕉の名句が、芭蕉を蔑める悪意を持つ者によりこのように改ざんされた状況を想像してみました。
f:id:slowtrain2013:20200512161037p:plain
改ざんされた芭蕉の名句

俳句のなかの「切れ」

俳句に於いて「切れ」を表現することは、文芸的価値を高める上でとても重要なことです。「切れ」を入れることで、空間が独立して広がります。「切れ」を表現する上で「や」「かな」「けり」といった「切字」が使われます。「切字」をうまく使うことで「感動」を大きく出すことが出来ます。

上記のような名句が改ざんがされたら、どうでしょうか!?

「俳句 はじめの一歩」の著者である石寒太さんは、本のなかで次のように指摘しています。

荒海や佐渡に横たふ天の河
この「や」は、詠嘆に使われた切字です。「や」という切字によって、ありありと芭蕉の感動が、読む人に伝わってきます。もし、これが、
荒海の佐渡に横たふ天の河
だったとしたら、荒々しい海の感動は伝わってきません。
俳句はじめの一歩 (二見レインボー文庫)(石寒太著)より」

日本語としては一文字を変えただけですが、俳句の価値は大きな低下です。もっとも、松尾芭蕉俳諧における「切字」を確立した方です。優秀な一番弟子である河合曾良であれば、この改ざんは見破ると思います。

しかし、改ざんはされないようにする必要があるし、されても改ざんされたことが分かるような仕組みが必要です。

改ざんを検知するハッシュ関数

そこで、改ざんを検知する仕組みとして使われるのがハッシュ関数です。ハッシュ(hash)は、細切れにするような意味です。この言葉でわたし達が連想するのは次の2つではないでしょうか!?

ハッシュドポテト

f:id:slowtrain2013:20200702121644j:plain:w300
ハッシュドポテト朝マックでお馴染みですね。これは熱で柔らかくしたジャガイモを細く切ってまとめて焼き揚げる料理です。

ハッシュタグ

f:id:slowtrain2013:20200701160025j:plain:w300
SNSでよく見かけるハッシュタグは投稿に対する「ラベル」のようなものです。投稿文章を細切れにして分類するのに使われています。

どちらもハッシュの意味合いが含まれています。

そして「ハッシュ関数」は任意の長さのメッセージやファイルなどの入力値を細切れにして、固定長の出力値に変換する関数です。変換された出力をハッシュ値と呼びます(ちなみにメッセージダイジェストともいいます)。ハッシュ関数は情報の完全性を担保するため、メッセージやファイルの改ざんを検出する為に利用します。

ハッシュ関数暗号通貨の基盤となるセキュリティであるブロックチェーンを支える技術としても知られます。
f:id:slowtrain2013:20200701160824j:plain:w300
暗号技術の適切な実装法・運用法を調査・検討するCTYPTRECでは次のハッシュ関数を推奨しています。

  • SHA-256
  • SHA-384
  • SHA-512

そこで、SHA-256により「荒海や佐渡に横たふ天の河」をハッシュ化してみます。すると、次の値が表示されました。

  • 807aec7e1e300a0fda309b4f41e57be94d9aecf576005552b85ddf9e4ad473b3

この値を芭蕉が作った俳句「荒海や佐渡に横たふ天の河」とは別メールで曾良に送ります。

f:id:slowtrain2013:20200512163457p:plain
芭蕉の名句をハッシュ化
さて、先ほどと同様、悪意を持った者が「俳句を改ざん」したとします。

曾良が受け取った俳句は「荒海佐渡に横たふ天の河」ではありません。「荒海佐渡に横たふ天の河」ですので、曾良はこの句をハッシュ化します。すると次の値が表示されます。

  • d07802d315bb7722e47b5da7a6d11340c79110dc55a72aa1603ee28d13c2826a

どうでしょうか!?「荒海や佐渡に横たふ天の河」とは全く異なるハッシュ値が表示されることが分かります。

芭蕉から送付された「ハッシュ値」と曾良が算出した「ハッシュ値」が異なるので、曾良芭蕉から送付された俳句は何者かによって改ざんされたことに気がつくのです。

f:id:slowtrain2013:20200512165250p:plain
ハッシュ値の比較による改ざん検知