私は仕事ではJava使いではないのですが、昔からJavaが好きで自宅ではよく勉強のために使っています。ということで、これから『Javaでセキュリティ』をキーワードに何か書いてみたいなぁと考えています。
9月にJ2SDK 5.0がリリースされました。J2SDK 5.0ではセキュリティ機能についても様々なエンハンスが行われているようです。
セキュリティでもっともコアな部分の1つは暗号だと思います。しかし、J2SDK標準ではこの暗号機能には少し制約があります。制約といっても通常は特に不便は感じないと思いますが、サポートされているアルゴリズムが少し物足りないという感じです。これを拡張するためにはGNU Cryptoを使用するという方法があります。
- GNU Cyptoをhttp://www.gnu.org/software/gnu-crypto/#downloadingからダウンロードして適当なフォルダに解凍。
- CLASSPATHにgnu-crypt.jarを追加します。
- ${JRE_HOME}\lib\security\java.securityに以下の行を追加してセキュリティプロバイダとして登録。
security.provider.7=gnu.crypto.jce.GnuCrypto
Security.getProviders、Provider.getServicesを使って、利用可能なセキュリティプロバイダとそれぞれが提供するサービスをチェックしてみましょう。Provider name: GNU-CRYPTOのところが追加されたGNU Cryptoですが、そのサービスの多いことが目立つと思います。
>java SecurityProviderFinder Count of Security provider : 7 --- [1] Security Provider Information --- Provider name: SUN Service algorithm: SHA1PRNG, SHA1withDSA, NONEwithDSA, DSA, MD2, MD5, SHA, SHA-256, SHA-38 4, SHA-512, DSA, DSA, DSA, X.509, JKS, PKIX, PKIX, LDAP, Collection, com.sun.security.Inde xedCollection, --- [2] Security Provider Information --- Provider name: SunRsaSign Service algorithm: RSA, RSA, MD2withRSA, MD5withRSA, SHA1withRSA, SHA256withRSA, SHA384wit hRSA, SHA512withRSA, --- [3] Security Provider Information --- Provider name: SunJSSE Service algorithm: RSA, RSA, MD2withRSA, MD5withRSA, SHA1withRSA, MD5andSHA1withRSA, SunX5 09, NewSunX509, SunX509, PKIX, SSL, SSLv3, TLS, TLSv1, PKCS12, --- [4] Security Provider Information --- Provider name: SunJCE Service algorithm: RSA, DES, DESede, DESedeWrap, PBEWithMD5AndDES, PBEWithMD5AndTripleDES, PBEWithSHA1AndRC2_40, PBEWithSHA1AndDESede, Blowfish, AES, AESWrap, RC2, ARCFOUR, DES, DE Sede, Blowfish, AES, RC2, ARCFOUR, HmacMD5, HmacSHA1, HmacSHA256, HmacSHA384, HmacSHA512, DiffieHellman, DiffieHellman, DiffieHellman, DiffieHellman, DES, DESede, PBE, PBEWithMD5An dDES, PBEWithMD5AndTripleDES, PBEWithSHA1AndDESede, PBEWithSHA1AndRC2_40, Blowfish, AES, R C2, OAEP, DiffieHellman, DES, DESede, PBE, PBEWithMD5AndDES, PBEWithMD5AndTripleDES, PBEWi thSHA1AndDESede, PBEWithSHA1AndRC2_40, HmacMD5, HmacSHA1, HmacSHA256, HmacSHA384, HmacSHA5 12, HmacPBESHA1, JCEKS, --- [5] Security Provider Information --- Provider name: SunJGSS Service algorithm: 1.2.840.113554.1.2.2, --- [6] Security Provider Information --- Provider name: SunSASL Service algorithm: DIGEST-MD5, GSSAPI, EXTERNAL, PLAIN, CRAM-MD5, CRAM-MD5, GSSAPI, DIGEST -MD5, --- [7] Security Provider Information --- Provider name: GNU-CRYPTO Service algorithm: HAVAL, MD2, MD4, MD5, RIPEMD128, RIPEMD160, SHA-160, SHA-256, SHA-384, SHA-512, TIGER, WHIRLPOOL, ARCFOUR, MD2PRNG, MD4PRNG, MD5PRNG, RIPEMD128PRNG, RIPEMD160PRN G, SHA-160PRNG, SHA-256PRNG, SHA-384PRNG, SHA-512PRNG, TIGERPRNG, HAVALPRNG, WHIRLPOOLPRNG , ICM, UMAC-KDF, DSS, RSA, DSS/RAW, RSA-PSS/RAW, ANUBIS, ARCFOUR, BLOWFISH, DES, KHAZAD, N ULL, AES, RIJNDAEL, SERPENT, SQUARE, TRIPLEDES, TWOFISH, CAST5, PBEWithHMacHavalAndAES, PB EWithHMacHavalAndAnubis, PBEWithHMacHavalAndBlowfish, PBEWithHMacHavalAndCast5, PBEWithHMa cHavalAndDES, PBEWithHMacHavalAndKhazad, PBEWithHMacHavalAndSerpent, PBEWithHMacHavalAndSq uare, PBEWithHMacHavalAndTripleDES, PBEWithHMacHavalAndTwofish, PBEWithHMacMD2AndAES, PBEW ithHMacMD2AndAnubis, PBEWithHMacMD2AndBlowfish, PBEWithHMacMD2AndCast5, PBEWithHMacMD2AndD ES, PBEWithHMacMD2AndKhazad, PBEWithHMacMD2AndSerpent, PBEWithHMacMD2AndSquare, PBEWithHMa cMD2AndTripleDES, PBEWithHMacMD2AndTwofish, PBEWithHMacMD4AndAES, PBEWithHMacMD4AndAnubis, PBEWithHMacMD4AndBlowfish, PBEWithHMacMD4AndCast5, PBEWithHMacMD4AndDES, PBEWithHMacMD4An dKhazad, PBEWithHMacMD4AndSerpent, PBEWithHMacMD4AndSquare, PBEWithHMacMD4AndTripleDES, PB EWithHMacMD4AndTwofish, PBEWithHMacMD5AndAES, PBEWithHMacMD5AndAnubis, PBEWithHMacMD5AndBl owfish, PBEWithHMacMD5AndCast5, PBEWithHMacMD5AndDES, PBEWithHMacMD5AndKhazad, PBEWithHMac MD5AndSerpent, PBEWithHMacMD5AndSquare, PBEWithHMacMD5AndTripleDES, PBEWithHMacMD5AndTwofi sh, PBEWithHMacSHA1AndAES, PBEWithHMacSHA1AndAnubis, PBEWithHMacSHA1AndBlowfish, PBEWithHM acSHA1AndCast5, PBEWithHMacSHA1AndDES, PBEWithHMacSHA1AndKhazad, PBEWithHMacSHA1AndSerpent , PBEWithHMacSHA1AndSquare, PBEWithHMacSHA1AndTripleDES, PBEWithHMacSHA1AndTwofish, PBEWit hHMacSHA256AndAES, PBEWithHMacSHA256AndAnubis, PBEWithHMacSHA256AndBlowfish, PBEWithHMacSH A256AndCast5, PBEWithHMacSHA256AndDES, PBEWithHMacSHA256AndKhazad, PBEWithHMacSHA256AndSer pent, PBEWithHMacSHA256AndSquare, PBEWithHMacSHA256AndTripleDES, PBEWithHMacSHA256AndTwofi sh, PBEWithHMacSHA384AndAES, PBEWithHMacSHA384AndAnubis, PBEWithHMacSHA384AndBlowfish, PBE WithHMacSHA384AndCast5, PBEWithHMacSHA384AndDES, PBEWithHMacSHA384AndKhazad, PBEWithHMacSH A384AndSerpent, PBEWithHMacSHA384AndSquare, PBEWithHMacSHA384AndTripleDES, PBEWithHMacSHA3 84AndTwofish, PBEWithHMacSHA512AndAES, PBEWithHMacSHA512AndAnubis, PBEWithHMacSHA512AndBlo wfish, PBEWithHMacSHA512AndCast5, PBEWithHMacSHA512AndDES, PBEWithHMacSHA512AndKhazad, PBE WithHMacSHA512AndSerpent, PBEWithHMacSHA512AndSquare, PBEWithHMacSHA512AndTripleDES, PBEWi thHMacSHA512AndTwofish, PBEWithHMacTigerAndAES, PBEWithHMacTigerAndAnubis, PBEWithHMacTige rAndBlowfish, PBEWithHMacTigerAndCast5, PBEWithHMacTigerAndDES, PBEWithHMacTigerAndKhazad, PBEWithHMacTigerAndSerpent, PBEWithHMacTigerAndSquare, PBEWithHMacTigerAndTripleDES, PBEW ithHMacTigerAndTwofish, PBEWithHMacWhirlpoolAndAES, PBEWithHMacWhirlpoolAndAnubis, PBEWith HMacWhirlpoolAndBlowfish, PBEWithHMacWhirlpoolAndCast5, PBEWithHMacWhirlpoolAndDES, PBEWit hHMacWhirlpoolAndKhazad, PBEWithHMacWhirlpoolAndSerpent, PBEWithHMacWhirlpoolAndSquare, PB EWithHMacWhirlpoolAndTripleDES, PBEWithHMacWhirlpoolAndTwofish, PBKDF2WithHMacHaval, PBKDF 2WithHMacMD2, PBKDF2WithHMacMD4, PBKDF2WithHMacMD5, PBKDF2WithHMacSHA1, PBKDF2WithHMacSHA2 56, PBKDF2WithHMacSHA384, PBKDF2WithHMacSHA512, PBKDF2WithHMacTiger, PBKDF2WithHMacWhirlpo ol, BlockCipherParameters, HMAC-MD2, HMAC-MD4, HMAC-MD5, HMAC-RIPEMD128, HMAC-RIPEMD160, H MAC-SHA160, HMAC-SHA256, HMAC-SHA384, HMAC-SHA512, HMAC-TIGER, HMAC-HAVAL, HMAC-WHIRLPOOL, TMMH16, UHASH32, UMAC32, GKR, ANONYMOUS, PLAIN, CRAM-MD5, SRP, ANONYMOUS, PLAIN, CRAM-MD5 , SRP-MD5, SRP-SHA-160, SRP-RIPEMD128, SRP-RIPEMD160, SRP-TIGER, SRP-WHIRLPOOL,
これから少しでもGNU Cryptoを使用したプログラミングを紹介していければと考えています。
GNUだけにGPLですので、商用利用にはご注意を。