skia2/gn
Mike Klein 5c612ade3b create a sample to demonstrate a timing attack
This sample attempts to re-create an image's alpha channel by drawing it
one pixel at a time and timing how long each pixel takes to draw.

The "abc" text should appear twice normally, and the third and fourth
versions are reconstructed from timing, one by timing 1:1 pixel draws,
the other by timing 1x1:1024x1024 upscale into an offscreen.  It's not
meant to be an exact reconstruction, but you can easily see the shapes,
particularly at -O0, -O1, and -Os.  Auto-vectorization from -O2/-O3 do
a good amount to cover up the problem.

The legacy CPU backend is the main place to look.  I haven't been able
to reconstruct any images using SkRasterPipelineBlitter or SkVMBlitter,
and while on the GPU I do see non-random patterns in the timing, it
appears to be the same single pattern across devices, OSes, GPUs, GPU
APIs and content... I assume it's something like our resource caching
policy.

This can't really be a GM, given how it draws non-deterministically.

Bug: chromium:1088224
Change-Id: I2ec79c8dd407ecb104fd9bf0c8039cb6dd1fe436
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/313466
Commit-Queue: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Mike Reed <reed@google.com>
2020-08-28 16:17:39 +00:00
..
toolchain GN: Add support for GN's framework variable in the toolchain 2020-08-03 15:41:37 +00:00
__init__.py
bench.gni benchmark for text vertex fill 2020-08-14 16:03:57 +00:00
BUILD.gn add arm64e slice to arm64 iOS builds 2020-08-25 23:25:41 +00:00
BUILDCONFIG.gn decouple werror and -isystem in third_party 2020-06-19 21:59:35 +00:00
call.py [minor] mark scripts as executable 2019-11-21 17:06:27 +00:00
checkdir.py fix print functions for python3 gn scripts 2020-03-06 17:42:39 +00:00
checkpath.py Python3 tweaks 2019-12-17 17:12:03 +00:00
codesign_ios.py [minor] mark scripts as executable 2019-11-21 17:06:27 +00:00
compile_ib_files.py Reland "Add launch screen to iOS apps" 2019-09-05 14:05:08 +00:00
compile_processors.py Reland "Fetch clang-format automatically when compiling .fp files." 2020-06-12 13:21:41 +00:00
copy_git_directory.py GN tools: copy_git_directory.py better error message. 2019-11-19 17:04:18 +00:00
core.gni New helpers for SkYUVAInfo when used with pixmaps. 2020-08-27 15:39:56 +00:00
cp.py [minor] mark scripts as executable 2019-11-21 17:06:27 +00:00
create_sksl_fp.py SkSL include files are now stored in a binary format 2020-07-31 13:48:25 +00:00
dehydrate_sksl.py Reland "Untangle dependency cycle in sksl dehydration" 2020-08-10 15:47:43 +00:00
effects_imagefilters.gni Add new SkImageFilters factory API 2019-08-02 13:33:35 +00:00
effects.gni Convert GLHighContrastFilterEffect to an .fp file. 2020-07-10 20:54:33 +00:00
find_headers.py Python3 tweaks 2019-12-17 17:12:03 +00:00
find_msvc.py Add Preview to list of possible MSVC versions. 2020-04-30 19:54:33 +00:00
find_xcode_sysroot.py fix print functions for python3 gn scripts 2020-03-06 17:42:39 +00:00
flutter_defines.gni ignore SK_DISABLE_READBUFFER 2020-06-09 16:16:57 +00:00
fuchsia_defines.gni remove legacy hinting-enum guards 2018-11-28 20:15:03 +00:00
gen_plist_ios.py [minor] mark scripts as executable 2019-11-21 17:06:27 +00:00
gm.gni Apply correct matrix to correct points in GrDashOp 2020-08-12 13:18:16 +00:00
gn_meta_sln.py fix print functions for python3 gn scripts 2020-03-06 17:42:39 +00:00
gn_to_bp_utils.py Change some instances of whitelist/blacklist 2020-07-30 10:56:03 +00:00
gn_to_bp.py Reland "Reland "ICU: SkShaper (bidi iterator only)"" 2020-08-26 17:46:33 +00:00
gn_to_cmake.py Switch GN defs on Mac and iOS to use frameworks, take 3 2020-08-12 17:03:47 +00:00
gpu.gni Remove GrRenderTargetProxyPriv class and setGLRTFBOIDIs0 call. 2020-08-26 16:34:33 +00:00
highest_version_dir.py fix print functions for python3 gn scripts 2020-03-06 17:42:39 +00:00
ios.gni harmonize rewrite-includes and gn-format checks 2020-04-03 17:00:54 +00:00
is_clang.py Fix is_clang python3 encoding errors 2020-06-26 18:41:00 +00:00
make_gm_gni.py GMs: re-sort gni, script to regenerate gni, file name convention 2019-05-02 20:08:37 +00:00
opts.gni add structure for normal SKX opts 2020-06-05 13:48:39 +00:00
pdf.gni Make skia_use_xps option work on Windows 2020-03-24 17:09:33 +00:00
push_to_android.py
rm.py Delete .a file before writing static library. 2020-06-11 17:19:23 +00:00
run_sksllex.py Reland "Fetch clang-format automatically when compiling .fp files." 2020-06-12 13:21:41 +00:00
samples.gni create a sample to demonstrate a timing attack 2020-08-28 16:17:39 +00:00
shared_sources.gni add structure for normal SKX opts 2020-06-05 13:48:39 +00:00
skia.gni [canvaskit] Remove fringe EGL dependency. 2020-08-20 14:55:50 +00:00
sksl.gni Remove duplicated header file from sources 2020-08-24 13:30:32 +00:00
tests.gni Add platform image encoder for using NDK APIs 2020-08-13 15:21:41 +00:00
utils.gni Remove SkWhitelistTypefaces. 2020-06-30 14:54:53 +00:00
xps.gni harmonize rewrite-includes and gn-format checks 2020-04-03 17:00:54 +00:00