#author("2025-12-20T16:47:00+09:00","default:irrp","irrp") #author("2026-02-07T00:26:52+09:00","default:irrp","irrp") →セキュリティ関連 →セキュリティ関連ツール →アルゴリズム →数学メイン #contents *サブトピック [#s58af6ea] -暗号化一般 -IPSecまとめ -SSL/TSL/HTTPS関連 --[[SSL-VPN]] -SSH関連 *楕円曲線暗号 [#a1fcac3b] -[[ペアリング曲線標準化が再始動 – Ethereumも採用するBLS12-381の行方 / 開発者向けブログ・イベント | GMO Developers>https://developers.gmo.jp/technology/79036/]] 2025.12 -[[「ED25519」が爆速な理由とその仕組み>https://zenn.dev/reijilog/articles/33d3f6b2d1856e]] 2025.11 -[[楕円曲線暗号のための数学1(射影座標)>https://zenn.dev/herumi/articles/projective-coordinate]] 2024.3 -[[楕円曲線暗号アルゴリズムを理解する>https://techracho.bpsinc.jp/yoshi/2019_08_16/79280]] 2019.8 *AWS KMS [#sa97cbc4] -[[【AWS KMS】暗号化キーの種類と違いを整理してみた - サーバーワークスエンジニアブログ>https://blog.serverworks.co.jp/aws-kms-key-types]] 2025.12 -[[20181121_AWS-BlackBelt-KMS.pdf>https://pages.awscloud.com/rs/112-TZM-766/images/20181121_AWS-BlackBelt-KMS.pdf]] 2018 -[[AWS KMSを使用して暗号化、復号化をコーディングしてみよう(C#編) - ROBOT PAYMENT TECH-BLOG>https://tech.robotpayment.co.jp/entry/2024/09/30/070000]] 2024.9 *TPM [#t67c6c26] -[[Windows 仮想マシンの TPM 通信をキャプチャ・改ざんする>https://io.cyberdefense.jp/entry/tpmproxy-qemu-swtpm/]] 2024.10 -[[無償の TPM オンライン学習が誕生したのでやってみました>https://io.cyberdefense.jp/entry/tpm-ost2/]] 2024.5 -[[【特集】Windows 11で必須になった「TPM 2.0」って何?TPMの役割や確認方法を紹介 - PC Watch>https://pc.watch.impress.co.jp/docs/topic/feature/1334277.html]] 2021.6 --TPM(Trusted Platform Module)は、デバイス上で様々なセキュリティ機能を提供するためのモジュールだ。 --暗号化用アルゴリズムエンジン、ハッシュエンジン、鍵生成器、乱数生成器、不揮発性メモリ(鍵などを保管)などを備えたモジュールで、TPM内への暗号キーの作成や使用制限をするために利用される。 *暗号化関連用語 [#g8c81a46] -[[CRYPTREC | CRYPTREC暗号リスト(電子政府推奨暗号リスト)>https://www.cryptrec.go.jp/list.html]] 2013 --デジタル庁、総務省及び経済産業省は、CRYPTRECの活動を通して電子政府で利用される暗号技術の評価を行っており、2013年3月に 「電子政府における調達のために参照すべき暗号のリスト(CRYPTREC暗号リスト)」を策定 --[[暗号強度要件(アルゴリズム及び鍵長選択)に 関する設定基準(デジタル庁ほか)>https://www.cryptrec.go.jp/list/cryptrec-ls-0003-2022.pdf]] 2022.7 -[[PGP>http://www.atmarkit.co.jp/icd/root/74/5783574.html]] --PGPでは、電子署名としてはRSAを用い、その電子署名とメール本文をIDEA(International Data Encryption Algorithm)と呼ばれる共有鍵暗号方式で暗号化する。そしてIDEAの鍵をRSAによって暗号化する。メール本文の暗号化にIDEAを用いるのは、比較的処理の軽いIDEAでメール本文の暗号化、復号化を行うことで、処理速度の向上を図るためである。RSAによる公開鍵は、送信相手にあらかじめ渡しておく必要がある。 --OpenPGPのRFC:RFC2440 -[[S/MIME>http://www.atmarkit.co.jp/aig/02security/smime.html]] --インターネット電子メールの代表的な暗号化方式で、電子メールの暗号化と電子署名に関する国際規格。MIMEの機能拡張版。メッセージの暗号化と、電子署名を行う機能を持つ。 --S/MIMEは公開鍵暗号方式としてRSAを利用しており、送信者は公開鍵で暗号化処理を行い、受信者はメッセージを読むため秘密鍵を用いる。このため、認証機関が発行した電子証明書が必要となる。 --RFC2311からRFC2315 --バージョン3に対応するRFC:RFC2630〜RFC2634 -[[X.509>http://www.atmarkit.co.jp/aig/02security/x509.html]] --ITU(International Telecommunications Union:国際電気通信連合電気通信標準化部門)が定めたデジタル証明書の標準仕様 -メッセージダイジェスト関数 --ハッシュ関数のうち、変換結果を元のメッセージに戻すことができないものをメッセージダイジェスト関数という --複数のメッセージが同じ結果になることが、計算上ありえない --メッセージダイジェスト関数が変換した結果をダイジェストという --ダイジェストの長さはMD5で16バイト、SHA1で20バイト -電子署名 --メッセージとともにメッセージ内容のダイジェストを暗号化して送る。ダイジェストを復号化して受信側のダイジェストと合っていれば改竄なしと判定する。メッセージ内容が秘匿されているわけではない点に注意。 *ハッシュ化 [#jcfc20c6] →ブロックチェーン関連 -[[「暗号化してからMAC」がなぜ重要か? セキュリティの基本原則を理解する>https://zenn.dev/nihiru/articles/f931d4480bec28]] 2025.6 -[[複雑な8文字のパスワードでも、MD5ハッシュだとGeForce RTX 4090で1時間以内に解読されてしまう - PC Watch>https://pc.watch.impress.co.jp/docs/news/1588850.html]] 2024.5 -[[なぜハッシュ値は元の値を復元できないのか、SHA-256を実装してみる - Qiita>https://qiita.com/_akira19/items/2f206395c21f91e0a0f0]] 2023.10 -[[ソルト付きハッシュのソルトはどこに保存するのが一般的か - Qiita>https://qiita.com/ockeghem/items/d7324d383fb7c104af58]] 2023.8 -[[Hashing Passwords in Python with BCrypt - GeeksforGeeks>https://www.geeksforgeeks.org/hashing-passwords-in-python-with-bcrypt/]] import bcrypt # example password password = 'password123' # converting password to array of bytes bytes = password.encode('utf-8') # generating the salt salt = bcrypt.gensalt() # Hashing the password hash = bcrypt.hashpw(bytes, salt) -[[bcryptを使ってパスワードをハッシュ化とストレッチングをしましょう! - Qiita>https://qiita.com/KomattaSorata/items/b55f16ef829c3096ef81]] 2020 --bcryptは1999年に公開された、Blowfish暗号を基礎にしたパスワードハッシュ化関数です。「ソルト」を組み込んでレインボーテーブル攻撃防止し、キー拡張を反復執行することによってブルートフォース攻撃にも対抗できる仕様になっています。(後続に説明します。) --オリジナルのbcrypt仕様には、接頭辞が $2$ として定義しています。後続に「ASCII以外の文字を扱うようになった」($2a$)、「PHPで8ビット文字列の処理バグを修復した」($2x$, $2y$)と「OpenBSDライブラリによって255文字数制を越えるバグを修復した」($2b$)バージョンが発表され、更新された。 --ストレッチングとは、「生成したハッシュを再度ハッシュ化することです」。これを何度も繰り返すことによって、ハッシュを逆算するに必要な計算時間が増えていきます。 --ストレッチングの回数を増やすことによって、正規でハッシュ化計算を行うサーバーへの負荷も増えます。パフォーマンスや環境を気にかけて、適切なストレッチング回数を設定することが大事です。 -[[ブロックチェーンで勉強でつまづかないためにハッシュ関数について調べる - Qiita>https://qiita.com/kaito_ps/items/2b736726ef0ec0e4649d]] 2022.5 -[[ハッシュ関数「SHA-256」の計算プロセスをわかりやすく視覚化してくれる「Sha256 Algorithm Explained」 - GIGAZINE>https://gigazine.net/news/20220209-sha256-algorithm-explained/]] 2022.2 -http://www.hashkiller.co.uk/md5-decrypter.aspx --HashKiller.co.uk allows you to input an MD5 hash and search for its decrypted state in our database, basically, it's a MD5 cracker / decryption tool. -http://md5cracker.org/ -[[US Secure Hash Algorithm 1(SHA1):http://www.ipa.go.jp/security/rfc/RFC3174JA.html]] -[[Cryptographic hash function@Wikipedia:http://en.wikipedia.org/wiki/Cryptographic_hash_function]] -[[ デファクトスタンダード暗号技術の大移行@IT:http://www.atmarkit.co.jp/fsecurity/rensai/crypt01/crypt01.html]] -[[Canonical Huffman Code:http://codezine.jp/a/article.aspx?aid=376]] *公開鍵暗号化/PKI [#w85db79a] -公開鍵暗号化方式 --暗号化と復号に異なる鍵を使い、片方を公開する。 --公開鍵で暗号化したら、私有鍵(秘密鍵)で復号←この説明は誤りらしい。下方にある[[RSA署名を正しく理解する>https://zenn.dev/herumi/articles/rsa-signature]] を参照 --私有鍵で暗号化したら、公開鍵で復号 --代表的なアルゴリズムはRSA,Diffie-Hellman,DSA -公開鍵は多くの人に渡してもいいが、私有鍵は第三者に渡らないように注意しなければならない。 -[[RSA 暗号をざっくり理解して暗号化と復号をやってみる>https://zenn.dev/aldagram_tech/articles/trying-rsa-encryption]] 2026.2 -[[署名に使うのが公開鍵か秘密鍵か混乱する貴方に>https://zenn.dev/nttdata_tech/articles/7ca9d94187f000]] 2025.7 -[[プログラマのための公開鍵による暗号化と署名の話>https://zenn.dev/herumi/articles/pke-signature-for-programmer]] 2023.9 -[[公開鍵暗号 - 情報処理安全確保支援士 - SE娘の剣 ->https://sc.seeeko.com/entry/public_key_code]] 2022 -[[PKI(Public Key Infrastructure)>http://www.atmarkit.co.jp/aig/02security/pki.html]] --公開鍵基盤 --認証機関から証明書を発行することで、認証局という第三者的機関が、公開鍵とその持ち主を保証する方式 * 鍵と証明書のライフサイクル管理 * 認証機関(CA)機能 * 登録機関(RA:Registration Authority)機能 * 証明書の保管、運用管理用ディレクトリの維持 * 完全な証明書失効システム * 鍵のバックアップとリカバリの仕組み * タイムスタンプ機能 --[[(2) リーマン予想が証明されたら公開鍵暗号が破られるという話を多くの人が信じていますが、それが真であると仮定して暗号を破るアルゴリズムを書くことはなぜできないのですか? - Quora>https://jp.quora.com/%E3%83%AA%E3%83%BC%E3%83%9E%E3%83%B3%E4%BA%88%E6%83%B3%E3%81%8C%E8%A8%BC%E6%98%8E%E3%81%95%E3%82%8C%E3%81%9F%E3%82%89%E5%85%AC%E9%96%8B%E9%8D%B5%E6%9A%97%E5%8F%B7%E3%81%8C%E7%A0%B4%E3%82%89%E3%82%8C%E3%82%8B]] 2021 -[[RSA署名を正しく理解する>https://zenn.dev/herumi/articles/rsa-signature]] 2023.9 --秘密鍵によって行うのは署名であって暗号化ではない -[[RSAの終わりの始まり - 暗号移行再び - Qiita>https://qiita.com/lemiyachi/items/c20a18b172c6f192a262]] 2023.1 -[[RSA>http://www.atmarkit.co.jp/aig/02security/rsa.html]] 2017 --R. Rivest、A. Shamir、L. Adelmanの頭文字 --公開鍵暗号方式 --RSAは、整数論であるオイラーの定理と2つの素数を使って公開鍵暗号の仕掛けを実現しており、大きい数の素因数分解の困難さを暗号化手法としている。 --PKIの基本技術になっている。 --[[サルにもわかるRSA暗号>http://www.maitou.gr.jp/rsa/]] --[[How RSA Works With Examples>http://percepi.blogspot.ca/2012/05/how-rsa-works-with-examples.html]] 2012.5.26 --[[RSA公開鍵暗号アルゴリズムを理解する>https://techracho.bpsinc.jp/yoshi/2017_02_15/35024]] 2017.2 --[[RSAに対するフェルマー攻撃 - Qiita>https://qiita.com/tnakagawa/items/d87fd8459ec9e1ce6844]] 2022.3 *共通鍵暗号化方式(秘密鍵暗号化方式) [#s444b1c1] -対称鍵暗号、秘密鍵暗号とも呼ばれます。 -暗号化に使う鍵と復号に使う鍵が同じ -通信相手ごとに違う鍵を用意して、相手によって使い分ける -ストリーム暗号とブロック暗号に分かれる -ストリーム暗号の1つにRC4があります。RC4はSSLで使われています。 -ブロック暗号はPGPやS/MIME,DES,IDEA -VPNでは通常こちらの方式を使う(速いから)。 -[[共通鍵暗号をTypeScriptで学ぶ>https://zenn.dev/stin/articles/5e0870eaaf9bb0]] 2025.4 -[[AES:Advanced Encryption Standard>http://ja.wikipedia.org/wiki/AES%E6%9A%97%E5%8F%B7]] --アメリカ合衆国の新暗号規格 (Advanced Encryption Standard) として規格化された共通鍵暗号方式 -[[DES(Data Encryption Standard)>http://www.atmarkit.co.jp/aig/02security/des.html]] --DESは、データを64ビット長のブロックに分割し、各ブロックを56ビット長の鍵で暗号化する共通暗号鍵アルゴリズム。トリプルDESは、DESを3重に繰り返すことで、暗号強度を高めている。