問題タブ [cng]
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.
cryptoapi - BcryptSignHash 出力署名のエンディアン
BcryptGenerateKeyPairによって生成される秘密鍵と公開鍵のBLOBは、ビッグ エンディアンでエンコードされます ( http://msdn.microsoft.com/en-us/library/windows/desktop/aa375520%28v=vs.85%29.aspx )。
これらのキーを使用して、BcryptSignHashを使用してデータに署名し、理想的には (r,s) である 64 バイトの署名を生成します。この署名もビッグエンディアンでエンコードされていますか?
64 バイトの署名から r と s を抽出するには、この情報が必要です。64 バイトの署名は、r (最初の 32 バイト) と s (最後の 32 バイト) の連結であると想定しています。
間違っていたら訂正してください
c# - 公開鍵を別の場所から CngKey にインポートしますか?
ECDSA 署名用の公開鍵を共有するクロスプラットフォームの方法を探しています。CngKey と標準の .NET 暗号化ライブラリを使用して、パフォーマンスの観点からは素晴らしいことを成し遂げましたが、33 (または 65) バイトの公開鍵 (secp256r1/P256 を使用) が 104 バイトに変換される方法を理解できませんでした。 MSによる..エルゴ、私はクロスプラットフォームの署名と検証をサポートできませんでした..
今はBouncyCastleを使っていますが、ホーリーハンドグラネードは遅いです!
したがって、次の要件に対する提案を探しています。
- クロスプラットフォーム/言語 (サーバーは .NET ですが、これは JSON/Web.API インターフェースを介して提供されます)
- JavaScript、Ruby、Python、C++ など。
- サーバー上でそれほど遅くない
- クライアントでそれを使用できないほど遅い人ではありません。
クライアントはメッセージに署名できる必要があり、サーバーはサービスへの登録時に交換された公開鍵を使用して署名を検証できる必要があります。
とにかく、アイデアは素晴らしいだろう...ありがとう
cng - CryptBinaryToString/CryptStringToBinary の CNG 置換?
BLOB データをシリアル化するための古い Crypto API 呼び出しに代わる CNG が見つかることを期待していました。CryptBinaryToString
ただし、との CNG 代替品はないようですCryptStringToBinary
。
それとも、ほとんどのプログラマーは先に進んでロードして使用しますCrypt32.dll
か、それとも自分でロールバックするか、サードパーティのライブラリを使用しますか、または...?
security - MSCAPI : CNG およびセキュリティ記述子
Windows API は、オブジェクトにセキュリティ記述子を設定する方法を提供します (たとえば、アクセス制御リストの設定を許可します)。
キー ストレージ プロバイダー(KSP)によってホストされる暗号化キーのセキュリティ記述子NCryptSetProperty
は、 (および適切なフラグとパラメーターのセット)を使用して評価できます。
ただし、Cryptography Provider Development Kit (CPDK)では、セキュリティ記述子の必須サポートは必要ありません(また、ユーザー アカウントが作成されない専用サーバーでは、アクセス制御リストを設定しても実際には役に立たない場合があります)。
すべてにもかかわらず、KSP によるセキュリティ記述子のサポートが一部の Microsoft アプリケーションで期待されているかどうかを誰かが知っていますか? (たとえば、Active Directory 証明書サービスなど)
c++ - bcrypt ライブラリを使用した暗号化/復号化
BCryptDecrypt
エラーを返す関数を呼び出しています。エラー 120 が表示getlasterror
されます。これは、この機能がこのシステム (msdn) でサポートされていないことを意味します。
pbInput
は復号化するデータを含むアドレスへのポインタcbInput
で、ファイルの長さでpcbResult
あり、出力ファイル (復号化されたデータ) のサイズを取得します。BCryptEncrypt
正常に動作していますが、動作していBCryptDecryptis
ません。
誰でも私を助けてもらえますか?復号化に関連する数行のコード:
status = BCryptOpenAlgorithmProvider(&hAlgorithm , BCRYPT_AES_ALGORITHM , NULL , 0); if (!NT_SUCCESS(status)) { return; }
windows - CNG を使用してプレーンテキスト キーを処理するには?
対称暗号化/復号化に使用する定義済みの平文キーのセットがあります。これらのキーは、PC に接続されたハードウェア デバイスとの暗号化通信に使用されます。CNG キー ストレージ プロバイダーを使用してこれらのキーを安全に保存したいと考えています。暗号化と復号化は、CNG の外部で行う必要があります。必要なのは、定義済みのプレーンテキスト キーを格納する安全な場所と、そこから取得する場所だけです。ここ数日、CNG 関数のリファレンスを調べましたが、名前で識別される平文の対称キーを CNG キー コンテナーにインポート/エクスポートする方法が見つかりませんでした。
CryptoAPI がセッション キーをインポート/エクスポートする機能を提供していることは知っています。しかし、この古い API は永続的な (セッション) キーを提供せず、キー コンテナー内で名前でキーを選択/識別する方法がありません。
どんな助けでも大歓迎です。前もって感謝します。
ssl - BCrypt は BCRYPT_KEY_HANDLE から対称鍵を取得します
したがって、 ( BCryptEncryptBCRYPT_KEY_HANDLE
関数から言ってみましょう)「マスターシークレット」または「SymmetricKey」を取得して、暗号化されていないwiresharkのSSLストリームを確認することは可能ですか?
c# - .Net で ECDsa と SHA256 を使用して XML に署名する
ECDsa (ECDsaCng) と SHA256 を使用して .Net で SignedXml を使用しようとしていますが、「署名キーの作成に失敗しました」というメッセージとともに「CryptographicException」が発生します。誰かがその目標を達成する方法を知っていますか、またはecdsaの.netサポートに関する関連情報を知っている必要がありますか? 前もって感謝します。
「signedXml.ComputeSignature();」にエラーが表示される メソッド呼び出し。
openssl - Windows キー ストアに格納されているキーを OpenSSL の事前共有秘密キーとして使用する
これが可能かどうか疑問に思っています。PSK を使用する SSL 接続を既に実装していますが、現在のユーザーのみがアクセスできるように、何らかの方法で PSK を保護したいと考えていました。Windowsキーストアが最も安全だと思いました。
私がこれを行うことができるヒントはありますか?SSL 部分は OpenSSL を使用して既に行われていますが、キー ストレージについてはわかりません。Windows CNG API を試してみましたが、保存されたランダム キーを PSK として使用する方法を理解するのに苦労しています。