著者アーカイブ takahashi

takahashi 著者:takahashi

クラックされてしまったWPA2の改良版、WPA3策定が完了

Wi-Fiは物理的な接続である有線LANと違い、電波が届く範囲内であればどこにいても接続が可能です。
そのため、物理的なケーブルであれば、不正につないでいる人を見つけることは大抵は難しいことではありませんが、無線であるWi-Fiの場合は電波が届けば接続出来てしまうので、誰かが不正に接続していても気づかないことがあります。

そういった場合を防ぐために、Wi-Fiには”パスワードがわかる人しか繋げられない”ようにする機能があります。
この機能、つまりWi-Fiの認証と暗号化の機能はいくつか規格があるのですが、いままで破られにくいとされていた”WPA2″が主流として使われていました。

ところがこのWPA2の認証を突破できてしまう”KRACKs”という攻撃方法が発見され、その堅牢性は崩れることになりました。

WPA2の脆弱性「パッチで対応可能」 Wi-Fi標準化団体が見解 – ITMedia

WPA2は業界共通の”標準規格”のため、簡単にアップデートすることは難しく、当面はパッチで対応する形でしのいていました。

そして今回、WPA2のアップデート版であるWPA3がついに策定されました。

新しいWi-Fiセキュリティ規格「WPA3」登場 – ITMedia

WPA3は、WPA2との互換性を維持しつつもKRACKsなどへの対策もされているとのこと。

 WPA3では、WPA2デバイスとの相互運用性を維持しながらPMF(Protected Management Frames:管理フレーム保護)を必須とした。また鍵確立手法を従来のPSK(Pre-Shared Key:事前共有鍵)から新しいSAE(Simultaneous Authentication of Equals:同等性同時認証)に変更。ハンドシェイクの手順や認証の再試行回数を変更して各種攻撃への耐性を上げた。

今後発売される機器にはWPA3が搭載されることになりそうです。
また、ファームウェアアップデートが可能な機種でも、もしかすると利用可能になるかもしれません。

今後の動きに注目していきたいですね。

takahashi 著者:takahashi

[Windows]コマンド上でサービスを操作する方法

LinuxなどのUnixライクなOSには”デーモン”と呼ばれる概念があります。
ユーザーが起動しなくてもOSの裏側で常に動作し、いろいろなことをしてくれる所謂”常駐アプリ”です。

一方、Windowsにも同様の仕組みがありますが、こちらは”サービス”と呼ばれます。
基本的に、内容はデーモンとさほど変わりません。

デーモンを操作する場合、例えばLinux系では

#サービスの停止(Systemd)
systemctl stop サービス名

#サービスの開始(Systemd)
systemctl start サービス名

#サービスの停止(sysvinit)
service サービス名 stop

#サービスの開始(sysvinit)
service サービス名 start

etc...

というように、コマンドで操作します。
また、サービスを自動開始させるかどうかは

#サービスの自動開始有効化/無効化(Systemd)
systemctl enable サービス名
systemctl disable サービス名

#サービスの自動開始有効化/無効化(sysvinit)
chkconfig サービス名 on
chkconfig サービス名 off

のようにします。

一方Windowsのサービスの場合は、Windows自体がGUIありきのOSなので、サービスの操作も、標準でGUIから行うことができます。


“サービス”アプリの画面

サービスの自動起動の有効/無効もGUI上から指定できます。

しかし、Windowsでも、処理のバッチ化などをするためにコマンドライン上から操作をしたい場面があります。
GUIの自動操作はなかなかやりづらいので、CUI上で操作できる方法を探したところ、見つけることができました。

バッチ で Windowsサービス を 起動、終了 する 方法 – galife

Windows上のコマンドラインででサービスを操作する場合は、

#サービスの停止
net stop サービス名

#サービスの開始
net start サービス名

これだけでいけます。
操作感はUnixライクなOSに結構似ていますね。

ちなみに、ちょっとわかりづらいですが、サービスの自動機能のon offは”sc”コマンドを使うことで操作できるようです。

sc.exe でサービスのスタートアップの種類を変更するAdd Star – 日々是笑心

WindowsのCUI環境はちょっと特殊で、難解感も感じることがありそうですが、覚えておくと非常に楽になるかもしれませんね。

takahashi 著者:takahashi

Windows 10に標準で付属しているMRツール “Mixed Reality ビューアー”がさらにパワーアップ。なんとアニメーションもとれるように。

知らないなんて勿体ない!!! 手軽にリアルなARを楽しめる Windows標準搭載のARアプリが面白い!

以前こちらの記事でご紹介したWindows標準ツール”Mixed Reality 3D”ですが、久々に開いてみたらさらにパワーアップしていました!!!

