Padding Oracle Attack

原理阐述

Padding

在密码学中,由于底层加密算法往往是针对固定长度的块来设计的(例如 AES 的 CBC 模式的块大小为 16),所以在对可变长度的明文进行加密时,一般需要额外增加 padding 字段来满足块对齐以便进行加密。

Create Ramdisk on macOS

Creating a 1000MB ramdisk:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
$ hdiutil attach -nomount ram://$((2048 * 1000))
/dev/disk3

$ diskutil eraseVolume HFS+ RAMDisk /dev/disk3
Started erase on disk3
Unmounting disk
Erasing
Initialized /dev/rdisk3 as a 1000 MB case-insensitive HFS Plus volume
Mounting disk
Finished erase on disk3 RAMDisk

$ hdiutil detach /dev/disk3

                
                    
                
            
        
            

Linux Security Tips

ssh

Modify /etc/ssh/sshd_config:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# Disable root login
PermitRootLogin no

# Change the default port
Port 12345

# Enable login with key
RSAAuthentication yes
PubkeyAuthentication yes

# Disable login with password
UsePAM no
PasswordAuthentication no

                
                    
                
            
        
            

Security Tips:ELF 破解及几点启示

如何破解一个 ELF 文件:hackme: Deconstructing an ELF File

几点启示:

  • 编译时要使用 strip 选项
  • 避免在代码中使用字符串常量存放敏感信息,strings 工具可以轻易 dump 出来
  • 在调用库函数、系统函数时,避免在参数中传递明文的敏感信息, ltrace, strace 等工具可以轻易调试出来

另外,在Java代码中,也要避免使用明文字符串保存敏感信息,尤其是不要用 String 来保存密码,原因主要有以下几点:

Bloom Filter 布隆过滤器

Bloom Filter 是由 Bloom 在 1970 年提出的一种多哈希函数映射的快速查找算法。
通常应用在一些需要快速判断某个元素是否属于集合,但是并不严格要求 100% 正确的场合。

HashMap 的问题

HashMap 具有 O(1) 的查找复杂度,但缺点也很明显:内存利用率不高。