암호화 된 쿠키 가치의 무차별 인력으로 검증 키와 암호 해독 키를 찾을 수 있습니까?

StackOverflow https://stackoverflow.com/questions/862141

문제

다음 코드를 사용하여 암호화 된 토큰을 생성하고 있습니다.

var ticket = new System.Web.Security.FormsAuthenticationTicket(
    2, 
    "", 
    DateTime.Now, 
    DateTime.Now.AddMinutes(10), 
    false, 
    "user id here");
var cipherText = System.Web.Security.FormsAuthentication.Encrypt(ticket);

이 코드는 app/web.config에 지정된 키 및 알고리즘을 사용합니다.

<system.web>
    <machineKey validationKey="SOME KEY" 
                decryptionKey="SOME OTHER KEY" 
                validation="SHA1" />
</system.web>

이제 내가 파트너에게 생성 된 암호 텍스트를 제공한다고 가정 해 봅시다. 그는 짐승을 강제 할 수 있습니까?

  1. 암호에 저장된 값 (민감한 정보를 나타내지 않고별로 귀찮게하지 않는 사용자 ID)
  2. Cipher를 만드는 데 사용되는 ValidationKey와 DeSyptionkey의 가치 (이것은 토큰을 생성하고 사용자를 가장 할 수 있기 때문에 치명적일 것입니다).

나는 두 질문 모두에 대한 답이 그렇다고 생각하지만, 그의 기회는 얼마나 현실적이며, 당신은 그에게 암호를주는 것이 내 시스템에 보안 위협을 나타낼 것이라고 생각합니까? 귀하의 답변에 미리 감사드립니다.

도움이 되었습니까?

해결책

여기에 설명하는 것은 알려진 일반 텍스트 공격입니다. 공격자는 일반 텍스트와 해당 Ciphertexts를 모두 배우고 그의 목표는 키를 찾는 것입니다. 현대 암호는 이러한 종류의 공격에 대해 안전하도록 설계되었습니다.

실제로 모든 현대 암호는 선택한 일반 텍스트 공격 및 선택한 암호 텍스트 공격과 같은 더 강력한 공격에 대해 안전하도록 설계되었습니다. 공격자가 일반 텍스트 및 해당 암호 텍스트를 선택하거나 CIPHERTEXTS를 여러 번 선택하고 해독을 배우더라도 여전히 열쇠를 배울 수 없어야합니다.

이것은 새로운 암호를 매우 어렵게 만듭니다. 그러나 다행히도 우리는 이미 AES와 같은 좋은 암호를 가지고 있습니다.

또한 위의 모든 공격은 공격자가 사용 된 암호의 모든 세부 사항을 알고 있다고 가정합니다. 그가 모르는 유일한 것은 사용되는 열쇠입니다. 이것은 Kerkhoff의 원칙으로 알려져 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top