タグ

暗号に関するpoginのブックマーク (13)

  • PKI入門 – 日本RA株式会社

    PKI( Public Key Infrastructure:公開鍵基盤)は、安心してインターネットを使うための仕組みです。 インターネットの普及は社会をデジタル化しました。ビジネスでもプライベートでもインターネットの恩恵を受けない日はありません。しかし、一方で迷惑メールや情報漏洩といったデジタル社会ならではの弊害も生じています。 PKIはインターネットの安心・安全を確保するために考案された通信の暗号化と電子的な身分証明の仕組みです。 電子証明書を用いることで、ネットワークを通じた顔の見えない相手でも、誰であるかをはっきりと確認することができます。また、公開鍵暗号という強力かつ利便性の高い暗号方式でインターネット上の通信を暗号化することができます。電子証明書も公開鍵暗号もPKI(公開鍵基盤)に含まれる技術です。PKIとは公開鍵に関連した技術の基盤(インフラ)をさす言葉です。 PKIでは認証

  • デジタル署名文脈での公開鍵暗号方式の誤解を避けるため、署名鍵/検証鍵という表現を使うというお話 - r-weblife

    ritouです。 タイトルに全部書きましたが、Xでharuyamaさんが書かれていたものです。 (広義の公開鍵暗号の)電子署名の文脈においては公開鍵/秘密鍵と言わないで署名鍵/検証鍵などと言ったほうがいいのではないかな— HARUYAMA Seigo (@haruyama) 2024年5月19日 よくある誤解 最近、公開鍵暗号方式がデジタル署名文脈で使われているユースケースに触れる機会が増えてきました。 自分の守備範囲でいうと OpenID ConnectのIDToken パスキーのAttestation/Assertion 雰囲気で使われているJWT認証() あたりでしょうか。 もちろん暗号化/復号のユースケースもあるにはあるのですが、自分の観測範囲ではデジタル署名文脈の方が圧倒的に多く使われています。 このあたりを解説しようとする記事において、誤解というか誤った認識をされがちなのが、

    デジタル署名文脈での公開鍵暗号方式の誤解を避けるため、署名鍵/検証鍵という表現を使うというお話 - r-weblife
  • ハッシュ関数「SHA-256」の計算プロセスをわかりやすく視覚化してくれる「Sha256 Algorithm Explained」

    アメリカの国家安全保障局(NSA)によって開発された「SHA-2」は電子署名やブロックチェーンに応用される暗号学的ハッシュ関数の1つです。そのSHA-2の中でも特に使われているSHA-256でハッシュを生成するための計算プロセスがよくわかるサイト「Sha256 Algorithm Explained」を、Domingo Martin氏が公開しています。 Sha256 Algorithm Explained https://sha256algorithm.com/ Sha256 Algorithm Explainedにアクセスするとこんな感じ。 上部にある入力欄に、好きな文字列を入力します。今回はGIGAZINEのURLである「https://gigazine.net/」を入力してみました。すると、入力したURLをバイナリに変換したメッセージブロックが表示されます。メッセージブロックは32b

    ハッシュ関数「SHA-256」の計算プロセスをわかりやすく視覚化してくれる「Sha256 Algorithm Explained」
  • 楕円曲線暗号のための数学6(GLV法と自己準同型写像)

    初めに 今回は、楕円曲線の数学的な性質を用いたスカラー倍算の高速化手法の一つ、GLV法(Gallant-Lambert-Vanstone)を紹介します。 GLV法は小さいマルチスカラー倍算を利用するので、まずそちらから解説しましょう。 マルチスカラー倍算 一般に、楕円曲線の点 P_1, \dots, P_n, 整数 a_1, \dots, a_n が与えられたときに Q=a_1 P_1 + \dots + a_n P_n を求める操作をマルチスカラー倍算 (MSM : multi-scalar multiplication)といいます。 zk-SNARKなどでは大きな n(数千~数万)に対するMSMが現れます。そのアルゴリズムはまたの機会に紹介するとして、ここでは n=2, つまり楕円曲線の点 P_1, P_2 と、整数 x_1, x_2 に対して Q=x_1 P_1 + x_2 P_2

    楕円曲線暗号のための数学6(GLV法と自己準同型写像)
  • 暗号で使われる標数2の体の実装

    多項式の加算 2個の多項式 a と b の加算を考えます。多項式の加算は同じ次数の係数同士を足したものでした。 a+b=(a_7 X^7 + \cdots + a_0)+(b_7 X^7 + \cdots + b_0) = (a_7 + b_7)X^7 + \cdots + (a_0+b_0). 各係数は 𝔽_2 の要素なので加算は排他的論理和です。それをビットごとにすればよいので、結局整数として排他的論理和を取ればよいです。引き算もaddと同じですね。 typedef uint8_t K; K add(K a, K b) { return a ^ b; } K sub(K a, K b) { return add(a, b); } 多項式の乗算 まずはナイーブな実装から考えましょう。 多項式 a と b を掛けた結果 c=ab を f=X^8+X^4+X^3+X+1 で割ります。f が

    暗号で使われる標数2の体の実装
  • ラバランプはどのようにインターネット暗号化に役立つか?

    さらに詳しく知りたいとお考えですか?是非、Cloudflareが毎月お届けする「theNET」を購読して、インターネットで最も人気のある洞察をまとめた情報を入手してください! Cloudflare暗号化にラバランプを使用する理由 安全な暗号化にするうえでランダム性は非常に重要です。データを暗号化するのにコンピューターが使用するそれぞれの新しい鍵は、攻撃者が鍵を見つけてデータを復号化できないように真にランダムなものでなければなりません。しかし、コンピューターは、任意のインプットに基づいて、予測可能で論理的なアウトプットを提供するように設計されています。予測不可能な暗号鍵を生成するのに必要なランダムデータを生成するようには設計されていません。 強力な暗号化に必要な予測不可能で無秩序なデータを生成するには、コンピューターはランダムデータのソースが必要です。物理世界における事象は予測不可能であるた

    ラバランプはどのようにインターネット暗号化に役立つか?
  • [暗号技術入門] メッセージ認証コード (MAC) と鍵導出関数

    目次の表示 メッセージ認証コード (MAC) MACアルゴリズムMACベースの疑似乱数生成器 認証付き暗号化 (AEAD) HMAC 鍵導出関数(KDF) 鍵導出関数 PBKDF2 Scrypt Argon2 メッセージ認証コード (MAC) や HMAC(ハッシュベースのメッセージ認証コード)および KDF(鍵導出関数)は、暗号学において重要な役割を果たします。ここでは、どのような場面でMACが必要となるか、HMACの計算方法、およびそれが鍵導出関数とどのように関連しているかについて説明します。 メッセージ認証コード (MAC) メッセージ認証コード (MAC) は、与えられた鍵とメッセージによって計算される暗号コードです: auth_code = MAC(key, msg) 通常、これはハッシュ関数のように振る舞います。メッセージや鍵のわずかな変更でも、全く異なるMAC値が得られます。

    [暗号技術入門] メッセージ認証コード (MAC) と鍵導出関数
  • 1兆年以上かかるとされていた1409次元の暗号、KDDIなどが29.6時間で解読に成功

    KDDIとKDDI総合研究所は12月26日、次世代暗号(耐量子暗号)として標準化が進められている「Classic McEliece」方式において、これまでは総当たりによる探索での解読には1兆年以上要するとされてきた1409次元の暗号を、わずか29.6時間で解読に成功し、2023年11月13日に世界記録を更新したことを共同で発表した。詳細は、2024年1月23~26日に長崎で開催される「2024年 暗号と情報セキュリティシンポジウム(SCIS2024)」で発表される予定。 量子コンピュータの性能が向上した将来、現在の方式では暗号強度が不足することが指摘されており、アメリカ国立標準技術研究所(NIST)は2030年ごろに向けて、将来の量子コンピュータの性能にも耐えうる耐量子暗号の検討を進めている。NISTは2022年7月に、耐量子暗号の標準として4つの暗号方式を選定しており、さらに現在はCla

    1兆年以上かかるとされていた1409次元の暗号、KDDIなどが29.6時間で解読に成功
  • ECDLPに対する攻撃手法のまとめ 概要編 - ₍₍ (ง ˘ω˘ )ว ⁾⁾ < 暗号楽しいです

    楕円曲線離散対数問題(Elliptic Curve Discrete Logarithm Problem, 以下ECDLP)が解けるか否か, という問題は暗号理論において楕円曲線が用いられる際の安全性基準として一般的である. 記事から數回に分けてECDLPに対する攻撃手法についてまとめる. ECDLPについて 楕円曲線についてかいつまんで述べる. 体$K$の上の楕円曲線$E/K$をWeierstrass標準形$E/K: y^{2} + a_1xy + a_3y = x ^ 3 + a_2x^{2} + a_4x + a_6$で定義する. 体$K$の標数が2, 3のどちらでもない場合は変数変換により$y^{2} = x^{3}+ax+b$と出来るため, 標数が2, 3で無い時にはこれを明示した上で使用する. 点$P, Q \in E/K$について, 群演算を以下のように定める. ここで,

    ECDLPに対する攻撃手法のまとめ 概要編 - ₍₍ (ง ˘ω˘ )ว ⁾⁾ < 暗号楽しいです
  • RSA署名を正しく理解する

    初めに 「署名とはメッセージのハッシュ値を秘密鍵で暗号化したものであり、検証は署名を公開鍵で復号してハッシュ値と等しいかを確認することである」という説明(×)をよく見かけます。 正しい署名の定義と実際のRSA署名がどのようなものであり、上記説明(×)がなぜよくないのかを理解しましょう。 署名の定義 署名の解説は署名の概要でも解説しましたが、再掲します。 署名(方式)は鍵生成(KeyGen)、署名(Sign)、検証(Verify)の3個のアルゴリズムからなります。 KeyGenではアリスが署名鍵sと検証鍵Sを生成します。署名鍵sは自分だけの秘密の値なので秘密鍵、検証鍵Sは他人に渡して使ってもらう鍵なので公開鍵ともいいます。 Signは署名したいデータmに対して署名鍵sを使って署名と呼ばれるデータσを作ります。 データmと署名σのペアを他人(ボブ)に渡します。 Verifyはボブが検証鍵Sを使

    RSA署名を正しく理解する
  • 数学 - Chinese Remainder Theorem (中国剰余定理) - ₍₍ (ง ˘ω˘ )ว ⁾⁾ < 暗号楽しいです

    記事では中国剰余定理(Chinese Reminder Theorem, CRT)1について解説する. 数学的な定義や意義について触れた後, 応用例としてRSA-CRT, Multi-Prime RSA, そしてPohlig-Hellman Attackについて述べる. 前提知識として, 簡単な初等整数論・群・環の言葉を知っていることが望ましい. 注: 記事は2021/03/02に全面的に書き直された. レビューありがとうございます: @kimiyuki_u CRT 準備 まず, 節でしばしば利用される定理である以下について述べる. Thm. 0. 任意の非零自然数$a, b$に対し, 整数$x, y$が存在して, $ax + by = \gcd(a, b)$をみたす. この定理における$(x, y)$は存在性を示すのみならず$(a, b)$から具体的に計算することが可能であり, そ

    数学 - Chinese Remainder Theorem (中国剰余定理) - ₍₍ (ง ˘ω˘ )ว ⁾⁾ < 暗号楽しいです
  • 暗号化パスワード? ハッシュ化パスワード? - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? TL;DR 長いから大抵省略するけど、単なる「ハッシュ」と「暗号学的ハッシュ」の違いは意識しようぜ! 単なる「ハッシュ」は、データの効率的なインデクス化が由来 「暗号学的ハッシュ」は、元の値が推測困難な一方向性を持った変換を行うもの どちらも「小さな一定の範囲の値に変換する」という意味では共通 まあ今は大抵「ハッシュ」なんだけど「暗号化パスワード」って目くじら立てるほどじゃね? 「暗号学的ハッシュ」が確立される前にできて定着した言葉だから仕方ないね 単なるハッシュ化とも違うので、どういう違いがあるか知っておいた方がいいかな 昔のパスワー

    暗号化パスワード? ハッシュ化パスワード? - Qiita
    pogin
    pogin 2019/02/23
  • 自堕落な技術者の日記 : RSAとECDSA、署名生成と署名検証どっちが速い? - livedoor Blog(ブログ)

    Ruby + OpenSSLで署名 Ruby + OpenSSLでRSAやECDSA署名するには、OpenSSLコマンドで普通に PKCS#5の秘密鍵と公開鍵を準備してこんな感じで署名生成、署名検証すればヨロシ。 # ECDSAの署名生成 prvKey = OpenSSL::PKey::EC.new(File.read(PKCS#5秘密鍵PEM)) hashed = OpenSSL::Digest::SHA1.digest(署名対象メッセージ) sigVal = prvKey.dsa_sign_asn1(hashed) # ECDSAの署名検証 pubKey = OpenSSL::PKey::EC.new(File.read(PKCS#5公開鍵PEM)) hashed = OpenSSL::Digest::SHA1.digest(data) isValid = pubKey.dsa_ver

  • 1