명백한 코드 실행에 완전히 동종 암호화를 사용할 수 있습니까?


22

이 답변 을 얼마 전에 읽은 후에 완전히 동종 암호화에 관심을 보였습니다. Gentry의 논문 소개를 읽은 후, 그의 세 번째 단락에 정의 된대로 암호화 체계가 명백한 코드 실행에 사용될 수 있는지 궁금해지기 시작했습니다.

완전히 동질적인 암호화 체계에서 우리는 일반적으로 일부 데이터를 암호화하고 데이터에 대해 특정 기능이 계산되는 적대적인 환경으로 보내며, 그 결과는 상대방이 수신 된 데이터 또는 기능의 결과는입니다.

명백한 코드 실행으로 우리는 문제 를 해결하기 위해 설계된 코드 암호화 하여 적대적인 환경으로 보냅니다. 적은 를 사용 하여 를 풀고 싶지만 가 어떻게 작동 하는지 알고 싶지 않습니다 . 그 입력이있는 경우 에 대한 , 그 암호화 할 수 하고 (일부 암호화의 방식)를 사용하여 와 다음 (암호화되지 않은) 출력 반환 (용액 의 입력을위한P C P C I P I C I O P ICPCPCIPICIOPI). 암호화 체계는 공격자가 코드 조각의 작동 방식을 찾지 못하도록합니다. 즉 그에게 오라클처럼 작동합니다.

이러한 암호화 체계의 주된 실용적 사용 (해당 생각할 수있는)은 불법 복제를 더 어렵거나 불가능하게 만드는 것입니다.

내가 완전히 동종 암호화 방식을 사용하여 이것이 가능하다고 생각하는 이유는 암호화 된 데이터, 특히 범용 Turing 머신에서 임의의 회로를 실행할 수 있기 때문입니다. 그런 다음 코드를 데이터처럼 암호화 한 다음이 암호화 된 데이터에서 범용 Turing 머신의 회로를 사용하여 코드를 실행할 수 있습니다.

이 아이디어를 사용할 수 있는지 여부를 알 수 없기 때문에 이것을 여기에 질문으로 삼습니다. Gentry의 논문을 소개하는 것보다 훨씬 더 많은 것을 얻지 못했으며 암호화에 대한 내 지식은 제한적입니다. 또한 이미 잘 모르는 코드 실행에 대해 자주 사용되는 용어가 있는지 모르겠습니다. 아이디어를 찾기 위해 Google을 검색했지만 적절한 용어를 알지 못했습니다.

내가 생각할 수있는 여러 가지 문제가 있으며이 접근법에 문제가 발생할 수 있습니다. 먼저 수정없이 완전히 동종 암호화를 사용하면 계산 결과 ( )가 암호화됩니다. 따라서 코드를 사용하여 를 해결하려는 적에게는 쓸모가 없습니다 . 이것이 여전히 클라우드 컴퓨팅에 유용 할 수 있지만 이것이 내가 달성하고자하는 것은 아닙니다.POP

둘째, 우리는 임의의 Turing 기계가 아닌 회로를 사용하기 때문에 임의의 양의 메모리를 사용할 수 없습니다. 우리는 미리 정해진 양의 메모리로 제한됩니다. 즉, 이런 방식으로 프로그램을 실행하려면 메모리 사용량이 항상 동일합니다. 즉, 최대 메모리 사용량입니다.

마지막으로, 관련된 상수는 그러한 시스템의 실제 사용을 거의 확실하게 없애 버릴 것이지만 아이디어는 흥미 롭습니다.


"Oblivious code execution"이라는 용어가 확실합니까? 나는 그것에 대해 잠시 동안 검색했고 아무것도 얻지 못했다!
Deyaa

전혀 아님 : 나는 적절한 용어를 알지 못했기 때문에 스스로 그 용어를 만들었습니다. 난독 화와 난독 화는 분명히 개념의 일반적인 용어입니다.
Alex ten Brink

답변:


17

불행히도 이론적으로 "명백한 코드 실행"을 금지하는 결과가 있습니다.

Boaz Barak, Oded Goldreich, Russell Impagliazzo, Steven Rudich, Amit Sahai, Salil Vadhan 및 Ke Yang. 난독 화 프로그램의 가능성에 대해 , 암호학의 발전 — CRYPTO 2001.

링크는 다음과 같습니다.

초록은 다음과 같습니다.

비공식적 난독 인 입력 프로그램 (또는 회로)로 취하는 (효율적 확률) "컴파일러" 새로운 프로그램 생성 동일한 기능을 갖는 아직 "읽을 " 어떤 의미에서. Obfuscators는 존재하는 경우 소프트웨어 보호에서 동종 암호화, 라이스 정리의 복잡한 이론 유사체에 이르기까지 다양한 암호화 및 복잡도 이론적 응용 프로그램을 갖습니다. 이러한 응용 프로그램의 대부분은 난독 화에서 "판독 불가"조건을 해석하여 가 "가상 블랙 박스" 라는 의미로 해석됩니다. 이는 주어진 효율적으로 계산할 수있는 모든 것을 의미합니다.P O ( P ) P O ( P ) O ( P ) POPO(P)PO(P)O(P)또한 대한 주어진 오라클 액세스를 효율적으로 계산할 수도 있습니다 .P

