WebRTC meetup TOKYO#6
WebRTCMeetUp #6に行ってきた.
WebRTC Meetup Tokyo #6
https://atnd.org/events/60983
近頃はSkywayのTURNトライアル開始や,WebRTC Conference開催とビジネス成分が徐々に増してきた感があります.
1/27 Skyway TURNトライアル開始
ニュース 2015年1月27日:WebRTCプラットフォーム「SkyWay」にTURN機能を追加し国内初のトライアル提供を開始 | NTT Com 企業情報
2/5~2/6 WebRTC Conference Japan
WebRTC Conference Japan
19:40〜20:10 セッション1 WebRTC/ORTCの最新動向まるわかり! @tukimikage
WebRTC/ORTCの最新動向まるわかり!
想定する読者
WebRTC初心者
最新動向をひと通り抑えたい人
WebRTCとは
大雑把にいえばブラウザでテレビ電話を実現する技術.
プラグインレスで映像・音声,データ交換の仕組みを使って,Web会議,テキストチャット,電話などの連携などが実現可能.
技術的なメリットは大きく2つ.
1. リアルコミュニケーションに必要な要素技術がオープン
WebRTC同士の相互接続が保証されて,ライセンス使用料が不要.
接続に必要な要件も揃えている.
音声・映像の形式,NAT・Firewall超え,暗号化,到達保証... など
2. ブラウザとネイティブアプリの両方で利用可能
WebRTC対応ブラウザならURL入力だけでサービスをすぐに使える.
技術面とビジネス面からの考察
- 技術面
- オープン標準
- ブラウザとネイティブアプリ両方で使える.
- ビジネス面
- オープン標準
- マルチデバイス・マルチOS
- IoT分野へのリアルタイム通信
- オープン標準
-
-
- ブラウザで利用可能
- インストール不要で,ITリテラシが低くても使える.
- HTML5+JavaScriptの組み合わせで実現できるので,既存のWebサービスとの親和性が高く,連携や組み込みが容易.
-
- 電話との連携
- ゲートウェイ機能を持つWebRTCサーバを用意すれば,電話との連携も可.
- コンタクトセンタ分野にもWebRTCを適用して,Webから呼び出すこと可.
WebRTCの技術要素
Webアプリケーションのエンジニアにはネットワークの低レイヤであるTCP/UDPの低レイヤの基礎知識が必要.
キーワード
- ICE
- どこからでもWebRTCを繋げるための仕組み.UDPホールパンチングなどでクライアント同士が接続できる方法を探してくれる.STUN/TURNを使う.
- STUN
- クライアントが直接繋がる形で探す仕組み.
- TURN
- クライアントが直接繋がらない場合,サーバを経由して繋げる仕組み.ネットワークの遅延,帯域・サーバ処理コストの面からSTUNが経済的.しかし,ネットワークの要件(NATの種類)に応じてTURNを使わないと繋がらないことも.(WebRTCコネクションのうち,8−9%はTURNでしか繋がらないというデータがある)
- シグナリング
- クライアント同士で通話するための情報を交換する仕組み.相手と手順が合意できればどんなプロトコルを利用しても良い.SDP(Session Description Protocol)の様式でIPアドレス,ポート番号,映像・音声の情報を交換しあってリアルタイム通信に備える.
- リアルタイム通信
SDPを交換すると,P2P交換をする.メディアはセキュアだが,オレオレ証明書なので本人証明にはならない.
- SRTP
- 音声・映像のストリームが入っている.
- SCTP
- テキスト,バイナリ転送などができる.DataChannelはこれを使う.
作者注:セキュリティは次のセッションで詳述
- 音声,動画処理
JavaScriptのWebRTC APIを使えばブラウザで完結して処理ができる.
標準化動向
- W3CのWebRTCはどんどん遅れている.
- WebRTC 1.0 p2p部分 2013/9/10ドラフトが発行して,やっと2014/12/5にEditor's Draftで更新した.Media Capture and Streams:一番進んでいる.2015/1Qにラストコールになるかも.
Media系のI/F(スライド34参照)はWebRTC WGと,デバイス系のDeviceAPIs WG合同のTFで検討している.
標準化動向Topics
- DTLS Key Control
- 現状ブラウザで使うDTLSの証明書はブラウザ自身が生成するオレオレ証明書.本来論の正当性を保証するため,アプリ側の証明書を使えるようにする?
- RTCRtpSender / RTCRtpReceiver
- Googleが提案.SDPを扱う新しいアプローチとして,メディアストリームを容易に編集できるようにする.
#作者注:動的なストリームのハンドリングが簡単になる?
-
- ORTCからW3Cへフィードバックされるかも.
- RTCPなどで動的にパラメータを切り替える.
- Promise
- getUserMeiaなど,「前提が成り立った後に行う処理」をそのまま,JSで書くとネストが深くなる.そこで,Promisesを推奨する.
ORTC
もう一つのRTC APIで 2013年はじめから検討開始.
- IETFのMLにWebRTC 1.0の問題点を投げたら,Draftを書いてみろと言われた.
- ドラフト書いたが,WEbRTC1.0を優先することをCiscoが提案.分離してMSなどが検討し始める.IEにも実装し始めた.
- ORTCの技術仕様
- WebRTC 1.0と似ているが,違う箇所もある.DTLSによるデータ転送を司るオブジェクト
- Media
- サービスとしての活用事例(スライド68)
- MistCDN
など.. 海外のサービスが中心.
-
- Skywayも開発者向けに提供している.
- Dialogicがコールセンター向けに出している.
- IoTにもWebRTCが役に立つ.
デモ
gomeeting
Web ミーティング | GoToMeeting
リンクを参加者に共有すれば会議できて,ドキュメント共有もできる
MistCDN
Mist Technologies
CDNを同じページを見ているユーザ同士で,キャッシュを融通する.
20:10〜20:40 セッション2 WebRTC is secure? or not secure? @iwashi86
WebRTC is secure, or not secure? - WebRTC セキュリティ概説 -
Skywayが日本初のTURN商用トライアルを開始.
WebRTCのセキュリティ
- MeetUP #3で言ったことを振り返る.secureと書いてある.
- SRTP
- SCTP
- どんな要素がsecureじゃない?
- 具体的な例から考える.WebRTCの接続相手はp2pなら4つ.
- Webサーバ
- Signalingサーバ
- STUNサーバ
- TURNサーバ
- 具体的な例から考える.WebRTCの接続相手はp2pなら4つ.
→ 守られているのはメディアだけ.Signalingは規定されていないので,サービス開発者がセキュリティを確保する必要がある.
- WebRTCのセキュリティをIPAの定義する側面から網羅してみる.今回はSRTPをスコープにする.
- WebサーバはSSL/TLSを使う.
- STUNサーバは念のためセキュアに.グローバルIP/Portを調べる動作なので.しかし,RFC 5389で認証系の話があるので,知っておくべき.認証にCredentialを長期間使う仕組みと,短期的な仕組みがある.短期的な仕組みは放っておく.
- TURNサーバはクライアント同士のメディア通信を中継するので,CPUなどの計算リソース,NWリソースを大量消費する.勝手に利用されるとまずいので認証が必要になる.
- 認証はSTUNの拡張なので,Credentialが使えるのだがWebRTC的にはイケてない.
- サンプルコードからみてもひどい.UsernameとCredentialがJSに直書き.
- TURN REST Server APIが対策の一つ.
https://tools.ietf.org/html/draft-uberti-rtcweb-turn-rest-00
http://www.ietf.org/proceedings/87/slides/slides-87-behave-10.pdf
-
- Shared Secret(ランダム)を共有して,HMACで共有地を得る仕組み.
- Webサーバで生成したデータを元に,クライアントで生成したデータをTURNサーバに渡して認証する.
- DraftはExpireされているが,有名なTURNサーバ(rfc5766-turn-server)は使ってる.
-
- 責任追跡性,否認防止性
- やらかした人を特定できて,言い逃れさせないこと.電話網へのタダ掛けなど.ユーザ認証して通話記録を取る.
- SIPは賢いので機能が揃っている.
- SignalingのSDP情報は認証する仕組みがある.セッション単位でICEの情報を識別している.
- 責任追跡性,否認防止性
QA
- IDPの真正性は表示できるのか?
→プロトコル上で工夫されていない.認証の正当性をCAが証明するなど考える必要がある.
- Signalingサーバがクライアントの通話が終わったことを検知できる?
→切断の検知を行うにはタイマによる監視などの仕組みが必要.
20:50〜21:00 LT1 ざっくりTURN @iwashi86
- なんでTURNなのか?
- NATの問題,UDPが使えなくてWebRTCが繋がらない
- 負荷・帯域消費がすさまじい
- SkyWayでトライアルを提供しています.
- TURNを使うまでの手順
- Skywayテクニカルサポートで個別に申し込み.手動で認可しているので,受付まで時間が掛かる.
- ライブラリの実装が変わることもあるので,PeerjsのCDNから使うと良い.
- できない場合は最新版を使えばTURN使える.
- 指定しなくてもデフォルトのパラメータでTURNオプションが入っている.
- turn:falseで使わないこともできる
デモ
STUNで繋がらないことを確認して,TURNなら繋がった.
- WebRTC ConferenceでTURNの中身を発表する.
21:00〜21:10 LT2 WebRTC Conferenceの話 ぉぉっゃ
WebRTC Conderenceの紹介.
タダで入れる方法を紹介する.
動機
- 2012年時点で海外は流行っている.西海岸とかでも.10万円のセミナーでも出席者多数
- IoTとかと同じく位の知名度でバスワード?
- 大物も来る
- Temasys社CTO
- MistCDNの作者
QA
- codeIQの解答は?
→1/30(金) には回答が来る.
21:10−21:20 LT3 超ちーん @tadfmac
- WebMIDIを使ったサンプル
- 物理的な音を拾って,対向の音を鳴らしている.
QA
- 音はどうやって鳴らしている?
→ソレノイドで鳴らしている.Twitterにあげとく.
tadfmac/arduino-vusb-midi-attiny45 · GitHub
ArduinoでMidiコントローラーを作ろう
以上.