OpenSSL で RSA 署名をする方法
「padding した私有鍵で暗号化すること」で達成できる様だ.
http://ao.dip.jp/~okazaki/diary/?date=2004082004-08-02 RSA_public_encrypt (1024bit)
OpenSSL addition a postscript
libgcryptだけでなく、OpenSSLにも大きな数字を扱う関数(bn - multiprecision integer arithmetics)が用意されていた。
RSA 1024bit (Verilog-HDL RTL)
Register Transfer Levelだが、1024bitのRSA暗号器(hardware)ができた。検証のためにOpenSSLで作った1024bit RSA暗号器(software)の計算結果と同じ暗号文が出てくることを確認。
これからデジタル署名にするには、公開鍵を秘密鍵と入れ替えればいいだけのはず。
次の問題はpadding。SHA-1 (160) or SHA-2 (256/384/512) の出力をRSA暗号(署名)器に入れるのに、paddingが必要。単に0でpaddingしようと思っていたら、それでは頑強(non- malleable)性に欠けるので、推奨されるpadding方法があるらしい。Optimal Asymmetric Encription Padding (OAEP)とか PKCS #1 padding など。暗号って難しいですね(数学苦手なので…)。
この手順でなんとかできるのかな.