2009-04-18 3 views
37

일부 소프트웨어가 비밀 키를 숨겨서 쉽게 발견 할 수없는 방식으로 잠시 궁금해했습니다. 몇 가지 예 :코드에서 비밀 키를 어떻게 숨 깁니까?

  • DVD 플레이어 소프트웨어는 CSS 키를 숨 깁니다 일련 번호/등록 코드와
  • 소프트웨어 일련 번호를 확인하는 데 사용 키/해시를 숨 깁니다

물론,이 프로그램은 뭔가 더 많은 일을 할 키를 훔쳐서 자신의 일련 번호를 생성하기가 쉽기 때문에 바이트 [] 안에 키를 가지고있는 것보다 더 편리합니다.

이러한 키를 숨겨서 사용할 수 없도록하는 전략에는 어떤 것이 있습니까? 쉽게 찾을 수 있습니까?

+2

하지만 어도비는 Photoshop에서 어떻게 사용합니까? – Jeena

+17

한 단어 : 실패했습니다. – dmckee

답변

35

이러한 비밀 키가 쉽게 발견 된 이유는 소프트웨어에 숨겨져 있기 때문입니다.

소프트웨어에서 비밀을 숨기지 마십시오. 난독 화는 지금까지만 가능합니다. 스스로에게 물어보십시오 : 분해, 사용자 모드 및 커널 모드 디버거에 대한 모든 권한을 가진 사람으로부터 소프트웨어의 키를 얼마나 잘 숨길 수 있습니까? 균열이 생기기까지는 단지 시간 문제 일뿐입니다.

+22

이 질문에 대답합니까? –

+1

당신이 말했듯이 "금이 간다는 것은 시간 문제 일뿐입니다." 따라서이 키가 하드웨어 보호 키보다 빨리 만료된다는 점을 감안할 때이 전략이 유용 할 수 있습니다. – kdmin

1

라이센스 유효성을 검사 할 때 항상 키가 필요한 것은 아닙니다.

사실을 무시하면 키가 다른 기능의 결과 일 수도 있습니다. 실제로 특정 키 값을 저장하지 않고, 즉시 키를 생성하는 함수가 있습니다 (항상 동일한 결과). 불가능하지는 않지만, 더 이상 가치를 찾고 있지 않기 때문에 찾기가 훨씬 어렵습니다. 그러나 방정식이라고 판단해야합니다.

+7

시간 낭비입니다. 모든 크래커는 단순히 함수의 결과를 메모리에서 직접 가져옵니다 (아니면 전체 함수를 자신의 keygen으로 복사 할 수도 있습니다).그것은 숙제가 아닙니다. 그는 단지 그의 일을 보여줄 필요없이 올바른 답을 얻어야 만합니다. – Mikeage

0

코드에서 숨겨진 비밀 키는 실제로 안전하지 않습니다. 당신은 DVD와 대부분의 소프트웨어 시리얼 번호 등록이 매일 해킹당하는 것을 보았을 것입니다. 정말로 보안을 원한다면 공개 키 암호화를 사용해야합니다.

+3

공개 키 암호화는 해결책이 아닙니다. 개인 키의 기밀성을 보호해야하는 것처럼 공개 키의 무결성을 보호해야합니다. 일반적인 메커니즘은 물리적 인 변조 방지 기능이있는 하드웨어 또는 암호 기반의 비밀 키입니다. – erickson

2

소프트웨어 개발을 시작했을 때 날짜가 지정된 라이센스 파일이 생성되었습니다. 그런 다음 우리는 소프트웨어를 구매하는 데 너무 많은 사람들이 관심이 없다는 것을 깨달았습니다. 그 다음, 우리는 그것을 무료로 주기로 결정했다. 더 많은 사람들이 적어도 우리의 걸작을 시험해보기 시작했습니다. 마지막으로, 우리는 소프트웨어를 오픈 소스했습니다. 더 많은 사용자가 그것을 사용하기 시작했습니다. 이제는 소수의 사용자가 유료 고객으로 전환 할 수 있기를 기대합니다 (예 : 제품 구매 또는 맞춤 설정 요청).

