Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make GATK Smith-Waterman implementation data-oblivious and constant-time #1

Open
aaryanshroff opened this issue Jan 31, 2025 · 1 comment
Assignees

Comments

@aaryanshroff
Copy link
Collaborator

Resources

Original SmithWaterman implementation
HaplotypeCaller documentation

@aaryanshroff aaryanshroff self-assigned this Jan 31, 2025
@aaryanshroff
Copy link
Collaborator Author

aaryanshroff commented Feb 7, 2025

Sub-tasks

  • Initialize array elements in ORAM tree after array declaration. In vanilla Java, array elements are initialized to 0 if they are a numeric type (int or double), false if they are of type boolean , or null if they are an object type like String. Similarly, they must also be initialized in the ORAM tree after the array is declared. Otherwise, they will not be found on later reads, contradicting the behaviour of vanilla Java, where the read would have returned the default, initial value.
  • 2D-array support for ArrayAccessModifier. Example ORAM key for a 2D-array element: "a" + "[" + i + "]" + "[" + j + "]".
  • 2D-array support for ArraySizeVisitor. Currently, ORAM size is an underestimate since only the first dimension of an array is counted as part of its size.
  • How to calculate best ORAM size if array sizes depend on user input?
    • Multiple sub-trees, pick random path in random tree.
  • Low priority: Background eviction. Perform read, return value, and perform write in the background.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant