現在、あるソフトに不正コピー防止のプロテクトを付けようと思っています。
このソフトはWinXP以上でのみ動作するものです。
マシンを識別する方法として、OS固有のID情報の一部をライセンスキーにバインド
する方法を検討しています。それほど厳格なプロテクトでなくても構いません。
この場合に以下のような疑問があります。
・OSのプロダクトID(コンパネのシステムで表示されるものです)はサービスパッ
クの適用などで変更されるのでしょうか?
また、Home EditionからProfessional Editionなどにアップグレードした場合には変更
されるのでしょうか?
・プロダクトIDはインストール時に入力するプロダクトキーに対して一意に決まるも
のなのでしょうか?
プロダクトIDの一部にランダムな値が挿入されるようなことはあるのでしょうか?
・プロダクトIDはレジストリから簡単に取得できますが、今後のWindows 7 などで簡
単に取得できなくなるようなことはあるのでしょうか?
どこかでそのような記事を見たような記憶があるのですが定かではありません。
Vista 以降では、ユーザーはインストール後にプロダクトキーをコンパネから変更できま
す。
インストール時にプロダクトキーを入力せずに、数日間使うことも可能です。
また、MSDN Subscription や Volume License 等で取得したソフトウェアですと、1つの
プロダクトキーで何台ものマシンにインストールできます。
> ・プロダクトIDはインストール時に入力するプロダクトキーに対して
> 一意に決まるものなのでしょうか?
の答えを俺は知りませんが、もしこれが「Yes」なら、使えそうにありませんね。
そういう疑問に答えられる人は Microsoft の中にしかいないと思うが・・・
俺たち部外者がテキトーに「こうだ」と言って、それを信じて何かするつもり?
そりゃ無謀っつーものだ。
Microsoft の中の人は守秘義務的に答えてくれないだろうけどさ。
自己責任で突っ走ってみるのもよし
違う方法を考えてみるのもよし
ノードロックと言われるタイプのプロテクトを想定しているんですかねぇ。
もしそうなら、OSのプロダクトIDはあまり適当ではないような気がしますね。
OSのプロダクトIDなんてメーカーの都合でどうとでも変えられますし。
よく聞くのはNICのMACアドレスを使うケースとHDDのシリアル番号を使うケース
ですかねぇ。これだとまあ、簡単には変わらない気がしますね。
最もハードの入れ替えをされてしまったらどうしようもないでしょうけれど。
いずれにせよ、完璧というのはたぶん無いと思うのでどこまでを期待するのか
がネックになるのではないでしょうか。
みなさん、コメントありがとうございました。
> よく聞くのはNICのMACアドレスを使うケースとHDDのシリアル番号を使うケース
はい。上記の2つは有力なのですが、
LANカードを挿してないPCですとMacアドレスが取れないケースがありますし、システム
が不安定になってハードを初期化してOSを再インストールなどしてしまうと、HDDのシリ
アルナンバーも変わってしまいますよね。私はたまにサポートの仕事などもしているの
ですが、結構ハードを初期化するユーザーは多いようです。
この質問を書き込んだ後もいろいろ調べているのですが、Win32_BIOSというものを使っ
てBIOSのシリアルナンバーを取得するなどの方法もあるようですが、あまりに複雑でち
ょっと・・・という感じです。
多少の抜け道はあってもいいのですが、ある程度PCを識別する方法というのはないもの
でしょうか?
いままでのやりとりだけでは要件が見えてこないので提案できないのだが・・
・どんなユーザーに対して
・どんな操作に対して
・何をどう保護する
のかわからない。
不正コピーって何をどうすること?
a.1枚の CD-R から複数マシンに同一キーでインストールするのは不正コピー?
b.Program Files 以下だけを複写するのが不正コピー?
c.同一ハードウェアでOSがクラッシュして再インストールしたら不正コピー?
d.同一ユーザーがマシンもOSも更新して、ソフト再インストールの場合は不正コピー?
e.それともなんかまったく別の操作?
そもそもグルとかウィザードと呼ばれるレベルのユーザに対しては
どんな対策をとっても破られること必至なので考えるだけ無駄。
一般ユーザー相手にb.レベルの対策を行う、でよいなら
動作キーをインストーラでレジストリ/$(APPDATA) に書くだけでも、十分対策になる
(Program Files 以下を単にコピーしても動作しないわけで)
コピー対策するコスト(でセーブできる不正利用のコスト削減分)と
コピー対策によって正規ユーザが誤ってはじかれてしまい文句を言われて
電話・メール等々によるサポートが必要になる分のコストと
その辺まできっちり考えてバランス取る必要がありそうな気がする・・・
> 多少の抜け道はあってもいいのですが、
ということは、OS 再インストールによる HDD シリアルの変更はその「多少」の基準に当
てはまらない程度に頻繁にあること、言い換えれば、それよりも変更頻度が低いものを求
めているということですね。
> LANカードを挿してないPCですとMacアドレスが取れないケースがありますし
まず、ソフトウェアの利用形態として、
1:インストールする
2:PCを識別する何らかの情報からマシン識別コードを生成する
3:マシン識別コードを何らかの方法でTakaさんに送る
4:送られたコードを元にプロダクトキーを生成する
5:プロダクトキーを入力して使用する
という手順を想定しているということでいいでしょうか。
ここで、
3:マシン識別コードを何らかの方法でTakaさんに送る
というのがあるわけですが、LANカードを挿していないPCを想定するということは、ここ
で生成されたマシン識別コードを、インターネットに繋がっている別のPCにコピーしてメ
ールで送る or Webサイトのフォームからアップロードしてもらうというようなのを想定
しているということですね。
もし、マシン識別コードをユーザーに見せずに自動で送るような仕組みを考えているな
ら、LANカードを挿していないPCでは使えないわけですから。
あとは、同じマシン識別コードでのプロダクトキー発行申請が複数来たらどうなるのでし
ょう?
不正利用していないのに、「多少の抜け道」を予期せず通ってしまい、複数のマシンから
同じマシン識別コードが生成されてしまった場合などですね。
あくまで私ならですが...
やはり、
> よく聞くのはNICのMACアドレスを使うケース
で行くと思います。
> LANカードを挿してないPCですとMacアドレスが取れないケースがありますし
は確かに懸念されますので、代替手段として、
USBドングル
http://ja.wikipedia.org/wiki/%E3%83%89%E3%83%B3%E3%82%B0%E3%83%AB
などを用意します。
で、お客様に、LANカードがあればそちらをライセンスキーとして使用
無い場合には、こちらで用意したドングルをご使用いただく方法もあります。
値段を比較してお客様は当然LANカード購入に走ると...(笑)
商売なんてそういう感じでよいのでは無いかと思います。
ちなみに、USBドングルは高いですがメリットもあります。
複数のマシンにインストールして、ドングルの差し替えで複数のマシンで
作業することが可能です。
つまり、USBドングル1個あたり、同時起動数を1とするだけで、
インストール台数の制限では無くなることです。
欠点はUSBドングル自体を無くされたときの対策
(結局、サーバ問い合わせにLANカードか?^^;)
M/Bのシリアル等も有効かも。
みさなん、コメントありがとうございます。
>aetos さん
> まず、ソフトウェアの利用形態として、
> 1:インストールする
> 2:PCを識別する何らかの情報からマシン識別コードを生成する
> 3:マシン識別コードを何らかの方法でTakaさんに送る
> 4:送られたコードを元にプロダクトキーを生成する
> 5:プロダクトキーを入力して使用する
> という手順を想定しているということでいいでしょうか。
まさに上記の手順です。マイクロソフトやアドビのように自動的にアクティベーション
を行うようなシステムを作成する技量はないので。コードはメールで受け渡しします。
> あとは、同じマシン識別コードでのプロダクトキー発行申請が複数来たらどうなるの
でし
> ょう?
このようなケースはないように識別コードを生成したいと思っていますが、もし別のマ
シンで同じコードが生成されていまうようなことがあっても構わないと思っています。
>bun さん
やはりMacアドレスが最も有力な方法のようですね。
みなさんの意見を聞いて、現状ではMacアドレスとHDDのシリアルナンバーの2つのIDを
組み合わせてマシン識別キーを作成する、という方向性でいこうかと思います。
個人的にはプロテクトは反対なのですが、社の方針でどうしても付ける必要があり、ま
たご丁寧に内部告発(悲しいですが、50台以上のマシンでコピーしまくっているとい
うような話を何件も聞きます)してくれるユーザーもいるのですが、零細企業ゆえにい
ちいち裁判を起こすこともできず、泣き寝入りしているのが現状です。
本当にアドバイスありがとうございました。