결론은 누군가 소프트웨어를 크래킹하고 싶다면 어쨌든 할 것입니다. 숨겨진 비밀 키로 보호하기 위해 시간을 낭비 할 가치가 있습니까?

+1

소프트웨어는 무엇입니까? – shoosh

+8

귀하의 비즈니스 과정 전체가 상당히 거꾸로되어 있습니다. – Hejazzman

5

키를 영원히 숨길 수는 없습니다. 그러나 당신은 확실히 그것을 찾기 어렵게 만들 수 있습니다. 어떤 접근법은 메모리에서 키를 암호화하고, 서로 대조되는 여러 복사본 (아마도 다르게 암호화 됨)을 유지하고 액세스 할 더미 복사본을 남기고 일부 기괴한 형식으로 키를 저장하는 등의 작업을 수행합니다. 당신의 열쇠를 원하지만 캐주얼/미숙 한 공격자를 적어도 당혹스럽게 할 수 있습니다.

+0

숨겨진 키를 찾기로 결심했다면 일반적으로 사람들이 숨겨진 키조차 찾지 못합니다. –

-2

나는 이것이 DVD와 BluRay가 너무 빨리 금세가 된 가장 큰 이유 중 하나라고 생각합니다. 일반 사람들이 디지털 방식으로 홈 무비를 복사 할 수 없게하는 유일한 방법은 컴퓨터에서 사용 허가를받지 않은 매체를 만든 것이고 인증 된 플레이어에서만 사용할 수있는 것입니다. 자신의 컴퓨터와 랩톱에서 영화를보고 싶어하는 시장 부분을 없애 버릴 수 있지만, 좀 더 오랫동안 완벽한 디지털 립을 사용하지 못하고 평균적인 사람이 그 일을 할 수 없게됩니다.

6

결론은 없습니다. 그 이유에 대해서는 다른 의견을 참조하십시오. PGP/GPG와 같은 암호화 소프트웨어조차도 키를 파일에 저장 한 다음 그 파일을 안전 드라이브 나 안전하지 않은 다른 장치에 플래시 드라이브에 보관해야한다고 위장 당한다. 실행 코드의 일부로 저장된 키가 발견됩니다.

사실, 정상적인 작업의 일부로 클라이언트가 해독 할 클라이언트 시스템의 모든 것을 암호화하려는 경우 이는 또한 어리석은 일입니다. 클라이언트 시스템은 본질적으로 안전하지 않으므로 데이터에 대해 수행 할 수있는 작업을 제어 할 수 없습니다.

인증을 시도하는 대신 인터넷 기반 인증을 서버에 로그인하거나 소프트웨어의 유효성을 확인하는 데 사용되는 일종의 생성 된 KeyCode를 살펴보십시오.

개인 키 쌍의 일부인 비밀 키는 보호 할 수있는 데이터 파일에 보관해야합니다. 대칭 키는 세션 키로 즉석에서 생성 된 다음 삭제되어야합니다. 항상 자신의 컴퓨터에 Secret 또는 Session 키가있는 사람이라면 누구든지 그것을 발견하고 귀하의 의도에 따라 사용할 수 있다고 가정하십시오.

자세한 내용은 Bruce Schneier의 "Applied Cryptography"을 참조하십시오.

+1

"PGP/GPG와 같은 암호화 소프트웨어도 키를 파일에 저장합니다"라는 문장은 오해의 소지가 있습니다. PGP는 사용자에게만 알려진 암호를 사용하여 해당 키를 암호화합니다. 또한 PGP는 보안 메모리를 사용하여 키에 절대 캐시되지 않도록하고 PGP는 메모리 검사를 사용하여 키를 찾기 어렵게 만듭니다. 내가이 답을 쓸 수 있다면 내가 할 수있을 것이다. – MrEvil

