問題タブ [hsm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - .Net で PKCS #11 準拠の HSM デバイスとやり取りするにはどうすればよいですか?
Thales WebSentryと通信するクライアント アプリケーションを C# で作成することになっていますが、開始方法についていくつかのヒントが必要です。
デバイスには Java SDK が付属していますが、.NET でプログラミングを行う必要があります。.NET に使用できるライブラリはありますか、それともすべて低レベルで (ソケットに直接) 実行する必要がありますか。どのように、どこから始めるべきかについてのヒントや指針はありますか?
ありがとう!
.net - HSM 上の秘密鍵を使用した SSL
私のアプリケーションには、SSL を使用するクライアント/サーバー アーキテクチャがあります。現在、秘密鍵は CAPI のキー ストアの場所に格納されています。セキュリティ上の理由から、キーをより安全な場所、理想的にはこの目的のために構築されたハードウェア署名モジュール (HSM) に保存したいと考えています。残念ながら、そのようなデバイスに秘密鍵が保存されているため、アプリケーションでそれを使用する方法がわかりません。
サーバーでは、SslStream
クラスとAuthenticateAsServer(...)
呼び出しを使用しているだけです。このメソッドはX509Certificate
、秘密鍵がロードされたオブジェクトを取得しますが、秘密鍵は HSM 上の安全な場所 (エクスポートできない場所など) に格納されているため、これを行う方法がわかりません。
クライアントでは、HttpWebRequest
オブジェクトを使用し、ClientCertificates
プロパティを使用してクライアント認証証明書を追加していますが、ここでも同じ問題があります。秘密鍵を取得するにはどうすればよいですか?
SSL アクセラレータとして機能する HSM がいくつかあることは知っていますが、実際にはアクセラレータは必要ありません。また、これらの製品は、私が使用していない IIS や Apache などの Web サーバーと特別に統合される傾向があります。
何か案は?私が考えられる唯一のことは、トランザクションの署名部分を HSM に渡すことができる独自の SSL ライブラリを作成することですが、これは膨大な量の作業のように思えます。
security - 暗号化機能を開発するための HSM に代わるソフトウェア セキュリティ モジュール/ツールキット
私は、HSM を使用してキーを生成、保存し、暗号化機能を実行する PKI プロジェクトに取り組み、完了しました。PKCS#11 を使用して、署名/検証および暗号化/復号化のためにアプリケーションとやり取りしました。私たちのプラットフォームは Windows です。
現在、HSM をソフトウェア セキュリティ モジュールに置き換えることで、低コストの代替ソリューションを提供しようとしています。ここで、HSM を使用しないことの欠点を認識していることに注意する必要があります。セキュリティとコストのトレードオフです。
Microsoft が Next Generation CryptoAPI (CNG)、キー ストア、および証明書サービスを提供していることがわかりました。私の上級管理職は、オープンソース ソフトウェアを使用する傾向がありません。また、ソフトウェア ベースのソリューションを実行するための RSA および暗号化オファリング ツールキットも見つけました。
キー生成、キー ストア、および暗号化機能を実行する商用ソフトウェア セキュリティ モジュール ツール キットを見つけた人はいますか?
プログラミング言語 - c/c++
ありがとう
ラージ
optimization - ネストされた状態からネストされた状態への移行のベスト プラクティス (図を参照)
私は、単一のスレッド化されたプログラミング言語 (Actionscript) でネストされた状態遷移を実装するための最良の方法に頭を悩ませようとしています。このビヘイビア ツリーのような構造があるとします。
ここで、各リーフ ノードが、ギャラリーの画像や、ページ ビューにネストされた投稿ビューにネストされたコメントのように、Web サイトの目的地であると想像してください...そして、目標は、リーフからアニメーション化されたトランジションを実行できるようにすることです。ノードからリーフ ノードへ、前のツリーを (下から上へ) アニメーション化し、現在のツリーで (上から下へ) アニメーション化します。
そのため、一番左下のリーフ ノードにいて、一番右下のリーフ ノードに移動したい場合は、次のようにする必要があります。
- 左下のノードから移行
- 完了すると (たとえば、アニメーションの 1 秒後)、親から移行します。
- 完了すると、その親から移行します
- 完了すると、一番右の親に遷移します
- 完了時、右端の子に遷移
- 完了時、リーフで遷移
私の質問は:
これらの各ノードを HTML ビュー (リーフは「部分」であり、レールから用語を借用したもの)、またはサブコンポーネントをネストしている MXML ビューとして想像すると、アプリケーションルート、上記のように遷移をアニメーション化する最良の方法は何ですか?
1 つの方法は、考えられるすべてのパスをグローバルに保存してから、「アプリケーション、このパスから遷移し、このパスに遷移します」と言うことです。アプリケーションが非常に単純な場合、これは機能します。これが、Actionscript フレームワークであるGaiaのやり方です。ただし、任意にネストされたパスに出入りできるようにしたい場合は、次の理由により、それをグローバルに保存できません。
- Actionscript はそのすべての処理を処理できませんでした
- 良いカプセル化のようには見えません
したがって、この質問は次のように言い換えることができます。どのように左端の葉のノードとその親を葉から開始し、右端の葉のノードでルートから開始してアニメーション化しますか? その情報はどこに保存されますか (何を移行するか)。
別の可能な解決策は、「アプリケーション、前の子ノードから移行し、それが完了したら、現在の子ノードに移行する」ということです。ここで、「子ノード」はアプリケーション ルートの直接の子です。次に、アプリケーション ルートの一番左の子 (2 つの子ノードがあり、それぞれに 2 つの子ノードがあります) は、正しい状態にあるかどうかを確認します (その子が「移行されている」場合)。そうでない場合は、それらに対して「transitionOut()」を呼び出します...そのようにして、すべてが完全にカプセル化されます。しかし、それはかなりプロセッサ集約的であるようです。
どう思いますか?他の代替手段はありますか?または、 AI Behavior Treesまたは Hierarchical State Machines で、非同期状態遷移を実際に実装する方法を説明している優れたリソースを教えてください。
- オブジェクトのどこから「transitionOut」を呼び出すのでしょうか? ルートまたは特定の子から?
- 状態はどこに保存されますか? グローバルに、ローカルに?「transitionIn()」と「transitionOut()」を呼び出すものを定義するスコープは何ですか?
私は AI とステート マシンに関する多くの記事/本を見たり読んだりしましたが、ビヘイビア ツリーに参加する数百のビュー/グラフィックスを含む複雑な MVC オブジェクト指向プロジェクトで非同期/アニメーション遷移を実際に実装する方法を説明するものをまだ見つけていません。
一番親のオブジェクトからトランジションを呼び出すべきですか、それとも子からトランジションを呼び出すべきですか?
ここに私が調べたもののいくつかがあります:
- ゲーム ビヘイビア AI のアーキテクチャ: ビヘイビア マルチキュー
- 階層ステート マシン — 基本的に重要な設計方法
- 例によるゲーム AI のプログラミング
- 目標主導のエージェントの行動
- トロイ・ガードナーによる高度な状態管理
- Troyworks の AS3 COGS ライブラリ
- ビヘイビア ツリー設計への一般的なアプローチ
- 非同期感覚システムのイベント駆動条件の構築
これは必ずしも AI の問題ではありませんが、ネストされた状態のアーキテクチャを Web サイトに適用する方法を説明する他のリソースはありません。これらは最も近いものです。
質問の別の言い方: 状態の変化をアプリケーションにどのようにブロードキャストしますか? イベントリスナーはどこに置いていますか? 任意にネストされている場合、アニメーション化するビューをどのように見つけますか?
注: 私はゲームを構築しようとしているのではなく、アニメーション化された Web サイトを構築しようとしているだけです。
encryption - HSM-cryptoki-セッションのオーバーヘッドを開く
HSMとのセッションに関する質問があります。
暗号化/復号化するすべてのファイルのcryptokiapiを初期化および終了すると、オーバーヘッドが発生することを認識しています。
私の質問は、
すべてのファイルの個々のセッションを開いたり閉じたりする際にオーバーヘッドがありますか?暗号化/復号化する必要があります。(C_Initialize / C_Finalize)
パフォーマンスに影響を与えることなく、HSMに対して同時に最大セッション数をいくつ持つことができますか?
個々のファイルを処理するためにセッションを開いたり閉じたりするのが最善の方法ですか、それともセッションを開いて複数のファイルを処理してからセッションを閉じるのが最善の方法ですか?
ありがとう
encryption - HSM - cryptoki - セッション - タイムアウト
私のアプリケーションは、PKCS#11 を介して ASP.NET Web サービス経由で HSM にアクセスします。cryptoki ライブラリを初期化し、セッション ハンドルを取得します。Web サービスはこのハンドルを保持して、バッチ モードで暗号化/復号化/署名/検証を実行します。
私が直面している問題は、20 分後の ASP.NET Web サービスのタイムアウトです。この行為は、cryptoki ライブラリをアンロードし、Web サービスが保持するセッション ハンドルが無効になると思います。はい、タイムアウトしないように ASP.NET Web サービスを再構成できることに同意します。これにより、cryptoki ライブラリが常に読み込まれます。
私の質問は、最初に HSM から取得したセッション ハンドルはどうなりますか? それは失われますか、それとも未使用のままでしょうか?を呼び出して開いているセッションを適切に閉じていないため、これを求めていますc_closeSession
。
Web サービスは、スレッド プールを介して実装されます。
ありがとう
encryption - pkcs#11 メモリ エラー - 一般的な理由は何ですか?
cryptoki ライブラリを使用した呼び出しのCKR_DEVICE_MEMORY
エラー コードを取得しています。C_Encrypt
PKCS#11 仕様からCKR_DEVICE_MEMORY
、要求された機能を実行するのに十分なメモリがトークンにないことを意味します。
どのような状況で、トークンのメモリが完全にいっぱいになりますか?
HSM は 7 日間 24 時間 365 日連続で稼働しており、日中は主に 2 つの並行セッションでファイルの暗号化と復号化を行っています。私はC_Finalize
過去 7 日間電話をかけていません。そのため、cryptoki ライブラリは、初期化された時点からメモリ空間で動作しています (これに関する関連記事を参照してください)。
アプリケーション、デバッグ ログなどから確認できますが、割り当て中、割り当て解除中なので、アプリケーション コードからのメモリ リークはありません。
更新 1: ASP.NETを呼び出す方法については、関連する詳細な議論があります。これを使用できなかった主な理由は、リサイクル/タイムアウトの後、ASP.net スレッドが単一のセッションにアクセスして CKR_OPERATION_ACTIVE エラーが発生するためです。私の場合、複数のアプリケーションが Web サービス経由で HSM にアクセスしています。C_Finalize
Application_End
php - PHP で PKCS#11 準拠の HSM デバイスとやり取りする方法
Linux サーバーで実行されている PHP アプリケーションで、PKCS#11 準拠の HSM (SafeNet iKey 2032 [USB] や Aladdin eToken PRO [USB] など) からキー マテリアルを使用するにはどうすればよいですか?
c - Cでの階層型ステートマシンの実装
ステートマシンの実装方法について少し混乱しています。
一部の州が同じアクションを共有しているため、階層的であることはすでに知っています。
私はこれらのパラメータによって何をする必要があるかを決定します:
- クラス(値は次のとおりです:Base、Derived、Specific)
- OpCode
- パラメータ1-オプション
- パラメータ2-オプション
私の階層はクラスによって決定され、OpCodeはアクションを表します。
DerivedはBaseのOpCodeを使用でき、SpecificはBaseとDerivedの両方のOpCodeを使用できます。
素朴な実装は次のとおりです。
これにより、メンテナンスが非常に迅速になります。
状態をスーパークラスにマップする別の方法はありますか?
編集:さらに計算すると、すべてではないに
してもほとんどのOpCodeを使用するだろうと思うようになりますが、使用可能なすべてのクラスを使用するわけではありません。
別の説明:
一部のOpCodeは、複数の派生クラスと基本クラスを介して共有される場合があります。
例えば:
- 基本クラス であるAnyというクラスがあります。オペコードがあり ます:STATE_ON、STATE_OFF、STATE_SET。
派生クラスであるMyGroupという 別のクラスがあります。オペコードがあります: STATE_FLIP、STATE_FLOP。
3番目のクラスは、OpCode: STATE_FLIP_FLOP_AND_FLOOPを持つThingInMyGroupと 呼ばれる特定のクラスです。
したがって、クラスAnyのメッセージがサーバーから送信され、すべてのクライアントで受信されて処理されます。
クラスMyGroupのメッセージはサーバーから送信され、すべてのクライアントで受信され、 MyGroupに属するクライアントでのみ処理されます。Anyクラスに有効なすべてのOpCodeは、 MyGroupクラスに有効です。
クラスThingInMyGroupのメッセージはサーバーから送信され、すべてのクライアントで受信され、 MyGroupに属し、ThingInMyGroup*であるクライアントでのみ処理されます。AnyクラスおよびMyGroupクラスに有効な**OpCodesはThingInMyGroupクラスに有効です。 。
メッセージが受信された後、クライアントはそれに応じてACK/NACKを実行します。
スイッチケースやconst配列は大きくなると保守できなくなるため、使用しない方がいいです。
次のような柔軟な設計が必要です。
- 各クラスで使用可能なOpCodeを指定します。
- 各クラスのスーパークラスを指定し、その指定を通じて、現在のOpCodeで表される関数ポインターを呼び出せるようにします。
c++ - C++ のどのステート マシン実行フレームワークが UML セマンティクスを実装していますか?
階層ステート マシン (HSM) の実行を提供するフレームワークを探しています。
フレームワークの要件は次のとおりです。
- UML ステート マシンのセマンティクスに準拠する (可能な限り)
- 少なくともサポート
- 実行から完了までのセマンティクス
- 階層状態
- 入口と出口のアクション
- 遷移アクション
- 警備員
- カスタム パラメータを使用したイベント
- オブジェクト指向であるか、少なくとも OO 設計を禁止していない
対象プラットフォームはOS搭載の中・大規模組込みシステムです。
上記の要件を満たすフレームワークを知っていますか? フレームワークの長所と短所は何ですか?