2009-03-21 12 views
4

URL에서 대칭 암호화 된 데이터를 전달하거나 암호화 된 데이터를 쿠키에 저장하는 경우 해당 쿠키는 공감할 만하다. 그리고/또는 네사식 및/또는 같은 장소에서 Symetric Encryption IV (Salt)를 전달할 수도 있습니다. URL? 솔트를 웹과 같은 국적이없는 환경에서도 유효하게 사용할 생각인가? 서버 측 암호를 가정URL과 소금의 암호화 된 데이터

(I 소금이 이름의 목록 주어진 데이터베이스에 작동하거나 등을 차지하지만 우리는 소금이 우리가 무 환경에서 데이터를 전달하는 주어진 저장할 수있는 방법을 알고 있습니다.

데이터를 암호화 한 다음 데이터를 해독하는 데 사용되는 방법 Salt는 어떻게 사용할 수 있습니까? 쿼리 문자열에 별도의 IV를 전달할 수 있지만 공개적으로 소금이 노출되어있는 것 같습니다.

또는 키와 IV를 생성 할 수 있습니까? "암호"의 해시. 해시의 중첩되지 않는 영역에서 IV와 Key가 온다고 가정하면이 상태가 좋습니까? (소금/키가 항상 주어진 암호와 동일하다는 것을 알고 있습니다.)

EDIT : 일반적으로 AES를 사용합니다.

답변

3

각 암호화 루틴마다 임의의 IV를 생성하는 것이 좋으며 암호문과 함께 안전하게 전달할 수 있습니다.

편집 :

아마 염은 일반적으로 해싱을 위해 사용되기 때문에, 당신은 저장하고 왜 당신은 AES 암호화 염을 사용하고 어떤 유형의 정보를 요청해야하지 대칭 암호화. 소금이 공개적으로 이용 가능하다면, 소금을 먹는 목적을 상실 할 수 있습니다.

공격자가 소금, IV 및 암호 텍스트를 가지고 있기 때문에 약한 키로 쉽게 무력 공격을 할 수 있기 때문에 정말로해야 할 일은 키의 강도를 보장하는 것입니다.

+0

내 실수 일 수 있습니다. 소금과 IV가 같은가요? 또는 일반적으로 암호화 될 데이터의 시작 부분에 추가되는 소금입니다. 여기 내 요소에서 약간 벗어났다. – andleer

2

비밀 키로 초기화 벡터를 생성해서는 안됩니다. 초기화 벡터는 주어진 메시지에 대해 예측할 수 없어야합니다. 키 (또는 키를 생성하는 데 사용 된 암호)에서 생성 한 경우 IV는 항상 동일하며 목적을 이길 수 없습니다.

그러나 IV는 비밀 일 필요는 없습니다. 보호되지 않은 암호문과 함께 보내는 것이 일반적입니다. IV를 URL에 통합하는 것은 서버 측 상태에서 주어진 링크에 대한 IV를 추적하는 것보다 훨씬 쉽습니다.


소금과 IV는 별개의 응용 분야를 가지고 있지만 유사한 방식으로 작동합니다.

암호 "salt"는 암호 기반 키 유도 알고리즘에 사용됩니다. 인증을 위해 해시 된 암호를 저장하는 것이이 기능의 특별한 경우입니다. Salt는 동일한 암호를 사용하여 다른 해시를 생성하고 해커가 일반적인 암호에 대한 해시 값을 사전 계산 한 "사전 공격"을 방해하고 지정된 암호의 암호를 빠르게 찾을 수 있도록 "역방향 조회"색인을 작성합니다 해시시. IV와 마찬가지로 사용 된 소금은 비밀이 아닙니다.

초기화 벡터는 CBC와 같은 피드백 모드에서 DES 및 AES와 같은 블록 암호와 함께 사용됩니다. 각 블록은 암호화 될 때 다음 블록과 결합됩니다. 예를 들어, CBC에서 이전 블록 암호 텍스트는 암호화되기 전에 현재 블록의 일반 텍스트와 XOR됩니다. IV는 무작위로 생성되어 프로세스를 부트 스트랩 (bootstrap)하기위한 더미 초기 블록으로 사용됩니다.

각 메시지마다 다른 IV가 선택 되었기 때문에 (동일한 메시지가 동일한 키로 암호화 될 때) 결과 암호문은 다릅니다. 그런 의미에서 IV는 소금과 매우 유사합니다. 암호화 난수 생성기는 일반적으로 소금이나 IV에 대한 가장 쉽고 안전한 소스이므로 비슷한 점이 있습니다.


암호화가 엉망입니다. 자신이하는 일에 자신이 없다면, 보호하고있는 정보의 가치를 고려해야하며 그에 따라 적절한 교육이나 상담을받을 수 있도록 예산을 책정해야합니다.

+0

그냥 매번 다른 IV가있는 쿼리 문자열에 동일한 암호화 된 값을 반복적으로 전달하는 것이 좋습니다. 키는 서버 측이지만 동일하게 유지되지만 모든 요청에 ​​따라 암호화 된 값이 변경됩니다. 나는 디자인 포인트에서 괜찮다. 그냥 보안상의 문제인지 확인하고 싶습니다. 감사합니다 – andleer

+0

예, IV는 메시지마다 고유해야합니다. 해독 할 상대방의 전체 값으로 IV + 암호문을 보내 게됩니다. 또한 AES는 그렇게하지 않으므로 암호문을 인증 할 수있는 방법이 있는지 확인하십시오. – MichaelGG

+0

따라서 전체 메시지가 "IV + 암호문"에서 cipherText = Encrypt (일반 텍스트, HASH (일반 텍스트))가 될 수 있습니다. 그렇게하면 동일한 평문이 서로 다른 암호문을 얻을 수있게 해주는 고유 한 IV와 암호문을 확인하기위한 일반 텍스트의 해시가 변조되지 않은 것입니다. – MichaelGG