加密本地模型文件

容器镜像方式加密

  1. 参考镜像启动脚本run_aiguard.sh,执行前请将[image_name]和[image_version]替换对应正确的名称和版本,加粗部分请根据实际情况修改。

    #!/bin/bash
    if [ $# != 2 ]; then
        echo "USAGE: $0 input key_file"
        exit 1
    fi
    encrypt_dir=$1
    key_file_path=$2
    USERNAME=aiguard
    OUTPUT=workdir/output/
    
    function create_user(){
    	id ${USERNAME} >/dev/null 2>&1
    	if [ $? -eq 0 ]; then
    		uid=`id -u ${USERNAME}`
    		if [ $uid -ne 9002 ];                                                                                                                                                                                                                                                                                                                                 then
    			echo "user ${USERNAME} exist, but uid isn't 9002."
    			return 1
    		fi
    		return 0
    	else
    		useradd -u 9002 -m ${USERNAME} >/dev/null 2>&1
    		if [ $? -eq 0 ]; then
    			echo "create user ${USERNAME} success."
    			return 0
    		fi
    		echo "create user ${USERNAME} failed."
    		return 1
    	fi
    }
    
    function is_or_not_clear_output(){
    	while true
    	do 
    		read -r -p "Directory ${OUTPUT} is not empty, it must be empty when running aiguard. Do you want to empty it? [y/n]" input
    
    		case $input in
    			[yY][eE][sS]|[yY])
    				rm -rf ${OUTPUT}/* >/dev/null 2>&1
    				return 0
    				;;
    			[nN][oO]|[nN])
    				return 1
    				;;
    			*)
    				echo "Invalid input..."
    				;;
    		esac
    	done	
    }
    create_user
    if [ $? -ne 0 ]; then
    	exit 1
    fi
    mkdir -p workdir/input
    if [ -d ${OUTPUT} ]; then
    	if [ "$(ls -A $OUTPUT)" ]; then
    		is_or_not_clear_output
    		if [ $? -ne 0 ]; then
    			exit 1
    		fi
    	fi
    fi
    mkdir -p ${OUTPUT}
    cp -af $encrypt_dir/* workdir/input  
    cp -af $key_file_path workdir        
    chown ${USERNAME} -R workdir
    find workdir/ -exec chmod -77 {} +
    find workdir/input -type f -exec chmod 500 {} +
    docker run -it --rm -u ${USERNAME} -v $PWD/workdir:/home/${USERNAME}/workdir -w /home/${USERNAME}/workdir [image_name]:[image_version] bash
    • $encrypt_dir为加密文件路径。
    • $key_file_path密钥文件路径。

    执行命令启动镜像

    bash run_aiguard.sh $encrypt_dir $key_file_path
    命令样例:
    bash run_aiguard.sh ./model_file ./key_file
    • 请确保加密文件路径目录下只有待加密的明文或待解密的密文。
    • 用户9002的id不能被占用,否则无法运行。

  2. 在用户节点执行命令加密模型文件,检查MK.json的权限,若权限大于600需修改权限为600。

    #修改文件权限(可选)
    chmod 600 MK.json
    #执行加密命令
    aiguard encrypt -i ./input -o ./output -f MK.json

    执行加密命令时,会弹出提示,要求输入导出主秘钥时使用的口令,输入后生成加密文件,并存储“./output”,加密文件用于边缘节点推理,请用户自行拷贝。

    MK.json为2章节系统保存的文件。