2009-05-15 4 views
0

이 질문은 무결성 검사를 생략하기 위해 암호에 null 값을 사용할 수있는 Java 클래스 java.security.KeyStore 및 해당로드 (InputStream stream, char [] password) 메소드의 특정 컨텍스트에 있습니다. .무결성 검사없이 키 스토어로드

키 스토어의 무결성을 검사하지 않고 키 스토어를로드하고 쿼리하는 것과 관련된 위험은 무엇입니까? 부인 방지를 위해 문서에 서명하는 데 사용될 사용자의 개인 키에 대해 키 저장소가 쿼리됩니다. 질의 된 인증서는 사용자가 자신과 (아마도 똑같은) 인증서를 등록 할 때 데이터베이스에 저장된 복사본에 대해 추가로 유효성이 검사됩니다.

답변

0

파일을 읽을 수있는 누구나 파일을 수정할 수도 있습니다. 따라서 누군가가 읽은 파일을 키의 이름과 같은 이름을 가진 다른 키 스토어로 대체 할 수 있지만 다른 개인 키가 포함되어 있으므로 잘못된 개인 키가있는 문서에 서명하게되고 그 중 누구도 확인을 통과하지 못합니다.

또한 파일에 액세스 할 수있는 사용자는 개인 키에 대한 액세스 권한을 얻고 문서에서 나온 것처럼 문서에 서명 할 수 있습니다.

+0

"누군가가 읽은 파일을 키의 이름이 같지만 다른 개인 키가있는 다른 키 저장소로 바꿀 수 있습니다." 그러나 공격자가 인증서를 "스푸핑"할 수 있습니까? 내 앱은 등록하는 동안 사용자가 업로드 한 인증서로 검색된 인증서를 확인합니다. 공격자가 인증서를 스푸핑 할 수 없다면 개인 키는 동일해야합니다. 맞습니까? –

+0

기다려 ... 사용자의 개인 키를 관리 할 예정입니까? 그래서 그들은 정말로 사적이되지 않을 것입니까? 아니면 클라이언트 애플리케이션에서이 키 스토어 로딩 작업을 수행 할 예정입니까? 후자의 경우에는 사용자가 작성시 키 스토어에 대한 비밀번호를 설정 한 다음 검색시이를 요청해야합니다. – Chochos

+0

아니요, 개인 키를 관리하지 않습니다. 예, 클라이언트 앱에 키 저장소를로드합니다. –