トリップについて

# やあ！
極み（◆KiwaminANY）です。
これを見ているということはおそらく人狼Online関連のどこかから飛んできたのだと思いますので、軽く自己紹介をば。
※折りたたんであるので読みたくない方は飛ばしてくださいませ。
<details><summary>自己紹介</summary>

- 名前　極み（きわみ）
- 年齢　16歳（高2）　※2023年度の情報です
- 人狼Onlineにおける世代　11世代
- とくいなこと・できること　トリップ検索、軽いプログラミング、デザインなどなど…
</details>

# 訂正
<details><summary>訂正内容</summary>


この記事内で紹介している`#Password`、`#Passward`に付随するトリップはすべてそれぞれ
`#password`、`#passward`のものでした。しかし、
- 記事内容に直接関係あるわけではない
- トリップシステムは各サービスによって異なる
- 変更めんどい

などの理由により差し替え、変更等は行いません。以後気を付けます。

</details>

# 導入
トリップとはなんぞや？ということでここに飛んできたのだと思いますが、トリップと言うものを完全に理解しようとすると暗号やプログラミングに関するかなり複雑な知識が必要になってきますので、ここではそのような細かい説明は省きます。
代わりに、次のような図を用意しました。
![AAA.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3294101/1fa36723-829f-5ed9-989a-34e97658da3b.png)
**トリップにしてくれる箱くん**です。
こいつは優れもので、
- #がついた任意の文字数の文字列を
- 必ず10桁の[^1]
- ランダムな英数字に

変換してくれます。
実際に試してみましょう。
![アセット 9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3294101/355f6968-6bb3-3820-61db-a4e65f767a24.png)

`#Password`という文字列が`◆ozOtJW9BFA`という文字列に変換されました。
**すごいですねっ！**

※このときの`#Password`を**トリップキー**、`◆ozOtJW9BFA`を**トリップ**[^2]と言います。
のちのちめちゃくちゃ出てくるので覚えてください。（強制）
[^1]:キーの文字数などによって12桁になる場合もありますがここでは10桁になるとして扱います。詳しくは用語集参照。
[^2]:「固定トリップ」と呼んだほうが良いのですが、説明の都合上略しています。

# トリップって何に役立つん？
さて、ではこのトリップと言うものが何に役立つのかを考えてみましょう。
皆さん、人狼Onlineで「なりすまし」というものを見たことがありませんか？
なりすましとは簡単に言えば、有名PLの名前を騙って、荒らし行為をすることです。
人狼Onlineは各プレイヤーが入村時に**任意に名前を決められる**ので、こういったことが可能になってしまいます。
これを完全に防ぐためにはidとパスワードによる認証制度を導入し、各々の名前を固定化してしまうほかありません。
ただこのidとパスワードによる認証機能は様々な弊害を生みます（登録の面倒さ、別名人狼がしづらくなるなど）。
**そこで登場するのが、トリップなのです。**
実は、人狼Onlineというサイトにはこの**トリップにしてくれる箱くん**が備わっています。

# 一方向性（≒不可逆性）
一方向性だなんて難しいことを書きましたが、簡単に説明するとこんなことです。
`aからbは導き出せるがbからaは導き出せない`
要は、**元に戻せないこと**を指します。（一方通行と表現する方もいます）
※以下例を挙げておきますので暇な方は読むと理解が深まるかもしれません。
<details><summary>例</summary>

例えば、`おにぎりたべたい`という文字列があったとして、これを仲のいい人にしかわからない形に変換したいとします。
こういったとき、例えば**1文字目と8文字目、4文字目と5文字目を交換する**というルールを定めておき、仲のいい人にだけ知らせておきます。
`おにぎりたべたい`をこのルールに従って変換すると
`いにぎたりべたお`となります。
この文字列をほかの人が受けとっても全く意味が分かりませんが、仲のいい人が受け取った場合はルールを知っているため、
**1文字目と8文字目、4文字目と5文字目を交換する**という手順を踏むと
`おにぎりたべたい`に戻すことができます。このように、ある**一定のルール**にのっとって**元に戻せる形で**文字列などを変換することを**可逆暗号化**といいます。

