Parallelizing fully homomorphic encryption for a cloud environment

1. Introduction

3. Gentry scheme and cloud compiting

Gentryのスキームでは、2つの8ビット整数に対して加算、減算、比較演算を実行するのに数秒かかることが示されています。また、2つの8ビット整数の乗算には数分、2つの8ビット整数の除算には数時間かかることが示された。

4. Algorithm

  • 要求からデータ依存関係のグラフを作成
  • 実行する部分回路を決めて評価
  • 評価するのがなくなったら計算完了

4.1 Crating data dependency grpah

回路からデータ依存グラフを作成するアルゴリズム

class Node:
	inputs: List[int]
	outputs: List[int]
 
E: List[Node]
D = []
P = [Set() for _ in range(len(E))]
C = [Set() for _ in range(len(E))]
for e, i in enumerate(E):
	for input in e.inputs:
		if D[input] == null:
			D[input] = 0
		P[i].add(d)
		C[d].add(i)
	for output in e.outputs:
		if D[output] == null:
			D[output] = 0;
		owner = D[output]
		if not owner.is_root():
			for dep in C[d].dependants():
				P[index].add(dep)
				C[dep].add(index)
		D[output] = index

4.2 Finding sub-circuit

c = [e for e in C[0] if e.state != 'pending']
E = [c]
cands = C[c]
while len(cands) > 0:
	c = cands.pop()
	add = True
	for c_par in P[c]:
		if c_par not in E:
			add = False
	if add and c.state != 'pending':
		E.add(c)
		c.state = 'pending'
		for ce of C[c]:
			if ce not in cands:
				cands.append(ce)
  • 愚直な回路分割ぽい