2013-09-05 10 views
0

내 직장에서 저는 쿼리 기반 문자열에서 암호화 된 매개 변수를 선택해야하는 .NET 기반 웹 응용 프로그램이 있습니다.C#을 사용하여 Microsoft Crypto API로 문자열 해독

암호화 된 문자열을 제공하는 사람들은 외부 계약자이며 Microsoft의 Crypto API를 사용하여 문자열을 암호화하는 것을 선호합니다 (거의 요구 사항은 없습니다.

음, AFAIK는 C#으로 해독 할 수 있지만 끝이없는 검색을 한 후에도 어떻게 작동하는지 여전히 알 수 없습니다.

즉, 예제 코드를 제공 할 수 없으며이 문자열을 해독 할 수있을 때까지이 바인딩에 고정되어 있습니다.

내가 가지고있는 것은 :

나는 그들이 함께 암호화 공통의 암호를하고 난 그것을 해독하는 데 사용해야합니다.

암호화 설정은 "CALC_AES_128"해시 : "CALC_MD5"입니다. 문자열이 암호화 된 다음 해시됩니다.

그래서 해싱을 해독하고 해독하려고합니다.

나는 그 많은 것을 묻는다. 그러나 나는 그것에 관해 어떻게 가느냐?

+1

무지개 표를 사용하지 않을 경우 "해쉬"할 수 없습니다. 아마도 소금에 절여 있기 때문에 적용되지 않는다고 생각합니다. 그것은 당신이 "사진 자르기"를 원한다는 것과 같습니다. 일반적으로 ** 동일한 작업 **을 수행 할 때 얻을 수있는 것과 해시를 비교합니다. –

+0

+1 @MarcGravell "해치"할 수있는 해시는 기술적으로 Crypto 비즈니스에서 "깨진 해시"로 알려져 있습니다. – Aron

+0

md5로 해시 된 문자열이 양쪽으로 갈 수 있다고 생각 했습니까? –

답변

1

외부 계약자는 자신이 말하는 것에 대해 알지 못합니다.

해시는 함정 문 기능으로 사용되며, 그 내용이 무엇인지 알려지지 않은 채로 인식합니다. 디지털 지문입니다. CRYPTOGRAPHICALLY SECURE 해시가 만들어지는 방식은 해시와 알고리즘이 주어 지더라도 지문과 일치하는 개체를 만드는 것이 어렵다는 것을 의미합니다.

AES는 비 결정적 사이퍼입니다. 불확정성은 초기화 벡터에서 나옵니다. 초기화 벡터는 매번 임의의 숫자가 될 것입니다 (다이 롤에서 코딩 된 코드가 아닌 Sony). 이것은 모든 의도와 목적을 위해 AES의 출력이 무작위임을 의미합니다 (키를 가지고 있지 않은 경우). 좋은 cypher는 모두 통계적으로 무작위 인 데이터를 생성하도록 설계되었습니다 (따라서 공격을 형성 할 데이터가 거의 없음).

무작위 데이터를 생성하는 함수에 데이터를 입력 한 다음 트랩 문 함수에 넣으면 해독하기가 정말 어렵습니다 (이러한 의미에서 수학적으로 어려운 경우 실제로 존재하는 것보다 더 많은 에너지가 필요합니다. 이것을 계산할 우주에서).

쿼리 문자열에 안전한 방식으로 데이터를 전송하는 방법은 안전하지 않은 네트워크에서 데이터를 안전하게 전송하는 방법은 무엇입니까? 잘 알려진 프로토콜이 있습니다. .net이이를 잘 지원합니다. HTTPS라고합니다.

+0

그리고 민감한 정보를 어둡게하는 쉬운 방법이 없습니까? –

+0

각 암호화 계층은 불편 함을 제공합니다. 더 안전 할수록 더 불편할 것입니다. 보안상의 문제는 불편합니다 ... 작동시키기 위해 필요한 물건이 많을수록 공격자가 시스템을 공격하는 데 필요한 더 많은 것들이 있습니다. – Aron

+0

HTTPS를 완전히 삭제하고 계약자가 VPN을 통해 터널을 통과하도록 할 수 있습니다. 그보다 더 안전 할 수 있습니다 ...하지만 당신이 충분한 보안 시스템을 필요로한다면 ... 운이 좋으면 나는 그 순간에 계약을 할 수 있습니다 : P. 하지만 그래 ... HTTPS는 잘 작동해야한다 ... 당신이 웹 서버 나 계약자를 신뢰하지 않는다면 ... 어떤 경우에는 당신은 꽤 망했다. – Aron