이 연구에서 우리는 난독 화에 대한 이론적 조사를 시작합니다. 우리의 주요 결과는 위의 직관의 형식이 매우 약한 경우에도 난독 처리가 불가능하다는 것입니다. 우리는 함수의 가족 구성하여 이것을 증명 다음과 같은 점에서 본질적으로 unobfuscatable 있습니다 술어가 (a)는 함수 계산 어떤 프로그램 제공하도록 에서 값 효율적으로 계산할 수 있지만 (b) 에서 (임의로 선택된) 함수 에 대한 오라클 액세스 권한이 주어지면 임의의 추측보다 효율적으로 계산할 수있는 효율적인 알고리즘이 없습니다 .π f F π ( f ) f F π ( f )FπfFπ(f)fFπ(f)

우리는 계산의 매우 제한 모델에 대한 작업 필요 (a)는 다항식 시간에 반드시 계산할 수없는 것을, 심지어 난독의 (b)에만 약 (C) 기능을 보존, 등, 여러 가지 방법으로 우리의 불가능 결과를 확장 ). 우리는 또한 "비노 포스 캐 터블 (nonbfuscatable)"시그니처 스킴, 암호화 스킴 및 의사 난수 함수 패밀리를 구성함으로써 난독 화의 몇 가지 잠재적 인 적용을 배제합니다. 0TC 0


글쎄, 그런 종류의 물건에는 물건에 완충기가 있습니다. 나는 그들이 결과를 어떻게 증명했는지 읽었습니다. 난 독자가 적대적 프로그램의 소스 코드에 액세스 할 수 있다고 가정했을 때 특히 당황했습니다! (난 그냥 종이를 오해 할 수 있지만)
알렉스 열 직전

5
이 결과는 가상 블랙 박스를 사용한 "오래된"(난도 한) 난독 화 모델에만 적용되며, 현재 해당 분야의 연구원들은 약간의 보증이있을 수 있다는 희망으로 난독 화에 대한 약한 개념을 채택하고 있음을 이해하고 있습니다. 연구 방향 중 하나는 완전 동종 암호화를 채택하는 것이므로 질문이 열려 있다고 말할 것입니다. 저는 올 여름 Microsoft Research에서 고정 점 난 독자 및 연구원이 정확히이 지점을 만든 가상 블랙 박스에 대해 이야기 한 것을 기억합니다.
로스 스나이더

3
해당 분야의 연구원 (또는 저자 목록에서 인상적인 이름 중 하나)이 언급 할 수 있습니까?
로스 스나이더

1
@Ross : 예,이 분야의 다른 연구원들도 논평하고
싶습니다

@ Ross, Sadeq : 일부 저자는 때때로 사이트를 방문합니다. 추천 질문 페이지에 질문이 있으면 도움이 될 수도 있습니다.
Kaveh

15

실제로 완전 동형 암호화는 여러 신뢰할 수없는 당사자간에 코드를 실행하는 데 매우 유용하지만 (예 : 이 백서 참조 ) 암호화 된 출력을 계산하는 당사자가 비밀 키를 알고있는 당사자에게이를 보낼 때 일종의 상호 작용이 필요합니다. .

당신이 찾고있는 개념은 의심 할 여지없이 소프트웨어 난독 화에 가깝게 들려서 위에서 언급 한 불가능한 결과를 입증했습니다. 또한 한 번은 그 논문에 대한 비공식적 인 개요 를 썼습니다 . 일부 사람들은 유용하다고 생각합니다.

이러한 불가능한 결과를 고려할 때, 정의를 완화 할 수있는 두 가지 방법 (비 연속적)이 있습니다. 난독 화하는 데 필요한 프로그램 / 기능의 클래스를 제한하거나 보안 개념을 느슨하게하는 것입니다.

두 번째 방법은 가능할 수 있으며, 논문에서 난독 화와 같은 약한 개념에 대해 언급합니다. 그러나 우리의 공격은 난독 화 방식에 관계없이 일부 프로그램의 원본 소스 코드를 완전히 복구합니다. 따라서 당신은 어떻게 든 우리의 반례에 대한 사소한 보안 정의를 만들어야합니다.

첫 번째 접근 방식은 모든 제한된 기능 (예 : 포인트 함수)에 대해 수행되었지만 클래스에 카운터 예제가 포함되어 있지 않은지 확인해야합니다. 이는 의사 난수 함수를 포함해서는 안됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.