0

나는 여전히 보안 문제에 새로운 것이므로 내 문제는 실제로 오해 일 수 있습니다.사용자가 개인 키로 데이터 서명/타임 스탬프를 작성하는 가장 좋은 방법은 무엇입니까?

내가 작업하고있는 시스템에는 사용자가 웹 응용 프로그램의 데이터 어딘가에 서명/타임 스탬프를 지정해야한다는 요구 사항이 있습니다. 그러나 디지털 인증서로 서명하려면 사용자가 시스템에 개인 키를 입력해야합니다. 제 3자가 관련되어 있다는 사실을 감안할 때 회사는 최종 사용자 만 데이터 서명/타임 스탬프를 허용하도록해야합니다.

내가 알아 차린 유일한 방법은 인증서 데이터가 될 수있는 데스크톱 응용 프로그램을 만드는 것입니다. 하지만 여전히 타임 스탬프 기능이 필요합니다. 외부 서버와의 통신이 필요합니다. 이는 회사의 개인 키를 도용하는 방식 일 수 있습니다.

인터넷이나 특히 웹 응용 프로그램에 서명/타임 스탬프 데이터를위한 패턴이 있습니까? 이것이 어떻게 구현 될 수 있습니까?

+0

아니요, 디지털 인증서로 서명하는 것입니다. 제 3 자에게 내 코드가 안전하다고 말하는 사람이 있습니까? – mrcaramori

+0

당신이 말하는 개인 키가 얼마나 동질입니까? 사용자가 자신의 것을 가져 오거나, 허용되는 모든 것을 가져 오거나, 유형을 어떻게 든 제한 할 수 있습니까? 스마트 카드 또는 USB 토큰은 어떻습니까? 이 경우 개인 키는 분명히 추출 할 수 없지만 카드 나 토큰은 사용자가 직접 작업하는 컴퓨터에서 일어날 가능성이 가장 큰 서명을해야합니다. 실제로 데스크탑 응용 프로그램을 가리키고 있지만 지원할 하드웨어의 범위를 나타냅니다. – mkl

+0

@mkl 사용자는 특정 종류의 인증서를 사용하기로되어 있으며 어떤 기관에서 연락 할 수 있는지 알려줍니다. 스마트 카드와 토큰을 계속 연구 중입니다. 요점은 우리 회사가 사용자 개인 키를 만지거나 보지 않아야한다는 것입니다. – mrcaramori

답변

1

그래서 서버와 사용자가 있습니다. 사용자는 자신의 시스템에서 데이터의 디지털 서명을 수행합니다. 타임 스탬핑은 서명과 함께 수행됩니다 (서명하는 시간을 증명 함). 타임 스탬프는 신뢰할 수있는 타사 TSA (Timestamping Authorities)에서 수행합니다. 서명을 수행 할 코드는 TSA (일반적으로 HTTP 또는 HTTPS 프로토콜 사용)에 연락하고 타임 스탬프가 이러한 방식으로 수행됩니다. TSA의 인증서는 타임 스탬프에 포함되어 나중에 타임 스탬프를 확인할 수 있습니다.

기술 측면에 대해 알아보십시오. 웹 응용 프로그램의 경우 가장 좋은 방법은 애플릿 또는 ActiveX 컨트롤을 만들어 사용자의 브라우저에 다운로드하고 서명을 수행하는 것입니다.

당사는이 용도로 사전 제작 된 솔루션을 제공하며 자세한 내용은 this answer에 설명되어 있습니다.

물론 사용자가 문서를 다운로드하고 Acrobat 또는 기타 클라이언트 측 응용 프로그램을 사용하여 서명하도록 한 다음 문서를 다시 업로드 할 수 있습니다. 이러한 응용 프로그램을 직접 작성하기로 결정한 경우 구성 요소 서명이 필요합니다 (예 : IText 또는 SecureBlackbox

+1

+1; iText를 사용하여 유사한 응용 프로그램을 구현하려면 백서 [PDF 문서 용 디지털 서명] (http://itextpdf.com/book/digitalsignatures), 특히 4.3 절 * 서명을위한 클라이언트/서버 아키텍처 * (PS : iText는 상업적으로 또는 AGPL 조건에 따라 라이센스를 취득 할 수 있습니다) – mkl