2011-03-31 5 views
1

우리는 클라이언트 응용 프로그램과 서버 응용 프로그램 간의 통신을 용이하게하는 응용 프로그램에서 메시징 대기열 (JMS/ActiveMQ)을 사용하고 있습니다. 서버 응용 프로그램을 호출하려는 사용자의 사용자 이름과 암호는 대기열로 보내지는 각 메시지의 일부로 클라이언트에서 전송됩니다. 우리는 다음과 같은 방법으로 사용자 자격 증명 (적어도 암호)를 보호하려는 : 메시지 페이로드가 로그 파일에 인쇄 할 때 관리자가 메시지를 볼 때 메시지 페이로드의 일부인 자격 증명을 보호하려면 어떻게합니까?

  • 그들은 보이지 않는

    • 그들은 표시되지 않습니다 큐의 내용을 보도록하는 관리 콘솔
    • 차단 된 메시지의 자격 증명을 사용하여 새 메시지를 만들 수 없습니다 (마스크 된/해시/암호화 된 경우에도 마찬가지입니다).

    누군가가 로그 파일이나 관리 콘솔에서 마스크 된 암호를 가로 채고, 악성 데이터가있는 새 메시지를 만든 다음, 서버 측에서 마스크를 해제하기 만하면됩니다. 서버 쪽에서 마스크를 해제하고 실행될 악성 메시지를 보냅니다. 관리 콘솔이 여전히 암호를 노출 (마스킹되었거나 마스킹)하기 때문에 클라이언트와 메시지 대기열간에 보안 채널을 사용하여 동일한 문제가 발생할 수 있습니다.

    아무도 (메시지 중개자 관리자조차도) 데이터를 보지 않고도 클라이언트에서 서버로가는 모든 종류의 데이터 숨기기/마스킹을 관리하기위한 패턴이 있습니까?

  • +0

    사용자 이름/암호를 사용해야합니까? 인증서를 사용하여 메시지에 서명 할 수 있습니까? – Dave

    +0

    예, 각 사용자/시스템에 인증서를 발급하는 것은 우리가 할 수있는 일의 범위를 벗어납니다. 이것은 내부 회사 웹 앱이며 사용자 자격 증명은 주어진 시스템에서 Google 시스템에 로그인하는 데 사용 된 것입니다. –

    답변

    1

    한 가지 해결 방법은 공유 된 비밀 키를 갖고 암호를 암호화하는 것입니다. 재생 공격을 막기 위해 Nonce가 무엇인지 읽어보십시오 : http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.express.doc/info/exp/ae/cwbs_noncev6.html.

    Example 1: 
    
    Client Sends: 
         Encrypt(username + password + timestamp) 
         Timestamp 
    
    Server: 
    
    Decrypt to get username, password, timestamp 
         compare timestamp in encrypted data == unencrypted timestamp 
         if timestamp older than N, then reject 
    
    This disallows replay attacks outside of the timestamp +- N window. 
    
    Example 2: 
    
    Client Sends: 
         Encrypt(username + password + Nonce) 
    
    Server: 
         Decrypt to get usernmae, password, Nonce 
         check if Nonce was used before (for this username) 
         if it was, then reject 
    
    +0

    이것이 단단한 해결책이라고 생각합니다. 답으로 받아 들일 것입니다. 불행히도 우리 시스템의 현재 디자인을 기반으로 사용할 수 없습니다. 그림을 이동.. –

    관련 문제