+0

저의 요점은 소스 코드에 저장된 비밀 데이터가 없다는 것입니다. 자신의 비밀 키를 확보하는 것은 사용자의 책임입니다. 비밀 키에 대한 암호 문구가 있더라도 악의적 인 사람이 비밀 키 파일에 액세스하면 게임은 끝납니다. 신뢰할 수있는 사용자가 아닌 다른 사람이 액세스 할 수있는 위치에 비밀 키를 저장하면 해당 항목이 EXE인지, RAM인지 또는 파일인지에 관계없이 고통을 겪게됩니다. –

12

키를 어딘가에 숨기고 필요할 때 해독합니다. "안전하게"키를 사용하는 것은 복잡한 부분입니다. 크래커는 해독 된 키를 사용하는 곳으로 중단 점을 설정할 수 있습니다. 그들은 알려진 암호 알고리즘을 사용하고 있음을 나타내는 패턴을 코드에서 검색 할 수 있습니다 (대부분의 알고리즘은 사전 계산 된 테이블을 가짐).

그래서 전체 소프트웨어 실행 파일을 분석하기가 어려워야합니다. 이를 위해 실행 가능한 패커, 가상 컴퓨터에서 코드 실행, 무결성 검사 등을 사용합니다.이 모든 것이 디버깅 속도를 늦추고 코드를 수정하는 것입니다.

대부분의 사람들은 누군가를 막을 수는 없다고 지적하면서 그 속도를 줄입니다. 나는 크래커 포럼에 가서 주요 은신처 문제에 대한 제안을 요청할 것입니다. 그들은 당신이 멋지게 물으면 가장 도움이 될 것입니다.

ps. 공개 키 암호는 키를 더 이상 숨기지 않지만 라이센스 체계를 수행하는 경우 키 생성기를 만드는 것이 더 어렵거나 이론적으로 불가능할 수 있습니다.

1

감당할 수있는 경우 비밀 키를 암호화 USB 토큰에 저장하는 것이 가장 좋습니다. 키는 쓰기 전용입니다. 즉, 키를 설정할 수는 있지만 읽을 수는 없습니다. 토큰은 하드웨어에서 내부적으로 암호화 작업을 수행합니다. 토큰에 알려진 취약점이없는 경우 키를 검색하는 작업은 매우 복잡해지며, 이전 토큰의 경우에는 그렇지 않습니다.

+0

이러한 유형의 보호는 소프트웨어보다 한 단계 높습니다. 모든 메모리 덤프를 사용하여 USB 키를 복제 할 수 있습니다. 당신이 앞서 가서 키 ID를 주어 온라인 사용자를 확인하려고하면 네트워크에 패치 할 수 있습니다. 코드를 보호 할 진정한 방법은 없습니다. 이를 수행하는 가장 좋은 방법은 사람들을 해체시키고 정기적으로 시스템을 갱신하는 것입니다. 당신과 당신을 해칠 수있는 사람 사이의 작은 시간 틀이 여기 당신의 유일한 친구입니다. – erm3nda

+0

크래킹 된 소프트웨어를 사용하지 못하게하는 가장 좋은 방법은 균열을 공개하고 바이러스를 많이 넣는 것입니다. 그렇게 함으로서 당신을 해칠 수있는 사람보다 더 중요한 누군가를 해체시킬 수 있습니다 ---> 소프트웨어를 사용하고 싶어하는 사용자. 저렴한 가격 책정 계획을 세우면 숨겨진 열쇠보다 훨씬 성공할 수 있습니다. – erm3nda

0

불가능합니다. 대상 컴퓨터에 액세스 할 수있는 공격자는 코드를 해독하여 대상 컴퓨터에서 키 파일을 찾을 수 있습니다.

암호화 키가 안전한지 확인하는 방법은 다음과 같습니다. 필요한 경우 사용자가 직접 입력해야합니다.