2009-04-03 4 views
0

나는 본사와 이동 중에 판매 직원간에 고객 데이터를 공유 할 수있는 클라이언트/서버를 작성하고 있습니다.보안 직렬화

서버는 고객 데이터를 다운로드하여 XML 파일에 기록하지만 로컬 클라이언트로 작동 할 수 있도록 메모리에 데이터를 유지합니다.

고객 데이터를 인터넷을 통해 쉽게 전송할 수 있도록 ArrayList를 serialize 할 계획입니다. 얼마나 안전합니까? 직렬화 된 객체를 전송하기 전에 양식 암호화를 조사해야합니까?

답변

4

나는 직렬화의 일부로 암호화를 수행하지 않을 것입니다. 즉 직렬화 전송 될 수있는 형태로 객체를 퍼팅

  1. :

    두 여기에 문제가 있습니다.

  2. 전송이 안전한지 확인하십시오.

1과 2는 서로 다른 문제이며 하나의 솔루션으로 결합하면 장래에 문제가 발생할 수 있습니다.

나는 순차 화를 사용하고 TLS과 같은 보안 전송 채널을 사용합니다.

3

내 생각에 HTTPS를 살펴보십시오.

2

직렬화 부분에 대해서는 생각하지 않아야합니다. 직렬화 프로세스가 끝나면 데이터 (바이너리 또는 XML)를 얻게되며이를 보안되지 않은 데이터로 처리해야합니다.

계획을 웹을 통해 안전하게 전송하려면 HTTPS를 조사해야하지만 이메일 또는 파일 전송과 같은 다른 방법으로 전송하려는 경우 또는 안전하게 저장하거나 보관해야하는 경우 아마도 PKCS#7 and related standards을 들여다보십시오.

2

고객 데이터를 인터넷을 통해 쉽게 전송할 수 있도록 ArrayList를 일련화할 계획입니다. 얼마나 안전합니까?

엽서에 인쇄하여 우편에 넣는 것만 큼 안전합니다. 당신과 수신기 사이의 사슬에있는 어떤 것이라도 그 내용을 볼 수 있습니다.

직렬화 된 개체를 전송하기 전에 양식 암호화를 조사해야합니까?

이는 일반적인 접근 방식입니다. 보안 소켓과 같이 클라이언트와 서버 간의 연결이 암호화되어 있지만 양쪽 끝에 '일반 텍스트'로 나타나는 전송 수준 보안이나 메시지 자체를 암호화 한 다음 클라이언트에서 해독 할 수 있습니다. 전송보다는 메시지를 암호화하는 것이 더 복잡합니다. 더 많은 레이어에 영향을 미치지 만 메시지를 저장하거나 클라이언트 서버에서 캐싱을 허용하는 것으로 변경할 수 있습니다. 이동중인 사람들이 랩톱을 잃어버린 경우 정보가 손실된다고 걱정하면 메시지를 암호화하고 사용시에만 해독하는 것이 좋습니다. (다른 대안은 고객 메시지가 저장된 드라이브를 암호화하여 모든 것을 보호하지만 컴퓨터의 모든 것을 영향을 미치므로 회사 IT 정책을 변경해야합니다.)

물론 세 번에 모두 사용할 수 있습니다.

1

SSL을 통한 HTTPS 또는 TCP 사용은 통신 채널에 따라 다릅니다. 각면에 인증서를 안전하게 배포해야하며 모든 항목이 안전해야합니다.

직렬화가 트릭을 수행하기 전에 암호화를 했으므로 양쪽 모두에 하나의 비밀 키를 사용할 수 있으므로 키를 안전하게 저장하고 연결할 수 없도록해야합니다. 그러나 나중에 대체하기를 원할 수도 있고 핵심 관리가 약간 어려울 수 있기 때문에 이것은 좋지 않습니다. 나는 HTTPS/TCP + SSL

2

와 스틱 내가 고객 데이터 쉽게 인터넷을 통해 전송 될 수 있도록 ArrayList를 직렬화 할 계획입니다라고 말하고 싶지만. 얼마나 안전합니까? 내가 전에 어떤 형태의 암호화를 살펴 봐야 나는 Serialized 객체를 전송합니까?

암호화는 직렬화 단계에서 일어나지 않아야합니다. 명확하게 : serialization은 객체를 가져 와서 바이트 문자열로 변환합니다. 모든 직렬화 작업은 불필요한 작업없이 복잡한 작업을 수행해야합니다.

비트 패키지를 내보낼 준비가되면 암호화가 수행되어야합니다. 네트워크를 통해 목적지와 "라이브"통신하는 경우 SSL을 사용하여 회선을 보호해야합니다. 다행히도 이것은 TcpClientSslStream (MSDN)을 붙이는 것만 큼 간단합니다. 더 큰 (암호화되지 않은) 스트림 내에서 작은 비트 패키지를 암호화하는 것은 일반적으로 거짓 보안입니다. 안전하려면 대화 전체가 안전해야합니다.

반면에 비트를 파일에 저장하는 경우 오프라인 암호화를 사용해야합니다. .NET 프레임 워크는 모든 세부 정보를 처리합니다. 개체를 FileStream에 첨부하면 끝났습니다.

2

HTTPS를 통해 직렬화, gzip 한 다음 보내십시오. 이러한 단계를 올바른 순서로 유지하는 것이 중요합니다. 암호화 된 데이터 압축이 작동하지 않습니다. 압축되지 않은 데이터를 암호화하는 데 더 많은 시간이 걸리므로 이론적으로 보안이 저하됩니다.