클라이언트 위치에 공개 키를 교환하는 방법. 개인 키를 사용하여 RSA 알고리즘을 사용하여 문서 (텍스트 파일)를 암호화 한 다음 공개 키를 serialization을 사용하여 파일에 java.security.Key 개체로 저장했습니다. 직렬화 된 공개 키 개체의 무결성에 대해 알고 싶습니다. 그것은 할 수있는 안전한 옵션이나 다른 옵션을 사용할 수 있습니다.직렬화 된 객체로 공용 키 교환
5
A
답변
2
공개 키는 대개 텍스트로 교환됩니다. 그런 다음 키 스토어로 가져옵니다. 정확한 수행 방법은 구현에 따라 다릅니다 (항상 PGP를 사용했습니다).
키를 직렬화 된 java.security.Key 형태로 공개하지는 않을 것입니다. 실제로는 표준이 아니기 때문입니다. 단순한 형태의 핵심은 표준 형식의 교환입니다.
키를 다운로드하면 공개됩니다. 공개 키이므로 침입자가 키를 다운로드해도 아무 것도 할 수 없습니다. 잘못 될 수있는 유일한 방법은 누군가가 서버를 위조하여 다른 키를 호스팅 할 수 있다는 것입니다. 그런 다음 해당 키의 개인 키로 서명하고 귀하의 것으로 주장하십시오. 물론 누군가에게 우송하면 같은 문제가 발생할 수 있습니다. 그러나 적어도 당신은 당신이 누구에게 메일을 보냈는지 알 것입니다.
가장 안전한 방법은 키를 범위 밖으로 펼치는 것입니다. usb 막대기에 좋아하십시오.
원인에 따라 위험에 따라 살 수 있다고 생각합니다.
0
Joeri는 보안 측면에 대해 답변했습니다.
주요 문제점은 라이브러리 버전 간 직렬 표현이 변경되어 Java 직렬화를 사용할 때 발생할 수있는 잠재적 문제입니다.
물론 다른 방법이 있습니다. RSA 공개 키에는 getEncoded()
메소드를 사용하여 액세스 할 수있는 업계 표준 인코딩이 있어야합니다. 이렇게하면 write
에서 FileOutputStream
까지의 바이트 배열을 얻을 수 있습니다. 그래서 정말 쉽습니다.
관련 문제
- 1. 아음속 생성 객체로 직렬화
- 2. json.net을 사용하여 객체로 직렬화
- 3. 레일즈를 N 레코드의 직렬화 된 객체로 구축하기
- 4. 지도에서 키 교환 방법?
- 5. 경량 암호화 키 교환 프로토콜
- 6. xml을 객체로 역 직렬화 할 수 없습니다.
- 7. 교환 된 반환
- 8. 개인 공개 교환 키 쌍 가져 오기
- 9. IPSec 키 교환 프로토콜은 어떻게 작동합니까?
- 10. 공개 키 또는 디피 - 헬만 키 교환 알고리즘
- 11. openssl? 공용 및 개인 키 가입
- 12. 시간 초과 된 텍스트 교환?
- 13. 암호화 된 문자 배열의 엔디안 교환
- 14. iPhone 프로비저닝 문제 : 공용/개인 키
- 15. 자바 스크립트에서 공용/개인 키 사용
- 16. 개체에 키 쌍의 공용 절반 만 포함됩니다.
- 17. 데이터베이스 테이블 행을 C# 객체로 직렬화 해제합니다.이 메커니즘이 있습니까?
- 18. 자바에서 직렬화 된 PHP 객체의 비 직렬화
- 19. 직렬화 된 객체 검사
- 20. 중첩 된 객체 직렬화
- 21. 일반화 된 XML 직렬화
- 22. 직렬화 된 객체 크기?
- 23. 직렬화 된 컬렉션에 추가하기
- 24. 중첩 된 인터페이스 직렬화
- 25. 는 직렬화 된 데이터
- 26. 역 직렬화 된 XML은
- 27. 공용 Getter, CodeDOM으로 보호 된 설정자
- 28. .NET : 공용 선언이 클래스를 직렬화 할 수있는 요구 사항입니까?
- 29. Json.Net을 사용하여 키 - 값 사전에 직렬화 하시겠습니까?
- 30. oAuth처럼 OpenID에서 교환 된 토큰이 있습니까?
이것은 사실이지만 실제로 유용합니다. 인코딩 된 바이트가있는 경우, 어떻게 다시 publicKey를 구성 할 수 있습니까? – Suma
대답은 X509EncodedKeySpec에있는 것 같습니다. 답변에이 내용을 포함시킬 수 있습니다. http://v1.dione.zcu.cz/java/docs/tutorial/security/apisign/vstep2.html에서 사용할 수있는 예제 코드 – Suma