こちらで試す事が出来ます。あくまで簡易的なんでがっかりしないで下さいね。
簡易DRMのテスト
電子書籍が注目され、iPad関連の話を出版者さんに聞くと、iBookStoreやAppStore、Amazonなどに30%も持っていかれると出版が成り立たないといった話を聞きます。例えば通常だと2000円の本が電子出版では1000円程度でしか売れなくて300円を中間マージンとして持っていかれて、残り700円で編集費、著作料金、制作費、広告費をまかなうというのが大変なようです。またiBookStoreやAppStoreで販売しても多数の本に埋もれてしまい、なかなか売れない事も予想されます。でePubなどを自社サーバからダウンロードできるようにすれば問題は解決しそうですが、コピーされてしまう問題が残ります。このコピー問題を解決する仕組みがいくつかのベンダーさんから出されています。どれも非常に優秀で強固なコピープロテクトをかける事が出来るのですが、高額であったり、1本売れるたびに料金が発生したりと小規模な出版社さんにはちょっと合わないようです。
そこでもう少し簡易な物を実験的に作成しました。AcrobatのJavaScriptを使いPDFに認証をかけます。JavaScriptがOFFのAdobeReaderやAdobeReader以外のリーダーでは読む事が出来ません。認証を解除するには初回起動時にネットワークに繋がっている必要がありますが、一旦認証を解除するといつでも閲覧する事が出来ます。認証を解除したPDFを他のPCにコピーすると、再び認証がかかってしまいます。認証を解除するには元のPCでPDFを認証解除し他のPCで再度認証する必要があります。
オンラインでしか読めないPDFなんかはあるのですが、オフラインにこだわってみました。
http://www.openspc2.org/reibun/Acrobat7/javascript/doc/010/index.html
欠点としては
Acrobatのセキュリティがキツすぎて動かない可能性がある。
暗号化してデータを送って、サーバで解読し、また暗号化して送り返しているので暗号を解析されると破る事ができる。
(暗号化が破られる事より、解除されて読める状態のPDFをばらまかれるのが怖い。)
といったところでしょうか。
詳しいソースはDRMという事もあって書けないのですが、暗号化部分をいろいろ工夫していけば効果あると思います。
しくみは下記のようになっています。
PDFの作成方法ですが
フォームオブジェクトに色を塗ってPDFを隠すという方法が多かったのですが、この場合iPadではフォームオブジェクトが無視されて丸見えという事が判明したので、レイヤー付きPDFにします。上のレイヤーが白で本文を隠します。この状態がデフォルトのPDFなのでJavaScriptが動かないリーダーでは読めません。認証に成功すれば隠しているレイヤーを非表示にするだけです。
変更されたりできないようにセキュリティをかけますが、パスワードによるセキュリティをかけるとJavaScriptがグローバル変数にアクセスできなくなってしまいます。電子著名を使うとうまくいくようです。
iPadで読めないのはくやしいので、オンラインで素のPDFを出す事にしました。iPadとiPhoneは簡単に判別できるので、iPadとiPhoneの場合のみPDFを表示します。PDFの直アドレスはわからないようにしていますが、完璧にするならbasic認証かなんかすればいいかと思います。
なるほど。
ユーザエージェントを偽装してiPadやiPhoneとしてアクセスすると、素のPDFがDLできてしまうわけですね。