/safeIO

attempt use SGX to protect program in windows

Primary LanguageC++

为了信安吹逼大赛 (凉了)

初步构想

  • hook程序的read,send,recv调用,拦截程序的IO,对数据进行加解密来实现对程序的保护

细节


网络

  • loader会将程序启动,并且将hookdl注入
  • hookdl在加载的时候会加载hook
  • 在第一次调用hook函数的时候sgx会进行初始化操作

    sgx初始化操作无法在dllmain中完成,具体见手册

  • 初始化的过程中会和服务器交换通信用的密钥(这个地方目前还不是很完善)
  • 完成之后会将程序所有流量用这个密钥加密之后发送给中转服务器
  • 中转服务器根据交换密钥时的token信息获取对应的密钥(不完善)
  • 中转服务器将流量解密之后转发给真正的服务器
  • 真正的服务器传回的消息又会被中转服务器加密之后发给应用程序

读写

  • 目前读文件时解密的密钥还是硬编码,需改进。

工程划分


  • loader:加载程序
  • hookdl:注入用dll
  • safeIO:sgx内部代码
  • server:认证服务器+转发服务器
  • sgxtest:sgx代码测试用工程
  • dlltest:注入用代码测试工程