Beispiel #1
0
def encrypt(file, data_len, encrypted_file):
    """
    Encrypt data for each party.

    Args:
        file: The file that saves data to encrypt.
        data_len: The length of plain data. E.g.,for uci housing
        feature data, the length is 13.
        encrypted_file: The file that saves encrypted data.
    """
    data = np.fromfile(file, sep=' ')
    data = data.reshape(data.shape[0] // (data_len + 1), data_len + 1)

    def sample_reader():
        """
        read concated data.
        """
        for d in data:
            yield d[1:]

    def encrypt_sample():
        """
        encrypt sample
        """
        for sample in sample_reader():
            yield aby3.make_shares(sample)

    if not os.path.exists('./tmp'):
        os.makedirs('./tmp')
    aby3.save_aby3_shares(encrypt_sample, "./tmp/" + encrypted_file)
Beispiel #2
0
def generate_encrypted_train_data(mpc_data_dir, class_num):
    """
    generate encrypted samples
    """
    def encrypted_mnist_features():
        """
        feature reader
        """
        for instance in sample_reader():
            yield aby3.make_shares(instance[0])

    def encrypted_mnist_labels():
        """
        label reader
        """
        for instance in sample_reader():
            if class_num == 2:
                label = np.array(1) if instance[1] == 0 else np.array(0)
            elif class_num == 10:
                label = np.eye(N=1, M=10, k=instance[1],
                               dtype=float).reshape(10)
            else:
                raise ValueError(
                    "class_num should be 2 or 10, but received {}.".format(
                        class_num))
            yield aby3.make_shares(label)

    aby3.save_aby3_shares(encrypted_mnist_features,
                          mpc_data_dir + "mnist{}_feature".format(class_num))
    aby3.save_aby3_shares(encrypted_mnist_labels,
                          mpc_data_dir + "mnist{}_label".format(class_num))
Beispiel #3
0
 def test_save_aby3_shares(self):
     part_name = './tmp_test_save_aby3_shares'
     aby3.save_aby3_shares(share_reader=self.dummy_share_reader,
                           part_name=part_name)
     files = os.listdir('./')
     true_filename = 'tmp_test_save_aby3_shares'
     for idx in range(3):
         tmp_file = true_filename + '.part' + str(idx)
         self.assertTrue(tmp_file in files)
         self.remove_temp_file(tmp_file)
Beispiel #4
0
def gen_random_data():

    for i, num in enumerate(sample_nums):
        suffix = '.' + str(i)

        f_mat = np.random.rand(num, feat_width)
        np.save(data_path + 'feature_data' + suffix, f_mat)

        process_data.generate_encrypted_data(i, f_mat)

    aby3.save_aby3_shares(process_data.encrypted_data(np.array(sample_nums)),
                          data_path + 'sample_num')
Beispiel #5
0
def generate_encrypted_data():
    """
    generate encrypted samples
    """
    def encrypted_housing_features():
        """
        feature reader
        """
        for instance in sample_reader():
            yield aby3.make_shares(instance[0])

    def encrypted_housing_labels():
        """
        label reader
        """
        for instance in sample_reader():
            yield aby3.make_shares(instance[1])

    aby3.save_aby3_shares(encrypted_housing_features, "/tmp/house_feature")
    aby3.save_aby3_shares(encrypted_housing_labels, "/tmp/house_label")
Beispiel #6
0
def generate_encrypted_test_data():
    """
    generate encrypted samples
    """
    def encrypted_mnist_features():
        """
        feature reader
        """
        for instance in test_reader():
            yield aby3.make_shares(instance[0])

    def encrypted_mnist_labels():
        """
        label reader
        """
        for instance in test_reader():
            yield aby3.make_shares(
                np.array(1) if instance[1] == 0 else np.array(0))

    aby3.save_aby3_shares(encrypted_mnist_features, "/tmp/mnist2_test_feature")
    aby3.save_aby3_shares(encrypted_mnist_labels, "/tmp/mnist2_test_label")
Beispiel #7
0
def generate_encrypted_data(args, mpc_data_dir, reader, label_filepath=None):
    """
    generate encrypted samples
    """
    def encrypt_feature_idx():
        for instance in reader():
            global count
            feature_idx_ = np.array(instance[0])
            feature_idx = np.eye(args.sparse_feature_number +
                                 1)[feature_idx_.reshape(-1)]
            yield aby3.make_shares(feature_idx)

    def encrypt_feature_value():
        for instance in reader():
            #print(np.array(instance[1]).shape)
            yield aby3.make_shares(np.array(instance[1]))

    def encrypt_label():
        for instance in reader():
            #print(np.array(instance[2]))
            if label_filepath != None:
                with open(label_filepath, 'a+') as f:
                    f.write(str(instance[2][0]) + '\n')
            yield aby3.make_shares(np.array(instance[2]))

    aby3.save_aby3_shares(encrypt_label, mpc_data_dir + "criteo_label")
    aby3.save_aby3_shares(encrypt_feature_value,
                          mpc_data_dir + "criteo_feature_value")
    aby3.save_aby3_shares(encrypt_feature_idx,
                          mpc_data_dir + "criteo_feature_idx")
Beispiel #8
0
def generate_encrypted_test_data(mpc_data_dir, class_num,
                                 label_mnist_filepath):
    """
    generate encrypted samples
    """
    def encrypted_mnist_features():
        """
        feature reader
        """
        for instance in test_reader():
            yield aby3.make_shares(instance[0])

    def encrypted_mnist_labels():
        """
        label reader
        """
        for instance in test_reader():
            if class_num == 2:
                label = np.array(1) if instance[1] == 0 else np.array(0)
                with open(label_mnist_filepath, 'a+') as f:
                    f.write(str(1 if instance[1] == 0 else 0) + '\n')
            elif class_num == 10:
                label = np.eye(N=1, M=10, k=instance[1],
                               dtype=float).reshape(10)
                with open(label_mnist_filepath, 'a+') as f:
                    f.write(str(instance[1]) + '\n')
            else:
                raise ValueError(
                    "class_num should be 2 or 10, but received {}.".format(
                        class_num))
            yield aby3.make_shares(label)

    aby3.save_aby3_shares(
        encrypted_mnist_features,
        mpc_data_dir + "mnist{}_test_feature".format(class_num))
    aby3.save_aby3_shares(
        encrypted_mnist_labels,
        mpc_data_dir + "mnist{}_test_label".format(class_num))
Beispiel #9
0
def generate_encrypted_data(mpc_data_dir):
    """
    Generate encrypted samples
    """
    sample_reader = paddle.dataset.uci_housing.train()

    def encrypted_housing_features():
        """
        feature reader
        """
        for instance in sample_reader():
            yield aby3.make_shares(instance[0])

    def encrypted_housing_labels():
        """
        label reader
        """
        for instance in sample_reader():
            yield aby3.make_shares(instance[1])

    aby3.save_aby3_shares(encrypted_housing_features,
                          mpc_data_dir + "house_feature")
    aby3.save_aby3_shares(encrypted_housing_labels,
                          mpc_data_dir + "house_label")
Beispiel #10
0
def generate_encrypted_data(party_id, f_mat):
    """
    generate encrypted data from feature matrix (np.array)
    """

    f_max = np.amax(f_mat, axis=0)
    f_min = np.amin(f_mat, axis=0)
    f_mean = np.mean(f_mat, axis=0)

    suffix = '.' + str(party_id)

    aby3.save_aby3_shares(encrypted_data(f_max),
                          data_path + "feature_max" + suffix)
    aby3.save_aby3_shares(encrypted_data(f_min),
                          data_path + "feature_min" + suffix)
    aby3.save_aby3_shares(encrypted_data(f_mean),
                          data_path + "feature_mean" + suffix)