2013-02-26 2 views
2

해시 (변조 및 손상 감지) 및 선택적으로 사용자 키로 암호화 된 파일을 읽고 쓰는 응용 프로그램이 있다고 가정 해보십시오. 응용 프로그램에는 필연적으로 데이터를 해시하고, 암호화하고 해독하는 컴파일 된 코드가 포함됩니다.암호화 및 암호 해독을 구현하는 응용 프로그램에 액세스하는 것이 더 쉽게 할 수 있습니까?

AES-256 및 SHA-256과 같이 엄격한 알고리즘을 사용한다고 가정하면 사용자가 컴파일 된 형식으로 응용 프로그램을 사용한다는 사실을 알 수 있습니다 (일부 알고리즘을 사용하면 알고리즘이 제대로 작동하지 않을 수 있습니다). 암호화를 해독하거나 가짜 해시를 생성하는 것이 더 쉽습니다.

사실 심각한 취약점 인 경우 취약성을 완화하기 위해 어떤 조치를 제안합니까?

+0

"컴파일 된 코드 해시"란 무엇을 의미합니까? 코드를 해시로 컴파일하지는 않지만 컴파일 된 코드에서 md5sum 해시를 만드는 것과 같은 작업을 수행 할 수 있습니다. 이게 네가 말하는거야? 아, "컴파일 된 형태의 응용 프로그램"이란 무엇입니까? 암호화 된 양식을 의미합니까? – Eric

+0

사용자 장치에서 실행되는 모든 코드를 리엔지니어링 할 수 있습니다. 그렇지 않으면 maschine이 해당 코드를 실행할 수 없습니다. 그러나 크래킹을 가능한 한 어렵게 만들 수는 있지만 충분한 노력으로 모든 것을 해독 할 수 있습니다. – MorbZ

+0

죄송합니다. @Eric 님, 번역을 잃었습니다. 나는 "데이터의 해시를 계산하고 데이터를 암호화하고 해독하는 데 필요한 컴파일 된 코드를 응용 프로그램에 포함시켜야합니다." 아니요, 응용 프로그램을 암호화하려고하지 않았습니다. "컴파일 된 양식의 응용 프로그램"은 응용 프로그램 EXE 및 DLL 파일이 사용자 컴퓨터에 설치된 것을 의미합니다. – rossmcm

답변

4

  • 는 본문의 비밀을 짜 응용 프로그램 소스를 갖는 애플리케이션 자체에 심각한 결함을 갖는 경우의 취약점은 예

    • security through obscurity 기술을 채용이기 인 것이 유일한 케이스 프로그램,
    • 공격에 대한 구현을 여는 잘 알려진 알고리즘을 구현하는 데 실수를 범합니다.

    기본적으로 공격자가 원본을 가지고있을 때 제품이 더 취약 해집니다. 공격자가 코딩 실수를 더 쉽게 발견 할 수 있기 때문입니다. 그러나 공격자가 소스 코드를 가지고 있다는 사실이 아니라 응용 프로그램을 해독 할 수있는 코딩상의 실수입니다.

  • +0

    그래서 "내 응용 프로그램은 XYZ123을 사용하여 데이터를 암호화하고 내가 사용하는 소스 코드를 찾을 수 있습니다 ..."라는 발표는 구현이 정상적으로 제공된다는 점에서 취약점이 아닙니까? – rossmcm

    +2

    @rossmcm 사용중인 구현이 안전하다면, 라이브러리가 양호한 것으로 알려진 경우 공격자가이를 막을 수도 있습니다. 어쨌든 사용중인 구현을 신뢰해야합니다. 나중에 라이브러리가 나중에 취약한 것으로 밝혀지면 응용 프로그램도 될 수 있기 때문입니다. – dasblinkenlight

    +0

    우수한 응답. 그런 응용 프로그램이 공개적으로 조사하면 실수를 강조 표시하고 복구 할 수 있습니다. 따라서이 모든 것을 자랑스럽게 널리 알리는 것이 좋습니다. –