Awesome Cryptography
Cryptographyを扱う資料や関連プロジェクトをまとめたAwesomeリストです。
目次
理論
Algorithms
Symmetric encryption
- 3DES - 対称鍵ブロック暗号(またはトリプルデータ暗号化アルゴリズム(TDEAまたはトリプルDEA)で、各データブロックに対してデータ暗号化標準(DES)暗号アルゴリズムを3回適用するもの。
- AES - 対称鍵ブロック暗号アルゴリズムおよび米国政府が安全かつ分類データの暗号化および復号に採用した標準(別名Rijndael)。
- Blowfish - 1993年にブリュース・シュネイアが設計した対称鍵ブロック暗号。設計上の特徴には、鍵に依存するSブロックと非常に複雑な鍵スケジュールが含まれる。
Asymmetric encryption
- DH - 公開チャネルを介して暗号鍵を安全に交換する方法。RSAとは異なり、ディフィー・ヘルマン鍵交換は暗号化ではなく、二つの参加者間で共有秘密値を合意するための手段に過ぎず。生成された鍵が完全に擬似乱数であるため、DH鍵交換は前向きセキュリティ()を提供できる。 https://en.wikipedia.org/wiki/Forward_secrecy
- ECC - 有限体上の楕円曲線の代数構造に基づく公開鍵暗号システム。
- RSA - 最初の実用的な公開鍵暗号システムの一つであり、安全なデータ伝送に広く用いられている。RSAでは、この非対称性は、二つの大きな素数の積を因数分解するという実用的な困難さに基づいている、因数分解問題に依存している。
Transform Encryption
- Transform Encryption (aka Proxy Re-Encryption) - 変換暗号は、受信者に暗号化するための鍵、暗号文を復号するための鍵、そして一つの受信者に暗号化された暗号文を別の受信者に復号できるように変換するための鍵の3つの数学的に関連する鍵を使用する。
Hash functions
- MD5 - 128ビットのハッシュ値を生成する広く使われているハッシュ関数。MD5は元々暗号ハッシュ関数として設計されたが、多くの脆弱性が見つかり、現在はデータの整合性を確認するためのチェックサムとしてのみ使用できるが、意図しない損傷に対してのみ。
- SHA1 - 米国国家安全保障局(NSA)が設計した暗号ハッシュ関数。SHA-1は160ビットのハッシュ値(メッセージディジェスト)を生成する。SHA-1は現在、資金の豊富な相手に対しては安全ではないとされている。
- SHA2 - 米国国家安全保障局(NSA)が設計したハッシュ関数のセット。SHA-256とSHA-512はそれぞれ32ビットと64ビットのワードで計算される新しいハッシュ関数であり、異なるシフト量と加算定数を使用しているが、構造はほぼ同一であり、輪数の数だけが異なる。
- SHA3 - 変動サイズの入力データから固定サイズの出力(通常224、256、384、または512ビット)を生成する暗号ハッシュ関数。これは量子コンピュータによる攻撃に耐えられるように設計されたSHA-3ファミリーの暗号アルゴリズムの一部であり、前像抵抗性、二重前像抵抗性、および衝突抵抗性といったセキュリティ特性を提供する。
Articles
- How to Generate Secure Random Numbers in Various Programming Languages。
- Password Insecurity - パスワードセキュリティに興味があるすべての人向けに書かれた記事。
- Secure Account Recovery Made Simple。
Books
- A Graduate Course in Applied Cryptography - 暗号におけるさまざまなタスクに向けた多くの構成を扱った書籍。
- An Introduction to Mathematical Cryptography - 現代暗号の導入。
- Applied Cryptography: Protocols, Algorithms and Source Code in C - この暗号の古典的書籍は、現代暗号についての包括的な調査を提供する。
- Crypto101 - Crypto 101は暗号に関する導入コース。
- Cryptography Engineering - 現実世界で機能する暗号プロトコルを構築する方法を学ぶ。
- Handbook of Applied Cryptography - この書籍はプロフェッショナルな暗号学者のための参考書として意図されている。
- Introduction to Modern Cryptography - 現代的なコンピュータサイエンスの視点から書かれた暗号の初級レベルの解説。
- OpenSSL Cookbook - OpenSSLに関する書籍。
- Practical Cryptography for Developers - 現代暗号(ハッシュ、MACコード、対称および非対称暗号、鍵交換、楕円曲線、デジタル署名)についての開発者向けの書籍で、多くのコード例が含まれている
- Real World Cryptography - 本書は、システムおよびアプリケーションのすべてのレベルにおけるセキュリティを理解し、適用するための応用暗号技術を教える
- Security Engineering - カナダ・カーヴィン大学のコンピュータセキュリティ教授ロス・アンダーソンが執筆した、非常に優れた教科書
- Serious Cryptography - ジャン=フィリップ・アマッソンによる『現代暗号の実用入門』
- The Code Book - 本書は暗号の歴史を網羅しており、古代から現代の暗号技術までをカバー。最後に演習問題があり、その解答には10,000ドルの報酬が与えられた
- The Cryptoparty Handbook - 本書はコンピュータおよびインターネットセキュリティのさまざまなテーマについての包括的なガイドを提供
- Understanding Cryptography - よく見過ごされがちだが、初心者にとって非常に有益な書籍。各章の最後に多くの演習問題が含まれており、概念の強化やアイデアの定着を目的としている
Courses
- A Self-Study Course In Block-Cipher Cryptanalysis - ブライス・シュネイアが執筆した論文は、ブロック暗号の暗号解析に関する既存文献を学生が学習できるように整理している
- Applied Cryptography - 暗号は、クレジットカードの支払いから電話の利用まで、私たちの日常に存在している。コンピュータにおけるパズルの作成と解き方について学ぼう
- Crypto Strikes Back! - この講演では、広く導入されているシステムにおける暗号脆弱性と、最小のミスが災害を引き起こした事例について述べる
- Cryptography - マーリン大学コロンビアパーキーの暗号学に関する実用的なコース
- Cryptography - Stanford University - 本書は暗号の基本的な構成要素の内部仕組みと、正しい使用方法を説明し、学生が暗号構成の安全性について考える方法や、それらを現実のアプリケーションに応用する方法を学ぶことができる
- Cryptography 101: Building Blocks - アルフレッド・メネゼスによる初級コース(2024年秋)は、基本的な暗号構成要素(対称鍵暗号、ハッシュ関数、MAC、認証暗号、公開鍵暗号、署名、鍵合意、RSA、楕円曲線暗号)をカバーしている
- Cryptography I - コースは、共有鍵を持つ2つの参加者が、強力な敵が通信を監視・改ざんする場合でも安全に通信できる方法について詳細に説明し、多くの実際のプロトコルを検討し、既存システムの誤りを分析する
- Cybrary Cryptography - このオンラインコースでは、暗号がセキュリティの柱であり、暗号化手法(暗号、公開鍵または秘密鍵)を用いることで、個人または機密情報を不正アクセスから保護できることが説明される
- Harvard’s Cryptography Lecture notes - ハーバード大学のCS127向けの初級だが、スピードが速い大学院・初級修士課程の暗号学講義
- Journey into cryptography - カーンアカデミーの暗号学コース
- Practical Aspects of Modern Cryptography - 現代暗号の実用的側面、2006年冬、ワシントン大学CSE
- Theory and Practice of Cryptography - 現代暗号入門、実際の暗号利用およびグーグルでの応用、セキュリティ証明とセキュリティ定義、暗号学の特別トピック
Other lists
- Awesome crypto-papers – 暗号学に関する論文、記事、チュートリアル、ハウツーを厳選したリスト
- Awesome HE – 同調暗号ライブラリ、ソフトウェア、リソースのキュレーションリスト
- TLS Cipher Suites - TLSの暗号化方式とそのセキュリティ評価のリスト
ツール
Standalone
- Bcrypt - マルチプラットフォーム対応のファイル暗号化ツール
- blackbox - Git/Mercurial/Subversionに秘密情報を安全に保管
- certbot - 以前はLet’s Encrypt Clientとして知られ、EFFがLet’s Encryptから証明書を取得し、(オプションで)サーバーにHTTPSを自動有効化するためのツール。また、ACMEプロトコルを使用する他のCAにもクライアントとして機能できる。
- Coherence - 現代ウェブアプリ向けの暗号化サーバー
- cryptomator - マルチプラットフォームでのクラウドファイルのクライアントサイド透明暗号化
- Databunker - GDPRおよびCCPAに準拠した個人データやPIIのAPIベースのストレージサービス
- gpg - OpenPGP標準の完全かつ無料な実装。データや通信の暗号化・署名を可能にし、多様な鍵管理機能を備えている。GnuPGはコマンドラインツールであり、他のアプリケーションとの容易な統合を可能にする機能を備えている。
- ironssh - sftp/scpで転送されたファイルを端末から端末まで暗号化し、選択的に他の人に共有。自動鍵管理は任意のSSHサーバーと互換。暗号化されたファイルはGPGと互換。
- Nipe - Nipeは、Torネットワークをデフォルトのゲートウェイに設定するためのスクリプト。
- sops - sopsはYAML、JSON、BINARY形式をサポートする暗号化ファイルエディタで、AWS KMS、GCP KMS、Azure Key Vault、PGPで暗号化できる。
- ves - クラウドリポジトリを介した端末間暗号化共有、鍵の喪失時に友人のネットワークを介した安全な回復。
Plugins
Git
- git-crypt - Git内の透明なファイル暗号化。
- git-secret - Gitリポジトリ内にプライベートデータを保存するためのBashツール。
Playgrounds
- Cryptography Playground - ハッシュ、対称暗号、非対称暗号、ZKPなど、暗号学の基本概念を学習・体験できるシンプルなウェブツール。
フレームワークとライブラリ
C
- crypto-algorithms - AESやSHA-1などの標準暗号アルゴリズムの基本的な実装。
- libgcrypt - GnuPGの分離モジュールとして開発された暗号化ライブラリ。
- libkcapi - Linuxカーネル暗号APIのユーザースペースインターフェースライブラリ。
- libsodium - 現代的で使いやすい暗号化ライブラド。
- libtomcrypt - 比較的包括的で、モジュール化され、ポータブルな暗号化ツールキット。
- libVES.c - クラウドリポジトリを介した端末間暗号化共有、鍵の喪失時に友人のネットワークを介した安全な回復。
- milagro-crypto-c - 小さな、自立型で高速なオープンソース暗号ライブラリ。RSA、ECDH、ECIES、ECDSA、AES-GCM、SHA2、SHA3およびペアリングベース暗号をサポート。
- monocypher - 小さな、ポータブルで使いやすい暗号ライブラリ。libsodiumおよびTweetNaClを参考にしたもの。
- NaCl - ネットワーク通信、暗号化、復号、署名などに最適な高速ライブラリ。
- nettle - 暗号ライブラリとして、あらゆるコンテキストに簡単に組み込むことが可能な設計を採用。オブジェクト指向言語(C++、Python、Pikeなど)の暗号ツールキット、LSHやGNUPGなどのアプリケーション、さらにはカーネル空間にも適用可能。
- OpenSSL - TLS/SSLおよび暗号ライブラリ。
- PolarSSL - PolarSSLは、開発者が自らの(埋め込み)製品に暗号機能およびSSL/TLS機能を組み込むことを、極めて簡単にする。これにより、最小限のコード量でその機能を実現できる。
- RHash - ハッシュ値の計算に非常に便利なツール。
- themis - データの保存(AES)、安全なメッセージ送信(ECC+ECDSA/RSA+PSS+PKCS#7)、セッションベースの前向きセキュリティデータ交換(ECDH鍵交換、ECCおよびAES暗号化)をサポートする、高度な暗号ライブラリ。多くの言語およびプラットフォームに移植されており、クライアント・サーバーインフラに適している。
- tiny-AES128-C - C言語での小さなポータブルAES128。
- wolfSSL - 埋め込みデバイスとクラウド間のTLS/SSLの小さな、高速でポータブルな実装。
- XKCP — Keccakチームが定めた暗号スキームの自由でオープンソースな実装を集めたリポジトリ。
- xxHash - 極めて高速なハッシュアルゴリズム。
C++
- =nil; Crypto3 - C++17で構成された現代的な暗号化ソリューション(ブロック暗号からしきい値暗号、zk証明システムなどまでを含む完全な応用暗号化ソリューション)。
- Botan -
C++20で書かれた暗号ライブラリ。 - cryptopp - Crypto++は、暗号スキームを備えた無料のC++クラスライブラリ。
- HElib - 同型暗号(HE)を実装するソフトウェアライブラリ。
- Nettle - 低レベルの暗号ライブラリ。
- s2n - TLS/SSLプロトコルの実装。
C-sharp
- Bouncy Castle - 用途に応じた暗号ライブラリ。
- libsodium-net - 安全な暗号ライブラリ。libsodiumの.NET向けの移植版。
- Microsoft .NET Framework Cryptography Model - .NET Framework で実装された多くの標準暗号アルゴリズム
- PCLCrypto - プラットフォームで実装されたアルゴリズムに対する暗号APIを提供し、それらをポータブルなライブラリに公開する
- SecurityDriven.Inferno - .NETの暗号処理を正しく実現
- StreamCryptor - libsodiumとprotobufを用いたストリーム暗号化・復号
Clojure
- buddy-core - 暗号API
- clj-crypto - Bouncy Castleのラッパー
- pandect - Clojure向けの高速かつ使いやすいメッセージダイジェスト、チェックサム、HMACライブラリ
- secrets.clj - Clojureで暗号的に強固な乱数を生成するためのライブラリ。パスワード、アカウント認証、セキュリティトークン、関連するシークレットなどのデータの管理に適している。
Common Lisp
- crypto-shortcuts - 一般的な暗号関数のコレクション
- ironclad - 一般的な暗号ショートカットのコレクション
- trivial-ssh - Common Lisp向けのSSHクライアントライブラリ(libssh2に基づく)
Delphi
- DelphiEncryptionCompendium - Delphi向けの暗号ライブラリ
- LockBox - LockBox 3はDelphi向けの暗号ライブラリ
- SynCrypto - 高速暗号処理(ハッシュと暗号化)アルゴリズムを実装。AES、XOR、RC4、ADLER32、MD5、SHA1、SHA256を含み、速度最適化済み
- TForge - TForgeはDelphiで書かれたオープンソース暗号ライブラリで、FPCと互換性がある
Elixir
- cipher - Elixir用の暗号ライブラリ。任意のバイナリを暗号化/復号。
- cloak - Ectoとの暗号化の利用を簡単にするためのCloak
- comeonin - Elixir向けのパスワード認証(bcrypt)ライブラリ
- elixir-rsa -
:public_keyElixir向けの暗号ラッパー - elixir_tea - ElixirでのTEA実装。
- ex_crypto - Elixir向けErlang
:cryptoおよび:public_keyモジュールのラッパー。多くの暗号関数に対して適切なデフォルト値を提供し、それらの利用を容易にする - exgpg - Elixirからgpgを使用する。
- pot - Google Authenticatorと互換性のあるワンタイムパスワードを生成するErlangライブラリ。
- siphash-elixir - ElixirでのSipHashハッシュファミリーの実装。
Erlang
- crypto - メッセージダイジェストの計算用関数、および暗号化・復号用関数
- public_key - 公開鍵インフラを扱うための関数を提供します。
Go
- crypto - 公式ウェブサイトリソース
- dkeyczar - GoogleのKeyczar暗号ライブラリのGoへのポート。
- gocrypto - 『Goで実践的な暗号』書籍の例コード。
- goThemis - ThemisへのGoのラッパー。データの保存(AES)、安全なメッセージ送信(ECC + ECDSA / RSA + PSS + PKCS#7)、セッション指向の前向きセキュリティデータ交換(ECDH鍵交換、ECCおよびAES暗号化)向けの高度な暗号ライブラリ。
- kyber - Go言語向けの高度な暗号ライブラリ。
Haskell
- Cryptography - Hackageの協働リスト。
- Cryptography & Hashing - Haskellの公式ウェブサイト。
- cryptol - 暗号の言語。
- Cryptonite - Haskellにおける暗号プリミティブのリポジトリ。
- HsOpenSSL - Haskel向けのOpenSSLバインディング。
- scrypt - Colin Percivalのscrypt実装へのHaskellのバインディング。
Haxe
- haxe-crypto - Haxe暗号ライブラリ。
JavaScript
- asmCrypto - パフォーマンスを意識した、人気暗号ユーティリティのJavaScript実装。
- bcrypt-Node.js - Node.js向けのbcryptのネイティブ実装。
- cifre - 現代のクライアントサイドJavaScript向けの高速暗号ツールキット。
- closure-library - Googleの共通JavaScriptライブラリ。
- cryptico - RSAおよびAESを用いたJavaScript向けの使いやすい暗号システム。
- crypto-js - JavaScriptにおける暗号標準のライブラリ。
- cryptojs - Node.js向けの標準かつ安全な暗号アルゴリズムを提供。
- forge - JavaScriptにおけるTLSのネイティブ実装および、暗号ベースおよびネットワーク負荷の大きいウェブアプリを書くためのツール。
- IronNode - 変換暗号ライブラリ、プロキシ再暗号化の一種で、ユーザーまたはグループに暗号化し、Node.jsアプリに強力なデータ制御を簡単に追加できる。
- IronWeb - 変換暗号ライブラリ、プロキシ再暗号化の一種で、ブラウザ上で安全に終端まで暗号化を管理できる。
- javascript-crypto-library - JavaScript暗号ライブラリは、ウェブ開発者に広範で効率的な暗号関数を提供する。
- js-nacl - Emscriptenでコンパイルされたlibsodiumのルーチンに対する純粋JavaScriptの高レベルAPI。
- jsencrypt - OpenSSLのRSA暗号化、復号、鍵生成を行うJavaScriptライブラリ。
- JShashes - Node.jsおよびブラウザ向けの高速かつ依存関係のない暗号ハッシュライブラリ(MD5、SHA1、SHA256、SHA51、RIPEMD、HMACをサポート)。
- jsrsasign - ‘jsrsasign’(RSA-Sign JavaScriptライブラリ)は、RSA/RSAPSS/ECDSA/DSA署名および検証をサポートするオープンソース無料暗号ライブラリ。
- jsThemis - ThemisへのJavaScriptラッパー。データの保存(AES)、安全なメッセージ送信(ECC + ECDSA / RSA + PSS + PKCS#7)、セッション指向の前向きセキュリティデータ交換(ECDH鍵合意、ECCおよびAES暗号化)を提供する高レベル暗号ライブラリ。
- libsodium.js - libsodiumを純粋JavaScriptにコンパイルし、使いやすいラッパーを提供。
- libVES.js - クラウドリポジトリを介した端末間暗号化共有、鍵の喪失時に友人のネットワークを介した安全な回復。
- micro-rsa-dsa-dh - 古い暗号アルゴリズムの最小実装:RSA、DSA、DH、ElGamal。
- milagro-crypto-js - MCJSは、外部依存関係(ランダムシードソースを除く)を持たない、規格準拠のJavaScript暗号ライブラリ。Node.jsおよびブラウザに対応。RSA、ECDH、ECIES、ECDSA、AES-GCM、SHA2、SHA3、ペアリングベース暗号、New Hopeをサポート。
- noble - high-security, easily auditable set of contained cryptographic libraries and tools. Zero dependencies each.
- noble-ciphers — 暗号化方式、AES-SIV、Salsa20、ChaCha、Poly1305およびFF1を含む。
- noble-curves — 楕円曲線暗号、ウェイエルストラス、エドワーズ、モンゴメリー曲線、ペアリング、曲線へのハッシュ、ポセイドンハッシュ、スノール、secp256k1、ed25519、ed448、p521、bn254、bls12-381など。また4kb noble-secp256k1、noble-ed25519。
- noble-hashes — SHA2、SHA3、RIPEMD、BLAKE2/3、HMAC、HKDF、PBKDF2、ScryptおよびArgon2id。
- noble-post-quantum — ML-KEM、ML-DSA、SLH-DSA(CRYSTALS-Kyber、CRYSTALS-Dilithium、Sphincs+)およびハイブリッド方式。
- node.bcrypt.js - Node.js向けのbcrypt。
- OpenPGP.js - JavaScript向けのOpenPGP実装。
- PolyCrypt - WebCrypto APIの純粋JavaScript実装。
- rusha - 大規模バイナリデータに適した高性能純粋JavaScript SHA1実装で、ネイティブ速度の半分まで達する。
- sjcl - スタンフォードJavaScript暗号ライブラリ
- TweetNaCl.js - TweetNaCl / NaClのJavaScript版。現代のブラウザおよびNode.js向けに開発されたもの
- URSA - Node.js向けのRSA公開鍵/秘密鍵OpenSSLバインディング
Java
- Apache Shiro - 認証、認可、暗号化、セッション管理を実行
- Bouncy Castle - 用途の広い暗号ライブラリ。JCAプロバイダーとして、基本的なヘルパーからPGP/SMIME操作まで幅広い機能を提供
- Flexiprovider - Java暗号アーキテクチャ向けの強力なツールキット
- GDH - Vert.xフレームワークに基づく複数参加者向けの一般化Diffie-Hellman鍵交換Javaライブラリ
- Google Tink - 小さな暗号ライブラリで、安全かつシンプルで、迅速に一般的な暗号タスクを実行できる
- Java Themis - ThemisのJava/Androidラッパー。データの保存(AES)、安全なメッセージ送信(ECC + ECDSA / RSA + PSS + PKCS#7)、セッション指向の前向きセキュリティデータ交換(ECDH鍵交換、ECC & AES暗号化)を提供する高レベル暗号ライブラリ
- jbcrypt - OpenBSD Blowfishパスワードハッシュアルゴリズムの実装であるjBCrypt
- Keycloak - 現代アプリケーションおよびサービス向けのオープンソースIDおよびアクセス管理
- pac4j - セキュリティエンジン
- Password4j - パスワードのハッシュおよびチェックに、異なる鍵導出関数(KDF)および暗号ハッシュ関数(CHF)を用いた、Java向けの使いやすい暗号ライブラリ
- Project Kalium - Networking and Cryptography(NaCl)ライブラリへのJavaバインディング。libsodiumの優れた機能を備えている
- scrypt - scrypt鍵導出関数の純Java実装およびC実装へのJNIインターフェース。SSE2最適化バージョンも含む
- securitybuilder - JCA/JSSEオブジェクトに対するフロントエンドビルダーAPI
Julia
- Crypto.jl - OpenSSLをラップしたライブラリだが、参照用に純Julia実装も提供
- MbedTLS.jl - mbed TLSおよび暗号Cライブラリをラップしたラッパー
- Nettle.jl - nettle暗号ハッシュ/暗号化ライブラリをJuliaでラップしたライブラリ。MD5、SHA1、SHA2ハッシュおよびHMAC機能、AES暗号化/復号を提供
- SHA.jl - パフォーマンスに優れた、100%ネイティブJuliaのSHA1、SHA2-{2及256、384、512}実装
Lua
- lua-lockbox - 純粋なLuaで書かれた暗号プリミティブのコレクション
- LuaCrypto - OpenSSLへのLuaのバインディング。
OCaml
Objective-C
- CocoaSecurity - AES、MD5、SHA1、SHA224、SHA256、SHA384、SHA512、Base64、Hex
- ObjC Themis - iOSおよびmacOS向けThemis用のObjCラッパー。データの保存(AES)、安全なメッセージング(ECC+ECDSA/RSA+PSS+PKCS#7)、セッション指向かつ前向きセキュリティのデータ交換(ECDH鍵合意、ECCおよびAES暗号化)を提供する高度な暗号ライブラリ
- ObjectivePGP - ObjectivePGPはiOSおよびmacOS向けのOpenPGPプロトコルの実装。OpenPGPは最も広く使われているメール暗号化標準である
- RNCryptor - iOSおよびMac向けのCCCryptor(AES暗号化)ラッパー
PHP
- halite -
libsodiumを用いた簡単な暗号化ライブラリ - libsodium-laravel -
libsodiumを用いたLaravelパッケージ抽象化 - PHP Encryption - PHPでキーまたはパスワードを使ってデータを暗号化するためのライブラリ
- PHP Themis - Themis用のPHPラッパー。データの保存(AES)、安全なメッセージング(ECC+ECDSA/RSA+PSS+PKCS#7)、セッション指向かつ前向きセキュリティのデータ交換(ECDH鍵合意、ECCおよびAES暗号化)を提供する高度な暗号ライブラリ
- TCrypto - TCryptoはシンプルで柔軟なPHP5.3以降のメモリ内キー値ストレージライブラリ
Python
- bcrypt - ソフトウェアおよびサーバー向けの現代的なパスワードハッシュ機能
- charm - 暗号システムの迅速なプロトタイピングを可能にするフレームワーク
- Crypto-Vinaigrette - デジタル署名用の量子抵抗型非対称鍵生成ツール
- cryptography - 暗号レシピおよびプリミティブを公開するPythonライブラリ
- cryptopy - 暗号アルゴリズムおよびアプリケーションの純粋Python実装
- django-cryptography - Djangoでデータを簡単に暗号化できる
- ecdsa - ECDSAおよびECDHをサポートするシンプルなECC実装
- hashids - hashidsのPython実装
- paramiko - PythonによるSSHv2プロトコルの実装で、クライアントおよびサーバー機能を提供します
- Privy - パスワードでデータを安全に保護するための簡単で高速なライブラリ
- pycryptodome - 低レベルの暗号プリミティブを含む、自立したPythonパッケージ
- PyElliptic - PythonによるOpenSSLラッパー。ECC、AES、HMAC、Blowfishによる現代暗号に対応
- pynacl - Pythonによるネットワーキングと暗号化(NaCl)ライブラリへのバインディング
- pythemis - ThemisへのPythonラッパー。データの保存(AES)、安全なメッセージング(ECC+ECDSA/RSA+PSS+PKCS#7)、セッション指向の前向きセキュリティデータ交換(ECDH鍵合意、ECCおよびAES暗号化)を提供する高度な暗号ライブラリ
R
- rscrypt - scrypt暗号関数のコレクションを含むパッケージ
Ruby
- bcrypt-ruby - OpenBSDのbcrypt()パスワードハッシュアルゴリズムへのRubyバインディング。ユーザーのパスワードの安全なハッシュを簡単に保存できるようにします
- RbNaCl - Networking and Cryptography(NaCl)ライブラリへのRubyバインディング
- Ruby Themis - ThemisへのRubyラッパー。データの保存(AES)、安全なメッセージング(ECC+ECDSA/RSA+PSS+PKCS#7)、セッション指向の前向きセキュリティデータ交換(ECDH鍵合意、ECCおよびAES暗号化)を提供する高度な暗号ライブラリ
Rust
- AEADs - 関連データを伴った認証暗号アルゴリズム:高度な暗号化暗号
- BLAKE3 - BLAKE3暗号ハッシュ関数の公式RustおよびC実装
- botan-rs - Rust向けのBotanバインディング
- cryptoballot - 暗号的に安全なオンライン投票
- dalek cryptography - ECC、Bulletproofsなどに対する高速かつ安全な中間レベルAPI
- dryoc - 純Rustによる汎用暗号ライブラリで、libsodiumのプリミティブを実装
- elliptic-curves - 純Rustによる楕円曲線実装のコレクション:NIST P-224、P-256、P-384、P-521、secp256k1、SM2
- formats - 暗号関連フォーマットのエンコーダ/デコーダ:DER、PEM、PKCS、PKIX
- hashes - 純Rustで書かれた暗号ハッシュ関数のコレクション
- mundane - BoringSSLをバックアップするRust暗号ライブラリで、誤用が難しく、使いやすく、パフォーマンスに優れる
- ockam - Rustによる端末から端末まで(E2E)の暗号化と相互認証を実現するライブラリ
- octavo - 高度にモジュール化・設定可能なハッシュと暗号化ライブラリ
- orion - 純粋Rustで書かれた暗号化ライブラリ。使いやすく、安全な暗号を提供することを目指しており、unsafeコードの使用を最小限に抑えようとしている
- password-hashes - 純粋Rustで書かれたパスワードハッシュアルゴリズム(パスワードベースの鍵導出関数)のコレクション
- proteus - ヘッダー鍵を使わないRustによるAxolotlプロトコル実装
- rage - シンプルで現代的かつ安全なファイル暗号化ツール。Ageフォーマットを使用。
- recrypt - 純粋Rustで実装されたマルチホッププロキシ再暗号化スキーム(トランスフォーム暗号)の暗号基本構成を実現するライブラリ
- ring - RustとBoringSSLの暗号基本構成を用いた安全で高速かつ小型の暗号化ライブラリ
- ronkathon - 教育的で数学的に透明性があり、よくドキュメント化されたRustによる暗号化
- rust-crypto - さまざまな暗号アルゴリズムの主に純粋R及Rustによる実装
- rust-openssl - Rust向けのOpenSSLのバインディング
- rustls - Rustlsは、Rustで書かれた新しい現代的なTLSライブラリ
- signatures - 暗号署名アルゴリズム:DSA、ECDSA、Ed25519
- snow - Trevor Perrinの Noise Protocol を純粋Rustで実装したもの
- sodiumoxide - Sodium Oxide:Rust向けの高速暗号ライブラリ(libsodiumとのバインディング)
- suruga - RustによるTLS 1.2実装
- webpki - RustによるWeb PKI TLS X.509証明書の検証
Scala
Scheme
- chicken-sodium - libsodium キーワードライブラリへの Chicken Scheme のバインディング
- crypto-tools - Chicken Scheme 用の有用な暗号プリミティブ
- guile-gnutls - GNU Guile 用の GnuTLS バインディング
- guile-ssh - GNU Guile 用の libssh バインディング
- industria - 暗号プリミティブ、OpenSSH、DNS を含む多様なコレクション
Swift
- CryptoSwift - Swiftプログラミング言語で実装されたSwiftによる暗号関連関数およびヘルパー.
- IDZSwiftCommonCrypto - Swift で書かれた Apple の CommonCrypto ライブラリのラッパー
- OpenSSL - macOS および Linux 用の Swift OpenSSL
- SweetHMAC - HMAC アルゴリズムを使って文字列を暗号化するための、小さなかつ使いやすい Swift クラス
- Swift-Sodium - iOS および macOS 用の Sodium ライブラリへの Swift インターフェース
- SwiftSSL - Swift での洗練された暗号ツールキット
- SwiftThemis - iOS および macOS 用の Themis の Swift ラッパー。データの保存(AES)、安全なメッセージング(ECC + ECDSA / RSA + PSS + PKCS#7)、セッション指向の前向きセキュリティデータ交換(ECDH キー交換、ECC および AES 暗号化)のための高レベル暗号ライブラリ
リソース
Blogs
- A Few Thoughts on Cryptographic Engineering - 暗号に関するいくつかの思い付き
- Bristol Cryptography Blog - ブリスホール大学暗号研究グループの公式ブログ。これはグループブログであり、主に暗号学者および暗号学生向けです
- Charles Engelke’s Blog - WebCrypto ブログ記事
- Root Labs rdist - Nate Lawson とその共著者がハードウェア実装、暗号時系列攻撃、DRM、そして Commodore 64 について書いている
- Salty Hash - 暗号化、データ管理、プライバシー、セキュリティに関するトピックをカバー
- Schneier on security - 最も古いかつ最も有名なセキュリティブログの一つ。ブリュースはブロック暗号解析から空港セキュリティまでさまざまなトピックをカバーしています
Mailing lists
- metzdowd.com - “Cryptography” は暗号技術およびその政治的影響に特化した低ノイズのマイルドなメーリングリストです
- Modern Crypto - 現代暗号実践に関するディスカッションのフォーラム
- randombit.net - 暗号に関する一般論議のリスト、特に技術的側面
Web-tools
- Boxentriq - ヴィジェネール、ベアフォート、キーデカル、置換暗号など、最も頻繁に使われる暗号の解析およびコードブレイクに使える簡単なツールが用意されています
- Cryptolab - 暗号関連のツールのセットです
- CrypTool - さまざまな暗号、暗号化手法および解析ツールが紹介され、多くの場合、図解例とともに提示されています
- CyberChef - 暗号化、エンコード、圧縮、データ解析を行うウェブアプリです
- factordb.com - Factordb.comは、任意の数の既知の因数分解を保存するツールです
- keybase.io - Keybaseは、あなたのアイデンティティと公開鍵を相互にマッピングします
Web-sites
- Applied Crypto Hardening - ウェブサーバーなどのセキュリティを確保するための、すでに用意されたベストプラクティスの例が多数あります
- Cryptocurrencies Dashboard - Redditで話題になっている最も活発な暗号通貨のダッシュボードです
- Cryptography Stackexchange - Cryptography Stack Exchangeは、ソフトウェア開発者、数学専門家など、暗号に興味を持つ人々向けの質問と回答サイトです
- Cryptohack - インタラクティブな暗号チャレンジが多数用意されたプラットフォームで、Cryptopalsに似ています
- Cryptopals Crypto Challenges - 応用型暗号チャレンジシリーズで、非常に基本的な課題(例:16進数から64進数への変換課題)から始まり、難易度を徐々に高め、抽象代数学に至るまで進化します
- Eliptic Curve Calculator - 楕円曲線の公開鍵および署名を計算できるシンプルなフォーム。特徴には、カスタム曲線の作成や異なる署名タイプの選択が含まれます
- Garykessler Crypto - 暗号学の概要です
- IACR - 国際暗号研究協会は、暗号学および関連分野の研究を進めるための非営利科学団体です
- Learn Cryptography - 人々が日々使っているが気づかない暗号システムが、プライバシーを守るためにどのように機能しているかを理解できるように支援しています
- Subreddit of Cryptography - このRedditのサブレディは、強力な暗号の理論および実用に関するリンクやディスカッションを目的としています
- TikZ for Cryptographers - LaTeXで書かれた研究論文やプレゼンテーションに使える、一般的な暗号関数のブロック図のコレクションです
- WebCryptoAPI - この仕様は、ウェブアプリケーションにおける基本的な暗号操作(ハッシュ化、署名生成および検証、暗号化および復号)を行うJavaScript APIを説明しています
コントリビューション
ご寄稿は常に歓迎です!まずcontribution guidelinesをご確認ください
ライセンス
awesome-cryptography による @sobolevn
法的に可能である範囲内で、CC0をawesome-cryptographyに付随させた人物は、awesome-cryptographyに関してすべての著作権および関連又は隣接権を放棄した。
この作品と共に、CC0の法的文書のコピーを受領すべきである。受領していない場合は、https://creativecommons.org/publicdomain/zero/1.0/を参照のこと。