2019年02月16日

VRChatでフルトラッキングするときの覚え書き

VRChatでフルトラッキングするときの覚え書き
・キャリブレーション時にTポーズする必要はなく、腰と足さえ合わせれば良い
・腰のトラッカーだけものすごく飛びやすい(隠れやすい)ので
 ベースステーションの高さを下げて(目線の下くらい)角度を浅くしておくと飛びにくくなる気がする
・腰トラはベルト直結ではなく、オフセットをもたせて上向きに付けたほうが安全そう
 (コントローラの形状を考慮するに)
・腰トラは腰の後ろにつけると飛びにくい。前かがみになることが理由と思われる。

2019/02/17追記
Discordでいろいろ話した結果、たとえオフセットをもたせてもトラッカーの背面の
センサーを塞いでしまうと、反応が悪くなり、更にそこに赤外線反射波が飛び込むとまずいのだろうということで、
トラッキング範囲外に収まる固定方法として以下のを試した。
紙コップである。
kamitora2.png

結果、3時間半VRChatに入りっぱなしでも一度も腰が飛ばなくなった。
腰の前につけても、ベースステーションの高さが普通でも問題なくなった。
posted by gpsnmeajp at 19:24| Comment(0) | TrackBack(0) | 雑感

2018年10月11日

[ポエム]VR空間にも「スマートフォン」が欲しい

VR空間にも「スマートフォン」が欲しい。
この「スマートフォン」というのは、いわゆる現実のスマホそのものではなく、概念的なものである。
どういうことか。

皆さんは、電車内で暇な時や、他人と話している最中にふと思った調べたいことが現れた時、
あるいは、他人が作業し終わるのを待っていて手持ち無沙汰な時、何を取り出すだろうか。
大体の人はスマートフォンを取り出すと思う。

では、VR空間ではどうだろうか。VRゲームの最中なんかには暇はないが、
例えばVRChatなどでのロード待ちや、ふと他の人を待つ時、オンラインゲームでのロビーなど。
あるいは会話していて知らない単語が出てきた時。

一応、スマホ的なものは使える。
例えば(私はHTC Viveを使っているので)Steamメニューのブラウザが使える。
が、これだと、言ってしまえば新聞を目一杯目の前に広げるようなもので、会話中や
周囲の様子を見ながら使うものではない。あと操作が大変。

OVRDropという手もある。これはVR空間内にデスクトップのウィンドウを浮かべることができる。
...が、常に視界に、あるいは空間内に存在する。あと操作しにくい。

あと一つは、HMDの隙間から実際のスマートフォンを見ることだ。アホらしいが一番便利。

逆に言えば、「必要な時に取り出せる」「視界のじゃまにならない」「操作しやすい」を兼ね備えるものが中々ない。

VR空間で、どんなゲームでも使えるスマートフォン的なものを実現しようとすると以下のものが必要になる。
・コンテンツ
・表示装置
・入力装置

コンテンツは一番単純で、こう言うと何だがブラウザを乗せれば良い。
近代的なブラウザエンジンを乗せれば、HTML5とJavaScriptで概ねのことはできる。

表示装置は、とりあえずSteamVRならばOpenVR Overlayを使えば、どんなゲームでも関係なく
視界の一番手前に追加表示してくれる。

問題は入力装置だ。
スマートフォンの快適な操作性をサポートしているのは直感的なタッチパネルである。

現在のVRには2つ問題がある。
1つは、入力装置としての快適性である。
現在のVR入力機器は、手の大まかな位置を取得するにとどまっており、指の位置を細かく検出するのには向いていない。
主に親指をベースに細かい操作をするスマートフォンの再現は難しい。
ただし、タッチパッドやスティックを使って多少ゲーム的 or ガラケー的に操作することは可能かもしれない。

もう一つの、そして一番の問題点は、VR入力装置はゲームと切り離せないことである。
VRコントローラ、トラッカー、(あとキーボード、マウス、ゲームコントローラー)は、VRゲームに干渉する。
これリダイレクトして、拡張ソフトウェアでのみ扱えるようにする手段は
(かなり無理やりなものを除いて)存在しない。

スマートフォンを触っていたと思ったら歩いていた、とか、椅子に座らされていたとか、
そういった体験は現実ではありえないが、VR空間だと容易に起こりうる。

正直、この入力装置を解決すれば、簡単に実現できそうだと思っている。
誰かやってくれないかなぁ...
posted by gpsnmeajp at 20:45| Comment(0) | TrackBack(0) | 雑感

2018年09月09日

VRツール一覧まとめwiki(VR Tool Wiki)の立ち上げとVRについての所感

先日、VRツール一覧まとめwiki(VR Tool Wiki)を立ち上げました。
withurl.png
http://pc-vr.game-info.wiki/

立ち上げた主な理由は、VR関係の情報が分散していて探しにくいと感じたことからです。

VRChatにハマり、30万円掛けてVR機材を購入して遊んでいますが、VRChatに四六時中居たいかと言われるとそうではありません。ではVRChatをプレイしないときには30万円のVR機材を遊ばせておくのかと言われれば、それはあまりにももったいないでしょう。

私はVRのゲームには興味がなく(部屋が狭いのでプレイしにくいので)VRChat以外にはBeat Saberくらいしかやりません。しかしVRの環境そのものには大きな興味があります。

そもそもVRChat自体が、ゲームと言うよりは(あえて悪い言い方をすれば)MMORPGに音声チャットをつけ、キャラクターを3Dにして身振り手振りを連動させることができるようになったソフトのようなもので、ゲーム性はあまりありません。(ワールドによってはゲームのようなものを作っている人は居ますが)

ソーシャルVRと呼ばれる分野はどれもそうで、基本会話と身振り手振り、ゲームはあっても強い目的を持ったゲームではなく、わちゃわちゃできるミニゲーム的なものです。ゲームは主体ではなく人間同士のふれあいが主目的なのです。

「VRといえばゲーム・映像」「一時的に楽しむもので、終わったら外すもの」これはスマホVRなど顕著で、PCのVRでも概ねその扱いを受けます。しかし、ソーシャルVRは「VRをある種の生活空間として扱う」ため、一度入るとVR機器はつけっぱなしになります。私はVRはこの方向に将来性があると感じています。そうすると、必然的にVRゲームでは気にならなかった不便な点が見えてきます。

例えば、VR空間内で時間を把握するのが難しいこと、スマホの通知やPCの通知から切り離されること、現実では普通に使うブラウザが使いにくいこと。

VRアプリケーションを、いつでも中断できる一時的な場として考えているなら、それ用のアプリケーションに(スマホアプリのように)切り替えれば済むことですが、ソーシャルな交流の最中にそれはできません。
同じことを思う人はたくさんいるはずで、そのためのツールも存在します。が、それを見つけるのがえらく大変。VRに関しては何を探してもVRゲームばかりが全面に出てきてしまう。スマホVRも流行しており、PCのVRを探そうとするとまた邪魔になってしまう。

VR空間でモデリングするツールも、オーバーレイツールも、ソーシャルVRも、どこにもまとまっていない。あるとすればSteamですがあそこも探しやすいとは言えない。

そこで、いっそ必要そうな情報を全部まとめる場がほしい、と考えてwikiを立ち上げました。

ソーシャルVR、VRソフトウェア、VR創作ツール、VR補助ツール、VRアニメ、VRゲーム(PC)、VRM対応ソフトウェア、VRM対応販売アバター、と細かく分けているのは、様々な情報を探しやすくするためです。
現在日本のVR界隈はtwitterに情報が散乱しすぎています。

せっかく便利なツールやアプリケーションを作っても、見つけられることがなければ、探されることがなければ使われません。ゲームならば面白ければ広がりますが、ツールやアプリケーションはそうではありません。

そこで「ここを見れば便利なツールがいっぱい乗ってるよ」といわれるような場を目指しています。

VRChatが全盛の日本環境では、需要はあまり高くないかも知れません。しかしVRChatの情報も正直分散している上に、信頼性の高くない情報も混じっています。そこで、ある意味では客集めに、ある意味では自分がほしいから、VRChatの情報もまとめることにしました。

