2

내가 사용하는 특별한 경우는 클라이언트에 저장된 디지털 인증서에 액세스하고이를 사용하여 클라이언트 측과 서버 측에서 서명, 확인, 암호화 및 암호 해독 작업을 수행해야한다는 것입니다. 후자의 경우 많은 솔루션이 있습니다. 가장 중요한 점은 클라이언트에 저장된 인증서에 액세스 할 수 있다는 것입니다.X.509 디지털 서명/암호화 워크 플로우/라이브러리 권장 사항?

"클라이언트에 저장된 인증서"는 의도적으로 모호합니다. 시스템 저장소, 사용자 저장소, 브라우저 저장소, 암호화 토큰, Java 키 저장소에 대한 생각을 제한하고 싶지 않습니다.

수년 동안 나는 다음과 같은 방법을 사용했습니다. 그 각각의 측면에서 저는 찬반 양론을 제공합니다.

  1. CAPICOM/ActiveX. 이 방법이 가장 쉬운 방법이지만 사용자를 Windows의 IE로 제한합니다. 더 나쁜 것은 더 이상 사용되지 않으며 32 비트에서만 작동합니다.
  2. 자바 애플릿. 이것은 크로스 플랫폼과 크로스 브라우저이지만, 브라우저의 자바는 일반적으로 존재하지 않으며 빠르게 사라지고 있습니다 (분명히 애플은 최근에 그것을 제거했습니다). 따라서 사용자가 JRE를 다운로드하여 설치하게하는 번거 로움이 추가됩니다. 또한 사용자는 서명자의 무제한 강도 암호화 확장을 설정하는 비교적 기술적 인 작업을 수행해야합니다.

상황이 난의 생각/들었하지만 난 지금까지

  1. 대부분의 자바 스크립트 솔루션을 진행하지 않았습니다. 그들은 RSA 알고리즘을 구현하지만 클라이언트 인증서 저장소에서 디지털 인증서에 액세스하는 방법이 없습니다. 대부분은 새 키 쌍을 생성합니다.
  2. 플래시/플렉스. Flash/flex는 가장 보편적 인 클라이언트 측 기술로 보입니다. 이미 카메라와 마이크 같은 클라이언트 하드웨어에 액세스 할 수 있습니다. 인증서 저장소에 액세스 할 수 있다면 정말 좋을 것입니다.
  3. Microsoft 웹 사이트에서 제공된 CAPICOM의 대안. CAPICOM에 대한 대안을 규정합니다. CAPICOM은 주로 .NET 프레임 워크를 사용하여 작업을 수행합니다. 이것은 데스크톱 클라이언트에게 유용합니다. 그러나 "스크립트"의 경우 사용자는 자신의 ActiveX 컨트롤을 작성해야한다는 "중요한 사항"에서 매우 명확하게 말합니다. 어느 것이 우리를 정사각형으로 되돌아 가게합니다.

내가 찾고있는 것은 클라이언트의 인증서 저장소에 액세스하는 주된 문제를 해결할 수있는 방법입니다. RSA 알고리즘이나 PKI가 왜 비대칭인지 또는 비대칭 암호화 또는 웹 애플리케이션이 아닌 다른 아키텍처의 사용에 대한 논의 나 Apple에 대한 논의는 찾고 있지 않습니다.

+0

해결책을 찾았습니까? – Saber

+1

우리는 여전히 자바 애플릿을 사용하고 있습니다. bouncycastle jar에 의존 –

답변

2

아마도 가장 많은 교차 플랫폼 일 가능성이 있기 때문에 최선의 방법은 여전히 ​​애플릿 일 것입니다. 또는 내 자신의 액티브 X를 개발하고 도달 범위를 제한 할 수 있습니다.

클라이언트 측 인증서 액세스가 큰 보안 문제임을 기억하십시오.

+0

javacript – CKmum

+0

을 사용하여 로컬 파일 시스템에 액세스 할 수 없습니다. 실제로 수행하는 방법은 매우 사납지만 실행 가능한 방법은 사용자에게 인증서 파일을 업로드 한 다음 코드를 사용하여 서버 측에서 유효성을 검사하도록 요청하는 것입니다. 애플릿이나 액티비티를 사용할 때 간접적으로 백엔드에서 발생하는 일이기 때문에 항상 그렇습니다. – CKmum

+0

이것이 간단한 워크 플로우라면, 당신의 제안을 팔 수있을 것 같습니다. 불행히도 해결책 중 하나는 공공 조달의 영역입니다. 정부 당국자는 변경을 할 때 매우 신중합니다. 현재의 솔루션이 완벽하게 작동하지만 더 많은 브라우저와 플랫폼을 동시에 지원할 수있는 방법을 찾고 있습니다. –

0

우리의 SecureBlackbox 라이브러리에는 필요한 것을 수행하는 분산 암호화 추가 기능이 있습니다. 현재 클라이언트 측 모듈은 서명을하지만 사용자가 확장 할 수 있습니다 (우리는 완전한 소스 코드를 제공합니다). 추가 기능 on our site 또는 this SO answer에 대한 자세한 설명을 볼 수 있습니다.

-1

[공개 : I는 코사인 작동]

클라이언트의 인증서 표시를 저장할 수있는 안전한 대안은 보안 중앙 SSCD (보안 서명 생성 장치)에 저장할 것이다. 로컬 인증서 (스마트 카드 등)의 문제점은 클라이언트/서버 또는 웹 기반 응용 프로그램에서 안전하게 사용하는 것입니다.

중앙 집중화 된 SSCD가 문제를 매우 잘 처리합니다. 사용자는 여전히 이어야합니다. 자신을 SSCD에 인증해야하지만 SSCD 자체가 certs를 보유하고 서명합니다. 인증 단계에는 OTP (One Time Passords), 생체 인식 등의 2 단계 인증이 포함될 수 있습니다.

아이디어는 보안 클라이언트 인증을 유지하면서 보안 서명을 네트워크에서 서비스로 중앙 집중화하는 것입니다.

이 부분은 description입니다. 클라우드 기반 솔루션으로도 제공됩니다.

ps이 대답은 웹 기반 응용 프로그램에 안전하게 로그인하는 방법에 대한 좀 더 일반적인 질문을 다룹니다. 나는 그것이 사용자의 스마트 카드 또는 클라이언트 대안 (OP가 의도적으로 모호했다)을 사용하여 서명하는 특정 질문을 다루지 않는다는 데 동의합니다.

+0

나는 벤더들의 시위와 정부 공무원들의 반대 의견을 이미들을 수 있습니다 ... 디지털 인증을 유지하는 것을 선호합니다 ... 제 3 자 서비스에 맡기고 싶습니다. 제안하는 것조차 생각조차 할 수없는 것입니다. 그래도 나는 읽은 목록에 귀하의 링크를 올리겠습니다. –

+0

@BinaryNights 우리는 전세계에 많은 정부 고객이 있습니다. certs는 정부 기관의 네트워크에있는 상자에 살고 있습니다. –

+0

문제는 인도에서는 많은 계약자와 많은 정부 기관이 있다는 것입니다. 모든 서비스는 제 3 자 (예 : abcprocure.com, nprocure.com 및 기타 여러 기관)에서 제공합니다. 보유하고있는 것이 실제라면 인도의 인증 기관을 실제로 설득하고 설득해야합니다. http://cca.gov.in/cca/?q=licensed_ca.html로 이동하여 TCS 및 nCode와의 대화를 시작하십시오. –