なんと3Dキャラクタにアニメーションがついて、さらにカメラで撮影した景色の中を自由に動かせるようになっていました!!!

また、左下にはアニメーション切り替えボタンがあり、オブジェクトによってアニメーションの種類の数は異なりますが、いろいろなモーションをキャラクターにさせることができます。

Mixed Realityモードでは、PCにカメラが備わっていれば実際に現実世界の映像と合成することができます。

これらのモーションをうまく使って、迫力のある映像を作ることが可能です。
ちなみに解像度もちゃんとカメラと同じ粗さに合わせてくれるので、違和感のない映像を撮影することができます。

折角OSに標準搭載されていますし、手軽にMRに触れることができる素敵な機能なので、是非遊んでみてはいかがでしょうか?

takahashi 著者:takahashi

[間もなくGoogle ChromeでSSL必須化。確認しておくべきこと。] WebサイトSSL化の際に潜む罠

前回の記事では、WebサイトのSSL化に必要な証明書について説明をしました。今回は証明書に加えてサイトのSSL化に必要なこと説明します。

実は、サイトのSSL化を行うためには、単にSSL証明書をインストールして”https://”でアクセスする…だけではダメな場合があります。

例えば、httpsのサイトにアクセスした際に画像の赤枠のような盾のアイコンが出てくることがあります。

実はこれ、Chromeによって、セキュリティ上の問題でサイトの一部のコンテンツをブロックした際に表示されます。

なぜブロックされたのかは”開発者ツール”を開いてみるとわかります。
F12を押してみてください。

画面の端に、赤枠のような部分が出てきます。
これが開発者ツールです。

たとえば、このページの1行目のエラー。
内容を簡単にいうと”このサイトはhttpsでアクセスしているのに、同サイト内にhttpでアクセスしているリンクが混ざっている。”

といった感じになります。
実は、サイト自体へのアクセスはhttpsになっていても、サイト内に含まれている画像、css、javascriptなどへのリンクがhttpになっていると、基本的にブロックされてしまいます。

これは、リンクされているコンテンツが不正に乗っ取られた場合、アクセス先のサイトがたとえhttpsであったとしても表示を改変されたり、入力した情報が盗まれてしまう場合があるためです。

こういったセキュリティ上の問題も確実に防止するために、Chromeをはじめとする最近のブラウザでは、httpsサイト内にあるhttpリンクをブロックする様になってきています。

ではどのように対策すればいいのか、というところですが、先ほど書いたようにjavascript、css、画像などへのリンクがhttp://で書かれてしまっていることが原因なので、それらをすべてhttps://で始まるように書き換えてしまえばOKです。

ただし、リンク先がSSLに対応していないと、httpsに書き換えただけでは利用できません。その場合はまずリンク先のサイトをSSLに対応させる必要があります。
また、もし自分で触ることのできないリンク先がSSLに未対応の場合、残念ながらSSL対応させたサイトでは利用できません。

代替えの方法を用意する必要があります。

少しでも参考になりましたら幸いです。

takahashi 著者:takahashi

MBaaSのFirebase、脆弱性により情報流出が発覚

Googleが提供しているサービスであるFirebaseから、なんと合計1億件以上の情報流出(Gigazine)が確認されたようです。

合計1億件以上の個人情報がFirebaseの脆弱性によって公開状態に – Gigazine

Firebaseはモバイルアプリのバックエンドに必要な機能(ログイン管理やプッシュ通知など)を一括して提供してくれるmBaaS(mobile Backend as a Service)です。

Firebaseの始め方 – Qiita

Firebaseを使うことで、本来自前でサーバーを用意してアプリのバックエンドを構築しなければいけないところを、Firebaseで対応している機能であればすべてこのサービス上で賄える、というサービスのようです。(恥ずかしながら知りませんでした。)

Gigazineの記事によると、Firebaseとの連携処理がちゃんと行われていないアプリが原因だったとのことです。

この脆弱性はFirebaseデータベースの認証が適切に行われていないときに顕在化するもの。2017年第2四半期に見つかった、アプリ開発者によるデータ格納の保護が不完全なときに情報が露出してしまう「HospitalGown」と呼ばれる脆弱性の変種であると考えられています。

Appthorityのディレクターであるセス・ハーディ氏は「このFirebaseの脆弱性は膨大な量の機密情報を公開してしまうような重大かつ危機的なものです。多くの『脆弱なアプリ』があり、多種多様なデータが公開されてしまっているという事実は、企業がアプリの開発者に頼れず、アプリストアによるチェックや単純な『マルウェアスキャン』でも対策できないということを示します。GDPRやHIPAA、PCIといったデータ保護の規則を守るために、今後はこの種の脆弱性を見つけられるよう、深いアプリ分析に投資する必要があるでしょう」と述べています。

