暗号

RFC 4347 (DTLS) について調べてみた

AES-CTRの時に出てきたDTLSについて調べてみた。DTLSはRFC4347になっているようなので、それを読んでみた時の各章ごとのメモ(意訳?)です。RFC 4347 Datagram Transport Layer Security 1. Introduction TLSは広く普及しているけどTCPのような信頼性があるチ…

Bouncy CastleでOpenPGP鍵を操作する

Bouncy CastleのOpenPGP用ライブラリ(bcpg)を使ってOpenPGP鍵を操作する方法のメモです。以前の日記にsecring.gpgを読み込んで利用する方法がありますので、今回はそれ以外の操作が対象です。 PGPSecretKeyを生成する public PGPSecretKey generateSecretKey…

JCEでAES/CTRを試してみた

TLSの例を調べたついでにJCEで実装する方法を調べてみた。CTRモードを使う時の最大の問題はIVをどう扱うかということだったけれど、JCEのCipherではinit()時くらいしかIVの指定する方法がないような気がする。この場合、複数のブロックを暗号化する場合にIV…

AESのCTRモード(TLSとDTLS用)

AESのCTRモードはストリーム暗号が実現できたり、推奨されるモードに入っていたりする割にはCBCモードと違って情報が少ないのですが、IETFのドラフトにTLSの場合の話があったので、それを調べてみた時の各章ごとのメモです。AES Counter Mode Cipher Suites …

暗号で使用できるビット数を調べる

Javaは標準では「強力ではあっても制限付きの暗号」という微妙な表現の暗号しか使うことができません。これはブロック暗号なら128ビットまで許可、といったビット数による輸出(輸入?)規制に合わせるために、使用可能なビット数を制限するという意味のようで…

JavaからGnuPG(PGP)の鍵を利用する

鍵生成のついでにJavaから利用する方法のメモ自力で読み込みプログラムを作成すると大変なので、Bouncy Castleのライブラリを利用します。必要なjarファイルはbcprovとbcpgの二つになります。最初にGnuPGの鍵が保存されているsecring.gpgを読み込みます。読…

GnuPG(gpg)で暗号用RSA鍵を作成する

GnuPGで暗号用RSA鍵を作成する方法のメモGnuPGはデフォルトではElgamal暗号用の鍵しか作成できませんが、後からRSA暗号用の鍵を追加することはできます。新規に署名用と暗号用のRSA鍵を作成するコマンドはこんな感じになります。 $ gpg --gen-key Please sel…

JCEでDiffie-Hellman鍵交換を行う

JCEでDiffie-Hellman鍵交換を行う方法を調べた時のメモ*1。内容はAとBが秘密鍵を交換するシンプルなものです。最初にAがベースとなる素数等のパラメータを生成します。AlgorithmParameterGeneratorを使わずに、AlgorithmParametersのinit()にDHAlgorithmPara…