既存のwikiにある情報を取り込んでも仕方ないので、既存のwikiにない情報をカバーし、他サイトにある情報はリンクで繋いでいます。

以上、ご利用いただけると幸いです。
posted by gpsnmeajp at 15:16| Comment(0) | TrackBack(0) | 雑感

2018年07月29日

VRChatパスワード入力式インスタンス移動システム(VRC Password Jumper)

*はじめに
この記事は、以下の記事を前提としています。

VRChat固定インスタンス間移動システム(VRC World Jumper)の設置方法 http://gpsnmeajp.sblo.jp/article/184041906.html

*概要
パスワード認証を実装してみました。

お試し用ワールド
https://vrchat.net/launch?worldId=wrld_30da4670-55de-4633-a2e3-b6d34ab1b5b1

jmpD.png



twitterに載せたところ割と評判が良かったので、差し替え用HTMLを配布します。
(このままページを開くとデモを試すことができます。パスワード=1234)
https://sabowl.sakura.ne.jp/gpsnmeajp/tool/vrcpass.htm

Quadの大きさや、WebPanelの描画の大きさは適時調整してください。
Scale X=1,Y=1と、W=800,H=800で動作確認しています。

*解説
WebPanel上で動作するjavascriptでパスワード認証を行い、照合に成功すると特定のインスタンスにジャンプします。
このインスタンスは、Ownerの居ないInviteOnlyになるため、誰もInviteできません。
つまり、正しいパスワードを入れた人しか入れません。

謎解きワールドなどに使えるかもしれません。
桁数の制限はありません。
他者の入力しているパスワードを見ることはできません。

ところで、パスワードによって飛ぶ先を変えたり、パスワード入れたらQRコード表示されたり、いろいろできます。やってみたいことありましたらコメント等にdiscordかtwitterのIDを添えてでお問い合わせください。

*注意
1. パスワード認証はかなり簡易的なものです。おもちゃとして取り扱ってください。
注意喚起のためあえて突破方法を案内します。
以下の方法で突破することができます。
・ワールド情報のぶっこ抜き→HTML内の閲覧
・ワールドIDを何らかの方法で引っこ抜いてからの直接GotoRoom
・総当たり攻撃
これらに対する対策は可能ですが、外部サーバーが必要になります。

2. この方法はVRChat公式の方法からは外れた方法です。
公式から提供されている機能を利用していますが、未保証な機能です。(理由はページ末へ)
将来的に使用できなくなる可能性があります。

3. この手法を用いたことによる損害等の責任は一切持ちません。

4. WebPanelが何らかの理由で動作不良になっている人は飛べません

5. 一度ワールドから蹴り出されると、戻るためには再びパスワードを入れるしかありません。

*苦労した点
まさかPC上でチャタリング対策を実装するとは思わなかったよね

