これは 2020/11/27 第4回 テクニカルディレクター公開総会 - TECH DIRECTORS PUBLIC MEETING で話した 機能の切り売り についての記事です。機能切り売りについて自分が喋っている様子は コチラの動画 の27:10 あたり
注:
この記事を見て今すぐお手元のTouchDesignerを使って試せる事は一つもありません。表題について興味のある方が時間とお金をかけて取り組む時用の資料です。興味がある方も、以下の文章を読んで一発で理解するのは難しいと思います(固有名詞がガンガン出てくるので。。)ハンズオン動画を用意したので詳しくは動画を見た方が良いと思います。
※作業中のあるある凡ミスもカットしてない未編集ノーカット動画です。凡ミス箇所も併せて参考にして下さい。
https://www.youtube.com/watch?v=ElXCX9qrL9o
自分のtoxをライセンス保護して販売したい
toxをコピペすると一瞬で他のTouchDesignerプロジェクトへコンポーネントを流用出来る。このお手軽さはTouchDesignerを使う事の特大メリットな一方、以下の場合に困る。
- 納品物toxを入れてるPCからtoxファイルだけコピって持ち出されるのが嫌な時
- 自前toxを販売したい。1 tox / 1 license をひもづけたい時
コレのお手軽解決法は無いかDerivativeに相談した所、TouchDesignerライセンス管理ドングルにも採用されているWIBU-SYSTEMS(以下WIBU) CodeMeterを使うのがお手軽でセキュアだとアドバイスを貰った。CodeMeterを使ったTD COMP暗号化についての日本語ドキュメントが無く、そもそも事例がかなり少ないらしく、WIBUの営業さんも経験がなかったようでした。
CodeMeterを使ったライセンス管理方法は2通りあります。
数多くライセンス管理をする人向けの方法(ローカルネットワークにライセンス管理用Webサーバーを立てる方法)ではなく、オフライン完結のCodeMeter License Editorを使う、運用手間が少ない方法のメモ残しておきます。
※↓COMP右クリ > Privacy > Dongle から設定出来るコレの話です。
Component Privacy
COMPのお手軽プライバシー保護方法は2つある。どちらもProライセンスが必要。
参考: https://docs.derivative.ca/Privacy
1. COMPを右クリ > Privacy から、パスワードで保護
Pros:
簡単。即導入可能
Cons:
COMP内に入れないようパスワード保護するだけ。Cookは走る = toxさえあれば、作者が保護したくてもとりあえず動いてしまう。
2. COMPを右クリ > Privacy から、CodeMeterドングルを使ってComponent Privacyを有効にする
Pros:
セキュア。中身も見れないし、ドングルが無いとCookが走らない
Cons:
費用がかかる。SDKを郵送で送ってもらうので導入まで数営業日かかる
この 2. が今回の主題「CodeMeterを使ったライセンス保護」にあたる。
TouchDesigner自体のライセンス管理ドングルもCodeMeterを使っている。CodeMeterを使ってCOMPを暗号化する為の仕組みもTouchDesignerに組み込まれている。
今回はこの 2. を採用して、TouchDesignerのライセンスドングル 又 は自前のUSBドングル どちらかにCOMPのライセンスを入れ、そのドングルが無いとCookが走らないような状態を作る事をゴールとします。
CodeMeterの仕組みについての解説は省略し、TouchDesignerで↑コレを実現する手順だけを解説します。
CodeMeter
販売元のWIBU営業さんに日本語で問い合わせ可能。
https://www.wibu.com/jp/products/codemeter.html
CodeMeterの仕組みについてはWIBUのWebサイトを見て下さい。
またWebサイトに掲載されている情報以外にも、営業さんが詳しい資料や噛み砕いた資料を沢山持っているので、CodeMeterの仕組みがよくわからない場合は即営業さんに問い合わせるのが良いと思います。
費用についてはここに記載出来ないのでWIBUの方に問い合わせて下さい。
大事な語彙
以下、WIBUに関する大切な語彙
-
CodeMeter SDK
暗号化SDK。TouchDesignerに既に組み込まれてるので、TouchDesignerを使ってCOMPを暗号化したい人は意識しなくていい -
Firm Code
企業ごとに固有の番号。符号無し整数。(Derivativeのファームコードは102327) -
CmContainer
ドングル内にいれるコンテナ。このコンテナに FirmCode をひもづける -
Product Code
プロダクト = ライセンス保護したいCOMP の管理番号。符号無し整数 -
CodeMeter License Editor
ライセンス管理ポータル。デスクトップ用ソフト。WIBUに問い合わせると送ってくれるDVDに同梱されている -
CodeMeter Contol Center
エンドユーザーも使うデスクトップ用ソフト。TouchDesignerドングルユーザーが、ライセンスのリクエストファイルを作る時に起動する奴 -
FSBドングル
FSB = Firm Security Box。正式名称か分からないけど便宜上こう呼びます。マスターキーのような存在で、これを使ってエンドユーザー向けのライセンスドングルを作ります。
以下WIBUとは関係無い、Derivativeが独自に表記している 大切な語彙(この語彙の意味がよくわからずハマった)
-
License Dongle
エンドユーザーが使うドングルの事 -
Developer Dongle
COMPにプライバシー保護をかける為のドングルの事。中身はLicense Dongleとほとんど同じ。唯一、ProductCodeに FeatureMap=1 というプロパティがついている という違いがある(後述)
Privacy保護作業のイメージと、おおまかな流れ
以下、ライセンス発行者を A社 と表記します。
FSBドングルを使ってエンドユーザー向けのライセンスドングルを作る作業イメージ
空のドングル内にA社のFirmCodeにひもづいたCmContainerを登録します。これで「ファームアイテム」というカギの入れ物のような物が出来た という状態です。
次に、ファームアイテム(カギの入れ物)に Product Code(A社の特定のプロダクトを使う為のカギ) を登録します。特定プロダクトを使用する為の「プロダクトアイテム」という物がファームアイテム配下に追加されました。
これでエンドユーザー向けのA社の特定のプロダクトを使う為のライセンスドングルが完成しました。この一連の作業にはFSBドングル
が必要です。空のドングルはWIBUから購入します。Derivativeから買うTouchDesignerライセンスドングルもWIBUが販売しているドングルを全く同じ仕様です。Derivativeから買ったドングルにA社のFirmCode / ProductCodeを入れる事も可能です。
実際の流れ
-
CodeMeter SDK
をWIBUから購入する。DVD郵送でSDKが数営業日後に届く。DVDには空のドングルが付いてた。 - SDK購入時に、同時にA社の
Firm Code
を発行してもらう。数営業日後にメールでFirm Codeが送られてくる -
CodeMeter License Central
を起動する(DVDに同梱されている) - 空のドングルをFSBドングルにする。
CodeMeter Control Center
を使って、WIBUから送られてくるCmFirm-xxxxxxx.wbc
をドングルに入れるとFSBドングルになる。 - FSBドングル内にA社の
CmContainer
を作る為の情報を入れる。WIBUから教えてもらうURLにアクセスし、WIBUから教えてもらうチケット番号を入力するとFSBドングルにCmContainer
を作れる機能がアクティベートされる。CmContainer
を10個作れる機能 = xxxxx円 という形でWIBUから諸々購入する - 空のドングルを2個用意する。
Developer Dongle
用とLicense Dongle
用 -
License Dongle
を作る。ドングルにFirmCode
を登録し、その中にProductCode
を登録する -
Developer Dongle
を作る。ドングルにFirmCode
を登録し、その中にProductCode
を登録する。ProductCodeを登録する際、FeatrueMap=1
のプロパティを付与する。このプロパティを持ったドングル保持者のみ、Developerとして判断され、COMPの中に入ることができる -
Developer Dongle
をPCに刺して、TouchDesignerでCOMPを暗号化する。暗号化されたCOMPはLicense/Developerどっちかのドングルが刺さってないと中に入れないしCookも走らない = 今回のゴール!
ユーザーのドングル内容をリモートで更新する方法
TouchDesignerライセンスドングルの使用方法 と同じです。
- ユーザーから
Dongle Update File(.WibuCmRaC)
を送ってもらう。 - 受け取った
.WibuCmRaC
ファイルをCodeMeter License Editor
で開く。File > Open context file
- オフラインでの作業時と同様に、
ProductCode
等の追加・削除編集をする - 新たに出来た
.WibuCmRaU
ファイルをユーザーへ返送する(ユーザーから受け取るものと拡張子が1文字違うので注意) - ユーザーは
CodeMeter Contol Center
を使って、受け取った.WibuCmRaU
ファイルをドングルに入れる
その他
Pythonを使って暗号化を自動化出来る
https://docs.derivative.ca/COMP_Class#Privacy_2
ある程度自動化したものがコチラ
https://drive.google.com/file/d/13nXtKZ7qmDWl5L1pFBSWR3IxtmwmJfx5/view?usp=sharing