블록 암호 14

주저리주저리 내가 아는 AES는 말이지...

·안녕하세요 주인장입니다. 바쁜 나날들을 보내다 문득 블로그가 생각나 들어와 봤어요. 스킨도 좀 바꿔보고 했는데 어떠신가요 저는 영 어색하네요. 이 말을 하려고 들어온건 아니고 갑자기 들어와본 블로그에 AES 관련 게시글이 너무 얼렁뚱땅 마무리된 것 같아서 제가 기억하는 AES를 추억할 겸... 함 적어보겠습니다. 틀린 부분은 스스로 고쳐나갈 예정이나 완전 박박 틀렸다 하는 부분을 발견하시면 댓글 주세요. 1. AES의 구조 SPN 구조라고 하는 치환-대치(맞나?) 구조를 하고 있습니다. 한 라운드는 크게 4가지 순서로 구성이 되어있는데요. 다음과 같습니다. SubBytes ShiftRows MixColumns AddRoundKey 지금부터 이 4가지 과정을 하나씩 요약해보면, 2. SubBytes 보통..

블록 암호/AES 2022.08.30

[AES] Key Expansion 키확장

* Cipher Key, 즉 K는 키스케줄key schedule로 만들어진 Key Expansion 과정을 거친다. * key expansion으로 총 Nb(Nr+1) words가 만들어진다. - 초기의 Nb words(입력셋), 각 Nr개의 라운드 마다 Nb의 키가 필요 * 4-byte words로 나열하여 [wi]로 표기된다. i의 범위 : 0 ≤ i < Nb(Nr + 1) * SubWord() : S-box 연산 함수 * RotWord() : a word [a0,a1,a2,a3]를 input으로 하고 cyclic연산을 한다. 즉 word [a1,a2,a3,a0]를 return하는 함수다. * Rcon[i] : The round constant word array. [x^(i-1), {00}, {00..

블록 암호/AES 2021.12.27

갑작스러운 최종 게시글

https://github.com/enoma422/aes.py.git GitHub - enoma422/aes.py Contribute to enoma422/aes.py development by creating an account on GitHub. github.com 그렇다. 발등에 불이 떨어진 나는... 2일만에 AES를 구현했다. AES를 1,2학년 때 배우지 않았다면 2일만에 할 수 없었겠지... 오랜만에 AES 구현하니까 재밌었다. 갑작스러운 최종 게시글은 아니고 사실... 더 공부할 것이다. key expansion 부분이랑 affine 변환, s box와 GF(2^8)의 연산까지... 거의 현대대수 시간 같다. 아무튼 했다. * https://en.wikipedia.org/wiki/Advan..

블록 암호/AES 2021.12.17

12월 2일의 일기

그렇다 오늘은 12월 2일이다. 11월이 다 지났다. 블록암호 운용모드 파일 암복호화 버전이 업로드 되지 않았다. 그 이유는 간단하다.. 며칠째인지 셀수도 없는 수많은 나날들을 파일 암복호화만 붙잡고 살았는데 내 맘처럼 되지 않는다. 뭐가 안되는지는 파악을 했다. 왜 안되는지를 파악하지 못해서 그렇지... 제일 큰 문제라면, AES와 DES, 두가지 암호로 테스트 해보며 유연하게 작동하는 운용모드를 구현하고 싶었는데 내가 분명 코드를 AES와 DES를 나누어짰음에도 불구하고 각자 암호화한 파일의 해시값이 동일하다(?) 와~ 이건 진짜 해결방법을 모르겠는 문제점이다. 모드는 이미 바이트 암복호화로 구현해봤기 때문에 수정이 쉬울거라고 생각했는데 저렇게 예상하지도 못한 문제점을 발견할 줄 몰랐다. To. 컴퓨..

1. AES

주황 체크표시된 단어와 각 라운드의 과정을 공부해나갈 예정입니다... 사실 각 라운드의 과정을 공부해 나가다 보면 Affine 변환이나 Key Expansion, S-Box는 당연히 알아야 각 과정을 이해할 수 있으니까 당연한 소리임... * https://en.wikipedia.org/wiki/Advanced_Encryption_Standard#Definitive_standards 를 참고하여 공부했습니다. * FIPS 197, Advanced Encryption Standard (AES) 를 참고하여 공부했습니다.

블록 암호/AES 2021.10.29

3-2. Padding Oracle Attack과 PCBC

CBC를 공부하다 패딩 오라클 공격이 궁금해져서 찾아보았다. 이론은 위의 사진과 같다. CBC를 작년에 구현해놨기 때문에 패딩오라클공격도 코드를 고치면 할수있겠구나 생각이 들었지만,,, 나에겐 오라클이 없다는 걸 뒤늦게 깨달았다. 오라클 구현은... 너무 복잡해서... 패스. * https://en.wikipedia.org/wiki/Padding_oracle_attack를 참고하여 공부했습니다. * https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation를 참고하여 공부했습니다.