*応用例
こんなふうに使えるかもしれません。
1. ワールドを作る。
2. ワールドに、このパスワードシステムを設置する。
 そして、このワールドのURLをSNSとか個人サイトに適当に貼る。
 (https://vrchat.net/launch?worldId=wrld_48cf80e6-15dd-4c17-8667-c5dc01baa5cb のように)
3. パスワード知ってる人は、公開されたワールドを経由して、
 「パスワード知ってる人用インスタンス」にいつでも入ることができる。
posted by gpsnmeajp at 20:01| Comment(0) | TrackBack(0) | 雑感

【未検証】人数増えると重くなるVRChatのワールドをお手軽に軽くできそうな方法(カメラのカリング距離)

※根本的に複数インスタンス間を移動できるようにしてしまうという手もあります。こちらもどうぞ。
VRChat固定インスタンス間移動システム(VRC World Jumper)の設置方法
http://gpsnmeajp.sblo.jp/article/184041906.html

*はじめに
VRChatって、人数集まるとかなり重くなりますよね。
それって多分、遠くにプレーヤーが居ても消えないからんじゃないかな、と勝手に思っていました。

たまたまVRChat技術メモ帳を見に行ったら気になる項目が更新されていました。
https://vrcworld.wiki.fc2.com/wiki/VRC_SceneDescriptor

「カリングの範囲はこのカメラの設定が適用される。Nearを最小にすれば、普段より近づいてもカリングされなくなる。
https://twitter.com/gatosyocora/status/1023400101933248512
カリング(余計なものを描画しない処理)の距離が変更できるらしいです。

Near、つまり近づきすぎたときに消える処理をいじると、ガチ恋距離ができるという。
では、Farはどうなってるのかなと思ったら「1000m」でした。そりゃ離れても消えませんわ。
(天空高くや、地下深くなど、別の部屋を遠くに作ると軽くなると言われる原因はこれかと思います。)
なお、声は350m離れると聞こえなくなります。

というわけで、カメラのカリング距離を変更して、遠くにいるプレーヤーが見えないようになれば、人数増えてもあまり重くならないんじゃないかなと思いました。
代償として、遠くの壁や物品も見えなくなりますが...

また、同期周期もデフォでは最小値の33msを大きく下回る10msになっているらしいので、これも大きくすると重さが改善されそうです。
※最新のSDK(VRCSDK-2018.06.21.13.02_Public.unitypackage)ではこの問題は修正されており、デフォルトで33msに設定されています。
https://docs.vrchat.com/docs/vrchat-201822

*設定方法
クリックで拡大
light0.png

*カリング距離の適用結果
light1.png
posted by gpsnmeajp at 14:34| Comment(0) | TrackBack(0) | 雑感

2018年06月09日

VRChatワールド用の簡単なギミック集

VRChatワールド用の簡単なギミックを画像で解説します。
基本的に画像のとおりに作ればできるはずです。

画像はクリックすると拡大できます

・アバター台以外でアバターを変更するオブジェクトを作る
VT (5).PNG

・持ち上げたり落としたりすると音のなるオブジェクト
VT (6).PNG

・持ち運んで接触させると消滅する扉と鍵
VT (7).PNG

・音楽を持ち歩こう(持ち歩くと音楽が流れて、置くと音楽が止まるオブジェクト)
VT (1).PNG

posted by gpsnmeajp at 18:05| Comment(0) | TrackBack(0) | 雑感

2018年06月07日

VRChatのワールドに音楽などAudioSourceを追加すると不協和音・ふにゃふにゃする場合の対処(ドップラー効果をオフにする)

VRChatのワールドに音楽などAudioSourceを追加すると不協和音・ふにゃふにゃする場合の対処。
といっても、Unityのドップラー効果をオフにするだけです。

Unityを普段から触ってる人だとすぐわかるんだろうな...
AutdioFix.png
クリックしてフルサイズで閲覧
posted by gpsnmeajp at 21:03| Comment(0) | TrackBack(0) | 雑感

2018年06月03日

VRChatが重い場合の対処法(画質を下げる)

VRChatが重くて仕方ない場合の対処法について

VRChatは重くなると、画面がガクガクしてくる以上に、会話がままならなくなることがあります。
(特にVRにおいては、SteamVRのローディング画面が頻繁に現れ始める)

・VRChat内での対処
1. 軽いワールドに行く
2. 他の人に軽いアバターにしてもらう
3. 一定人数以上の場所に行くのを諦める

・デスクトップの場合
1. 画面を小さくして、解像度を下げる
2. Shiftキーを押しながら起動して、解像度を下げつつフルスクリーンにする
3. ビデオカードのドライバ設定から、軽い設定を強制するようにしてみる

・VRの場合
1. Shiftキーを押しながら起動して、VR Lowを選択してみる
2. HTC Viveの設定から「Application Resolution Adjustment」を下げてみる。
 (HMDに映る映像の解像度が非常に下がります)
B1.png

これでだめなとき、不満なときはPCを買い替えましょう。

VRChatは、
・ユーザーの作った最適化されていないアバター
・ユーザーの作った最適化されていないワールド
・開発途中のソフトウェア
のくみあわせのため、通常のVRゲーム等に比べてかなり重い作品です。
人数とアバター、ワールドの組み合わせによって快適不快が全く変わります。

人数の少ないワールドならGTX970Mでも快適に動きますし、
人数の多いワールドならGTX1070Tiでも重さを感じます。(1070Tiでは会話不能になったことはありません)
posted by gpsnmeajp at 23:36| Comment(0) | TrackBack(0) | 雑感

VRChatのワールドにゴミ箱と一斉消去装置をつける

概要


VRChatのワールドに、無限にObjectをSpawnさせられる物を置くと、
だいたい人が集まったときに大変なことになります。

ので、ゴミ箱がほしい、と思ってもなかなかうまく行かない。
思い込みもあって大変だったので、スクショ載せつつ軽く説明をメモ代わりに置きます。

参考にしたサイト


↓私はこのページからワールド作成に入りました。
【VRChat】オリジナルワールドを作る【Unity】 - トマシープが学ぶ
http://bibinbaleo.hatenablog.com/entry/2017/11/24/183801

ワールド作成入門 - VRChat 技術メモ帳
https://vrcworld.wiki.fc2.com/wiki/%E3%83%AF%E3%83%BC%E3%83%AB%E3%83%89%E4%BD%9C%E6%88%90%E5%85%A5%E9%96%80

↓込み入った機能をつけるときはログ大事。他の人のワールドの仕組みを推測するのにも使える。
デバッグに使える技術 - VRChat 技術メモ帳
https://vrcworld.wiki.fc2.com/wiki/%E3%83%87%E3%83%90%E3%83%83%E3%82%B0%E3%81%AB%E4%BD%BF%E3%81%88%E3%82%8B%E6%8A%80%E8%A1%93

↓今回やることはほぼほぼこれ
DestroyObject - VRChat 技術メモ帳
https://vrcworld.wiki.fc2.com/wiki/DestroyObject

参考にさせていただいたワールド
kemomimi town

要点だけ


・消されたい方の量産されるObjectの設定
ワールド内にある各「消えてほしいオブジェクト」のPrefab
fab2.png

DestroyObjectを、誰に、どのタイミングで発動させるか、が大切。
(そもそも持ち上げたり同期させたりするためにVRC_PickupとかVRC_Object Syncが必要なのはわかってると思うので説明しない)
クリックしてフルサイズで閲覧
A1.png

・ゴミ箱Objectの設定(消したいものをぶつけると消えるやつ)
「ゴミ箱にしたいObject」(例ではCube)
abc.png

今回はついでに、一斉消去装置起動ボタンとしている
クリックしてフルサイズで閲覧
A2.png

・一斉消去装置
「巨大なCube」のPrefab
fab1.png

いうなれば巨大ゴミ箱である。
その巨大さを持って、対象のOnEnterTriggerを一斉に発火させる。
消去し終わった頃合いを見計らって自分自身も消える。
これが存在している限り、生成される片っ端から対象Objectが消滅する
クリックしてフルサイズで閲覧
A3_1.png

以上
posted by gpsnmeajp at 16:43| Comment(0) | TrackBack(0) | 雑感

2018年05月14日

VRChat配布アバター 72Polygons配布ページ

vr0.png

某ブロック積み上げゲーム用に作ったスキンデータをVRChatでも使いたくて、
拙いですが、それ風の3Dモデルを一から作りました。

あくまでスキンデータを貼り付けるだけの3Dモデルなので、72ポリゴンしか使わない超軽量な3Dモデルになりました。
割と評判が良かったので、簡単に使えるよう各種設定済みのUnityPackageとして配布します。

自作のスキンデータをお持ちの方は、拡大して差し替えるだけで使えるようになります。
オリジナルのモデルでVRChatに参加する楽しさを味わってください。
※かなり古い時代のスキンデータをベースとしています。アクセサリなどは反映されないのでご注意ください。(β時代やSteve仕様)

注意: 自作ではないスキンデータの使用はおすすめしません。フリー配布のものでもVRChatで利用することは想定されていない場合があります。利用規約を確認したり、製作者に問い合わせるなどして権利的に問題ない状態にしてから利用してください。

当方ではこのモデルのテクスチャを張り替えたことによる権利侵害などに対する責任は一切負いません。


本モデルおよびUnityPackageのライセンスについて


1. https://sabowl.sakura.ne.jp/gpsnmeajp/72Polygons.unitypackage
2.base-scale.png
3.base.png

上記3つのデータは、そのあまりの単純さに基づき、CC0において利用を許諾します。

CC0


CC0についての引用を以下に示します。
原文: https://creativecommons.org/publicdomain/zero/1.0/legalcode.ja
世界の大部分の法域の法律は、新規の著作物および(または)データベース(以下、それぞれを「作品」という。)の創作者およびその承継人(以下、あわせて「権利者」という。)に対して、独占的な著作権および関連する権利(定義は後述する。)を自動的に与えている。

権利者の中には、創作的、文化的、科学的作品の共有地(以下「コモンズ」という。)に貢献する目的で、作品についての自己の権利を恒久的に放棄することを望む者がいる。コモンズでは、一般の人々が、確実に、かつ後発的な侵害の主張をおそれることなく、そのような作品をベースに使い、改変し、他の作品に取り込み、再利用し、再配布することができる。これらの行為は、どのような態様によっても、商業目的を含むどのような目的でも、可能な限り自由に行うことができる。

このような権利者は、フリー・カルチャーの理念を普及させ、創造的、文化的、科学的作品のさらなる創造を促すことでコモンズへ貢献することができる。あるいはまた、他人による利用や他人の活動を通じて、自己の作品の評価の獲得や、自己の作品のさらなる流通を実現するために、コモンズへ貢献することができる。

上記ならびに(または)その他の目的および動機のために、作品にCC0を付する者(以下「確約者」という。)は、追加の対価または補償を一切求めることなく、確約者が本作品の著作権および関連する権利の権利者である限り、すすんで本作品にCC0を適用し、CC0の規程に従って、自らの作品を公に配布する。この行為は、確約者が、本作品について確約者が所有している著作権および関連する権利、CC0の意味、およびCC0がこれらの権利に及ぼす法的効果を理解したうえで行われる。

1.著作権および関連する権利 CC0の下で利用可能とされる作品は、著作権、および関連しまたは隣接する権利(本規程において「著作権および関連する権利」という。)によって保護されている場合がある。著作権および関連する権利には以下に掲げるものを含むが、これに限られない。

作品を複製し、改変・翻案し、配布し、上演・演奏し、展示し、提供し、および翻訳する権利
著作者および(または)実演家が保有する人格的権利
作品中に表現される人物の画像または肖像に関するパブリシティ権およびプライバシー権
作品に関連して行われる不正競争を防止する権利(ただし、4(a)に基づく制限の対象となる)
作品に含まれるデータを抽出し、拡布し、利用し、および再利用する権利
データベースの権利(たとえば「データベースの法的保護に関する指令」(1996年3月11日の、欧州議会および欧州委員会による、96/9/EC指令)、およびその指令のあらゆる国レベルでの履行により生じる権利をいい、そのような指令のあらゆる改正版および後継版により生じる権利を含むものとする。)、および、
その他、世界中で、適用される法令または条約、および、それらのあらゆる国内履行に基づいて生じる、上記各権利に類似し、同等の、または対応する権利。
2.権利放棄 確約者は、適用される法令に基づいて許容され、かつこれに反しない最大限の範囲で、明示的に、完全に、恒久的に、取消不能および無条件の形で、現に知られているか否かにかかわらず、確約者の本作品の著作権および関連する権利、ならびに関連する請求および請求原因(現在および将来の請求および請求原因を含む。)を放棄し、または主張しない(以下、あわせて「権利放棄」という。)。その権利放棄は、(1)世界中のあらゆる地域で、(2)適用される法令または条約により与えられる最大限の期間(将来の期間延長を含む。)について、(3)現在または将来のあらゆる媒体について、かつ複製回数を問わず、(4)商用、広告、または宣伝目的を含むあらゆる利用目的について行うものとする。確約者は、公衆に属するあらゆる者の利益のために、確約者の相続人および承継人に不利益が及ぶ形であっても、権利放棄を行う。この権利放棄は、「目的の説明」において述べたような公衆による本作品の平穏な享受を害するような撤回、取消、解約、解除その他実体法上または衡平法上の訴えの対象としないことをまさに意図して行うものである。

3.パブリックライセンスによる補完 権利放棄のいずれかの部分について、その理由の如何にかかわらず、適用される法令の下で無効であり、または効力が生じないものと司法上の判断がされたときは、権利放棄の効果は、確約者による「目的の説明」の表明内容を考慮して許容される最大限の範囲で維持される。さらに、確約者は、無効・不効力により影響を受ける人に対し、権利放棄が前記のとおり判断された範囲内において、無償、譲渡不可、再許諾不可、非独占、取消不能および無条件の形で、確約者が本作品について有する著作権および関連する権利の利用を許諾する(以下「利用許諾」という。)。この利用許諾は、(1)世界中のすべての地域で、(2)適用される法令または条約により与えられる最大限の期間(将来の期間延長を含む。)について、(3)現在または将来のあらゆる媒体について、かつ複製回数を問わず、(4)商用、広告、または宣伝目的を含むあらゆる利用目的について行うものとする。その利用許諾は、確約者によって作品にCC0が適用された日から効力が生じたものとみなす。利用許諾のいずれかの部分について、その理由の如何にかかわらず、適用される法令上無効であり、または効力が生じないものと司法上の判断がされたときは、その部分的な無効または効力の不存在は、それ以外の利用許諾を無効化しない。かかる場合において確約者は、(1)本作品についての手元にある著作権および関連する権利を行使しないこと、または(2)本作品に関連するあらゆる請求をせず、および請求原因を主張しないものとし、いずれの場合も確約者が明示的に述べられた「目的の説明」に反する行為をしないことを確約する。

4.制限と免責

確約者が有する一切の商標権または特許権は、この文書によっては放棄されず、他人に譲渡されず、委任されず、または許諾されず、その他の影響を受けることもない。
確約者は本作品を現状のまま提供し、明示であるか黙示であるかを問わず、法令の定めその他の根拠の如何にかかわらず、本作品に関するいかなる表明も保証も提供しない。提供しない表明や保証には、権原の存在、商品性、特定の利用目的への適合性、権利侵害または潜在的な瑕疵その他の欠陥の不存在、正確性、誤りの有無についての表明や保証が含まれるが、これらに限られないものとし、発見可能性の有無を問わず、いずれも適用される法令の下で認められる最大限の範囲とする。
確約者は、本作品、または本作品のあらゆる利用に関連して適用される、他人のすべての権利(あらゆる者の著作権および関連する権利を含み、かつこれに限られない。)について、その処理を行う責任を負わない。さらに確約者は、どのようなものであれ本作品の何らかの態様による利用のために必要な同意、許諾、またはその他の権利を取得する責任を負わない。
確約者は、クリエイティブ・コモンズが本文書の当事者ではなく、このCC0または本作品の利用に関連するいかなる義務または責任を負わないことを理解し、同意する。


よって、製作者は権利の主張および行使を行いません。
・使用者は製作者の情報を明記する必要はありません。
・商用利用などのいかなる用途にも製作者は制限を行いません。
・自作発言、再配布、パーツの流用等も含めて製作者に断り無く自由に行うことができます。
・利用に伴ういかなる責任や賠償を製作者は負いません。
・いかなる法的問題が発生した場合も、利用者が自身の責任で問題の解決を努力する必要があります。

利用者が差し替えるスキンデータやテクスチャの著作権は、その製作者に存在します。
また、本データはMinecraftのキャラクターと類似した形状を持っています。
そのため、Mojang社の商標権その他に基づく以下の制約に注意を払う必要があります。

この制約や権利保護の履行・不履行に関して、製作者は何ら責任を負わず、利用者が責任を負うこととなります。

注意事項


当然ですが、このデータはMinecraft 公式製品ではありません。
Mojang から承認されておらず、Mojang とは関係ありません。


また、当データとMojang社には直接の関係はありませんが、参考としてこちらを熟読してください。
当データ自体も当該ガイドラインに準じて制作を行っています。

Mojang 当社のゲームのブランドおよび資産の使用に関するガイドライン
https://account.mojang.com/terms?ref=ft#brand

非商用利用(通常の場合)は、特に以下の点に注意してください。
・違法、詐欺的、わいせつ、有害、または軽蔑的な行動をとらない。
・Mojang社ブランドまたはMojang社資産に損害または損傷を及ぼす行動をとらない。

また、当モデルデータを商用または収益を上げる目的で使用する場合、
追加で、「商業目的使用に関するガイドライン」をご確認ください。
https://account.mojang.com/terms#commercial


使い方


1. Unity 5.6.3 p1をインストールする。
 ※最新版を入れると必ず失敗するのでこのバージョンを入れる。
 https://unity3d.com/jp/unity/qa/patch-releases/5.6.3p1
 セットアップは解説サイトなどを参考に済ませてください。
 https://mono-pro.net/unity-setup2017
 
2. VRChat公式サイトからSDKをダウンロードする。ログインが必要です。
 https://www.vrchat.net/
vr1.png

vr2.png

3. 72Polygons.unitypackageをダウンロードする
 https://sabowl.sakura.ne.jp/gpsnmeajp/72Polygons.unitypackage

4. これら2つのファイルを、Cドライブ直下にフォルダを作るなどして
 パスの短い場所に置く
 例えば: Cドライブの下に72フォルダを作っておく
vr3.png

4. Unity 3.6.3 p1を起動。

5. NEWで適当なプロジェクトを作る
vr4.png
 
6. 画面上部の「Assets」から「Import Package」、「Custom Package...」をクリック
 ダウンロードした「VRCSDK-(省略).unitypackag」を開く
vr5.png

vr6.png

7. 少し待つと「Import Unity Package」が開くので「Import」をクリック。
 暫く待って「Hold On」画面が消えるのを待つ。(その間操作はできない)
vr7.png

8. 画面上の「Assets」から「Import Package」、「Custom Package...」をクリック
 ダウンロードした「72Polygons.unitypackage」を開く

9. 少し待つと「Import Unity Package」が開くので「Import」をクリック。
 暫く待って「Hold On」画面が消えるのを待つ。(その間操作はできない)

10. dist(モデルの方)をHierarchyエリアにドラッグアンドドロップ。
vr8.png

11. Inspectorから、RotationのYを180に、ScaleをX,Y,Z共に0.6にする。
vr9.png

12. InspectorのAdd Componentをクリック
vr10.png

13. 「Scripts」 → 「VRCSKD2」 → 「VRC_Avatar Descriptor」をクリック
vr12.png

vr13.png

vr14.png

14. 画面上部の「VRChat SDK」から「Settings」をクリック
 画面の指示に従いログインする

vr15.png

15. AccountのCreator Statusをチェックする。
 ここが「Allowed to publish avatars」になっていないとアップロードはできない
 (VRChatをある程度プレイし続けると解除されてメールが来るそうです)

vr16.png

16. 画像を差し替える。
 2048 x 1024のスキンファイル(png形式)を用意する。ドット絵のほうが雰囲気が出るがドットでなくとも良い
 この拡大済みのファイルの市松模様を塗りつぶして作成しても良い。(クリックして原寸)
 base-scale.png
 また、拡大前のドット絵ファイルをここに示す。
 base.png

 すでに作成済みのスキンを使う場合は、画像編集ソフトで拡大すること。
 今回は例としてこのようなファイルを用意したとする。
 up17.png

17. 取り込みたいファイルをUnityのAssetsエリアにドラッグアンドドロップする。
vr18.png

18. Materialsフォルダを開く
vr19.png

19. dist-mat1をクリック

20. Assetsフォルダに戻り、Inspectorの「Main Maps」にある「Albedo」の左の四角に、
 先ほど入れたファイルをドラッグアンドドロップする。
vr20.png

21. 画面上のモデルの画像が差し替わる
vr21.png

22. アップロードをしよう。
 画面上部の「VRChat SDK」から「Show Build Control Panel」をクリック。
vr22.png

23. 「Build & Publish」をクリック
vr23.png

24. 適当な名前をつけて保存する

25. 処理が行われるので少し待つと、Nwe Avatar画面が開く。

26. 名前、説明を入力し、Sharingは「Private」に。
 利用規約に同意するチェック(一番下)にチェックを入れる。
 (もし、Upload Imageにチェックが入っていない場合は、極力入れたほうが成功率が高い)
 Uploadボタンを押す。
vr24.png

27. ここからが長いが、ひたすら待つこと。
 下手に操作したりウィンドウを切り替えると「Processing Upload」で停止することがある。
 (そうなった場合はどうしようもないので、Unityを強制終了する)
vr25.png

28. これで完了です。VRChatを起動しましょう。
vr26.png

29. お疲れさまでした。
vr28.png

vr29.png

参考
〜旅するバーチャルyoutuber〜動く城のフィオ様 の講座、配布形式を多大に参考にさせていただきました。

【♂∩♀17】TwitterアイコンでVRChat用のアバターを作る講座〜バーチャルへの旅のすゝめ参〜
https://www.youtube.com/watch?v=6z7aOWtLlUI&index=0&list=PLbh8BMmmKGWyRT5oOeMeb13PzKk2uFhwR

モデルの作成にはMetasequoiaを使用させていただきました。
posted by gpsnmeajp at 14:53| Comment(0) | TrackBack(0) | 雑感

2017年11月27日

URLを含んだ文にリンクを自動で貼る変換器

URLを含んだ文にリンクを自動で貼る変換器を作りました。

URLを含んだ文にリンクを自動で貼る変換器
https://sabowl.sakura.ne.jp/gpsnmeajp/tool/tolink.htm

↑例えばこういう文を、↓のようになるようにAタグを付加します。

URLを含んだ文にリンクを自動で貼る変換器
https://sabowl.sakura.ne.jp/gpsnmeajp/tool/tolink.htm

完全俺得ツールですが、必要になるときってありません?
例えば、勝手にリンク張ってくれる系のサイトから、張ってくれない系のサイトに移動するときとか。
posted by gpsnmeajp at 00:02| Comment(0) | TrackBack(0) | 雑感

2017年11月26日

Yubikeyをオフラインで使う方法を考えてみる

さて、先の記事では長々と公式サイトを見ればわかるようなことを書いてしまいましたが、
Yubikeyのオフラインでの認証の利用方法を考えてみます。

一見、Yubikeyはオンラインでの利用が前提なように見えます。
実際、オンラインで利用する場合は、予め適当な認証情報が
出荷時に書き込まれているため、設定ツール無しで利用できます。
YubiCloudを使えば、無料で強固な認証システムも利用できます。

しかしながら、自PCやプログラムで使いたいといった場合、
オンライン接続必須な状況は嫌われます。その場合どうするか。

簡単なのから順に、難しいものまで考えてみました。

ちなみにですが、OTP(Static Password含む)とU2FとCCID(PIV等)は、
独立した機能であり、それぞれ有効無効が切り替えられます。確か。


※オンラインで利用できる場合、YubiCloudを使うのが一番簡単で安全です。
 出荷時に鍵が書き込まれており、利用者ですら鍵情報を知らないため。

※この文は暗号化や認証に関して全くの素人な人が書いています。
 業務等に使う場合は、専門家の意見を参照してください。


・Static Password
おすすめ度:★★★☆☆
導入容易度:★★★★★
評価: 運用方法に気をつければアリ。公式が想定した使用法の一つ。

まず、一番簡単なのはStatic Passwordですね。
Yubikeyはキーボードとして認識され、タッチすれば入力されます。
それだけだと1要素認証になるので、パスワードの先頭数文字は
手入力するようにすれば擬似的な2要素認証として使えます。

例: 5523vgdksjisnkldscmlskbcjsnckaslmkisd
  ↑手入力 ↑yubikeyに保存したパス

任意のキー入力最大38文字の他、秘密鍵で生成されたmodhex最大64文字を使うことも可能。
人間のパスワード入力の代替であれば前者、yubikey前提なら後者が安全でしょう。

キー入力を覚えさせることができるので、ユーザー名→Tab→パスワード→Enter(合計38文字以内)とすることもできます。
完全な「鍵」としての利用ならこちらも便利。

使用例
・公式で提示された使用法
・BIOSパスワード(Yubicoフォーラム)
・TrueCryptのブート時認証(Yubicoフォーラム)

利点
・プログラムや機器での特別な対応が不要。
・既存のパスワードを使うなら機器側の設定は一切不要。(yubikeyの設定は必要)
・お手軽にセキュリティ強化ができる上に、引き継ぎも楽
・嫌われがちな長いパスフレーズを覚えること無く普及させられる

欠点
・メモ帳を対象に実行すればパスワードが平文で漏出する
・鍵の複製が容易どころか、コピペですら良い
・キーロガーには全くの無力
・初期設定が必要
・もちろんリプレイ攻撃には無力
・フィッシングにも無力
・yubikeyと、手入力や他の機器との区別は不可能

結論
 信頼できる機器だけを対象として使うのであれば有効でしょう。
 ITに不慣れで、パスワードを紙に書いて管理してしまうような
 現場であればなおのこと有効性は高いです。


・Yubico OTPの固定IDの利用
おすすめ度:★★☆☆☆
導入容易度:★★★★☆
評価: あまりおすすめしない

Static Passwordは設定が必要です。
用途にも寄りますが、無設定で運用したいという場合もあるでしょう。
自ツールから鍵の書き込みもできるはずですが、それも面倒と。

Yubico OTPで生成されるワンタイムパスワードは、
全てがランダムな文字列になっているわけではありません。
(特に設定を変えていなければ、ですが)

先頭にpublic idが12文字付き、その後が暗号32文字からなります。
このpublic idは、設定を変えない限り変化せず、後半の暗号を解くための鍵を
サーバー上で探すための、いわば鍵IDの役目をしています。

つまり、先頭12文字だけを切り出して使えば、
差し込まれているyubikeyの個体識別ができるわけです。

使用例
・パスワード管理ソフトのLastPassのオフラインアクセス設定

利点
・先頭12文字を切り出して比較するだけのお手軽実装
・yubikeyは購入したての無設定でよい。(アプリ側に登録する作業は必要)
・一見ランダムな文字列に見えるので、難しそうに見える

欠点
・仕組みがバレれば簡単に漏出する
・鍵の複製が非常に容易。どころか、コピペですら良い
・キーロガーには全くの無力
・もちろんリプレイ攻撃には無力
・フィッシングにも無力
・一見強固に見えるがゆえにむしろ危ない
・yubikeyと、手入力や他の機器との区別は不可能
・独自アプリケーションの開発が必要
・英字小文字12文字(しかも各文字は16種類しかない)ってあまり強くない気がする
 ※通常のパスワードと同様に解析されたとすると、カスペルスキーいわく
  家庭用PCで2世紀、ボットネットで2日、スパコンで16分でアタック完了するとのこと。

結論
 信頼できる機器だけを対象として使うのであれば有効...?
 これ使うくらいならstatic passwordの方がまだ安全なのでは...?
 とりあえずこれでログインして、その後のサービスの利用には
 YubiCloudを使う、とかなら、UXが統一されていて便利...?


・Yubico OTPをオフラインで使う
おすすめ度:★☆☆☆☆
導入容易度:★☆☆☆☆
評価: 全くおすすめしない

Yubico OTPで生成されるワンタイムパスワードは、
public ID、private ID、暗号鍵、内部カウンタの主に4つ(+α)で構成されています。

認証の際は、yubikeyから入力されたデータを元に、
public IDから、暗号鍵, private ID, 前回のカウンタ値をデータベースから取り出します。

そして、暗号文をAES128で復号、出てきたprivate IDが一致するか、
カウンタ値が増えているか、を確認します。

これにより、本物かのチェックと、リプライ攻撃ではないかのチェックをしています。
public ID、private ID、暗号鍵は、設定ツールから設定が可能です。
(取得はできません。あくまで新規設定です)

ので、これらの情報が揃っていれば、オフラインでもYubiCloudと同等の検証が可能です。
これらの仕様は公式に公開されています。

使用例
・おそらくなし

利点
・実装は手間だが、きちんとしたワンタイムパスワードとして動作するため検証は強固
・リプライ攻撃に強い。
・キーロガーの影響もなし。
・コピペはリプライ攻撃として弾かれるのでOK
・鍵の複製は利用者からは難しい
・手打ちは実質不可能

欠点
・フィッシングに対してはさほど強くない(次に認証されるまでは有効なため)
・オフラインでの利用の場合、PC内にAES鍵等が保存されており、
 それを抽出された場合、オンラインでの認証(YubiCloud含む)にまで
 利用できるほぼ完全な複製鍵が作れてしまう
・yubikeyの設定が必要
・独自アプリケーションの開発が必要

結論
 セキュリティが保証された専用機器で使うならともかく、
 PCなどで使うにはおすすめできない。
 ほぼ完全な複製鍵が作れてしまうのが致命的な欠点。


・Challenge ResponseのHMAC-SHA1を普通に使う(共通鍵)
おすすめ度:★★★☆☆
導入容易度:★★★☆☆
評価: 用途次第

yubikeyのChallenge Responseモードを使うと、
アプリケーションがChallengeを送信し、yubikeyからResponseを受け取ることができる。

応答は、あらかじめyubikeyに書き込んでおいた共通鍵と、
アプリケーションが渡すChallengeから生成されるハッシュとなっている。
それにしか起因しないので、Challengeが同じであれば、同じ結果が帰り続けるし、
共通鍵を揃えておけば違う個体でも同じ結果が帰る。

使い方としては、アプリケーションとyubikeyに予め同じ共通鍵を記録させておき、
認証が必要になったら、適当な乱数をyubikeyに送る。
帰ってきたら、自分の手元で計算した結果と同じかどうかをアプリケーションが検証。
同じならOKと言った形。

公式いわく「無人モード」「ドングルモード」と呼ばれていて、
実際、今までの方法とは違い、ユーザーがyubikeyをタッチする必要はない。
(タッチする必要があるように設定を変えることもできる。)

また、継続的に監視でき、突如別のyubikeyに差し替えられても検出できる。
(シリアルナンバーでも監視できるが、シリアルナンバーは不可視にできるので不確実)

使用例
C#でYubikeyのChallenge Response認証を行なうプログラム

利点
・実装は手間だが、きちんとしたワンタイムパスワードとして動作するため検証は強固
・リプライ攻撃に強い。
・キー入力ではないのでキーロガーの影響もなし。
・同じくコピペも手打ちも原理上不可能
・鍵の複製は利用者からは難しい
・フィッシングも無効
・Yubico OTPの鍵とは独立しているので、秘密鍵が漏出しても影響範囲が小さい

欠点
・オフラインでの利用の場合、PC内に共通鍵等が保存されており、
 それを抽出された場合複製鍵が作れてしまう
・yubikeyの設定が必要
・独自アプリケーションの開発が必要

結論
 信頼できる機器だけを対象として使うのであれば有効でしょう。
 秘密鍵の管理が重要になります。これが漏れると大変なことに。
 常にさして置かなければいけない、といったポリシーを適用するならその方向には有効。
 Static Passwordの次くらいにおすすめできる程度


・Challenge ResponseのHMAC-SHA1の次レスポンスを記憶しておく
おすすめ度:★★★★★
導入容易度:★★★☆☆
評価: 十分にあり。公式サンプルにある。

Yubico公式のWindowsログオンサンプルは少々面白い方法を使用しています。
Challenge Responseモードの「Challengeが同じであれば、同じ結果が帰り続ける」という
特性を活かし、以下のような手順で認証しています。

登録
1. まず、Yubikeyに適当なChallenge(0)を投げる
2. Yubikeyから帰ってきたResponse(0)と、Challenge(0)を記録しておく。
 これで登録完了。

認証(初回はn=0)
1. 前回使用した、Response(n)のわかっているChallenge(n)をYubikeyに投げる。
2. Yubikeyから帰ってきたResponse(n)と、手持ちのResponse(n)を比較する。
3. 一致していたら認証は完了だが、次回に向けた再登録処理を続ける。
4. 次回の認証のために、Yubikeyに新たに別の適当なChallenge(n+1)を投げる
5. Yubikeyから帰ってきたResponse(n+1)と、Challenge(n+1)を記録しておく。
6. 次回は(n+1)を使って認証する。

どうですか?このシンプルな仕組み。
認証する側はHMAC-SHA1を処理する必要すらありません。

オンラインではスニッフィングされると無意味ですが、オフラインのUSB経路で
そうなる可能性が非常に低いとするならば、非常に頭の良い実装だと思います。
Yubikeyに触れないで処理が進む、「ドングルモード」ならではの実装でもあります。

使用例
公式のサンプル解説

利点
・実装が容易な上、きちんとしたワンタイムパスワードとして動作するため検証は強固
・リプライ攻撃に強い。(USBパケットが抜かれていない限り)
・キー入力ではないのでキーロガーの影響もなし。
・同じくコピペも手打ちも原理上不可能
・鍵の複製は利用者からは難しい
・フィッシングも無効
・Yubico OTPの鍵とは独立しているので、秘密鍵が漏出しても影響範囲が小さい
・共通鍵をPC側に持たないため、漏出の心配がない
・ハッシュが漏出したとして鍵を求めるのは非常に困難

欠点
・yubikeyの設定が必要
・独自アプリケーションの開発が必要
・何らかのエラーでResponseとChallengeが破損するとロックアウトされる
 (認証の度書き換わるため)

結論
 オフライン認証は多分これが一番バランス取れていると思います。


・FIDO U2Fを使う
おすすめ度:?????
導入容易度:?????
評価: 未評価

筆者が理解できていないため、残念ながらろくに書けないのですが、
一応調べた情報だけ書いておきます。

FIDO U2Fも結局のところ、一種のChallenge-Responseです。
登録時は、Challengeを送ると、Yubikey内に秘密鍵・公開鍵ペアが生成されます。
そして、秘密鍵により署名された公開鍵と鍵ID、Challengeが帰ります。

認証時はChallengeと鍵IDを送ると、Yubikeyから秘密鍵により
署名されたChallengeと鍵IDが帰ります。

認証する側は、公開鍵と鍵IDを持ち、Yubikeyは秘密鍵を持ちます。
※実際にはどうやら、Yubikeyは秘密鍵を持たず毎度生成しているようです。

オンラインでも利用できる以上、オフラインでも利用できるはずです。
(実際、sudo時にU2Fを要求する実装があるようです)

Challenge Responseモードと比較すると、公開鍵による検証が可能なことと、
Yubikeyの設定が不要なこと、安価(2000円くらい安い)なFIDO専用キーが利用できる利点があります。
さらに、原理的に実質無限のサービスを登録できます。

欠点は... どうやって実装しているんだろうなぁ、って思うくらいですかね...
個人的に導入が難しそうだと思います。(出来合いのものを使うならともかく
)

U2FHIDの仕様に従って実装すればできそうです。
Python向けライブラリもあるようですので。

使用例
・LinuxのPAM

・PIV・PGP スマートカード認証
おすすめ度:?????
導入容易度:?????
評価: 未評価

これも筆者が理解できていないため、残念ながらろくに書けないのですが、
一応調べた情報だけ書いておきます。

今まで、Yubikey自体は何の保護もない、差し込まれれば認証情報を渡すタイプの
認証方式を紹介してきましたが、PIVは違います。

Yubikeyには、スマートカードとして、デバイス内部で4個(Yubikey4だと24個!)までの
秘密鍵を生成・保持する機能があります。
また、既存の秘密鍵を入れることもできます。

この秘密鍵は、PIN(暗証番号)で保護され、3回間違えると鍵情報がロックされます。
その状態で、管理者PUKを3回間違えると永久にロックされる。

USB通信の経路上も暗号化されて通信するようです。

SSHの認証や、Windowsのログオン、リモートデスクトップの認証、PGPなど、
かなり色々使えるようです。
自分のソフトウェアで認証に使うのももちろんできるでしょう、多分。

自己署名についてのいろいろがよくわからない...
公開鍵を用意し?秘密鍵を使って証明書署名要求を生成(署名)し?
秘密鍵を使って証明書署名要求にさらに署名して、証明書を生成する?

使用例
・LinuxのPAM
・その他色々


参考文献
ワンタイムパスワードトークンYubiKey |(株)ソフト技研
https://yubikey.yubion.com/yubikey_lineup.html

Yubico Forum • View topic - Challenge-response mode - FAQ :
https://forum.yubico.com/viewtopic.php?f=4&t=632

二要素認証に使われてるYubico OTP の仕組み - 試運転ブログ :
http://otameshi61.hatenablog.com/entry/2016/12/30/211358

Windows Helloに対応したセキュリティ認証デバイス「Yubikey」の使い勝手を試してみた – Dream Seed :
https://www.dream-seed.com/weblog/review/yubikey

spp5: C#でYubikeyのChallenge Response認証を行なうプログラム :
http://spp5.blogspot.jp/2013/03/cyubikeychallenge-response.html

秘密鍵、管理してますか? YubiKeyで鍵の一元管理とSSH接続、2段階認証の高速化を試す - Qiita :
https://qiita.com/dseg/items/77d77467970b1b510285

My Work Day Reflects YubiKey's Flexibility | Yubico :
https://www.yubico.com/2015/03/employees-day-showcases-yubikeys-flexibility/

spp5: YubiCloud認証プログラムを作る :
http://spp5.blogspot.jp/2012/06/yubicloud.html

YubiKeyManual_v3.4.pdf :
https://www.yubico.com/wp-content/uploads/2015/03/YubiKeyManual_v3.4.pdf

YubiKey - もわの書斎 :
https://mowa-net.jp/wiki/YubiKey#Yubico_OTP.2BMG5O1WnY-

Yubikey 4 にSSHの秘密鍵を格納する – n10の個人的なメモ :
http://mirahouse.jp/n10/2017/08/29-121537.html

yubikeyでセキュリティ筋力を鍛える ・ JoeMPhilips : http://joemphilips.com/post/yubikey_setup/

YubiKeyのPIVカードでSSHする - cuspy diary :
http://www.cuspy.org/diary/2015-08-11-yubikey-piv-ssh/

YubikeyのPIVを使ってsshしてみる - 試運転ブログ :
http://otameshi61.hatenablog.com/entry/2017/05/21/144208

家にssh鍵を忘れるという概念 - hiroqnの日記 :
http://hiroqn.hatenablog.com/entry/2017/09/02/213519

RSA鍵、証明書のファイルフォーマットについて - Qiita :
https://qiita.com/kunichiko/items/12cbccaadcbf41c72735
posted by gpsnmeajp at 23:58| Comment(0) | TrackBack(0) | 雑感

USB認証鍵Yubikeyの機能

Yubikeyに最近興味を持ちました。
Googleの二段階認証などで使えるハードウェアトークンですが、
スタイリッシュな上、思っていたより機能があります。

ただ、生まれて8年近く立つ商品ですが、セキュリティ専用商品なためか、
日本ではあまり流行っていないようなので、ざっと機能のまとめと、
個人的に気になったオフラインでの利用に関して、調べた結果をまとめてみます。

※購入済みですが、まだ運用していません。公式サイトを見ればわかるようなことのメモです

Yubikeyの機能


Yubikeyには、比較的高価なYubikey4(5000円程度)と、
一番高価なYubikeyNEO(6000円程度)、安価なYubico U2Fセキュリティキー(3000円程度)があります。

それぞれで値段が違うのは、当然使える機能が違うためですが、
NEOが最上位機種かというとそうでもないので注意してください。
ちなみに、超小型版のnano、USB-C用のCもありますが、それらは基本スティック型のと同じです。

機能を以下にまとめます。
・Secure Element
 海底48mに沈めて二ヶ月放置しても、洗濯乾燥機に突っ込んでも壊れない堅牢性と
 分解・解析に対する耐タンパ性を持ちます。
 Yubikeyにデータを書き込むことは簡単にできますが、読み出すことは一切できません。
 そのため、鍵情報などが漏れることはありません。

 不揮発性のカウンタを内蔵しており、同じOTPは生成されません。
 ただし、1日10回使用したとして18年使えるカウント回数があります。

 生体認証等の機能はついていません。これはあくまでYubikeyは
 2要素認証の2要素目として使われる前提のためです。
 自宅の鍵と同じく肌身離さず持ちましょう。
 一方、その性質から、引き継ぎの際には鍵のように渡すだけで済みます。

 ※スマートカードなどにはもちろんPIN保護を掛けられます。

・Yubico OTP*
 Yubico独自のAES暗号を用いたワンタイムパスワード生成です。
 キーボード配列に影響されない英字入力機能を使い、キー入力として動作。
 ブラウザやシステムを選ばず、iPadやスマートフォンでさえ動作します。
 社内システムなどで簡単かつ堅牢なOTPシステムを導入できます。
 無料のOTP検証クラウドサービスYubiCloudがある他、
 自前で検証サーバーを立てることもできます。
 ※U2Fセキュリティキーには搭載されていません

・OATH-HOTP*
 一般的なカウンタ+シークレット方式のワンタイムパスワードを生成します。
 生成はYubikey内で行われるため安全に生成できます。
 ※U2Fセキュリティキーには搭載されていません

・OATH-TOTP*
 一般的な時刻情報方式のワンタイムパスワードを生成します。
 ただし、時計機能を内蔵していないため、時刻情報は外部から取得します。
 生成はYubikey内で行われるため安全に生成できます。
 ※U2Fセキュリティキーには搭載されていません

・FIDO U2F
 Googleなどの二段階認証サービスで利用される規格です。
 公開鍵方式を利用したオンラインでの強固な二段階認証です。
 HIDで通信するためドライバは不要ですが、対応ブラウザが必要です。

・Challenge Response*
 公式的に「ドングルモード」や「無人モード」と呼ばれます。
 オフラインのソフトウェアとの認証に使うことができ、
 Yubikeyが継続的に刺さっているか、あるいは、正しいYubikeyが刺さっているかを
 Yubico OTPか、HMAC-SHA1のチャレンジ&レスポンスで検証することができます。
 
 Yubico OTPは同じチャレンジでも内部カウンタ等により違うレスポンスを返しますが、
 HMAC-SHA1は同じチャレンジの度に同じレスポンスを返します。
 ※U2Fセキュリティキーには搭載されていません

・Static Password*
 静的パスワードモードです。
 BIOSパスワードなどの、OTP等に一切対応していない機器でも、
 長いパスワードをyubikeyに入れておき、先頭数文字を手動で入力後、
 続きをyubikeyに打たせることでセキュリティを強化できます。
 セキュリティは低下しますが、38文字までの全パスワードあるいは、
 ユーザー名とパスワードを入れておくことも可能です。
 (Tabキーや改行、キーコードを入れることができます)
 
 ※U2Fセキュリティキーには搭載されていません

・Smart Card(PIV-Compatible)*
 単体でスマートカードとして動作させることができます。
 そのため、SSHの公開鍵認証や、WindowsPCの認証に使用することができます。
 ※U2Fセキュリティキーには搭載されていません

・OpenPGP*
 PGPの秘密鍵をYubikeyに入れておくことができます。
 メールの署名や、ソースコードの署名に利用できます。
 ※U2Fセキュリティキーには搭載されていません

・NFC通信**
 YubikeyNEOにはNFC機能が内蔵されており、単なるMifareタグとしてのID検証から、
 スマートフォンでのワンタイムパスワードの生成、NFC経由でのOTP等利用できます。
 Yubikey社のオフィスドアはNFC-OTPでロックされているようで、
 単なるRFID検証に比べると非常に安全です。
 ※YubikeyNEOにのみ搭載されています。

・NDEF**
 YubikeyNEOには好みのNDEFタグ情報を書き込み利用することができます。
 ※YubikeyNEOにのみ搭載されています。

・FIPS 140 Certification***
 米国連邦標準規格により、安全性が確認されています。
 ※Yubikey4シリーズのみ。

・オープンソース性(ハードウェアとファームウェアを除く)
 YubikeyNEOは開発者向けの商品であり、オープンソースでした。
 Yubikey4はクローズドソースに移行しており、NEOもクローズ方向に使用が変更されています。
 Yubico社いわく、高セキュリティのためのICの開発環境とオープンソースは相性が悪く、
 オープンソースの恩恵が得られないどころか、負の効果が有るためとしています。

 PC側の設定ツールや、認証サーバー、通信仕様などはオープンに公開されています。

・ファームアップデート機能非搭載
 YubikeyはBadUSB問題等を考慮し、ファームウェアアップデート機能を
 搭載していません。
 そのため、新しい機能が追加された場合、たとえ同じシリーズでも
 新規購入する必要があります。

・マスストレージ機能非搭載
 Yubikeyにはマスストレージ機能(USBメモリ機能)は搭載されていません。
 ウィルス等の感染経路となるためです。

暗号仕様


・RSA 2048
 Yubikey4、NEO両対応

・RSA 4096***
 Yubikey4のみ

・ECC p256**
 全機種対応

・ECC p384***
 Yubikey4のみ

参考文献


次の記事を参照してください。
posted by gpsnmeajp at 19:53| Comment(0) | TrackBack(0) | 雑感

2017年11月13日

Pythonistaの準備用スクリプトのメモ

iOSのPython開発環境Pythonistaで、
シェルっぽい環境のStaShと
サンプルやツールなどのダウンロードツールptinstaller.pyの導入をするスクリプト


import requests as r;
o=open('ptinstaller.py','w');
o.write(r.get('https://raw.githubusercontent.com/ywangd/pythonista-tools-installer/master/ptinstaller.py').text);
o.close();
exec(r.get('http://bit.ly/get-stash').text);
posted by gpsnmeajp at 20:39| Comment(0) | TrackBack(0) | 雑感

2017年10月26日

LazyBLEWrapper v0.13公開(処理の変更と整理)

・メモリリーク防止の観点からコンテキストを保持しないように変更。
・final
・connectで必ずdisconnectするように変更。
・BLE関係のメソッドをUIThreadで実行するように設定。
・メソッドの並び替え(ドキュメントをJavaらしい書き方にすべきかも)。
・disconnectを丁寧にするように。(Threadでの実行が必須に)。
・GATTのnullチェックを強化。
・forceDisconnectを追加

Android特有の色々癖があるようなので、それに合わせて安全に変更。
スパゲッティがさらにスパゲッティに。

そして、今回味わったいろいろはすでに2年前に書いてあった。
kyobashi.dexでAndroidのBLEがつらい話してきた #kyobashidex
その上、この人の作っているBletiaは、一度目にしていたのだがスルーしていた。
しかし、改めて見てみると、すごい使いやすそう。もうこれで良かったのでは?

詳しくはQiitaへ。
posted by gpsnmeajp at 20:30| Comment(0) | TrackBack(0) | 雑感

2017年10月25日

LazyBLEWrapper v0.12公開(Indicationに対応ほか)

LazyBLEWrapper v0.12を公開しました。
micro:bitのUARTに必要だったのでIndicationに対応したほか、
UUIDのチェック用の関数、ログを黙らせる関数(正直この実装は悪手な気はしないでもない)を搭載しました。

詳しくはQiitaへ。

posted by gpsnmeajp at 14:34| Comment(0) | TrackBack(0) | 雑感

2017年10月24日

AndroidのBLEを超シンプルにするライブラリ作った(LazyBLEWrapper.java)

HPのトップページにAndroidのカテゴリが増えていたので、気づいた方もいらっしゃったかもしれませんが、新しいライブラリを作成しました。

ぼけーっとマイコンとスマートフォンをBLEでつなげてみたいなー、と思い立ち、
AndroidでBLEを使ってみようと思ったら、ちょっと眠い頭ではきついことに気づきました。

非同期処理がたくさん。シングルスレッドのマイコン頭では正直管理しきれない。
WebBluetoothは、Promiseのおかげもありますが大分シンプルなのに対し、
AndroidのBLEはなんじゃこりゃ、と思いました。

まあ、BLEもCentralだったりPeripheralだったりになれたり、色々特殊な場合も考慮しないと
いけないので、仕方ないのだとは思いましたが...

ライブラリも探しましたが、しっくり来るものもなく、仕方ないので自分好みの挙動をするライブラリを作ってしまいました。
せっかくの非同期処理を同期処理にしてしまう頭の悪いライブラリですが、もしよろしければお使いください。

詳細は以下のQiita記事をご覧ください。

AndroidのBLEを超シンプルにするライブラリ作った
https://qiita.com/gpsnmeajp/items/8fa8b3df03fb64837b44
posted by gpsnmeajp at 21:11| Comment(0) | TrackBack(0) | 雑感

2017年10月08日

FlashTools Lua Editor v1.07を公開

FTLEを更新しました。
主にW-04のファームウェアアップデートに伴うprint文の低速化に対応したものとなります。
ちょっとしたファイルで1分近くの読み込み時間がかかるようになってしまったため、
FTLEの読み込み機構を調整し、以前と同程度とまでは行きませんが、数秒から十数秒程度の読み込み時間で済むように調整しました。

ただ、W-04のメモリの多さに依存している機能のため、今回からW-03はサポート対象外になりました。
(一応、W-03使用時には以前と同じ動作になるように設計してありますが、積極的にサポートはしません)
またその実装上、1行に500文字以上詰め込まれたファイルは正常に読み込めない場合があります。
(メモリエラーが発生します。)

また、要望によりファイラーを強化し、ファイルの新規作成、フォルダの新規作成や、
ファイルの移動、一括削除などを画面上で行えるようにしました。割りと便利です。

また、FTLEやファイラーに、空白文字が入った時に異常動作する問題があったため、
それを修正しました。

85B58CEE-7BEB-481B-AA6D-D753F2BE517A.png

更新内容は以下のとおりです。
・W-04 4.00.01のprint文低速化に対応
・FlashTools.luaの高速化、CSSの調整
・Version判定の変更
・read.luaの高速化(24秒→1.5秒)に。(W-03はサポート対象外になりました。一応フォールバック動作します)
・ファイラーの読み込みを若干高速化
・ファイラーの拡張制限を解除
・ファイラーに新規ファイル作成・フォルダ作成・ファイル移動(名前変更)機能を追加
・ファイラーのデザインを抜本的に変更
・ファイラーおよびエディタの空白文字ファイルに対する異常動作の修正

ダウンロードはこちらから
https://sites.google.com/site/gpsnmeajp/tools/flashair_tiny_lua_editer
posted by gpsnmeajp at 23:39| Comment(0) | TrackBack(0) | 雑感

2017年10月01日

引越し完了

ブログの引っ越しって簡単にできるようになってるんですね。知りませんでした。
一筋縄では行かないだろうなぁ、と思っていたら案の定で、
さくらのブログでインポート可能なのはMT形式、一方Bloggerは(独自の?)XML形式。

しかし、MT形式のブログは多いらしく、変換のための情報もありました。
海外でも使われてるんでしょうか。
google-blog-converters-r89で変換することができました。

なぜかBloggerに引っ越す記事が多かったですが。
さくらのブログは、Seesaaブログと同じエンジン(というかSeesaaから提供されているらしい)なので、
参考にできる情報が多くて助かります。

Seesaaブログはスパム判定されると即BANらしいですが、さくらインターネットさんでは
そういうことはないでしょう。多分。少なくとも日本語を理解してくれると期待しています。

参考情報
Google Blogger からこのはてなブログにインポートしました - ゆたんぶろぐ

GoogleのBloggerからはてなブログに記事を移行する方法 - 元マニラ住人の青年のブログ

画像の引用先がBloggerになってるのが、ちょいと面倒。
ネット上で、跡地としてブログが残っている理由がやっと理解できました。
画像の移動をサボった結果ですね。

ところで、Bloggerでは便利な投稿アプリ等があったのですが、さくらのブログにはないですね。
(もっともBlogger公式のアプリは消滅しましたが。サードパーティのアプリが数日だけだが便利だった)
外部投稿用の機能はあるようですが...

ただ、古き良き「メール投稿」システムがあるようなので、そっちを使うことにします。

posted by gpsnmeajp at 22:30| Comment(0) | TrackBack(0) | 雑感