しかし、変換するルールを**1文字目、4文字目、5文字目、8文字目を削除する**というものにしてみるとどうでしょうか。
これに従って`おにぎりたべたい`を変換すると
`にぎべた`になります。
この場合、たとえ**1文字目、4文字目、5文字目、8文字目を削除する**というルールを知っていたとしても
'おにぎりたべたい`に戻すことは不可能だといえます。
なぜなら、1文字目、4文字目、5文字目、8文字目に入る可能性のある文字はたくさんあり、その組み合わせを人力で求めることはほぼ不可能だからです。
このように、ある**一定のルール**にのっとって**元に戻せない形で**文字列などを変換することを**不可逆暗号化**といいます。
一方向性（≒不可逆性）とはこの**元に戻せない**性質を指します。

</details>

さて、話をトリップに戻しますが、トリップはこの不可逆性を利用している機構です。
下の図をみてください。
![アセット 11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3294101/df0e093e-a976-49f2-4f6d-920bed13d3da.png)
またまた**トリップにしてくれる箱くん**がいますね。
先ほど変換した`#Password`は正常に`◆ozOtJW9BFA`に変換されていますが、たった一文字変えた`#Passward`は似てもいない`◆4kNJblDpUo`に変換されてしまっています。
つまり、別に`P`に対応する文字があるとかそういうわけではなく、**トリップにしてくれる箱くん**は完全にランダムで変換しているというわけです。だから、`◆ozOtJW9BFA`を`#Password`に戻すことは不可能だと言えます。
ただし、ランダムだからと言って毎回適当に変換しているわけではありません。`#Password`を何回箱くんに通しても必ず箱くんは`◆ozOtJW9BFA`に変換してくれます。
**優秀ですねっ！**

# トリップと身分証明
さてさて、ついに実際にトリップが何に使われるのかを解説する時が来ました。
先に答えを言ってしまうと、トリップは**身分証明**（本人であることの証明）に使われます。
人狼Onlineでは、入村時に名前を任意に設定できるのでなりすましが簡単に行えます。
しかし、トリップを使う場合は別です。
例えばAさんというプレイヤーがいたとしましょう。Aさんはさきほどの`#Password`というトリップキーを使って入村したため`◆ozOtJW9BFA`というトリップがついています。
次に、Bさんというプレイヤーがいたとしましょう。BさんはAさんになりすまして荒らしをしようとする**悪い人**です。BさんはAさんに`◆ozOtJW9BFA`というトリップを使っていることは知っていますが、Aさん本人ではないのでそのトリップがのトリップキーが`#Password`だということを知りません。なので、Aさんになりすますときは自分で適当に打ったトリップキーで入村します。
さて、BさんがあるときAさんになりすまして村に入りましたが、すぐに偽物だとバレました。それはなぜでしょう？
正解は、**トリップが違うから**です。
ほかの入村者はBさんが入村してきたとき、名前はAさんでもトリップが違うためすぐに偽物だと分かりました。
それもそのはず、BさんはAさんが使っているトリップキーを知らないため、Aさんのトリップまで再現することはできないのです。（下図参照）
![アセット 12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3294101/24d4c5f9-cd44-9c68-bdc2-574429e661d3.png)
Aさんのトリップキーである`#Password`はAさんしか知らないため、`◆ozOtJW9BFA`をたとえBさんが知っていたとしても**トリップは元に戻せない**のでトリップまで同じにすることはできません。
だから、`◆ozOtJW9BFA`がついていれば、Aさんであると証明することができるのです。

# おわりに
**※訂正アリ→**[訂正内容](https://qiita.com/KiwamiTrip/items/863baf9e82064603c22d#%E8%A8%82%E6%AD%A3)

長々と書きましたが、結局は
- トリップは身分証明のために使うもの
- トリップからトリップキーを導き出すことはできない

この二点が大事です。
この記事はあくまでトリップの機能を簡潔に説明しただけですので、いわゆる「トリップ検索」や「特殊トリップ」についてはまた別でまとめたいと思います。
最後まで読んでいただきありがとうございました。
トリップのつけ方はこちら↓

https://qiita.com/KiwamiTrip/items/565c8882ca026e347900

もっとトリップについて知りたい方はこちらっ！↓

https://qiita.com/KiwamiTrip/items/10cdf41ddd2bcafac7f8