Firebaseのサービスを利用していなければ影響を受けなかったインシデントなので、個人的には”パブリッククラウドの危ない面”が露呈してしまったのかな、という印象です。

対策がされているとはいえ、複数のユーザーで共有している環境である以上、使用する際はこういった危険性も考えて置く必要がありそうですね。

takahashi 著者:takahashi

[間もなくGoogle ChromeでSSL必須化。確認しておくべきこと。] SSLって何?

いよいよ、前から予告されていたSSL必須化(HTTP(非暗号化)接続というだけで警告を表示するようになる仕様変更)がChrome 68から適用されます。

いよいよGoogleが本気。Chrome 68から全HTTPサイトに警告! – 常時SSL Lab.

もしあなたがサイトを運営していて、SSLを利用可能にしていない場合、画像の下のな表示がアドレスバーに常に表示されるようになります。
回避するためには、サイトをSSLに対応させないといけません。

そもそも、SSLとはなんぞや…という方のために、簡単に説明します。
SSLを理解する前に、インターネットの仕組みを簡単に簡単に理解しておく必要があります。

今は家にPCやスマホ・タブレットが複数台ある、という方は多いと思います。
複数台のPCやタブレットなどを同時にインターネットへ接続するために、ルーターを設置している方が多いと思います。

細かい説明は割愛しますが、ルーターを設置すると、大抵の場合はそこにLANと呼ばれるネットワークが構築され、そのLAN全体をルーターを介してインターネットに接続することで、ルーターに接続されている複数台の端末が、同時にインターネットへ接続できるようになります。

簡単に言ってしまえば、インターネットというのは、ルーターやLANを相互に接続してできた巨大なネットワークなんです。
つまり、インターネット上には、自宅に設置したルーターのように、あなたの通信を中継する機器をいくつも経由して、目的のサイトへたどり着けるようになっています。


引用元:JPRS

そしてこの”通信を中継する機器”は、仕組み上誰でも設置が可能です。

また、インターネットのベースとなった仕組みでは、”一部の経路が切断されても、他に通信経路があれば通信を継続できるようにする”仕組みになっています。
先程書いたように、インターネットはネットワークを相互につないでいる構造になっているので、目的のサイトにたどり着くまでの経路は何通りもあります。

そのうちのどの経路が選ばれるかは一定ではなく、状況に合わせて、最も最適なルートが選択されます。

つまり、自分がインタ―ネットへ送信した情報がどの経路を通過するのかはわからない(決まっていない)のです。

通信経路は固定ではなく、かつ経由する機器もだれのものかわからない…そんな仕組みなので、例えばもし経由する経路上にサイバー犯罪を企てる人が設置した機器を経由してしまった場合、自分が送信した解読された場合はその内容が盗まれてしまったり、改変されたりしてしまう可能性が出てきます。

もしその時に自分が送っていた情報がパスワードやクレジットカード情報だったら…最悪ですよね。

そうならないために、自分が送付する情報を”暗号”にして、自分と通信相手にしか解読することができないようにする仕組みがあります。

これが、SSL(TLS)と呼ばれるものです。

SSLを利用するためには自分のサイトが動いているサーバーに、SSL証明書をインストールする必要があります。
SSL証明書は発行を行っている”認証局”と呼ばれる業者から取得する必要があります。

通常は有料で、有効期限があるので、有効期限が近づくたびに購入しなおす必要があります。

ただし、最近はLet’s Encryptという、更新するまでの期間が短い代わりに無料で利用できるSSLもあります。

これでSSLをサイトに導入して対応完了…!と行きたいところですが、まだ他にも気を付けないといけない点があります。

また次回説明します。

takahashi 著者:takahashi

JDKの無料配布はJava 10が最後となり、11以降は有償化される模様

“30億のデバイスで走るJava”という宣伝ができるぐらい、今やITの世界で欠かせなくなったJava。
そんな Javaですが、いままで開発ツールのOracleJDKは無料で公開されており、だれでも利用することができました。

ところがこのOracleJDK、少し前にJava11から有償化されることが決まりました。

Oracleが無償でJDKを提供するのは「Java 10」が最後、Java 11以降はOSSコミュニティでのサポートに – スラド

Java 11からは、現在のようにOracle公式サイトからダウンロードできる形ではなくなり、有償契約した人のみ入手することができるようになります。

