問題タブ [secret-key]
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++ - 暗号的に安全なキーとIVECを決定論的に生成する
バックグラウンド
私は静的なWebコンテンツのユーザーのために動的な認証スキームの開発を可能にするシステムを設計しています。動機は、大量の複雑でありながら機密性の高いWebコンテンツを事前に生成し、Webサーバーによって強制されるCookieベースの(可逆的に暗号化された情報を埋め込む)認証を使用して静的に提供することです。AEADモードの暗号化プリミティブを使用します。
問題
一定期間、たとえば1週間(現在有効なペア)有効なIVECとキーを生成する必要があります。また、過去のIVEC /キーもたとえば2週間有効(履歴的に有効)であり、履歴的に有効なシークレットで暗号化されたデータは、現在有効なIVEC/KEYで再暗号化されます。
私が必要としているのは、乱数とパスフレーズのシードであり、64ビットまたは128ビットの数値ブロックをインデックス付きで生成できる決定論的CSPRNGです。架空のCSPRNGのインデックス要素の1つとして「1970年1月1日」から数週間を使用すると、時間の経過とともにキーを自動的に変更するシステムを構築できるはずです。
私が検討しているアプローチ
現在、cryptoppにはそのような機能が見当たらないか、用語を十分に理解しています。cryptoppは暗号化ライブラリの中で最も先進的であるため、別の暗号化ライブラリを見つける自信がありません。したがって、実装が見つからない場合は、自分で実装する必要があります。連結されたデータから静的な文字列構造を生成し、それをハッシュ(以下に表示)することでうまくいきますか?
RIPEMD160(RandomPreGeneratedFixedNonce:PassPhrase:UInt64SinceEpoch:128BitBlockIndexNumber);
注:ブロック番号は割り当てられ、通常の構造になります。たとえば、128ビットダイジェストの場合、ブロック0の最初の64ビットはivec用になり、要素1のすべては128ビットキー用になります。
これは適切なアプローチですか(つまり、暗号的に安全ですか)?
-編集:コメントを受け入れる投稿-
少し考えた後、私は最初にパスフレーズとナンス/ソルトと考えていたものを16バイト(クリプトグラフィックオールストロング)キーにマージし、PKCS#5で概説されている手法を使用して複数の時間ベースのキーを導出することにしました。パスフレーズは使用されていないため、塩は必要ありません。
c# - Amazon AWSシークレットキーを使用してC#クライアントアプリケーション(S3)をデプロイしますか?
今日、HelloWorldAWSプログラムを作成しました。事前に作成されたS3バケットにファイルをアップロードするだけです。
クライアントデスクトップにデプロイされたこのプログラムのコンテキストでは(議論のために)、私のシークレットアクセスキーは安全ですか?
using (AmazonS3Client a = new AmazonS3Client("MyAccessKey", "MySecretAccessKey"))
{
git - プロジェクトに秘密鍵がある場合、GitHub にプッシュするにはどうすればよいですか?
まったく新しい空の Rail 3.0.4 プロジェクトを GitHub にプッシュしようとしていますが、Cookie セッション ストアに秘密鍵があることに気付きました。
のconfig/initializers/secret_token.rb
では、GitHub にプッシュされないようにするにはどうすればよいでしょうか? このファイルは ( を使用して.gitignore
) 無視できますが、このファイルがないと、Rails アプリはまったく実行されません (完全な Rails アプリではありません)。または、一般に、他のファイルまたはフレームワークにも秘密鍵を含むファイルがある場合があります。このような場合、GitHub にプッシュする際にどのように処理すればよいでしょうか?
twitter - 秘密の API キーをアプリケーションのバイナリに保存する方法は?
私は Mac OS X 用の Twitter クライアントを作成しており、コンシューマ シークレットを持っています。私の理解では、この秘密鍵を共有すべきではありません。問題は、それを文字列リテラルとしてアプリケーションに入れ、次のように使用する場合です。
アプリケーションのバイナリのデータ セクションにあります。ハッカーはこれを読んだり、アプリケーションを分解したりできます。
コンシューマ シークレットを安全に保存する方法はありますか? 暗号化する必要がありますか?
actionscript-3 - Flex3で暗号化を実装するための最良の方法はありますか
製品設計ツールの1つから機密情報を取得するアプリケーションが1つあります。そのため、チャネルとしてHTTPSを使用し、Webサービスに送信する前に要求パラメーターと一部のデータを暗号化しています。だから、すべてが大丈夫のようです。
しかし、セキュリティ監査のアプリケーションを提供したところ、暗号化キーがソースコードにハードコーディングされていることがわかりました。彼らはSothinkSWFDecompilerを使用して私のSWFファイルを調べました。彼らは鍵を握り、それについて懸念を表明した。
このアプリケーションは、Flex 3(SDK 3.4)を使用して開発されました。ソースコードにハードコーディングせずに秘密鍵を使用するための最良の方法はありますか?誰かがこの種の問題に遭遇した場合は、私に知らせてください。
誰でも、ハードコーディングせずにSourceCodeで秘密鍵を使用するための最良の方法を教えてください。
これが私のサンプルコードです:
perl - HMAC SHA256署名用の秘密鍵を生成するPerlコード?
署名されたAPIリクエストを認証するために、 AmazonAWSサンプルと同様のコードを使用することを計画しています。したがって、ユーザーは次のようになります。
$digest
リクエストURIにパラメータとしてアタッチします。サーバー側は同じアルゴリズムを使用してクライアントURIからダイジェストを作成し、それをクライアントから送信された値と比較します。
私が見つけられないのは、HMACSHA256ダイジェストを生成するときに使用する正しい長さのSecretKeyを生成するためのPerlサポートです。
私のAmazonAWSアカウントでは、40ASCII文字のbase64エンコード文字列が提供されています。
クライアント用の適切な秘密鍵を生成するにはどうすればよいですか?
iphone - アップルバイナリ(秘密鍵の安全性)はどれくらい安全ですか
HTTPリクエストを使用してWebサーバーから見積もりデータを取得するiPhone用のアプリケーションを開発しています。
Webサービスを管理している別の開発者と協力しています。iPhoneとWebサーバー間でデータを渡すためにMD5暗号化(単純なxor)を使用しています。
彼は今朝私に質問をしましたが、それは私の知識のプールからかなり率直に言って外れています。
「アップルバイナリはどれくらい安全ですか?」
彼は、誰かがiTunes経由で.appバンドルを取得し、そのバンドルをデコードして私のソースコードに直接アクセスし、データのエンコードに使用している秘密鍵を取得できるかどうかを心配しています。
個人的にはどこから始めればいいのかわからないのですが、もっと知識が豊富で狡猾な仲間がいると思います。
それで、それは可能ですか?もしそうなら、私のソースを安全に守るために何ができますか?
java - KeyGenerator によって生成されたキーを後で使用する方法は?
DES で暗号化と復号化の両方を行うプログラムを作成しています。暗号化プロセス中に使用したのと同じキーを復号化中に使用する必要がありますか? 私の問題は、暗号化と復号化が異なるマシンで実行されることです。これは、暗号化プロセス中にキーが生成される方法です。
それで、キーをファイルに書き込もうと思いました。しかし、SecretKey オブジェクトを String に型キャストできるように見えますが、その逆はできません! では、テキスト ファイルに含まれるキーを抽出するにはどうすればよいでしょうか。そして、このステートメントへの入力として渡しますか?
または、暗号化プロセスと復号化プロセスの両方で、ユーザーからの入力としてキーを取得することは可能ですか?
java - AES 暗号化で InvalidKeyException がスローされるのはなぜですか?
現在、特定のファイルを秘密鍵で暗号化/復号化する機能に取り組んでいます。キーを生成するクラス、キーを使用してファイルを暗号化するクラス、および復号化するクラスの 3 つのクラスを作成しました。
キーの生成とファイルの暗号化は正常に機能しますが、ファイルを復号化しようとすると、次の行で例外がスローされます: c.init(Cipher.DECRYPT_MODE, keySpec);
:
java.security.InvalidKeyException: パラメータがありません
byte[]
秘密鍵を自分にストリーミングするときに何か間違ったことをしたか、ファイルを復号化するときに何かが間違っていると思います。
3 つのクラスの簡単な説明: KeyHandler は AES キーを作成し、ハードドライブに保存します。キー/プレーンテキスト/暗号化/復号化されたファイルの名前は、現在、テスト目的でハードコードされています。
EncryptionHandler
ディスク上の .txt ファイルをバイト単位で転送し、ファイルを秘密鍵で暗号化してから、.txt を使用して暗号化されたバイトをディスクに書き込みますCipherOutputStream
。
DecryptionHandler
もちろん の反対ですEncryptionHandler
。
コードは次のとおりです。
java - Java - 文字列を DES キーに変換する
文字列としての鍵と、DES を使用した暗号化ファイルが与えられました。それが私が知っているすべてです。キーがどのようにエンコードされたかはわかりません。
復号化に使用できるdes.exeもあります。インターネットで見つけたのはこれだけです。-ストレージファームウェア/
des.exe を使用する場合、動作するコマンドは「-d」ではなく「-D」のみです。
私の目標は、Java を使用して同じことを行うことです。どっかからコピペした
そしてそれはうまくいきません。
文字列をキーに変換する際の他のオプションは何ですか?
おそらく、私は暗号化の完全な初心者です。