문제

몇 년 동안 나는이 시나리오를 두 번 이상 발견했습니다. 한 응용 프로그램에서 다른 응용 프로그램으로 보내려는 사용자 관련 데이터가 많이 있습니다. 두 번째 응용 프로그램은이 "토큰"을 "신뢰"하고 그 안에있는 데이터를 사용해야합니다. 도난/재사용 공격을 방지하기 위해 타임 스탬프가 토큰에 포함되어 있습니다. 어떤 이유로 든 SAML과 같은 업계 표준보다는 사용자 정의 솔루션이 선택되었습니다.

나에게 그것은 디지털 방식으로 데이터에 서명하는 것이 여기서 원하는 것 같습니다. 데이터가 비밀이어야한다면 데이터를 암호화 할 수도 있습니다.

그러나 내가 많이 보는 것은 개발자가 대칭 암호화 (예 : AES)를 사용할 것이라는 점입니다. 그들은 데이터를 "비밀"으로 만드는 것 외에도 암호화는 1) 메시지 무결성과 2) 신뢰 (소스 인증)를 제공한다고 가정합니다.

여기에 내재 된 약점이 있다고 의심 할 권리가 있습니까? 대칭 키가 제대로 관리되는 경우 액면가에서 작동하는 것 같습니다. 그 열쇠가 없기 때문에, 나는 암호화 된 토큰을 수정하는 방법을 모르거나 여러 토큰을 가로 채운 후 일종의 암호화 공격을 시작합니다. 그러나 더 정교한 공격자가 여기서 무언가를 악용 할 수 있을까요?

도움이 되었습니까?

해결책

그것의 일부는 암호화 모드에 따라 다릅니다. ECB를 사용하는 경우 (부끄러워!) 블록을 교환하여 메시지를 변경할 수있었습니다. Stackoverflow는이 버그에 맞았습니다.

덜 위협-무결성 점검없이, 나는 중간에 사람의 공격을 수행하고 모든 종류의 비트를 교환 할 수 있으며, 그것을 받고 해독하려고 시도 할 것입니다. 물론 실패했지만 시도가 드러날 수 있습니다. "Bernstein (캐시와 미세 구조적 특성의 조합을 악용)과 Osvik, Shamir 및 Tromer (캐시 충돌을 악용)의 측면 채널 공격이 있습니다. 1 각주의 기사는 나보다 더 큰 메모의 암호 화자에 의한 것이며, Mac으로 공격 표면을 줄이는 것이 좋습니다.

Mac Key에 액세스 할 수없는 공격자가 악의 입력을 코드 블록에 공급할 수 없도록 할 수 있다면 버그를 악용 할 수있는 가능성이 크게 줄어 듭니다.

다른 팁

예. 암호화만으로는 인증을 제공하지 않습니다. 인증을 원하는 경우 HMAC 또는 디지털 서명과 같은 메시지 인증 코드를 사용해야합니다 (요구 사항에 따라 다름).

메시지가 암호화되지만 인증되지 않은 경우 가능한 많은 공격이 있습니다. 다음은 매우 간단한 예입니다. 메시지가 사용하여 암호화되었다고 가정합니다 CBC. 이 모드는 IV를 사용하여 암호 텍스트를 무작위 화하여 동일한 메시지를 두 번 암호화해도 동일한 암호 텍스트를 초래하지 않도록합니다. 공격자가 IV를 수정하지만 암호 텍스트의 나머지 부분을 그대로 남겨두면 암호 해독 중에 어떻게되는지 살펴보십시오. 해독 된 메시지의 첫 번째 블록 만 변경됩니다. 또한 메시지의 IV 변경에서 이러한 비트가 변경되었습니다. 따라서 공격자는 수신기가 메시지를 암호화 할 때 변경 사항을 정확하게 알고 있습니다. 첫 번째 블록이 예를 들어 타임 스탬프 인 경우 공격자가 원래 메시지가 보낸시기를 알고있는 경우 올바른 비트를 뒤집는 것만으로 타임 스탬프를 다른 시간으로 쉽게 고칠 수 있습니다.

메시지의 다른 블록도 조작 할 수 있지만 조금 까다 롭습니다. 또한 이것은 CBC의 약점이 아닙니다. OFB, CFB와 같은 다른 모드는 비슷한 약점을 가지고 있습니다. 따라서 암호화만으로 인증을 제공 할 것으로 기대하는 것은 매우 위험한 가정 일뿐입니다.

대칭 암호화 접근법은 키만큼 안전합니다. 두 시스템 모두 키를 제공하고 키를 단단히 유지하면 괜찮습니다. 공개 키 암호화는 확실히 더 자연스럽게 적합합니다.

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