Why not login to Qiita and try out its useful features?

We'll deliver articles that match you.

You can read useful information later.

11
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

TouchDesigner Advent Calendar 2020

Day 11

CodeMeterドングルで自前COMPをプライバシー保護

Last updated at Posted at 2020-12-11

これは 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 から設定出来るコレの話です。
スクリーンショット 2020-11-03 150940.png

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

11
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up

Qiita Advent Calendar is held!

Qiita Advent Calendar is an article posting event where you post articles by filling a calendar 🎅

Some calendars come with gifts and some gifts are drawn from all calendars 👀

Please tie the article to your calendar and let's enjoy Christmas together!

11
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?