2017-02-22 16 views
3

Java에서 AES로 일부 데이터를 암호화하려고합니다.
지금까지 128 비트 키로 데이터를 암호화했습니다.

256 비트 암호화의 경우 옵션 파일이 아닌 정책 파일을 변경해야합니다.
this SO Q/A도 참조했습니다.
시도한 BouncyCastle하지만 그들은 256 비트 키 ( 첫 번째 질문 here )에 대한 조항이없는 것으로 보입니다.
JNCryptor을 살펴 보았습니다. 그러나 그 경우 좋은 소스 여부를 알 수 없습니다.

는 또한 반사 그것은 자바 라이선스 계약을 위반하기 때문에 옵션을 선택하지 않습니다 (BouncyCastle은 FIPS 승인).
누군가가 나를 관련 질문으로 인도하거나 가능한 해결책을 공유 할 수 있다면 기쁠 것입니다.정책 파일을 변경하지 않고 Java에서 AES-256 암호화

+0

Java Crypto Provider API를 사용하지 않도록 코드를 다시 작성하고 bouncycastle API를 직접 사용하십시오. [AESEngine] (http://www.bouncycastle.org/docs/docs1.6/org/bouncycastle/crypto/engines/AESEngine.html). 정책 파일 검사가 제거됩니다. [this] (http://www.programcreek.com/java-api-examples/index.php?api=org.bouncycastle.crypto.modes.CBCBlockCipher) 행에있는 내용입니다. – Henrik

+0

@Henrik 시간을내어 주셔서 감사합니다. 암호화 작업에 Java API를 사용하지 않습니다. 그 Bouncy 성은 정책 파일 afaik [FAQ] (http://www.bouncycastle.org/wiki/display/JA1/Frequently+Asked+Questions)없이 256 비트 암호화를 지원하지 않습니다. –

+1

FAQ 답변은 Crypto Provider API를 통해 BC를 사용하는 경우에 대해서만 설명합니다. 이전의 코멘트로 제공 한 예를보고,'cipher.init'의 keysize를 128에서 256으로 변경해보십시오. 이것은 정책 파일의 영향을받지 않습니다. – Henrik

답변

0

128 비트 AES 키에 대해 잘못된 점이나 불안정한 점은 없으며 무차별 대입 (brute forcible)이 아닙니다. 256 비트는 더 이상 보안을 제공하지 않으므로 다른 영역에서는 공격이 성공할 것입니다.

키의 품질을 확인하려면 암호로 안전한 난수 생성기 (CSPRNG)를 사용하거나 PBKDF2로 정말 좋은 암호에서 키를 파생시킵니다.

암호화를 올바르게 인증하고 암호화합니다.

CBC 모드에서 임의의 IV를 사용하고 패딩 오류를보고하지 않습니다.

+0

와우 .. 답변 해 주셔서 감사합니다. 문제는 암호화의 현재 업계 표준이 ** AES (256 비트 키 **)라는 것입니다. 내 프로젝트에 대한 요구 사항도 동일합니다. 어쨌든 나는 매번 무작위 세션 키를 사용하고있다. –

+1

업계 표준은 어디에 있습니까? [NIST의 키 관리 권장 사항] (http://csrc.nist.gov/publications/nistpubs/800-57/sp800-57_part1_rev3_general.pdf) : 2016 년 1 월 29 일, 4.2.2.1 * AES는 128 개의 데이터를 암호화하고 해독합니다. 128 비트, 192 비트 또는 256 비트 키를 사용합니다. AES-128은 RSA 3072에 적합합니다. – zaph

+1

참고 : 양자 컴퓨터의 경우 256 비트 키의 한 가지 이유로 키는 여전히 256 비트 보안을 유지합니다. OTOH, RSA 및 EC는 완전히 파손될 것입니다. 오, 필요한 기능의 양자 컴퓨터는 결코 사용할 수 없으며, 우리의 평생 비용면에서 훨씬 저렴합니다. – zaph