약 3달 간의 자기주도연구 프로젝트를 마무리하였습니다. 처음에는 암호화된 내용을 사람이 봐도 어떻게 판별할까를 많이 고민했었는데 암호수학 수업 때 배운 ECB 모드의 취약점에서 아이디어를 떠올려 이미지 암호화에 대한 딥러닝 학습을 진행했습니다. 사실 컴퓨터 공학 공부를 시작한지도 얼마 되지 않았고, 딥러닝, 머신러닝을 제대로 공부해보지 않은 상태에서 진행하느라 여러 친구들의 도움과 교수님의 도움이 없었다면 마무리하지 못했을 것 같습니다. 이번 프로젝트를 통해 ECB 모드에 대한 취약점을 다시 한 번 알게 되었고, 딥러닝에 대해 공부할 수 있는 좋은 기회였습니다. 추가적으로 RNN 등을 활용해 일반 암호문 데이터 (bytes 형식 등)에 대해서는 육안으로 판별이 쉽지 않고 저의 능력이 아직 부족하기에 진행..
지난 1라운드 DES 암호화 이미지 판별 모델에 이어 2라운드 암호화 이미지에 대한 판별 모델을 만들어 보았습니다. 리눅스 펭귄 이미지를 이용해 각각 2라운드 암호화 시의 결과입니다. OFB 모드의 경우 2라운드 암호화 때까지 제대로 암호화가 이루어지지 않았지만 다른 예도 존재합니다. 펭귄 이미지와 이와 같은 차이가 나는 이유는, 제가 펭귄 이미지를 암호화 할 때 키를 0x00, 00, 00, 00, .. , 00 으로 기본키를 잡고 암호화를 진행하였기에 stream 구조로 진행되는 OFB 모드에서 제대로 암호화가 이루어지지 않았습니다. 아래의 이미지는 random key를 이용해 암호화를 진행하였을 때입니다. 하지만 OFB 모드에서의 확연한 차이는 바로 세로선이 두드러진다는 점입니다. 그래서 제가 모은..
지난 16라운드 DES 암호화 이미지 판별 모델을 적용하여 1라운드 암호화 이미지 판별을 실시하였습니다. 사실 16라운드가 암호화가 더 잘 된 상황이지만, CBC와 OFB는 구분 할 수 없었습니다. 1라운드 암호화 이미지의 경우 OFB와 CBC의 구분이 확실하고, ECB와 OFB 또한 어느정도의 구분이 가능하기 때문에 3가지 모드 모두를 판별하는 모델까지 작성하였습니다. 아래는 1라운드 암호화시 이미지입니다. (원본, ECB, CBC, OFB) 우선 기본 모델은 다음과 같습니다. (2가지 모드 비교) model = keras.models.Sequential([ keras.layers.Conv2D(32, 3, activation="relu", strides=(1,3),padding="same", input..
지난 번 AES128을 이용해 딥러닝 학습을 실시한 것에 이어 DES를 이용해 딥러닝 학습을 실시하였습니다. DES의 경우도 ECB 모드만이 full round(16round) 진행 시 육안으로 구분이 됩니다. 모델은 지난 번 학습과 동일한 모델을 사용하였습니다. ghqls0210.tistory.com/144?category=854786 암호화 이미지 딥러닝 모델링 (AES128) AES128의 ECB, CBC, OFB로 256 * 256 pixel로 암호화를 진행하였습니다. 이제 해당 이미지들을 이용하여 딥러닝 학습을 진행해보도록 하겠습니다. 컴파일 : Google Colab 프레임워크 : tensorflow2 예상 결과 : EC.. ghqls0210.tistory.com 모델은 지난 번과 동일하고 결..
지난 번에는 AES128을 활용한 이미지 암호화를 진행하였습니다. 이번에는 추가적으로 DES (single) 을 활용한 이미지 암호화를 진행해보겠습니다. (라운드 별로 나오는 결과를 추후에 이용하고 싶어 라운드를 조작하는 부분을 추가하였습니다.) 우선 Single DES의 기본 구조를 살펴 보면 다음과 같습니다. 이처럼 평문 블럭은 64bit, 마스터키는 56bit, 라운드키는 48bit를 사용합니다. Initial Permutation과 16라운드, Final Permutation을 거쳐 최종 암호문 블럭을 얻게 됩니다. Initial Permutation과 Final Permutation은 64bit 평문을 섞어주는 역할을 합니다. 하지만 테이블이 주어져 있기 때문에 안전성에는 영향이 없습니다. 테이..