KeyRep
KeyRep (키 직렬화 표현)
직렬화된 Key 객체의 표준화된 표현(representation)입니다. 직렬화된 키는 신뢰되지 않은 환경에서 노출되지 않아야 하는 민감한 정보를 포함할 수 있습니다.
본문
KeyRep은 키를 직렬화할 때 사용하는 표준 표현으로, 역직렬화 시 키를 원래의 타입·형식에 맞게 다시 구성할 수 있도록 합니다. Java Object Serialization Specification의 Security Appendix에 민감한 키 정보 처리에 관한 자세한 내용이 있습니다.
KeyRep은 Type과 Format의 조합에 따라 키를 복원합니다. readResolve() 메서드가 세 가지 조합을 지원합니다.
- Type.SECRET / "RAW" — 인코딩된 키 바이트와 알고리즘으로
SecretKeySpec객체를 구성해 반환합니다. - Type.PUBLIC / "X.509" — 키 알고리즘에 대한
KeyFactory인스턴스를 얻고, 인코딩된 키 바이트로X509EncodedKeySpec을 구성해 공개 키를 생성합니다. - Type.PRIVATE / "PKCS#8" — 키 알고리즘에 대한
KeyFactory인스턴스를 얻고, 인코딩된 키 바이트로PKCS8EncodedKeySpec을 구성해 개인 키를 생성합니다.
protected Object readResolve()는 Key 객체를 해석합니다. 조합이 인식되지 않거나, 알고리즘·키 형식·인코딩된 키 바이트가 인식되지 않거나 잘못된 경우, 또는 키 해석이 어떤 이유로든 실패하면 ObjectStreamException을 던집니다.