2014-09-30 2 views
0

데이터 암호화 및 저장의 일환으로 openssl에서 AES 알고리즘을 사용하여 KEY를 생성했습니다.Keystore - 커맨드 라인에서 Keystore 로의 SecretKey 항목 입력

openssl enc -aes-256-cbc -P -nosalt 

OpenSSL을 일반 텍스트 파일에 저장되어있다 KEY & IV 값을 생성했다. 일반 문서에 키를 저장하는 것이 안전하지 않은 표준이므로 키 스토어로 이동하는 것이 좋습니다.

따라서 아래 명령을 실행하여 keytool을 사용하여 키 저장소를 생성했습니다.

keytool -genseckey -keyalg AES -alias aesstore -keysize 256 -keypass changeit -storetype jceks -keystore hello.jceks -storepass changeit 

이 키 저장소에는 임의의 secrey 키가 들어 있습니다. 따라서 KEY & IV 값을 Keystore로 이동하여 거기에서 가져 와서 데이터 암호화에 사용할 수 있습니다. Keystore에 사용자 정의 된 KEY 값을 저장하기위한 링크는 아래에 있지만 IV 값은 저장하지 않았습니다. 하나는 키 스토어에 KEY & IV 값을 모두 저장하는 방법.에 어떤 아이디어가있는 경우

http://java.dzone.com/articles/secret-key-import-java

따라서, 공유 할하시기 바랍니다.

또한 커스터마이징 된 키를 명령 줄 자체에서 키 저장소로 전달할 수있는 방법을 찾고 있습니다.

미리 감사드립니다.

답변

1

작동 모드에서 키를 사용할 때마다 IV가 고유해야합니다. 따라서 IV를 키와 함께 보관하는 것은별로 의미가 없습니다. 해시 함수를 사용하여 키에서 CBC에 대한 IV를 추출 할 수 있지만 키로 한 번만 암호화하고 IV를 생성해야합니다.

일반적으로 임의의 IV가 생성되어 암호문 앞에 붙습니다. 비밀번호를 사용할 때 대개 무작위 소금과 짝을 이룹니다. 새로운 암호문이 각 암호화 작업에 대해 생성되면 완전히 임의의 IV를 지정하는 것은 허위입니다. 이 경우, IV는 염으로부터 유도 될 수있다. 이 경우 소금은 대체로 암호문에 대신 접두어로 붙습니다.

그래서 IV가 각 암호화에 대해 변경되도록 정의 된 동안 영구 IV를 저장하는 옵션을 찾고 있습니다. 이것이 바로 키 저장소 구현에서 솔루션을 찾지 못하는 이유입니다.

+0

안녕하세요, 아무도 없습니까? –

+0

답변 해 주셔서 감사합니다. IV는 키 저장소 구현에서 끊임없이 변화하는 가치라는 것을 이해했습니다. 우리는 현재 암호화 및 데이터 저장에 영구 KEY 및 IV 값을 사용하고 있습니다. KEY를 Keystore로 이동하면 IV 값이 다르기 때문에 암호화 한 데이터가 동일한 문자열에 대한 이전의 암호화 된 데이터와 일치하지 않습니다. 그래서이 문제를 해결하기 위해 Keystore에서 키를 추출하고 영구 IV를 사용하여 데이터를 암호화하는 것이 유일한 해결책이라고 생각합니다. 제발 제안 해주세요. – user3119077

+1

프로토콜을 변경하고 마지막에 키를 저장해야합니다. 그러나 지금 당장 당신은 그것을 해킹하고 예를 들어 IV를 저장할 수 있습니다. AES-128 키. 다음에, aesKey.getEncoded()를 사용해 바이트를 돌려줍니다. AES 키는 완전 무작위 데이터로 구성되며 입력 된 바이트를 반환합니다. –