✲゚。.ヾ(⌒(ノ'ω')ノ☆.。

変色系男子の日常。

インクまみれ

平日の夜ながらも明日が祝日なのをいいことに、23 時くらいからひさしぶりにスプラトゥーンをガッツリ遊んだ。そして思いだした。僕がこのゲームを愛してやまなかったことを。

インクに飛び込むちゅぽんという心地よい音、インクの中を泳ぐぬるぬるとした感覚、そして息つく暇もないほど苛烈なインクの撃ち合い。そういったものが僕の脳髄を激しく刺激した。

最初はぎこちなかった僕のイカちゃんの動き。それも、愛銃であるスプラスピナーの癖を思い出してくるとともに、少しずつ解消されていた。しばらく Wii U を放置していた空白の時間も、僕のスプラスピナーが放つインクにじんわりと溶けさっていくのだった。

ステキ発見 No.2: 付喪神 (つくもがみ)

付喪神とは (Wikipedia)

f:id:quanon:20160130214545j:plain 「ハクメイとミコチ」4 巻より

僕の最も大好きなコミックのひとつに「ハクメイとミコチ」という作品がある。森で暮らしているハクメイとミコチという、ふたりの小人が主人公ののんびりとした日常系ファンタジー。

その 4 巻に付喪神の話がある。ある喫茶店のマスターが先代から受け継いだコーヒーミル。だいぶん使い込まれた一品だが、それがある日まったく動かなくなった。機械に詳しいハクメイが分解して整備してみるものの、それでも動かない。

ところがみんなが寝静まった頃、そのコーヒーミルがふわふわとしたオーラをまといだし、勝手に動き出して、最後にミルそのものごと消えていく。ハクメイ曰く「愛され続けた古道具が突然なるものだと聞いていたけれど…」とのこと。

大事に使い込まれたモノというのは、その本来の価値がどのようなものであれ、ステキなものだ。僕自身も、小学校の頃からずっと使っている文房具などのモノがあるが、やはりとても愛着が湧いている。そして、愛着のあるモノというのは、まさに自分の身体の一部のように感じると言っても過言ではないくらいだ。

僕の信条に「モノを買うことにも責任を持つ」というものがある。ペットを飼うときにその生命に対して責任を背負うのと同様にモノを買う時もそうだあるべきだということだ。少し仰々しい考えかもしれないが、モノを作るのにはそれがありふれた大量生産品であれ、大なり小なりコストがかかる。また、それを捨てるのにもコストがかかる (廃棄する際に不燃ごみや粗大ごみとなるものならなおさらだ) 。モノを買うときは、そういうことを踏まえたうえで、本当に必要なものかを見極める。そして、なるべく大切に扱う。これが肝要だと思っている。そうすることで無駄遣いを減らせるし、環境にも優しい。

特に昨今は電子機器の発展が著しい。とりわけパソコンやスマートフォンは非常に高価なのにもかかわらず、数年で買い換えられてしまう。そのモノとしての寿命を終えるよりも、流行や時代の流れのために廃棄される頻度の方が圧倒的に多いと思う。僕自身もご多分に漏れず、電子機器の進化の恩恵に預かる者なので偉いことは言えない。それでもやはり、初めてその機器を手にした時のワクワク感をいつまでも忘れることなく、大切に扱いたいなと改めて感じるのだった。

ステキ発見 No.1: 細部に至るまでの作りこみ

はじめに

今年はちゃんとブログ書けたらいいなぁと思い、とはいえしばしばネタ選びに困る。そこで、なんかステキだなと感じたものを、ジャンル問わずひたすら紹介する「ステキ発見」というコーナーを始めようと思う。

細部に至るまでの作りこみ

最近アトラスから発売された「オーディンスフィア レイヴスラシル」というアクション RPG ゲーム。この PSVita 版を買って、時間を見つけては遊んでいる。開発元はヴァニラウェア有限会社だ。この会社はまるで絵本のような美麗な 2D グラフィックゲームを作ることに定評がある。

www.youtube.com

オーディンスフィア レイヴスラシル」は PS2 版「オーディンスフィア」のリメイクだ。もともとグラフィックが美しかったが、PS4 や PSVita といったよりハイスペックな新しいプラットフォームを得たことで、その美しさに磨きが掛かっている。

ベースとなるアクションが面白いのはもちろんなこと、細部に至るまでの作り込みが素晴らしい。BGM、細かな SE、背景グラフィックやキャラクターのしぐさなどどれをとっても文句の付け所がないくらいだ。ゲームを遊ぶ上での快適さや没入感は、そういう作り込みがあるからこそ感じられるのだと思う。

ゲームのベースを作るだけでも大変な労力と時間が掛かるはずなのだが、それに加えて細部まで作りこむにはさらに途方もない労力が必要だと思う。いわんや、開発期間に限りのあるテレビゲーム開発だ。その苦労は想像を絶すると思う。それでも少しの妥協なしにこれほどのクオリティのゲームを世に出してくれたヴァニラウェアの開発陣には本当に頭が上がらない。利益の追求とはまたかけ離れたところにある、とてつもない情熱を感じる。

同じく、昨年任天堂から発売された「スプラトゥーン」も恐ろしいほどに作りこまれたゲームだと思う。今までにない奇抜なゲーム性はもちろんのこと、インクに飛び込む際の「ちゅぽん」という音や、インクの中を泳ぐ際の独特のぬるぬる感。これらの作り込みによって、プレイヤーは「インクの中を泳ぐ」という現実では成し得ない体験を楽しむことができる。秀逸なゲーム性に加えたこれらの作り込みにより、本当に快適で素晴らしい体験をこのゲームは提供してくれる。

建築界に「神は細部に宿る」という有名な言葉があるが、日常の細部にも神は宿っているなあと感じる今日このごろだった。

ぼけることに対する恐怖について

f:id:quanon:20150911223951g:plain

季節の変わり目のためか、自律神経が不調なようで、身体のこりがひどく頭がもやもやする日々が続く。脳内が霧につつまれたミッドガルのようだ。 さらにそのためか、会話の際に言葉に詰まったりすることが普段より多いような気がする。

こういうときに抱くのが「脳に異常があるのではないか」、よりありていに言えば「ぼけているのではないか」という恐怖だ。

数年前にも似たような症状に悩んでいた時期があり、その際は心療内科の先生の紹介で脳外科を受診したのだが、脳に異常は無かった。 それでも同じような症状が出るたびに、脳の異常が心配になる。 それくらいにぼけることに対する恐怖が大きいのだ。

その強迫観念のようにしつこい恐怖がストレスを生み、さらにストレスを悪化させるという悪循環に陥っている気がする。 じゃあどうすればいいのかと考えてみた。

そうして導き出したひとつの結論が「『ぼけてもいいや』とあきらめる」ということだ。 「ぼけてはいけない」という観念がぼけることに対する恐怖を生むので、それを捨てるということだ。 ぼけることはやはり恐ろしいこと、それはどうしても否定できないが、それでも「ぼけてもしかたない」と肯定的にあきらめることだ。 「ぼける」という状態自体は、それ自体が良いとか悪いとか平気とか恐ろしいとかそういう概念はなく、 恐ろしいと解釈するのはあくまで僕らの主観だ (もしかしたら、ぼけることはなんでもないことだと考える人もこの世にいるかもしれない) 。

と、この間読んだ仏教関連の本の「ものごとをありのままに認める」という旨の内容を思い返してそう思った。

認知症に罹って症状が進行中の段階にある人のことを思うと、その恐怖は察するに余りある。 ぼけて大切な記憶がどんどん欠落していくという事実を当人が認識できてしまうからだ。 しかし、それすら認識できなくなる、つまり「自分がぼけていることすら分からないくらいぼけてしまう」と そんな恐怖を感じることすらなくなり、心に平穏が訪れるのではないだろうか。

まあ実際にぼけきってみないと分からないが、ぼけたらぼけたでそれを認知する能力を失ってしまうので、 とどのつまり「ぼけたあとに心に平穏が訪れるのか否か」は誰にも分からない問題なのだろう。 死後の世界がどのようなものなのか (そもそも存在するのか) は死者にしか分からないが、死んだらそれを認識することができないのと同じように。

そういえば明日スプラトゥーンで開催されるフェスのお題は「まんざいをするなら? ボケ vs ツッコミ」だったな。 そして僕は「ボケ」に投票したんだった。 書いてる途中でお題を思いだした (マジだぜ) 。タイムリーすぎる。

あと 4 ヶ月前にも同じような内容の記事を投稿していたことにあとで気付いた。あはは、やはり僕のぼけに対する恐怖と執着は相当なもののようだ。

日本語名と英語名の対応表 (WIP)

チマチマ更新していく予定。

対応表

武器

日本語 英語
わかばシューター Splattershot Jr.
もみじシューター Custom Splattershot Jr.
スプラシューター Splattershot
ヒーローシューター レプリカ Hero Shot Replica
プライムシューター Splattershot Pro
プライムシューターコラボ Forge Splattershot Pro
スプラシューターコラボ Tentatek Splattershot
プロモデラーMG Aerospray MG
プロモデラーRG Aerospray RG
ジェットスイーパー Jet Squelcher
ジェットスイーパーカスタム Custom Jet Squelcher
デュアルスイーパー Dual Squelcher

サブウェポン

日本語 英語
スプラッシュボム Splat Bomb
スプリンクラー Sprinkler
チェイスボム Seekers
キューバンボム Suction Bomb
クイックボム Burst Bomb
トラップ Ink Mine
ポイントセンサー Point Sensor
ジャンプビーコン Squid Beakon
スプラッシュシールド Splash Wall
ポイズンボール Disruptor

スペシャルウェポン

日本語 英語
バリア Bubbler
スーパーショット Inkzooka
ボムラッシュ Bomb Rush
メガホンレーザー Killer Wail
トルネード Inkstrike
スーパーセンサー Echolocator
ダイオウイカ Kraken

参考

http://splatoon.wikia.com/wiki/Splatoon_Wiki:Main_Menusplatoon.wikia.com

Diffie-Hellman で鍵交換しましょ★

概要

暗号技術入門 を読み終えて、はや 2 ヶ月弱が経過しました。だいぶん中身を忘れてきているので、復習がてら Diffie-Hellman 鍵交換 についてまとめてみたいと思います。

鍵配送問題について

Diffie-Hellman 鍵交換について語るには、まず鍵配送問題について話しておく必要があります。

暗号は 2 つに大別できます。
その 1 つは対象暗号です。対象暗号では暗号化と復号化に同じ鍵を使用します。つまり、送信者 (平文を暗号化して受信者へ暗号を送信する人) と受信者 (送信者から受信した暗号を復号化して平文を得る人) は同じ鍵を所有する必要があります。 強固な暗号化アルゴリズムを用いて最強の暗号を用意することができれば、たとえ盗聴者に暗号を盗聴されたとしても、それを解読される心配はないでしょう。しかし、ここで問題となるのは、送信者が暗号化に用いた鍵を受信者に渡さなければいけないということです。いかに最強の暗号でも鍵を盗聴されてしまえば意味がありません。では鍵も暗号化すればよいでしょうか。…そしたら鍵を暗号化する際に使用した鍵はどうやって渡すのでしょうか。

というように鍵の配送にはこのようなジレンマがつきまといます。それを解決する手段の 1 つが、2 つ目の暗号である非対称暗号です。以前にブログで取り上げた公開鍵暗号 (RSA) がそれにあたり、この暗号の発明のおかげで鍵配送問題は解決されましたが、詳細は割愛します。 代わりに今回は別の鍵配送問題の解決法についてお話します。

f:id:quanon:20150520205751p:plain にこちゃんに鍵を盗まれない (鍵の内容を盗聴されない) ようにするにはどうしたら!?

Diffie-Hellman 鍵交換

ここで登場するのが Diffie-Hellman 鍵交換 です。

Diffie-Hellman 鍵交換では鍵の代わりに以下の 4 つの数を交換します。

  1. P : 非常に大きな素数
    • 送信者が受信者に送ります。
  2. G : P の原始根 (生成元)
    • 送信者が受信者に送ります。
    • 原始根については後述します。
  3. GA mod P
    • A は送信者が用意した乱数 (1 以上 P-2 以下) です。この A は秘密にしなければなりません。
  4. GB mod P
    • B は受信者が用意した乱数 (1 以上 P-2 以下) です。この B は秘密にしなければなりません。

これらの 4 つの数は盗聴者に盗聴されても構いません。秘密にしておかなくてはならないのは A, B のみです。 なんとこのように特定の数を公開するだけで 2 人だけの秘密の鍵を共有する (鍵を生成する) ことができるのです!

f:id:quanon:20150520211812p:plain

次に送信者と受信者はそれぞれ、これら 4 つの数をもとに鍵を生成します。

送信者は受信者から受け取った GB mod P と自身が持っている秘密の乱数 A を元に以下の数を計算します。

(GB mod P)A mod P = (G mod P)A×B

受信者は、送信者から受け取った GA mod P と自身が持っている秘密の乱数 B を元に以下の数を計算します。

(GA mod P)B mod P = (G mod P)B×A

送信者と受信者が計算したそれぞれの値は同じ値となるはずです。

僕は (GB mod P)A mod P = (G mod P)A×B となる理由が理解できていません (書中でさらっと流されている) 。なぜこの法則がなりたつのか、参考になる資料があればご教示ください orz

原始根とは

原始根の定義は以下のとおりです。

素数 p と 1 以上 p 未満の整数 r が以下の性質を満たすとき r を法 p に対する原始根と呼ぶ。
「r, r2, ⋯, rp−2 のいずれもが p で割って余り 1 でない。」

うーん、よく分からんので具体例を挙げてみます。

P = 5 として GA mod P を計算すると、結果は以下のようになります。

G\A 1 2 3 4
1 1 1 1 1
2 2 4 3 1
3 3 4 2 1
4 4 1 4 1

この表の G = 2, 3 の行に注目して下さい。これらの行は各列の値がすべて異なります。 この 2, 3 が法 5 に対する原始根です。原始根のべき乗は 1 〜 P-1 の値に 1 対 1 で対応しているわけです。

なぜ Diffie-Hellman 鍵交換が安全なのか

これは有限上の離散対数問題を解くことの難しさを利用しています。これは G, P が判明していても GA mod P から A を、あるいは GB mod P から B を算出することが困難ということです。 そのため A, B さえ秘密にしておけば、G, P, GA mod P, GB mod P は公開しても問題ありません。

実際にやってみた

Ruby を使って実際に Diffie-Hellman 鍵交換を再現してみました。

(1) 送信者が P と G を決定して受信者に送る

まずは任意の素数 P を決定します。本当は十分に大きい素数である必要がありますが、今回は計算の都合上小さい数を選択します。

P = 499

次に法 P に対する原始根 G を求めます。 これを算出するための具体的な法則を僕は知らないので、プログラムを使って強引に求めます。

# 整数 n を法とする原始根を求める。
def calcurate_primitive_roots(n)
  range = (1..n-1)

  range.select do |g|
    # g が法 n に対する原始根ならば計算結果は重複しない。
    range.map { |a| g ** a % n }.uniq.length == range.to_a.length
  end
end

# 複数の原始根の中から 1 つをランダムに選ぶ。
G = calcurate_primitive_roots(P).sample #=> 86

これで P, G が決定しました。これらの値は受信者に公開します。

(2) 送信者が A を決定する

A = rand(1..P-2) #=> 173

これで A が決定しました。この値は秘密にしておきます。

(3) 受信者が B を決定する

B = rand(1..P-2) #=> 354

これで B が決定しました。この値は秘密にしておきます。

(4) 送信者が受信者に GA mod P を送る

G ** A % P #=> 398

(5) 受信者が送信者に GB mod P を送る

G ** B % P #=> 406

(6) 送信者が鍵を計算する

406 ** A % P #=> 447

(7) 受信者が鍵を計算する

398 ** B % P #=> 447

これで盗聴者に盗聴されることなく、共通の鍵 447 を得られました。

感想

公開鍵暗号 (RSA) と同様に、とてもシンプルなアルゴリズムで実現できるのは不思議ですね。RSA素因数分解問題、Diffie-Hellman 鍵交換は離散対数問題という数学上の困難さをうまく暗号技術に応用している点が非常に面白いなと思いました。