본문 바로가기

개발 관련 기타/보안

(2)
[OpenSSL/Crypto++] (AES 암호화/복호화) 패딩 (padding) 이란? 패딩의 정의 암복화 알고리즘 경우 input 데이터의 길이는 block size의 배수가 되어야 한다. 하지만, 데이터의 길이가 block size의 배수가 아닌 경우 마지막 블록에 값을 추가해 block size의 배수로 맞춘다. 이때, 추가 되는 행위 또는 값을 padding 이라고 한다. 패딩의 종류 PKCS5: 8바이트 블록 사이즈에 맞추어져 패딩이 들어갑니다. 그리고 그 값으로 몇 바이트를 패딩으로 채웠는지 적혀 있습니다. AA 07 07 07 07 07 07 07 [1 바이트 데이터 + 7 바이트 패딩] AA BB CC DD 04 04 04 04 [4 바이트 데이터 + 4 바이트 패딩] 08 08 08 08 08 08 08 08 [0 바이트 데이터 + 8 바이트 패딩] PKCS5의 경우 무조건..
[openssl] AES 암호화 / 복호화 (C++ 사용) AES 짤막한 소개 AES는 Advanced Encryption Standard 라고 해서 요즘 보편적으로 쓰이는 암호화 방식이다. AES는 사용하는 key size (bits) 에 따라 AES-128, AES-192, AES-256 으로 나뉜다. AES에서 암호화할 데이터는 128 bits (16 bytes) 로 된 block 들로 나뉘게 된다. 마지막 블럭이 128 bits 로 딱 떨어지지 않으면 padding 되어 128 bits로 만든다. AES와 같은 블럭 알고리즘은 여러 모드 (CBC, CFB, ECB 등) 가 존재하는데 CBC가 Chain 형식으로 꽤 안전하다. openssl 유틸리티를 사용해서 암호화 (AES-256 CBC 방식) $ openssl enc -aes-256-cbc -in (i..