その代わり、オープンソース版であるOpenJDKに対し、現OracleJDKが備えている機能と同等のものが公式に導入されることになっているようで、機能面ではOracleJDKとOpenJDKは同等になるため、OpenJDKを使用すれば今後も無料で使い続けられるようです。

ではOracleJDKとOpenJDKの大きな違いは何かというと、Oracle公式によるサポート、さらにはサポート期間の違いのようです。

OpenJDKのサポート期限は次のリリースまで、となっていますが、OracleJDKについては3年ごとにリリースから8年間サポートされるLTS版が出されるようです。

Oracle Javaの無償配布終了で何が起こるのか? – セカイノカタチ

“Oracle JDK有償化”と聞くと、「なんてこった…」と一瞬思ってしまいますが、ふたを開けてみたところ、かなりユーザーにとってメリットとなる変更のようですね。

takahashi 著者:takahashi

USB Type-c(Thunderbolt3)で広がる外付けGPUの可能性

最近主流になりつつあるUSB Type-c。
それに共存させられる規格として、”Thunderbolt 3″というのがあります。

まだ流通量としては少ないので、知らない方も多いかと思います。

このThunderbolt 3ですが、対応しているノートPCでは大きなメリットがあります。
それは”外付けGPU”が利用できること。

ノートパソコンでもVRで遊べる!VRゲームに「外付けGPUボックス」という選択肢。 – VRInside

今までは機種専用のGPUボックスを出しているメーカーはありましたが、”特定の規格に対応してさえいればどのPCでも使える!”というものはなかったので、部品を交換することができないノートPCの場合、実質的に限界を超えるスペックを要求するゲーム・アプリを動かしたくなった時点で、PC本体の買い替え時となっていました。

しかし、まだまだちゃんと動作するPCを、ゲームが動かないという理由だけで買い換えてしまうのはもったいないですし、普段ゲーミングPCとして使わないのに、ゲーミングノート特有の大きい筐体を持ち歩くのもなかなか大変です。何より、ゲーミングPCは高額である場合が多いので、買い換えようと思ってもすぐに買い替えできない場合もあると思います。

外付けGPUに対応していれば、CPUさえそこそこの性能を持っていれば、所謂モバイルPCであってもハイエンドGPUを接続してゲームなどのアプリを動作させられますし、スペックを上げる場合も、GPUだけ取り替えれば対応できます。

選べるノートPCの幅とGPUの性能を両立できるのはとてもうれしいですね。

takahashi 著者:takahashi

FuelPHP初期設定時に”It is not safe to rely on the system’s timezone settings.”エラーが出た時の対処法

先日、自分用にFuelPHPのテスト環境を作成していた時のこと。
ファイルやウェブサーバー周りの設定が終わって、テストでFuelPHPを動作させたところ…

Fuel\Core\PhpErrorException [ Error ]:
date_default_timezone_get(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone.

初めて見るエラー(汗
前回別の環境でセットアップした時はこんなエラーは出たことがなく、原因がわからなかったのでちょっと焦りました。

困っていろいろ調べていたら、こちらのサイトを発見。

[PHP]php.iniのtimezoneを設定する – Qiita

どうやら、PHP自身にデフォルトタイムゾーンを指定しないとダメ見たいです。

今回はCentOS7を使っていたので、php.iniは
/etc/php.ini
にありました。

php.ini内の

[date]セクションの部分に、赤枠のように記入します。

date.timezone = "Asia/Tokyo"

これでphp.iniを保存し、Apacheを再起動。

再度実行してみると

無事スタートページが表示されました。

takahashi 著者:takahashi

[macOS] alt + tabでWindowsのようなアプリケーション一覧を表示する方法

macOSでウインドウ切り替えをする際、Windowsのウインドウ切り替えの感覚で command + tabキーを押すとこんな表示が出てきます。

これ実は、同じアプリケーションのウインドウを複数開いていても、一つのアプリとしてしか表示されません。

Windowsはこんな感じ
Windowsのマルチタスク機能の感覚で操作するとエッってなりますね…w

実は、macには標準でキーボートショートカットを編集する機能があります。

アップルメニュー -> システム環境設定
から
“キーボードを選択”

コレです。
command + tab
は書き換えることができませんでしたが、

alt + tab

は書き換えることができたので、これをmission controlに割り当ててみます。
画面の”mission control”の項目をダブルクリックすると、入力待機状態になるので、
実際に設定したいショートカットキーを押します。

これでalt + tabを押すとmission controlが呼び出せるようになりました。

OSごとにキーボードショートカットがかなり違うと、かなり覚えるのが大変(癖で別OSのショートカットキーをつい押してしまう)なので、似た操作にそろえておくだけで大分楽になりますね。

ご参考までに。