Webアプリケーションのハードウェアトークンに実装された暗号化機能を使用する

長い間、クライアントサイトでさまざまな追加ソフトウェアを使用せずにWebアプリケーションで暗号化機能(ハッシュ、デジタル署名、暗号化など)を使用する問題に悩まされていました。 何らかの方法で出会ったすべてのソリューションには、さまざまなプラグイン、暗号プロバイダー、およびその他の関連ソフトウェアのインストールが必要でした。



Webアプリケーションで暗号化変換を使用する問題の解決策について意見を述べたいと思います。



この問題は、Habrの記事で十分に詳細に分析されています:「 ブラウザーのEDS:問題、解決策、個人的な経験 」および「 ブラウザーの電子署名の興味深い解決策 」。



ハードウェアトークンは、内部で必要なすべての暗号化変換を実行するデバイスです。 システムでは、リムーバブルメディアとしても表示され、通常の大容量記憶装置として動作します。



ホストusbポートに接続するトークンは、 127.0.0.1 :portでアクセス可能なローカルWebサーバーである必要があるという考え方です。 トークンの暗号化機能にアクセスするには、適切なサービスを実装する必要があります。



例として、この概念を実証するために、リムーバブルトークンキャリアから起動されるtinyweb Webサーバーを取り上げ、cgiスクリプトの形式でハッシュ関数を実装するサービスを記述しました。 このスクリプトは、暗号化操作の進行状況を判断する機能を含むトークンAPIを使用します。



概略的に、プロセスを図に示します。







技術的には、このように見えます。 ユーザーは、特定のルールに従って形成されたページにWebブラウザーでログインします。 たとえば、ページを作成しました(お気に入りのSencha ExtJS-wcrdemo.16mb.comを使用)



「ハッシュの計算」ボタンをクリックすると、フォームのリクエストがローカルサーバーに送信されます

127.0.0.1:5151 / wTokenZ.cgi?Actionparam = EnumDevices。 EnumDevices-接続されたトークンの識別子とシリアル番号のリストを返す関数呼び出しを定義するパラメーター。 処理を簡単にするために、スクリプトはデータをjson形式で返します。







重要な点に注意したい。 このテクノロジーには、クロスドメインリクエストが含まれます。 実装には、Sencha ExtJSライブラリのdata.Storeコンポーネントとプロキシプロパティとしてdata.ScriptTagProxyを使用しました。



ハッシュの計算も同様の方法で行われます。 スクリプトwTokenZ.cgi actionparam = HashData&deviceSerial = token-serial-number&devicePwd = token-activation-password&dataparam = text-or-filename-for-hashのパラメーターを使用して、要求がローカルサーバーに送信されます。



ハッシュ計算プロセスを監視するために、次のメカニズムが実装されました。 APIトークンのハッシュ関数には、いわゆるアドレスを渡すことができます 長時間の操作中に呼び出される関数のコールバック。 この関数は、その状態をファイルに書き込みます-この場合、元のメッセージの処理済みバイト数。 このすべての経済を、wTokenZ.cgiスクリプトの別のスレッドに実装しました。 クライアント側では、ハッシュ計算リクエストの送信時に、1秒後にローカルサーバーにリクエストを送信する定期的なタスクが起動されます: 127.0.0.1 :5151 / wTokenZ.cgi?Actionparam = GetIndicator。 GetIndicatorは、関数呼び出しを定義し、(ファイルから)処理されたバイト数を読み取り、完了した操作の割合を返す元のメッセージの合計サイズを知るパラメーターです。 監視プロセスを作成、開始、停止するために、TaskMgrコンポーネント(技術的には、タスクはdata.ScriptTagProxyをプロキシプロパティとしてdata.Storeコンポーネント上に構築されます)を使用し、Sencha ExtJSライブラリのProgressBarコンポーネントを使用してプロセスを示しました。



トークンに書き込まれたテストファイルをハッシュした結果を図に示します。







したがって、要約すると、次の点を強調できます。



-重要なポイントは、暗号化アルゴリズムを実装し、リムーバブルメディアとして機能するトークンの使用です。



-暗号化操作を実行するには、上記の例で実装されたスキームを使用する場合でも、サードパーティのソフトウェアをインストールする必要はありません。トークンのみが必要です。



-完全なクロスプラットフォームの場合、そのようなサービスをトークンに直接実装することが望ましいです。



All Articles